> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kombo.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Get courses

> Get courses

<Accordion title="Supported integrations" icon="list-check">
  This feature is currently available for the following integrations:

  <ul>
    <li class="flex items-center"><img src="https://storage.googleapis.com/kombo-assets/integrations/successfactors/icon.svg" height="16px" width="16px" class="m-0 mr-2" /><a href="/lms/connectors/successfactors">SAP SuccessFactors</a></li>
    <li class="flex items-center"><img src="https://storage.googleapis.com/kombo-assets/integrations/cornerstoneondemand/icon.svg" height="16px" width="16px" class="m-0 mr-2" /><a href="/lms/connectors/cornerstoneondemand">Cornerstone OnDemand</a></li>
    <li class="flex items-center"><img src="https://storage.googleapis.com/kombo-assets/integrations/workday/icon.svg" height="16px" width="16px" class="m-0 mr-2" /><a href="/lms/connectors/workday">Workday</a></li>
    <li class="flex items-center"><img src="https://storage.googleapis.com/kombo-assets/integrations/sandbox/icon.svg" height="16px" width="16px" class="m-0 mr-2" /><a href="/lms/connectors/sandbox">Kombo Sandbox</a></li>
    <li class="flex items-center"><img src="https://storage.googleapis.com/kombo-assets/integrations/360learning/icon.svg" height="16px" width="16px" class="m-0 mr-2" /><a href="/lms/connectors/360learning">360Learning</a></li>
    <li class="flex items-center"><img src="https://storage.googleapis.com/kombo-assets/integrations/talentlms/icon.svg" height="16px" width="16px" class="m-0 mr-2" /><a href="/lms/connectors/talentlms">TalentLMS</a></li>
    <li class="flex items-center"><img src="https://storage.googleapis.com/kombo-assets/integrations/udemy/icon.svg" height="16px" width="16px" class="m-0 mr-2" /><a href="/lms/connectors/udemy">Udemy Business</a></li>
    <li class="flex items-center"><img src="https://storage.googleapis.com/kombo-assets/integrations/linkedinlearning/icon.svg" height="16px" width="16px" class="m-0 mr-2" /><a href="/lms/connectors/linkedinlearning">LinkedIn Learning</a></li>
    <li class="flex items-center"><img src="https://storage.googleapis.com/kombo-assets/integrations/moodle/icon.svg" height="16px" width="16px" class="m-0 mr-2" /><a href="/lms/connectors/moodle">Moodle</a></li>
  </ul>

  You'd like to see this feature for another integration? Please reach out!
  We're always happy to discuss extending our coverage.
</Accordion>

Retrieve all courses available in the LMS. Courses are structured learning programs that users can enroll in and complete.

Top level filters use AND, while individual filters use OR if they accept multiple arguments. That means filters will be resolved like this: `(id IN ids) AND (remote_id IN remote_ids)`


## OpenAPI

````yaml GET /lms/courses
openapi: 3.1.0
info:
  title: Kombo API
  version: 1.0.0
servers:
  - url: https://api.kombo.dev/v1
    description: Kombo EU API
  - url: https://api.us.kombo.dev/v1
    description: Kombo US API
security:
  - ApiKey: []
tags:
  - name: General
  - name: Kombo Connect
    description: >-
      Endpoints for Kombo Connect, our end-user-facing flow for setting up new
      integrations.
  - name: Unified HRIS API
    description: Unified endpoints to access all the HR concepts you might need.
  - name: Unified ATS API
    description: Unified endpoints to access all the ATS concepts you might need.
  - name: Unified ATS (Assessment & Background Check) API
    description: >-
      Unified endpoints to operate Assessments and Background Checks for many
      applicant tracking systems.
  - name: Unified LMS API
    description: Unified endpoints to access all the LMS concepts you might need.
  - name: AI Apply
    description: Endpoints for AI-powered job application features.
  - name: Custom Endpoints
    description: Custom integration-specific endpoints.
