browse

| Overview

Special Schedules via API, also known as exception-based schedules, is a new feature introduced in the 75F ecosystem that can be applied at the building or zone level.

Perfect for events or override scenarios, this feature gives facility teams more flexibility and automation.

Users Can:

  • Create, Update & Delete special schedules via API Define date, time, mode (occupied/unoccupied), and setpoints.

  • Automate holiday/event HVAC adjustments or bulk changes. Integrate with corporate calendars, DR systems, and facility tools.

  • Maintain validations, conflict checks, and audit logs for integrity.

The following are the advantages of the feature:

  • Energy Use – Adjust HVAC only when needed.

  • Seamless Integrations – Connect calendars and scheduling systems directly.

  • Remote Control – Manage building operations in bulk, from anywhere.

  • Compliance & Accuracy – All user limits, deadbands, and setbacks are enforced.

Facility Managers, Installers, and Support Teams can now easily handle exceptions without disrupting regular schedules.

| Sample Base URL

https://api.75f.io/v2/schedules/special

Authentication:

OAuth2 bearer token
Required scopes: schedules:read, schedules:write

| Endpoints

 Create Special Schedule

POST /v2/schedules/special

Request Body:

{
  "zoneId": "zone-123",
  "date": "2025-07-04",
  "startTime": "08:00",
  "endTime": "18:00",
  "mode": "occupied",
  "setpoints": {
    "cooling": 74,
    "heating": 68
  },
  "description": "Independence Day override"
}

Success Response:

{
  "status": "success",
  "scheduleId": "sched-456"
}

Error Responses:

Code

Message

400

"Special Schedule : Invalid time range"

409

"Special Schedule : Schedule already exists for this date and zone"

403

"Special Schedule : Unauthorized to modify zone schedules"

422

"Special Schedule : Missing required fields"

Update Special Schedule

PUT /v2/schedules/special/{scheduleId}

Request Body:

Same as creation, with modified fields.

Response:

{
  "status": "updated",
  "scheduleId": "sched-456"
}

Errors:

Code

Message

404

"Schedule not found"

400

"New times conflict with another schedule"

 Delete Special Schedule

DELETE /v2/schedules/special/{scheduleId}

Success:

{
  "status": "deleted"
}

Errors:

Code

Message

404

"Schedule not found"

403

"Unauthorized to delete this schedule"

| Validation Rules

FieldValidation Rule
dateMust be in YYYY-MM-DD format and ≥ current date
startTimeMust be before endTime
modeMust be one of: "occupied", "unoccupied", "custom"
setpointsOptional; if present: heating < cooling
zoneIdMust be a valid, authorized zone under user scope
ConflictsCannot overlap with another special schedule on the same zone/date

Note: All special schedule validations with other schedules within the system should be treated the same.

| Special Schedule Validations

Validations used in special schedules have to be repeated even if the API is used to create the special schedule.

All validations related to overlaps, conflicts, and schedule consistency apply identically to special schedules as they do to other schedule types. Below are key validations:

Conflict & Time Validations

  • Overlap with another Special Schedule:

    • If a zone or building already has a special schedule at a given time, a new one for the same duration should be rejected.

    • Error: 409 Conflict – "Conflicting special schedule exists"

  • Invalid Time Range:

    • Start time cannot be after the end time.

    • Error: 400 Bad Request – "Invalid time range".

  • Missing Fields or Invalid Data:

    • Required fields like date, startTime, endTime, or mode must be present.

    • Error: 422 Unprocessable Entity.

Consistency with Schedule Rules

  • Same Validation Rules as Zone/Named Schedules:

    • Deadbands, setbacks, and user limits in special schedules are validated using the same engine as zone and named schedules.

    • These must respect site-level constraints (like min/max limits).

    • Schedule block validation must account for these ranges.

Hierarchy Inheritance:

  • Special schedules may override regular ones, but should still inherit building-level constraints unless explicitly overridden.

Error Handling Summary

ScenarioHTTP CodeMessage
Overlapping schedule409"Conflicting special schedule exists"
Invalid time (e.g., end before start)400"Invalid time range"
Missing fields422"Missing required fields"
Unauthorized access403"Not authorized to modify this zone or building"
Not found404"Schedule not found"

| Validation Rules like Zone and Named Schedules

Time Range Validations

  • Each schedule block must have:

    • A valid start time and end time.

    • The start time must be before the end time.

  • No two blocks in a single schedule should overlap.

  • Total daily schedule blocks per zone or named schedule should not exceed system-defined limits (e.g., max 10 blocks per day – based on implementation).

Day Coverage Validations

  • Valid days of the week must be selected (e.g., Monday to Sunday).

  • Multiple blocks can exist per day, but must comply with overlap and range validations.

  • Holiday or Exception Handling should fall under special schedules and not be mixed into regular weekly schedules.

| Temperature Settings Validations

Each schedule block can define:

  • Desired Heating Setpoint (e.g., 68°F)
  • Desired Cooling Setpoint (e.g., 74°F)

These are validated against:

User Limits (Usually defined at the zone or building level, and now part of the schedule).

ParameterValidation Rule
Cooling SetpointMust be within Cooling User Limit Min and Max
Heating SetpointMust be within Heating User Limit Min and Max
Heating < CoolingHeating setpoint must always be less than cooling

Deadband

  • A minimum gap between heating and cooling setpoints.

Example: If heating is 70°F and deadband is 2°F, cooling must be ≥72°F.

Invalid if: Cooling - Heating < Deadband.

Unoccupied Zone Setback

  • Applied when the zone is unoccupied.
  • The schedule must define how setbacks apply in “unoccupied” blocks.

| Schedulable Parameters

Every schedule must contain the following 7 "schedulable" parameters, and they must pass validations:

ParameterValidation Requirement
Cooling User Limit Min< Max, positive number
Cooling User Limit Max> Min, system supported
Heating User Limit Min< Max, within allowed range
Heating User Limit Max> Min
Cooling Deadband≥ system minimum (e.g., 2°F)
Heating Deadband≥ system minimum
Unoccupied Zone Setbackwithin system-supported range

| Bulk Operations Validations

When applying or reverting schedules in bulk:

  • All target zones must be eligible to receive the schedule.
  • Validations for each zone must pass (user limits, no conflicts).
  • If even one zone fails, the operation should fail or give granular feedback per zone.

When API is scheduled - Compatibility Rules

During or post-migration:

  • The system must validate if the schedules (old building or zone) have all 7 new parameters.
  • If any parameter is missing, it must:
    • Pull values from pre-migration tuners.
    • Or fall back to building default limits for schedule validation.

Common Error Responses

Error ConditionHTTP CodeExample Message
Start time ≥ end time400"Invalid time range"
Schedule blocks overlap409"Schedule blocks cannot overlap"
Setpoint outside user limits422"Cooling setpoint exceeds user limit max"
Deadband violation400"Cooling and heating setpoints too close"
Missing required schedule params422"Cooling user limits are required for this zone"
Previous
Next

Comments

0 comments

Please sign in to leave a comment.

Was this article helpful?

0 out of 0 found this helpful
Powered by Zendesk