DayPilot Discovery API

Anonymous, read-only Builder capability discovery.

Operations 12

GET /api/v1 Read the Builder API service index #
HEAD /api/v1 Read service-index metadata without a body #
OPTIONS /api/v1 Inspect cross-origin methods for the service index #
GET /api/v1/components List Builder components #
HEAD /api/v1/components Read component-list metadata without a body #
OPTIONS /api/v1/components Inspect cross-origin methods for the component list #
GET /api/v1/components/{component}/targets List generation targets #
HEAD /api/v1/components/{component}/targets Read target-list metadata without a body #
OPTIONS /api/v1/components/{component}/targets Inspect cross-origin methods for target discovery #
GET /api/v1/components/{component}/settings List canonical Builder settings #
HEAD /api/v1/components/{component}/settings Read settings-list metadata without a body #
OPTIONS /api/v1/components/{component}/settings Inspect cross-origin methods for settings discovery #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/daypilot-org:daypilot-org-discovery-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

daypilot-org-discovery-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: DayPilot UI Builder Public Discovery API
  summary: Discovery, validation, and stateless project generation for the subset exposed by DayPilot UI Builder.
  description: This API describes the components, targets, settings, and canonical option IDs that UI Builder can configure and generate. Agents can validate a strict project specification and receive its deterministic ZIP without saving a server-side resource. It is not a complete DayPilot product capability taxonomy. A capability absent from this API must not be interpreted as unsupported by DayPilot.
  version: 1.1.0
servers:
- url: https://builder.daypilot.org
  description: Canonical DayPilot UI Builder service
security: []
tags:
- name: Discovery
  description: Anonymous, read-only Builder capability discovery.