paths:
  /lms/courses:
    get:
      tags:
        - Unified LMS API
      summary: Get courses
      description: >-
        Get courses


        <Accordion title="Supported integrations" icon="list-check">

        This feature is currently available for the following integrations:


        <ul>

        <li class="flex items-center"><img
          src="https://storage.googleapis.com/kombo-assets/integrations/successfactors/icon.svg"
          height="16px"
          width="16px"
          class="m-0 mr-2"
        /><a href="/lms/connectors/successfactors">SAP SuccessFactors</a></li>

        <li class="flex items-center"><img
          src="https://storage.googleapis.com/kombo-assets/integrations/cornerstoneondemand/icon.svg"
          height="16px"
          width="16px"
          class="m-0 mr-2"
        /><a href="/lms/connectors/cornerstoneondemand">Cornerstone
        OnDemand</a></li>

        <li class="flex items-center"><img
          src="https://storage.googleapis.com/kombo-assets/integrations/workday/icon.svg"
          height="16px"
          width="16px"
          class="m-0 mr-2"
        /><a href="/lms/connectors/workday">Workday</a></li>

        <li class="flex items-center"><img
          src="https://storage.googleapis.com/kombo-assets/integrations/sandbox/icon.svg"
          height="16px"
          width="16px"
          class="m-0 mr-2"
        /><a href="/lms/connectors/sandbox">Kombo Sandbox</a></li>

        <li class="flex items-center"><img
          src="https://storage.googleapis.com/kombo-assets/integrations/360learning/icon.svg"
          height="16px"
          width="16px"
          class="m-0 mr-2"
        /><a href="/lms/connectors/360learning">360Learning</a></li>

        <li class="flex items-center"><img
          src="https://storage.googleapis.com/kombo-assets/integrations/talentlms/icon.svg"
          height="16px"
          width="16px"
          class="m-0 mr-2"
        /><a href="/lms/connectors/talentlms">TalentLMS</a></li>

        <li class="flex items-center"><img
          src="https://storage.googleapis.com/kombo-assets/integrations/udemy/icon.svg"
          height="16px"
          width="16px"
          class="m-0 mr-2"
        /><a href="/lms/connectors/udemy">Udemy Business</a></li>

        <li class="flex items-center"><img
          src="https://storage.googleapis.com/kombo-assets/integrations/linkedinlearning/icon.svg"
          height="16px"
          width="16px"
          class="m-0 mr-2"
        /><a href="/lms/connectors/linkedinlearning">LinkedIn Learning</a></li>

        <li class="flex items-center"><img
          src="https://storage.googleapis.com/kombo-assets/integrations/moodle/icon.svg"
          height="16px"
          width="16px"
          class="m-0 mr-2"
        /><a href="/lms/connectors/moodle">Moodle</a></li>

        </ul>


        You'd like to see this feature for another integration? Please reach
        out!

        We're always happy to discuss extending our coverage.

        </Accordion>



        Retrieve all courses available in the LMS. Courses are structured
        learning programs that users can enroll in and complete.


        Top level filters use AND, while individual filters use OR if they
        accept multiple arguments. That means filters will be resolved like
        this: `(id IN ids) AND (remote_id IN remote_ids)`
      operationId: GetLmsCourses
      parameters:
        - in: header
          name: X-Integration-Id
          schema:
            type: string
          description: ID of the integration you want to interact with.
          example: bombohr:HWUTwvyx2wLoSUHphiWVrp28
          required: true
        - name: cursor
          in: query
          required: false
          description: >-
            An optional cursor string used for pagination. This can be retrieved
            from the `next` property of the previous page response.
          schema:
            $ref: '#/components/schemas/GetLmsCoursesParameterCursor'
        - name: page_size
          in: query
          required: false
          description: The number of results to return per page. Maximum is 250.
          schema:
            $ref: '#/components/schemas/GetLmsCoursesParameterPageSize'
        - name: updated_after
          in: query
          required: false
          description: >-
            Filter the entries based on the modification date in format
            `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record
            itself **OR** its nested data has been updated since this timestamp,
            even if the record's own `changed_at` field remains unchanged.


            If you want to track entry deletion, also set the
            `include_deleted=true` query parameter, because otherwise, deleted
            entries will be hidden.


            For more details, see [Understanding changed_at vs updated_after
            Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).


            For this endpoint, `updated_after` matches when the returned record
            changed, or when related data changed as described below.


            | Path | Added/Removed | Linked Record |

            | --- | --- | --- |

            | `provider` | ✗ No | ✗ No |

            | `revisions` | ✓ Yes | ✓ Yes |

            | `revisions` → `skill_assignments` | ✗ No | ✗ No |


            _**Added/Removed**: Whether adding or removing entries from this
            list triggers an update (n/a for single records). **Linked Record**:
            Whether changes to the linked record itself trigger an update._
          schema:
            $ref: '#/components/schemas/GetLmsCoursesParameterUpdatedAfter'
        - name: include_deleted
          in: query
          required: false
          description: >-
            By default, deleted entries are not returned. Use the
            `include_deleted` query param to include deleted entries too.
          schema:
            $ref: '#/components/schemas/GetLmsCoursesParameterIncludeDeleted'
        - name: ignore_unsupported_filters
          in: query
          required: false
          description: >-
            When set to `true`, filters targeting fields not supported by this
            integration will be ignored instead of filtering out all results.
          schema:
            $ref: >-
              #/components/schemas/GetLmsCoursesParameterIgnoreUnsupportedFilters
        - name: ids
          in: query
          required: false
          description: >-
            Filter by a comma-separated list of IDs such as
            `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
          schema:
            $ref: '#/components/schemas/GetLmsCoursesParameterIds'
        - name: remote_ids
          in: query
          required: false
          description: Filter by a comma-separated list of remote IDs.
          schema:
            $ref: '#/components/schemas/GetLmsCoursesParameterRemoteIds'
      responses:
        '200':
          description: GET /lms/courses Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetLmsCoursesPositiveResponse'
              examples:
                example1:
                  value:
                    status: success
                    data:
                      next: >-
                        eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
                      results:
                        - id: 26vafvWSRmbhNcxJYqjCzuJg
                          remote_id: '32'
                          provider_id: 7xPdr68N8kG9EzLwjsN9xyz
                          origin_id: course-123
                          remote_created_at: '2022-08-07T14:01:29.196Z'
                          remote_deleted_at: null
                          changed_at: '2022-08-07T14:01:29.196Z'
                          remote_data: null
                          custom_fields: null
                          integration_fields: []
                          provider:
                            id: 7xPdr68N8kG9EzLwjsN9xyz
                            remote_id: provider-12345
                            name: Kombo Academy
                          revisions:
                            - id: 3KMdr68N8kG9EzLwjsN9aoz
                              remote_id: revision-12345
                              course_id: 26vafvWSRmbhNcxJYqjCzuJg
                              title: Building LMS integrations with Kombo
                              description: >-
                                Learn how to build and integrate Learning
                                Management System (LMS) integrations with Kombo.
                                This course covers the unified LMS API, course
                                management, user enrollment, progress tracking,
                                and best practices for building robust LMS
                                connectors.
                              remote_url: >-
                                https://learning.acme.com/courses/building-integrations/v1
                              status: ACTIVE
                              remote_created_at: '2022-08-07T14:01:29.196Z'
                              remote_deleted_at: null
                              changed_at: '2022-08-07T14:01:29.196Z'
                              remote_data: null
                              custom_fields: null
                              integration_fields: []
                              skill_assignments:
                                - skill:
                                    id: 4EeSSSd9Fr8iiW9mPKmjEVWK
                                    remote_id: skill-123
                                    name: LMS Integration
        default:
          $ref: '#/components/responses/ErrorResponseGeneral'
