iTwin Schedules API

Plan and manage 4D construction schedules. The largest iTwin API surface — 128 operations — covering tasks, resources, calendars, baselines, animations, work breakdown structures, and progress tracking for SYNCHRO-grade project management.

iTwin Schedules API is one of 32 APIs that Bentley Systems publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 2 machine-runnable capabilities that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko.

Tagged areas include Schedules, Scheduling, Tasks, Resources, and 4D Construction. The published artifact set on APIs.io includes API documentation, an API reference, an OpenAPI specification, and 2 Naftiko capability specs.

OpenAPI Specification

itwin-schedules-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: iTwin Schedules API
  description: "Plan and manage 4D construction schedules \u2014 tasks, resources, calendars, baselines, animations, and work\
    \ breakdown."
  version: '1.0'
  contact:
    name: Bentley Developer Relations
    url: https://developer.bentley.com/apis/schedules/
  license:
    name: Bentley Developer Portal Terms
    url: https://developer.bentley.com/legal/
servers:
- url: https://api.bentley.com/schedules
  description: iTwin Platform Production
externalDocs:
  description: iTwin Schedules API Documentation
  url: https://developer.bentley.com/apis/schedules/
tags:
- name: Schedules
  description: Schedules resources for the iTwin Schedules API.
- name: Tasks
  description: Tasks resources for the iTwin Schedules API.
- name: Resources
  description: Resources resources for the iTwin Schedules API.
- name: Calendars
  description: Calendars resources for the iTwin Schedules API.
- name: Animations
  description: Animations resources for the iTwin Schedules API.
- name: Baselines
  description: Baselines resources for the iTwin Schedules API.
- name: Work Breakdown
  description: Work Breakdown resources for the iTwin Schedules API.