paths:
  /api/v1:
    get:
      tags:
      - Discovery
      summary: Read the Builder API service index
      description: Returns the API boundary, current catalog revision, and canonical discovery links.
      operationId: getBuilderServiceIndex
      parameters:
      - $ref: '#/components/parameters/IfNoneMatch'
      responses:
        '200':
          $ref: '#/components/responses/ServiceIndexSuccess'
        '304':
          $ref: '#/components/responses/NotModified'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
    head:
      tags:
      - Discovery
      summary: Read service-index metadata without a body
      operationId: headBuilderServiceIndex
      parameters:
      - $ref: '#/components/parameters/IfNoneMatch'
      responses:
        '200':
          $ref: '#/components/responses/HeadSuccess'
        '304':
          $ref: '#/components/responses/NotModified'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
    options:
      tags:
      - Discovery
      summary: Inspect cross-origin methods for the service index
      operationId: optionsBuilderServiceIndex
      responses:
        '204':
          $ref: '#/components/responses/PublicOptions'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/components:
    get:
      tags:
      - Discovery
      summary: List Builder components
      description: Returns the seven canonical components exposed by UI Builder, their offered editions, public setting and option counts, and component-specific links.
      operationId: listBuilderComponents
      parameters:
      - $ref: '#/components/parameters/IfNoneMatch'
      responses:
        '200':
          $ref: '#/components/responses/ComponentsSuccess'
        '304':
          $ref: '#/components/responses/NotModified'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
    head:
      tags:
      - Discovery
      summary: Read component-list metadata without a body
      operationId: headBuilderComponents
      parameters:
      - $ref: '#/components/parameters/IfNoneMatch'
      responses:
        '200':
          $ref: '#/components/responses/HeadSuccess'
        '304':
          $ref: '#/components/responses/NotModified'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
    options:
      tags:
      - Discovery
      summary: Inspect cross-origin methods for the component list
      operationId: optionsBuilderComponents
      responses:
        '204':
          $ref: '#/components/responses/PublicOptions'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/components/{component}/targets:
    parameters:
    - $ref: '#/components/parameters/Component'
    get:
      tags:
      - Discovery
      summary: List generation targets
      description: Returns concrete Builder generation targets for a component. The optional edition filter limits the returned target inventory to that offered edition.
      operationId: listBuilderComponentTargets
      parameters:
      - $ref: '#/components/parameters/Edition'
      - $ref: '#/components/parameters/IfNoneMatch'
      responses:
        '200':
          $ref: '#/components/responses/TargetsSuccess'
        '304':
          $ref: '#/components/responses/NotModified'
        '400':
          $ref: '#/components/responses/InvalidQuery'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
    head:
      tags:
      - Discovery
      summary: Read target-list metadata without a body
      operationId: headBuilderComponentTargets
      parameters:
      - $ref: '#/components/parameters/Edition'
      - $ref: '#/components/parameters/IfNoneMatch'
      responses:
        '200':
          $ref: '#/components/responses/HeadSuccess'
        '304':
          $ref: '#/components/responses/NotModified'
        '400':
          $ref: '#/components/responses/InvalidQuery'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
    options:
      tags:
      - Discovery
      summary: Inspect cross-origin methods for target discovery
      operationId: optionsBuilderComponentTargets
      responses:
        '204':
          $ref: '#/components/responses/PublicOptions'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v1/components/{component}/settings:
    parameters:
    - $ref: '#/components/parameters/Component'
    get:
      tags:
      - Discovery
      summary: List canonical Builder settings
      description: Returns all public settings and options for a component. When edition or target filters are supplied, options are retained and receive an explicit supported result. The target filter requires edition and accepts a concrete target ID or a current alias.
      operationId: listBuilderComponentSettings
      parameters:
      - $ref: '#/components/parameters/Edition'
      - $ref: '#/components/parameters/Target'
      - $ref: '#/components/parameters/IfNoneMatch'
      responses:
        '200':
          $ref: '#/components/responses/SettingsSuccess'
        '304':
          $ref: '#/components/responses/NotModified'
        '400':
          $ref: '#/components/responses/InvalidQuery'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
    head:
      tags:
      - Discovery
      summary: Read settings-list metadata without a body
      operationId: headBuilderComponentSettings
      parameters:
      - $ref: '#/components/parameters/Edition'
      - $ref: '#/components/parameters/Target'
      - $ref: '#/components/parameters/IfNoneMatch'
      responses:
        '200':
          $ref: '#/components/responses/HeadSuccess'
        '304':
          $ref: '#/components/responses/NotModified'
        '400':
          $ref: '#/components/responses/InvalidQuery'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
    options:
      tags:
      - Discovery
      summary: Inspect cross-origin methods for settings discovery
      operationId: optionsBuilderComponentSettings
      responses:
        '204':
          $ref: '#/components/responses/PublicOptions'
        '429':
          $ref: '#/components/responses/TooManyRequests'
