Schedule

Get the schedule for a range

Returns the consolidated schedule of a window: projects, orders, tasks, internal services and order services.

GET
/api/v1/schedule

Request examples

curl 'https://app.filmo.io/api/v1/schedule?startDate=2026-09-01T08%3A00%3A00Z&endDate=2026-09-01T08%3A00%3A00Z' \
  --header "Authorization: Bearer $FILMO_API_KEY"
{
  "data": {
    "projects": [
      {
        "id": "project_9f3a2b",
        "name": "Example project",
        "startDate": "2026-09-01T08:00:00.000Z",
        "endDate": "2026-09-01T08:00:00.000Z",
        "status": "Example status"
      }
    ],
    "orders": [
      {
        "id": "order_9f3a2b",
        "orderNumber": "2026-0001",
        "startDate": "2026-09-01T08:00:00.000Z",
        "endDate": "2026-09-01T08:00:00.000Z",
        "status": "Example status",
        "contactName": "Example contact name",
        "projectName": "Example project name"
      }
    ],
    "tasks": [
      {
        "id": "task_9f3a2b",
        "title": "Example title",
        "startDate": "2026-09-01T08:00:00.000Z",
        "endDate": "2026-09-01T08:00:00.000Z",
        "isAllDay": true,
        "isCompleted": true,
        "type": "Example type",
        "projectId": "project_9f3a2b",
        "assignedStaff": [
          {
            "id": "assigned_staff_9f3a2b",
            "fullName": "Example full name"
          }
        ]
      }
    ],
    "internalServices": [
      {
        "id": "internal_service_9f3a2b",
        "title": "Example title",
        "serviceType": "Example service type",
        "startDate": "2026-09-01T08:00:00.000Z",
        "endDate": "2026-09-01T08:00:00.000Z",
        "projectName": "Example project name",
        "qty": 1,
        "assignedStaff": [
          {
            "id": "assigned_staff_9f3a2b",
            "fullName": "Example full name"
          }
        ],
        "assignedVehicleIds": [
          "assigned_vehicle_9f3a2b"
        ]
      }
    ],
    "orderServices": [
      {
        "orderId": "order_9f3a2b",
        "orderNumber": "2026-0001",
        "serviceName": "Example service name",
        "serviceType": "Example service type",
        "startDate": "2026-09-01T08:00:00.000Z",
        "endDate": "2026-09-01T08:00:00.000Z",
        "contactName": "Example contact name",
        "projectName": "Example project name",
        "qty": 1,
        "assignedCount": 1,
        "assignedStaff": [
          {
            "id": "assigned_staff_9f3a2b",
            "fullName": "Example full name"
          }
        ]
      }
    ]
  }
}

Generated from the schema

It does not paginate: it is bounded by dates, which is what a calendar asks for, but each layer is capped and the response does not say when it was cut: at most 200 projects, 200 orders and 500 tasks, ordered by start date, so a layer that returns exactly its cap may be truncated (use a shorter window). Only active records appear: projects in draft, budgeted, confirmed or in_progress, and orders in draft, reserved, prepared_partially, prepared, picked_up_partially, picked_up, returned_partially, returned or checked_in_partially; a checked_in, cancelled or archived order is not returned. It is therefore not a complete snapshot: do not delete a record only because it is missing. Assignees come out by identifier and name; their contact details do not.

Authorizations

Bearer API key with the scope below. schedule:read

Headers

If-None-Matchstring

Conditional read: the ETag of the copy you already have. If the resource has not changed, the response is 304 with no body.

Example:"\"3sT3d9pBvZq4h2N0w8x1YkLmQ7c\""

Query parameters

startDatestring<date-time>Required

Window start, in ISO 8601 with offset.

endDatestring<date-time>Required

Window end, in ISO 8601 with offset.

layersstring[]

Which layers to fetch: projects, orders, tasks, internal_services or order_services. By default, everything. Repeat the parameter or separate the values with commas for several.

Available options: projects, orders, tasks, internal_services, order_services