security:
- OAuth2: []
paths:
  /:
    get:
      tags:
      - Schedules
      summary: Get Schedules
      operationId: GetSchedules
      responses:
        '200':
          description: List of Schedules
          content:
            application/json:
              schema:
                type: object
    post:
      tags:
      - Schedules
      summary: Create Schedule
      operationId: CreateSchedule
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '201':
          description: Schedule created
          content:
            application/json:
              schema:
                type: object
  /{scheduleId}:
    parameters:
    - name: scheduleId
      in: path
      required: true
      schema:
        type: string
        format: uuid
    get:
      tags:
      - Schedules
      summary: Get Schedules
      operationId: GetSchedules
      responses:
        '200':
          description: List of Schedules
          content:
            application/json:
              schema:
                type: object
    patch:
      tags:
      - Schedules
      summary: Update Schedule
      operationId: UpdateSchedule
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Schedule updated
    delete:
      tags:
      - Schedules
      summary: Delete Schedule
      operationId: DeleteSchedule
      responses:
        '204':
          description: Schedule deleted
  /{scheduleId}/tasks:
    parameters:
    - name: scheduleId
      in: path
      required: true
      schema:
        type: string
        format: uuid
    get:
      tags:
      - Tasks
      summary: Get Tasks
      operationId: GetTasks
      responses:
        '200':
          description: List of Tasks
          content:
            application/json:
              schema:
                type: object
    post:
      tags:
      - Tasks
      summary: Create Task
      operationId: CreateTask
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '201':
          description: Task created
          content:
            application/json:
              schema:
                type: object
  /{scheduleId}/tasks/{taskId}:
    parameters:
    - name: scheduleId
      in: path
      required: true
      schema:
        type: string
        format: uuid
    - name: taskId
      in: path
      required: true
      schema:
        type: string
        format: uuid
    get:
      tags:
      - Tasks
      summary: Get Tasks
      operationId: GetTasks
      responses:
        '200':
          description: List of Tasks
          content:
            application/json:
              schema:
                type: object
    patch:
      tags:
      - Tasks
      summary: Update Task
      operationId: UpdateTask
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Task updated
    delete:
      tags:
      - Tasks
      summary: Delete Task
      operationId: DeleteTask
      responses:
        '204':
          description: Task deleted
  /{scheduleId}/resources:
    parameters:
    - name: scheduleId
      in: path
      required: true
      schema:
        type: string
        format: uuid
    get:
      tags:
      - Resources
      summary: Get Resources
      operationId: GetResources
      responses:
        '200':
          description: List of Resources
          content:
            application/json:
              schema:
                type: object
    post:
      tags:
      - Resources
      summary: Create Resource
      operationId: CreateResource
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '201':
          description: Resource created
          content:
            application/json:
              schema:
                type: object
  /{scheduleId}/resources/{resourceId}:
    parameters:
    - name: scheduleId
      in: path
      required: true
      schema:
        type: string
        format: uuid
    - name: resourceId
      in: path
      required: true
      schema:
        type: string
        format: uuid
    get:
      tags:
      - Resources
      summary: Get Resources
      operationId: GetResources
      responses:
        '200':
          description: List of Resources
          content:
            application/json:
              schema:
                type: object
    patch:
      tags:
      - Resources
      summary: Update Resource
      operationId: UpdateResource
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Resource updated
    delete:
      tags:
      - Resources
      summary: Delete Resource
      operationId: DeleteResource
      responses:
        '204':
          description: Resource deleted
  /{scheduleId}/calendars:
    parameters:
    - name: scheduleId
      in: path
      required: true
      schema:
        type: string
        format: uuid
    get:
      tags:
      - Calendars
      summary: Get Calendars
      operationId: GetCalendars
      responses:
        '200':
          description: List of Calendars
          content:
            application/json:
              schema:
                type: object
    post:
      tags:
      - Calendars
      summary: Create Calendar
      operationId: CreateCalendar
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '201':
          description: Calendar created
          content:
            application/json:
              schema:
                type: object
  /{scheduleId}/animations:
    parameters:
    - name: scheduleId
      in: path
      required: true
      schema:
        type: string
        format: uuid
    get:
      tags:
      - Animations
      summary: Get Animations
      operationId: GetAnimations
      responses:
        '200':
          description: List of Animations
          content:
            application/json:
              schema:
                type: object
    post:
      tags:
      - Animations
      summary: Create Animation
      operationId: CreateAnimation
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '201':
          description: Animation created
          content:
            application/json:
              schema:
                type: object
  /{scheduleId}/baselines:
    parameters:
    - name: scheduleId
      in: path
      required: true
      schema:
        type: string
        format: uuid
    get:
      tags:
      - Baselines
      summary: Get Baselines
      operationId: GetBaselines
      responses:
        '200':
          description: List of Baselines
          content:
            application/json:
              schema:
                type: object
    post:
      tags:
      - Baselines
      summary: Create Baseline
      operationId: CreateBaseline
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '201':
          description: Baseline created
          content:
            application/json:
              schema:
                type: object
  /{scheduleId}/wbs:
    parameters:
    - name: scheduleId
      in: path
      required: true
      schema:
        type: string
        format: uuid
    get:
      tags:
      - Work Breakdown
      summary: Get Work Breakdown
      operationId: GetWorkBreakdown
      responses:
        '200':
          description: List of Work Breakdown
          content:
            application/json:
              schema:
                type: object
    post:
      tags:
      - Work Breakdown
      summary: Create Work Breakdown
      operationId: CreateWorkBreakdown
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '201':
          description: Work Breakdown created
          content:
            application/json:
              schema:
                type: object
components:
  securitySchemes:
    OAuth2:
      type: oauth2
      description: "iTwin Platform OAuth2 \u2014 Bentley IMS"
      flows:
        authorizationCode:
          authorizationUrl: https://ims.bentley.com/connect/authorize
          tokenUrl: https://ims.bentley.com/connect/token
          scopes:
            itwin-platform: Full access to iTwin Platform APIs
  schemas:
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string
            details:
              type: array
              items:
                type: object