components:
  schemas:
    GetLmsCoursesParameterCursor:
      type: string
      description: >-
        An optional cursor string used for pagination. This can be retrieved
        from the `next` property of the previous page response.
    GetLmsCoursesParameterPageSize:
      type: integer
      format: int64
      minimum: 1
      maximum: 250
      default: 100
      description: The number of results to return per page. Maximum is 250.
    GetLmsCoursesParameterUpdatedAfter:
      description: >-
        Filter the entries based on the modification date in format
        `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record
        itself **OR** its nested data has been updated since this timestamp,
        even if the record's own `changed_at` field remains unchanged.


        If you want to track entry deletion, also set the `include_deleted=true`
        query parameter, because otherwise, deleted entries will be hidden.


        For more details, see [Understanding changed_at vs updated_after
        Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).


        For this endpoint, `updated_after` matches when the returned record
        changed, or when related data changed as described below.


        | Path | Added/Removed | Linked Record |

        | --- | --- | --- |

        | `provider` | ✗ No | ✗ No |

        | `revisions` | ✓ Yes | ✓ Yes |

        | `revisions` → `skill_assignments` | ✗ No | ✗ No |


        _**Added/Removed**: Whether adding or removing entries from this list
        triggers an update (n/a for single records). **Linked Record**: Whether
        changes to the linked record itself trigger an update._
      type: string
      format: date-time
      pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$
      externalDocs:
        url: >-
          https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
    GetLmsCoursesParameterIncludeDeleted:
      type: string
      enum:
        - 'true'
        - 'false'
      default: 'false'
      description: >-
        By default, deleted entries are not returned. Use the `include_deleted`
        query param to include deleted entries too.
    GetLmsCoursesParameterIgnoreUnsupportedFilters:
      type: string
      enum:
        - 'true'
        - 'false'
      default: 'false'
      description: >-
        When set to `true`, filters targeting fields not supported by this
        integration will be ignored instead of filtering out all results.
    GetLmsCoursesParameterIds:
      type: string
      description: >-
        Filter by a comma-separated list of IDs such as
        `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
    GetLmsCoursesParameterRemoteIds:
      type: string
      description: Filter by a comma-separated list of remote IDs.
    GetLmsCoursesPositiveResponse:
      type: object
      properties:
        status:
          type: string
          const: success
        data:
          type: object
          properties:
            next:
              type:
                - string
                - 'null'
              description: >-
                Cursor string that can be passed to the `cursor` query parameter
                to get the next page. If this is `null`, then there are no more
                pages.
            results:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    description: >-
                      The globally unique ID of this object generated by Kombo.
                      We recommend using this as a stable primary key for
                      syncing.
                  remote_id:
                    type: string
                    description: >-
                      The raw ID of the object in the remote system. We don't
                      recommend using this as a primary key on your side as it
                      might sometimes be compromised of multiple identifiers if
                      a system doesn't provide a clear primary key.
                  provider_id:
                    type:
                      - string
                      - 'null'
                    description: >-
                      The Kombo ID of the course provider of this course, if
                      applicable.
                  origin_id:
                    type:
                      - string
                      - 'null'
                    description: >-
                      A stable identifier you provided when creating this
                      course. Can be used to identify and update the course in
                      subsequent requests.
                  remote_created_at:
                    description: >-
                      The date and time the object was created in the remote
                      system.
                    type:
                      - string
                      - 'null'
                    format: date-time
                    externalDocs:
                      url: >-
                        https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
                  remote_deleted_at:
                    description: >-
                      The date and time the object was deleted in the remote
                      system. Objects are automatically marked as deleted when
                      Kombo can't retrieve them from the remote system anymore.
                      Kombo will also anonymize entries 14 days after they
                      disappear.
                    type:
                      - string
                      - 'null'
                    format: date-time
                    externalDocs:
                      url: >-
                        https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
                  changed_at:
                    description: >-
                      The timestamp when this specific record was last modified.
                      This field only updates when properties directly on this
                      record change, NOT when related or nested models change.
                      For filtering that considers nested data changes, use the
                      `updated_after` parameter which will return records when
                      either the record itself OR its related models have been
                      updated.
                    type: string
                    format: date-time
                    externalDocs:
                      url: >-
                        https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
                  remote_data:
                    type:
                      - object
                      - 'null'
                    additionalProperties: true
                    description: >-
                      Includes the data fetched from the remote system.

                      Please be aware that including this in you scope config
                      might violate other

                      scopes that are set.


                      Remote data always has the endpoint path that we got the
                      data from as the

                      top level key. For example, it could look like: `{
                      "/companies": { ... }}`


                      This is not available on all plans. Reach out to Kombo if
                      you need it.
                  custom_fields:
                    type:
                      - object
                      - 'null'
                    additionalProperties: true
                    description: >-
                      A key-value store of fields not covered by the schema.
                      [Read more](/custom-fields)
                  integration_fields:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: The globally unique ID of this object.
                        key:
                          type: string
                          description: The key of the field in the remote system.
                        type:
                          type: string
                          enum:
                            - DEFAULT
                            - CUSTOM
                          description: >-
                            - `DEFAULT`: static fields in the remote system.

                            - `CUSTOM`: fields that are created/editable by the
                            user.
                        value:
                          type: 'null'
                          description: The field's value.
                        label:
                          type:
                            - string
                            - 'null'
                          description: The label of the field. (not always available)
                      required:
                        - id
                        - key
                        - type
                        - label
                    description: >-
                      An array of selected passthrough integration fields. [Read
                      more](/integration-fields)
                    examples:
                      - - id: 5NVFhMpB9Ah6by44tzNjZLyE
                          key: firstName
                          type: DEFAULT
                          value: Frank
                          label: First Name
                        - id: 8nuajYpoRd5GnxEQaaWKUDYQ
                          key: customTshirtSize
                          type: CUSTOM
                          value: XL
                          label: T-Shirt Size
                  provider:
                    type:
                      - object
                      - 'null'
                    properties:
                      id:
                        type: string
                        description: >-
                          The globally unique ID of this object generated by
                          Kombo. We recommend using this as a stable primary key
                          for syncing.
                      remote_id:
                        type: string
                        description: >-
                          The raw ID of the object in the remote system. We
                          don't recommend using this as a primary key on your
                          side as it might sometimes be compromised of multiple
                          identifiers if a system doesn't provide a clear
                          primary key.
                      name:
                        type:
                          - string
                          - 'null'
                        description: The name of the provider.
                    required:
                      - id
                      - remote_id
                      - name
                    examples:
                      - id: 26vafvWSRmbhNcxJYqjCzuJg
                        remote_id: provider-12345
                        name: Kombo Academy
                  revisions:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: >-
                            The globally unique ID of this object generated by
                            Kombo. We recommend using this as a stable primary
                            key for syncing.
                        remote_id:
                          type: string
                          description: >-
                            The raw ID of the object in the remote system. We
                            don't recommend using this as a primary key on your
                            side as it might sometimes be compromised of
                            multiple identifiers if a system doesn't provide a
                            clear primary key.
                        course_id:
                          type:
                            - string
                            - 'null'
                          description: >-
                            The Kombo ID of the course this revision belongs to.
                            The ID can be used to retrieve the course from the
                            `get courses` endpoint.
                        title:
                          type:
                            - string
                            - 'null'
                          description: The title of the course revision.
                        description:
                          type:
                            - string
                            - 'null'
                          description: A description of the course revision.
                        remote_url:
                          type:
                            - string
                            - 'null'
                          description: >-
                            URL to the course overview page within the LMS
                            itself.
                        status:
                          type:
                            - string
                            - 'null'
                          enum:
                            - ACTIVE
                            - INACTIVE
                          description: The status of this revision (ACTIVE or INACTIVE).
                        remote_created_at:
                          description: >-
                            The date and time the object was created in the
                            remote system.
                          type:
                            - string
                            - 'null'
                          format: date-time
                          externalDocs:
                            url: >-
                              https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
                        remote_deleted_at:
                          description: >-
                            The date and time the object was deleted in the
                            remote system. Objects are automatically marked as
                            deleted when Kombo can't retrieve them from the
                            remote system anymore. Kombo will also anonymize
                            entries 14 days after they disappear.
                          type:
                            - string
                            - 'null'
                          format: date-time
                          externalDocs:
                            url: >-
                              https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
                        changed_at:
                          description: >-
                            The timestamp when this specific record was last
                            modified. This field only updates when properties
                            directly on this record change, NOT when related or
                            nested models change. For filtering that considers
                            nested data changes, use the `updated_after`
                            parameter which will return records when either the
                            record itself OR its related models have been
                            updated.
                          type: string
                          format: date-time
                          externalDocs:
                            url: >-
                              https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
                        remote_data:
                          type:
                            - object
                            - 'null'
                          additionalProperties: true
                          description: >-
                            Includes the data fetched from the remote system.

                            Please be aware that including this in you scope
                            config might violate other

                            scopes that are set.


                            Remote data always has the endpoint path that we got
                            the data from as the

                            top level key. For example, it could look like: `{
                            "/companies": { ... }}`


                            This is not available on all plans. Reach out to
                            Kombo if you need it.
                        custom_fields:
                          type:
                            - object
                            - 'null'
                          additionalProperties: true
                          description: >-
                            A key-value store of fields not covered by the
                            schema. [Read more](/custom-fields)
                        integration_fields:
                          type: array
                          items:
                            type: object
                            properties:
                              id:
                                type: string
                                description: The globally unique ID of this object.
                              key:
                                type: string
                                description: The key of the field in the remote system.
                              type:
                                type: string
                                enum:
                                  - DEFAULT
                                  - CUSTOM
                                description: >-
                                  - `DEFAULT`: static fields in the remote
                                  system.

                                  - `CUSTOM`: fields that are created/editable
                                  by the user.
                              value:
                                type: 'null'
                                description: The field's value.
                              label:
                                type:
                                  - string
                                  - 'null'
                                description: The label of the field. (not always available)
                            required:
                              - id
                              - key
                              - type
                              - label
                          description: >-
                            An array of selected passthrough integration fields.
                            [Read more](/integration-fields)
                          examples:
                            - - id: 5NVFhMpB9Ah6by44tzNjZLyE
                                key: firstName
                                type: DEFAULT
                                value: Frank
                                label: First Name
                              - id: 8nuajYpoRd5GnxEQaaWKUDYQ
                                key: customTshirtSize
                                type: CUSTOM
                                value: XL
                                label: T-Shirt Size
                        skill_assignments:
                          type: array
                          items:
                            type: object
                            properties:
                              skill:
                                type: object
                                properties:
                                  id:
                                    type: string
                                    description: >-
                                      The globally unique ID of this object
                                      generated by Kombo. We recommend using
                                      this as a stable primary key for syncing.
                                  remote_id:
                                    type:
                                      - string
                                      - 'null'
                                    description: >-
                                      The raw ID of the object in the remote
                                      system. We don't recommend using this as a
                                      primary key on your side as it might
                                      sometimes be compromised of multiple
                                      identifiers if a system doesn't provide a
                                      clear primary key.
                                  name:
                                    type:
                                      - string
                                      - 'null'
                                    description: The name of the skill.
                                required:
                                  - id
                                  - remote_id
                                  - name
                                examples:
                                  - id: 26vafvWSRmbhNcxJYqjCzuJg
                                    remote_id: skill-12345
                                    name: LMS Integration
                            required:
                              - skill
                      required:
                        - id
                        - remote_id
                        - course_id
                        - title
                        - description
                        - remote_url
                        - status
                        - remote_created_at
                        - remote_deleted_at
                        - changed_at
                        - remote_data
                        - custom_fields
                        - integration_fields
                        - skill_assignments
                      examples:
                        - id: 3KMdr68N8kG9EzLwjsN9aoz
                          remote_id: revision-12345
                          course_id: 26vafvWSRmbhNcxJYqjCzuJg
                          title: Building LMS integrations with Kombo
                          description: >-
                            Learn how to build and integrate Learning Management
                            System (LMS) integrations with Kombo. This course
                            covers the unified LMS API, course management, user
                            enrollment, progress tracking, and best practices
                            for building robust LMS connectors.
                          remote_url: >-
                            https://learning.acme.com/courses/building-integrations/v1
                          status: ACTIVE
                          remote_created_at: '2022-08-07T14:01:29.196Z'
                          remote_deleted_at: null
                          changed_at: '2022-08-07T14:01:29.196Z'
                          remote_data: null
                          custom_fields: null
                          integration_fields: []
                          skill_assignments:
                            - skill:
                                id: 4EeSSSd9Fr8iiW9mPKmjEVWK
                                remote_id: skill-123
                                name: LMS Integration
                required:
                  - id
                  - remote_id
                  - provider_id
                  - origin_id
                  - remote_created_at
                  - remote_deleted_at
                  - changed_at
                  - remote_data
                  - custom_fields
                  - integration_fields
                  - provider
                  - revisions
                examples:
                  - id: 26vafvWSRmbhNcxJYqjCzuJg
                    remote_id: '32'
                    provider_id: 7xPdr68N8kG9EzLwjsN9xyz
                    origin_id: course-123
                    remote_created_at: '2022-08-07T14:01:29.196Z'
                    remote_deleted_at: null
                    changed_at: '2022-08-07T14:01:29.196Z'
                    remote_data: null
                    custom_fields: null
                    integration_fields: []
                    provider:
                      id: 7xPdr68N8kG9EzLwjsN9xyz
                      remote_id: provider-12345
                      name: Kombo Academy
                    revisions:
                      - id: 3KMdr68N8kG9EzLwjsN9aoz
                        remote_id: revision-12345
                        course_id: 26vafvWSRmbhNcxJYqjCzuJg
                        title: Building LMS integrations with Kombo
                        description: >-
                          Learn how to build and integrate Learning Management
                          System (LMS) integrations with Kombo. This course
                          covers the unified LMS API, course management, user
                          enrollment, progress tracking, and best practices for
                          building robust LMS connectors.
                        remote_url: >-
                          https://learning.acme.com/courses/building-integrations/v1
                        status: ACTIVE
                        remote_created_at: '2022-08-07T14:01:29.196Z'
                        remote_deleted_at: null
                        changed_at: '2022-08-07T14:01:29.196Z'
                        remote_data: null
                        custom_fields: null
                        integration_fields: []
                        skill_assignments:
                          - skill:
                              id: 4EeSSSd9Fr8iiW9mPKmjEVWK
                              remote_id: skill-123
                              name: LMS Integration
          required:
            - next
            - results
          examples:
            - next: >-
                eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
              results:
                - id: 26vafvWSRmbhNcxJYqjCzuJg
                  remote_id: '32'
                  provider_id: 7xPdr68N8kG9EzLwjsN9xyz
                  origin_id: course-123
                  remote_created_at: '2022-08-07T14:01:29.196Z'
                  remote_deleted_at: null
                  changed_at: '2022-08-07T14:01:29.196Z'
                  remote_data: null
                  custom_fields: null
                  integration_fields: []
                  provider:
                    id: 7xPdr68N8kG9EzLwjsN9xyz
                    remote_id: provider-12345
                    name: Kombo Academy
                  revisions:
                    - id: 3KMdr68N8kG9EzLwjsN9aoz
                      remote_id: revision-12345
                      course_id: 26vafvWSRmbhNcxJYqjCzuJg
                      title: Building LMS integrations with Kombo
                      description: >-
                        Learn how to build and integrate Learning Management
                        System (LMS) integrations with Kombo. This course covers
                        the unified LMS API, course management, user enrollment,
                        progress tracking, and best practices for building
                        robust LMS connectors.
                      remote_url: >-
                        https://learning.acme.com/courses/building-integrations/v1
                      status: ACTIVE
                      remote_created_at: '2022-08-07T14:01:29.196Z'
                      remote_deleted_at: null
                      changed_at: '2022-08-07T14:01:29.196Z'
                      remote_data: null
                      custom_fields: null
                      integration_fields: []
                      skill_assignments:
                        - skill:
                            id: 4EeSSSd9Fr8iiW9mPKmjEVWK
                            remote_id: skill-123
                            name: LMS Integration
      required:
        - status
        - data
  responses:
    ErrorResponseGeneral:
      description: The standard error response with just the platform error codes.
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: string
                enum:
                  - error
              error:
                type: object
                properties:
                  code:
                    type:
                      - string
                      - 'null'
                    enum:
                      - PLATFORM.RATE_LIMIT_EXCEEDED
                      - PLATFORM.CONCURRENCY_LIMIT_EXCEEDED
                      - PLATFORM.INTEGRATION_NOT_FOUND
                      - PLATFORM.INPUT_INVALID
                      - PLATFORM.UNKNOWN_ERROR
                      - PLATFORM.IP_NOT_WHITELISTED
                      - PLATFORM.AUTHENTICATION_INVALID
                      - PLATFORM.TASK_TIMED_OUT
                    example: PLATFORM.RATE_LIMIT_EXCEEDED
                    description: >-
                      Some errors include an error code that can be used to
                      identify their cause. See the [Error Handling
                      Docs](https://docs.kombo.dev/guides/errors) for more
                      information. For your error handling logic please use the
                      error `code` instead of other properties (e.g. message,
                      http status code, ...).
                  title:
                    type:
                      - string
                      - 'null'
                    description: A static, human-readable label.
                  message:
                    type: string
                    description: >-
                      A dynamic, detailed description of what went wrong in this
                      specific instance.
                  log_url:
                    type:
                      - string
                      - 'null'
                    format: uri
                    description: >-
                      The log page in the Kombo UI lists every interaction with
                      full details. If you need assistance, share that link with
                      our support team.
                required:
                  - code
                  - title
                  - message
                  - log_url
                description: Error details with structured code for programmatic handling.
            required:
              - status
              - error
          examples:
            Error Response:
              description: >-
                When building error handling logic, always use the `code` field
                to identify specific error types programmatically. See the
                complete list of error codes in the
                [docs](https://docs.kombo.dev/guides/errors).
              value:
                status: error
                error:
                  code: INTEGRATION.MODEL_NOT_AVAILABLE
                  title: >-
                    This data model isn't supported for the selected
                    integration.
                  message: >-
                    The "employees" model is not yet available for Greenhouse.
                    Please reach out to Kombo if you need this functionality.
                  log_url: https://app.kombo.dev/my-prod/logs?interactionId=123456
            Minimal Error Response:
              description: >-
                The "message" is always required while other fields can also be
                `null`. See the [docs](https://docs.kombo.dev/guides/errors) for
                more information.
              value:
                status: error
                error:
                  code: null
                  title: null
                  message: The message is always in the response.
                  log_url: null
  securitySchemes:
    ApiKey:
      type: http
      scheme: bearer
      description: >-
        Create an API key on the [Secrets](https://app.kombo.dev/secrets) page
        in the Kombo dashboard.

````