Limits: min 1 items, max 50 items

projectStatusstring[]

Filter projects by status.

Limits: min 1 items, max 50 items

orderStatusstring[]

Filter orders by status.

Limits: min 1 items, max 50 items

assignedToStaffIdsstring[]

Keep only what is assigned to these staff members.

Limits: min 1 items, max 200 items

Response

application/json

Successful response.

Response schema: ScheduleDto

Envelope: ScheduleResponse. meta.warnings is present only when the operation is deprecated.

Headers: X-Request-Id · RateLimit-Limit · RateLimit-Remaining · RateLimit-Reset · ETag

dataobject

Consolidated schedule of a date window.

Show child attributes
data.projectsobject[]

Projects that fall within the window.

Show child attributes
data.projects.idstring

data.projects.namestring

data.projects.startDatestring<date-time>

data.projects.endDatestring<date-time>

data.projects.statusstring

data.ordersobject[]

Orders that fall within the window.

Show child attributes
data.orders.idstring

data.orders.orderNumberstring

data.orders.startDatestring<date-time>

data.orders.endDatestring<date-time>

data.orders.statusstring

data.orders.contactNamestring | null

data.orders.projectNamestring | null

data.tasksobject[]

Schedule tasks. Without the contact data of whoever they are assigned to.

Show child attributes
data.tasks.idstring

data.tasks.titlestring

data.tasks.startDatestring<date-time> | null

data.tasks.endDatestring<date-time> | null

data.tasks.isAllDayboolean

data.tasks.isCompletedboolean

data.tasks.typestring | null

data.tasks.projectIdstring | null

data.tasks.assignedStaffobject[]

Show child attributes
data.tasks.assignedStaff.idstring

Staff member identifier.

data.tasks.assignedStaff.fullNamestring

Name shown in the schedule.

data.internalServicesobject[]

Assignments not attached to an order.

Show child attributes
data.internalServices.idstring

data.internalServices.titlestring

data.internalServices.serviceTypestring

data.internalServices.startDatestring<date-time>

data.internalServices.endDatestring<date-time>

data.internalServices.projectNamestring | null

data.internalServices.qtynumber

data.internalServices.assignedStaffobject[]

Show child attributes
data.internalServices.assignedStaff.idstring

Staff member identifier.

data.internalServices.assignedStaff.fullNamestring

Name shown in the schedule.

data.internalServices.assignedVehicleIdsstring[]

data.orderServicesobject[]

Staff and fleet services attached to an order.

Show child attributes
data.orderServices.orderIdstring

data.orderServices.orderNumberstring

data.orderServices.serviceNamestring

data.orderServices.serviceTypestring

data.orderServices.startDatestring<date-time>

data.orderServices.endDatestring<date-time>

data.orderServices.contactNamestring | null

data.orderServices.projectNamestring | null

data.orderServices.qtynumber

data.orderServices.assignedCountnumber

data.orderServices.assignedStaffobject[]

Show child attributes
data.orderServices.assignedStaff.idstring

Staff member identifier.

data.orderServices.assignedStaff.fullNamestring

Name shown in the schedule.

metaobject

Additional information about the response.

Show child attributes
meta.warningsobject[]

Lifecycle warnings; present only when the operation is deprecated.

Show child attributes
meta.warnings.codestring

Stable warning code.

Available options: deprecated

meta.warnings.messagestring

For people: what is deprecated, until when, and what to use.

meta.warnings.sunsetstring

Day (YYYY-MM-DD) the operation stops being served.

meta.warnings.replacementstring | null

operationId of the operation to use instead, or null if there is none.

Errors

StatusCodesMeaning
400validation_errorMalformed query or body. errors[] lists every offending field with its stable code.

401, 403, 429, 500 can be returned by any operation. Errors

Deprecation

This operation is not deprecated. Deprecations are announced with a Deprecation header and a sunset date. Versioning policy

  • Operations

    Schedule

    Consolidated schedule of a date window.