components:
  responses:
    ServiceIndexSuccess:
      description: Builder API service index.
      headers:
        ETag:
          $ref: '#/components/headers/ETag'
        Cache-Control:
          $ref: '#/components/headers/CacheControl'
        Access-Control-Allow-Origin:
          $ref: '#/components/headers/AllowOrigin'
        Access-Control-Expose-Headers:
          $ref: '#/components/headers/ExposeHeaders'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ServiceIndex'
    InternalError:
      description: The public catalog could not be served.
      $ref: '#/components/responses/Problem'
    SettingsSuccess:
      description: Canonical public Builder settings for one component.
      headers:
        ETag:
          $ref: '#/components/headers/ETag'
        Cache-Control:
          $ref: '#/components/headers/CacheControl'
        Access-Control-Allow-Origin:
          $ref: '#/components/headers/AllowOrigin'
        Access-Control-Expose-Headers:
          $ref: '#/components/headers/ExposeHeaders'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SettingsResponse'
    ComponentsSuccess:
      description: Builder component inventory.
      headers:
        ETag:
          $ref: '#/components/headers/ETag'
        Cache-Control:
          $ref: '#/components/headers/CacheControl'
        Access-Control-Allow-Origin:
          $ref: '#/components/headers/AllowOrigin'
        Access-Control-Expose-Headers:
          $ref: '#/components/headers/ExposeHeaders'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ComponentsResponse'
    PublicOptions:
      description: Cross-origin preflight metadata. The response has no body.
      headers:
        Allow:
          description: Supported resource methods.
          schema:
            type: string
            const: GET, HEAD, OPTIONS
        Access-Control-Allow-Origin:
          $ref: '#/components/headers/AllowOrigin'
        Access-Control-Allow-Methods:
          description: Methods allowed for anonymous cross-origin access.
          schema:
            type: string
            const: GET, HEAD, OPTIONS
        Access-Control-Allow-Headers:
          description: Request headers allowed by preflight.
          schema:
            type: string
            const: Accept, If-None-Match
        Access-Control-Expose-Headers:
          $ref: '#/components/headers/ExposeHeaders'
        Access-Control-Max-Age:
          description: Maximum time in seconds that a browser may cache the preflight result.
          schema:
            type: integer
            minimum: 0
    TooManyRequests:
      description: The public request limit was exceeded.
      $ref: '#/components/responses/Problem'
    TargetsSuccess:
      description: Builder target inventory for one component.
      headers:
        ETag:
          $ref: '#/components/headers/ETag'
        Cache-Control:
          $ref: '#/components/headers/CacheControl'
        Access-Control-Allow-Origin:
          $ref: '#/components/headers/AllowOrigin'
        Access-Control-Expose-Headers:
          $ref: '#/components/headers/ExposeHeaders'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TargetsResponse'
    Problem:
      description: A stable public API problem.
      headers:
        Access-Control-Allow-Origin:
          $ref: '#/components/headers/AllowOrigin'
        Access-Control-Expose-Headers:
          $ref: '#/components/headers/ExposeHeaders'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
    InvalidQuery:
      description: A query parameter or parameter combination is invalid.
      $ref: '#/components/responses/Problem'
    HeadSuccess:
      description: Representation metadata. A HEAD response has no body.
      headers:
        ETag:
          $ref: '#/components/headers/ETag'
        Cache-Control:
          $ref: '#/components/headers/CacheControl'
        Access-Control-Allow-Origin:
          $ref: '#/components/headers/AllowOrigin'
        Access-Control-Expose-Headers:
          $ref: '#/components/headers/ExposeHeaders'
    NotFound:
      description: The component is not exposed by Builder.
      $ref: '#/components/responses/Problem'
    NotModified:
      description: The supplied If-None-Match validator matches the current representation.
      headers:
        ETag:
          $ref: '#/components/headers/ETag'
        Cache-Control:
          $ref: '#/components/headers/CacheControl'
        Access-Control-Allow-Origin:
          $ref: '#/components/headers/AllowOrigin'
        Access-Control-Expose-Headers:
          $ref: '#/components/headers/ExposeHeaders'
  schemas:
    Problem:
      type: object
      additionalProperties: false
      required:
      - type
      - title
      - status
      - detail
      - code
      properties:
        type:
          type: string
          format: uri-reference
        title:
          type: string
          minLength: 1
        status:
          type: integer
          minimum: 400
          maximum: 599
        detail:
          type: string
          minLength: 1
        code:
          type: string
          pattern: ^[a-z0-9]+(?:_[a-z0-9]+)*$
          enum:
          - query_invalid
          - component_not_found
          - edition_invalid
          - edition_required
          - target_not_found
          - invalid_request
          - method_not_allowed
          - resource_not_found
          - rate_limit_exceeded
          - discovery_document_unavailable
          - public_response_invalid
          - public_catalog_invalid
          - internal_error
          - request_invalid
          - representation_not_acceptable
          - media_type_unsupported
          - content_encoding_unsupported
          - request_too_large
          - configuration_invalid
          - catalog_revision_mismatch
          - project_digest_mismatch
          - precondition_required
          - rate_limit_capacity_exceeded
          - public_generation_disabled
          - generation_disabled
          - generation_busy
          - generation_deadline_exceeded
          - generation_preflight_failed
          - archive_generation_failed
        issues:
          type: array
          minItems: 1
          maxItems: 64
          items:
            $ref: https://builder.daypilot.org/schema/builder-project-v1.json#/$defs/issue
    ComponentID:
      type: string
      enum:
      - scheduler
      - calendar
      - gantt
      - month
      - timesheet
      - kanban
      - resource
    Target:
      type: object
      additionalProperties: false
      required:
      - id
      - label
      - framework
      - status
      - legacy
      - deprecated
      - editions
      properties:
        id:
          type: string
          minLength: 1
        alias:
          type: string
          minLength: 1
        label:
          type: string
          minLength: 1
        framework:
          type: string
          minLength: 1
        status:
          type: string
          enum:
          - current
          - supported
          - legacy
          - deprecated
        legacy:
          type: boolean
        deprecated:
          type: boolean
        editions:
          type: array
          minItems: 1
          uniqueItems: true
          items:
            $ref: '#/components/schemas/Edition'
    SettingsFormat:
      type: string
      const: option-id-v1
    CatalogRevision:
      type: string
      description: A deterministic revision over the rule, admission, and target catalog inputs.
      pattern: ^sha256:[a-f0-9]{64}$
    SettingOption:
      type: object
      additionalProperties: false
      required:
      - id
      - label
      - default
      - offeredEditions
      - emitsGeneratedConfig
      - affectedConfigKeys
      properties:
        id:
          type: string
          minLength: 1
        label:
          type: string
          minLength: 1
        default:
          type: boolean
        offeredEditions:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/Edition'
        emitsGeneratedConfig:
          type: boolean
        affectedConfigKeys:
          type: array
          uniqueItems: true
          items:
            type: string
            minLength: 1
        supported:
          type: boolean
          description: Present only when edition or target support was requested. Unsupported options remain in the response with false.
    APIVersion:
      type: string
      const: v1
    PublicOperationState:
      type: object
      additionalProperties: false
      required:
      - enabled
      properties:
        enabled:
          type: boolean
    ServiceLinks:
      type: object
      additionalProperties: false
      required:
      - components
      - openapi
      - settingsSchema
      - arazzo
      - apiCatalog
      - health
      - validateConfiguration
      - projectArchives
      - projectSchema
      properties:
        components:
          type: string
          format: uri-reference
        openapi:
          type: string
          format: uri-reference
        settingsSchema:
          type: string
          format: uri-reference
        arazzo:
          type: string
          format: uri-reference
        apiCatalog:
          type: string
          format: uri-reference
        health:
          type: string
          format: uri-reference
        validateConfiguration:
          type: string
          const: /api/v1/configurations/validate
        projectArchives:
          type: string
          const: /api/v1/project-archives
        projectSchema:
          type: string
          const: /schema/builder-project-v1.json
    PublicEnvelope:
      type: object
      required:
      - apiVersion
      - scope
      - catalogRevision
      properties:
        apiVersion:
          $ref: '#/components/schemas/APIVersion'
        scope:
          $ref: '#/components/schemas/Scope'
        catalogRevision:
          $ref: '#/components/schemas/CatalogRevision'
    Scope:
      type: string
      const: builder
    PublicOperations:
      type: object
      additionalProperties: false
      required:
      - configurationValidation
      - projectArchives
      properties:
        configurationValidation:
          $ref: '#/components/schemas/PublicOperationState'
        projectArchives:
          $ref: '#/components/schemas/PublicOperationState'
    ComponentLinks:
      type: object
      additionalProperties: false
      required:
      - targets
      - settings
      properties:
        targets:
          type: string
          format: uri-reference
        settings:
          type: string
          format: uri-reference
    ServiceIndex:
      type: object
      additionalProperties: false
      required:
      - apiVersion
      - scope
      - catalogRevision
      - description
      - links
      - operations
      properties:
        apiVersion:
          $ref: '#/components/schemas/APIVersion'
        scope:
          $ref: '#/components/schemas/Scope'
        catalogRevision:
          $ref: '#/components/schemas/CatalogRevision'
        description:
          type: string
          minLength: 1
        links:
          $ref: '#/components/schemas/ServiceLinks'
        operations:
          $ref: '#/components/schemas/PublicOperations'
    ComponentSummary:
      type: object
      additionalProperties: false
      required:
      - id
      - editions
      - settingCount
      - optionCount
      - links
      properties:
        id:
          $ref: '#/components/schemas/ComponentID'
        editions:
          type: array
          minItems: 1
          uniqueItems: true
          items:
            $ref: '#/components/schemas/Edition'
        settingCount:
          type: integer
          minimum: 0
        optionCount:
          type: integer
          minimum: 0
        links:
          $ref: '#/components/schemas/ComponentLinks'
    TargetsResponse:
      allOf:
      - $ref: '#/components/schemas/PublicEnvelope'
      - type: object
        required:
        - component
        - targets
        properties:
          component:
            $ref: '#/components/schemas/ComponentID'
          edition:
            $ref: '#/components/schemas/Edition'
          targets:
            type: array
            items:
              $ref: '#/components/schemas/Target'
    ComponentsResponse:
      allOf:
      - $ref: '#/components/schemas/PublicEnvelope'
      - type: object
        required:
        - components
        properties:
          components:
            type: array
            minItems: 7
            maxItems: 7
            items:
              $ref: '#/components/schemas/ComponentSummary'
    Edition:
      type: string
      enum:
      - lite
      - pro
    Setting:
      type: object
      additionalProperties: false
      required:
      - id
      - description
      - docsUrl
      - defaultOptionId
      - options
      properties:
        id:
          type: string
          minLength: 1
        description:
          type: string
          minLength: 1
        docsUrl:
          type: string
          format: uri
          pattern: ^https://
        defaultOptionId:
          type: string
          minLength: 1
        options:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/SettingOption'
    SettingsResponse:
      allOf:
      - $ref: '#/components/schemas/PublicEnvelope'
      - type: object
        required:
        - component
        - settingsFormat
        - settings
        properties:
          component:
            $ref: '#/components/schemas/ComponentID'
          edition:
            $ref: '#/components/schemas/Edition'
          target:
            $ref: '#/components/schemas/TargetResolution'
          settingsFormat:
            $ref: '#/components/schemas/SettingsFormat'
          settings:
            type: array
            items:
              $ref: '#/components/schemas/Setting'
    TargetResolution:
      type: object
      additionalProperties: false
      required:
      - requested
      - resolved
      properties:
        requested:
          type: string
          minLength: 1
        resolved:
          type: string
          minLength: 1
  parameters:
    Target:
      name: target
      in: query
      required: false
      description: Optional concrete target ID or current alias. This parameter requires edition. The response identifies both the requested value and concrete resolved target.
      x-requires: edition
      schema:
        type: string
        minLength: 1
      example: react@latest
    Edition:
      name: edition
      in: query
      required: false
      description: Optional offered-edition filter.
      schema:
        $ref: '#/components/schemas/Edition'
      example: pro
    Component:
      name: component
      in: path
      required: true
      description: Canonical Builder component ID.
      schema:
        $ref: '#/components/schemas/ComponentID'
      example: scheduler
    IfNoneMatch:
      name: If-None-Match
      in: header
      required: false
      description: Return 304 when this validator matches the selected representation.
      schema:
        type: string
      example: '"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"'
  headers:
    ETag:
      description: Strong validator for the exact representation.
      schema:
        type: string
        pattern: ^"[^"]+"$
    AllowOrigin:
      description: The anonymous read-only resources are readable from any origin without credentials.
      schema:
        type: string
        const: '*'
    CacheControl:
      description: Bounded public revalidation policy.
      schema:
        type: string
      example: public, max-age=300, must-revalidate
    ExposeHeaders:
      description: Response headers exposed to browser clients.
      schema:
        type: string
      example: ETag, Link
externalDocs:
  description: Strict public Builder project contract
  url: https://builder.daypilot.org/schema/builder-project-v1.json