Kombo Unified LMS API API

Unified endpoints to access all the LMS concepts you might need.

OpenAPI Specification

kombo-unified-lms-api-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Kombo AI Apply Unified LMS API API
  version: 1.0.0
  description: Endpoints for AI-powered job application features.
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: Unified LMS API
  description: Unified endpoints to access all the LMS concepts you might need.
paths:
  /lms/users:
    get:
      operationId: GetLmsUsers
      summary: Get users
      description: 'Get users


        Retrieve all users from the LMS system. Users are learners who can enroll in and complete courses.


        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)`'
      tags:
      - Unified LMS API
      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/GetLmsUsersParameterCursor'
      - name: page_size
        in: query
        required: false
        description: The number of results to return per page. Maximum is 250.
        schema:
          $ref: '#/components/schemas/GetLmsUsersParameterPageSize'
      - 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, only changes to the returned record itself are considered.'
        schema:
          $ref: '#/components/schemas/GetLmsUsersParameterUpdatedAfter'
      - 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/GetLmsUsersParameterIncludeDeleted'
      - 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/GetLmsUsersParameterIgnoreUnsupportedFilters'
      - name: ids
        in: query
        required: false
        description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
        schema:
          $ref: '#/components/schemas/GetLmsUsersParameterIds'
      - name: remote_ids
        in: query
        required: false
        description: Filter by a comma-separated list of remote IDs.
        schema:
          $ref: '#/components/schemas/GetLmsUsersParameterRemoteIds'
      - name: work_emails
        in: query
        required: false
        description: Filter by a comma-separated list of work emails. We will only return users who have _any_ of the work emails. The format of the emails is case-insensitive.
        schema:
          $ref: '#/components/schemas/GetLmsUsersParameterWorkEmails'
      responses:
        '200':
          description: GET /lms/users Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetLmsUsersPositiveResponse'
              examples:
                example1:
                  value:
                    status: success
                    data:
                      next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
                      results:
                      - id: 26vafvWSRmbhNcxJYqjCzuJg
                        remote_id: '32'
                        first_name: Sarah
                        last_name: Johnson
                        work_email: sarah.johnson@example.com
                        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: []
        default:
          $ref: '#/components/responses/ErrorResponseGeneral'
  /lms/course-progressions:
    get:
      operationId: GetLmsCourseProgressions
      summary: Get course progressions
      description: 'Get course progressions


        Retrieve all course progressions from the LMS system. Course progressions track users enrollment and completion status in courses.


        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)`'
      tags:
      - Unified LMS API
      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/GetLmsCourseProgressionsParameterCursor'
      - name: page_size
        in: query
        required: false
        description: The number of results to return per page. Maximum is 250.
        schema:
          $ref: '#/components/schemas/GetLmsCourseProgressionsParameterPageSize'
      - 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 |

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

          | `user` | ✗ No | ✗ No |

          | `course_revision` | ✗ 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/GetLmsCourseProgressionsParameterUpdatedAfter'
      - 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/GetLmsCourseProgressionsParameterIncludeDeleted'
      - 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/GetLmsCourseProgressionsParameterIgnoreUnsupportedFilters'
      - name: ids
        in: query
        required: false
        description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
        schema:
          $ref: '#/components/schemas/GetLmsCourseProgressionsParameterIds'
      - name: remote_ids
        in: query
        required: false
        description: Filter by a comma-separated list of remote IDs.
        schema:
          $ref: '#/components/schemas/GetLmsCourseProgressionsParameterRemoteIds'
      - name: user_ids
        in: query
        required: false
        description: Filter by a comma-separated list of user IDs. We will only return progressions that are related to _any_ of the users.
        schema:
          $ref: '#/components/schemas/GetLmsCourseProgressionsParameterUserIds'
      - name: course_ids
        in: query
        required: false
        description: Filter by a comma-separated list of course IDs. We will only return progressions for revisions that belong to _any_ of the courses.
        schema:
          $ref: '#/components/schemas/GetLmsCourseProgressionsParameterCourseIds'
      responses:
        '200':
          description: GET /lms/course-progressions Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetLmsCourseProgressionsPositiveResponse'
              examples:
                example1:
                  value:
                    status: success
                    data:
                      next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
                      results:
                      - id: 26vafvWSRmbhNcxJYqjCzuJg
                        remote_id: progress-12345
                        user_id: 7xPdr68N8kG9EzLwjsN9xyz
                        course_revision_id: 3KMdr68N8kG9EzLwjsN9aoz
                        status: COMPLETED
                        enrolled_at: '2022-08-07T14:01:29.196Z'
                        completed_at: '2022-08-07T14:01:29.196Z'
                        changed_at: '2022-08-07T14:01:29.196Z'
                        remote_deleted_at: null
                        remote_data: null
                        user:
                          id: 26vafvWSRmbhNcxJYqjCzuJg
                          remote_id: '32'
                          first_name: Sarah
                          last_name: Johnson
                          work_email: sarah.johnson@example.com
                        course_revision:
                          id: 3KMdr68N8kG9EzLwjsN9aoz
                          remote_id: revision-12345
                          title: Building LMS integrations with Kombo
                          course:
                            id: 26vafvWSRmbhNcxJYqjCzuJg
                            remote_id: '32'
        default:
          $ref: '#/components/responses/ErrorResponseGeneral'
    post:
      operationId: PostLmsCourseProgressions
      summary: Enroll user in course
      description: "Enroll a user in a course revision.\n\n<Note>\n  This endpoint requires the permission **Create and manage course progressions** to be enabled in [your scope config](/scopes).\n</Note>\n\n### Example Request Body\n\n```json\n{\n  \"user_id\": \"7xPdr68N8kG9EzLwjsN9xyz\",\n  \"course_revision_id\": \"3KMdr68N8kG9EzLwjsN9aoz\"\n}\n```"
      tags:
      - Unified LMS API
      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
      requestBody:
        description: POST /lms/course-progressions Request body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostLmsCourseProgressionsRequestBody'
            examples:
              example1:
                value:
                  user_id: 7xPdr68N8kG9EzLwjsN9xyz
                  course_revision_id: 3KMdr68N8kG9EzLwjsN9aoz
      responses:
        '200':
          description: POST /lms/course-progressions Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostLmsCourseProgressionsPositiveResponse'
              examples:
                example1:
                  value:
                    status: success
                    data:
                      id: 26vafvWSRmbhNcxJYqjCzuJg
                      remote_id: progress-12345
                      user_id: 7xPdr68N8kG9EzLwjsN9xyz
                      course_revision_id: 3KMdr68N8kG9EzLwjsN9aoz
                      status: COMPLETED
                      enrolled_at: '2022-08-07T14:01:29.196Z'
                      completed_at: '2022-08-07T14:01:29.196Z'
                      changed_at: '2022-08-07T14:01:29.196Z'
                      remote_deleted_at: null
                      remote_data: null
                      user:
                        id: 26vafvWSRmbhNcxJYqjCzuJg
                        remote_id: '32'
                        first_name: Sarah
                        last_name: Johnson
                        work_email: sarah.johnson@example.com
                      course_revision:
                        id: 3KMdr68N8kG9EzLwjsN9aoz
                        remote_id: revision-12345
                        title: Building LMS integrations with Kombo
                        course:
                          id: 26vafvWSRmbhNcxJYqjCzuJg
                          remote_id: '32'
                    warnings:
                    - message: This is an example warning!
        default:
          $ref: '#/components/responses/ErrorResponseGeneral'
  /lms/course-progressions/{course_progression_id}/complete:
    post:
      operationId: PostLmsCourseProgressionsCourseProgressionIdComplete
      summary: Complete course
      description: "Mark a course revision as completed for a user.\n\n<Note>\n  This endpoint requires the permission **Create and manage course progressions** to be enabled in [your scope config](/scopes).\n</Note>\n\n### Example Request Body\n\n```json\n{\n  \"completed_at\": \"2024-04-15\",\n  \"score\": 93\n}\n```"
      tags:
      - Unified LMS API
      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: course_progression_id
        in: path
        required: true
        description: The ID of the course progression in Kombo or its ID in the remote system by prefixing it with `remote:` (e.g., `remote:12312`)
        schema:
          $ref: '#/components/schemas/PostLmsCourseProgressionsCourseProgressionIdCompleteParameterCourseProgressionId'
        examples:
          example1:
            value: 26vafvWSRmbhNcxJYqjCzuJg
      requestBody:
        description: POST /lms/course-progressions/:course_progression_id/complete Request body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostLmsCourseProgressionsCourseProgressionIdCompleteRequestBody'
            examples:
              example1:
                value:
                  completed_at: '2024-04-15'
                  score: 93
      responses:
        '200':
          description: POST /lms/course-progressions/:course_progression_id/complete Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostLmsCourseProgressionsCourseProgressionIdCompletePositiveResponse'
              examples:
                example1:
                  value:
                    status: success
                    data:
                      id: 26vafvWSRmbhNcxJYqjCzuJg
                      remote_id: progress-12345
                      user_id: 7xPdr68N8kG9EzLwjsN9xyz
                      course_revision_id: 3KMdr68N8kG9EzLwjsN9aoz
                      status: COMPLETED
                      enrolled_at: '2022-08-07T14:01:29.196Z'
                      completed_at: '2022-08-07T14:01:29.196Z'
                      changed_at: '2022-08-07T14:01:29.196Z'
                      remote_deleted_at: null
                      remote_data: null
                      user:
                        id: 26vafvWSRmbhNcxJYqjCzuJg
                        remote_id: '32'
                        first_name: Sarah
                        last_name: Johnson
                        work_email: sarah.johnson@example.com
                      course_revision:
                        id: 3KMdr68N8kG9EzLwjsN9aoz
                        remote_id: revision-12345
                        title: Building LMS integrations with Kombo
                        course:
                          id: 26vafvWSRmbhNcxJYqjCzuJg
                          remote_id: '32'
                    warnings:
                    - message: This is an example warning!
        default:
          $ref: '#/components/responses/ErrorResponseGeneral'
  /lms/courses:
    get:
      operationId: GetLmsCourses
      summary: Get courses
      description: 'Get courses


        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)`'
      tags:
      - Unified LMS API
      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'
  /lms/courses/bulk:
    post:
      operationId: PostLmsCoursesBulk
      summary: Upsert courses
      description: "Create or update multiple courses in the LMS.\n\n<Info>\n  **Note:** This endpoint is asynchronous – it returns a `task_id` immediately and processes the request in the background. Use the corresponding `GET` endpoint to poll for the task status until it reaches `COMPLETED` or `FAILED`. Learn more in our [async endpoints guide](/lms/guides/async-endpoints).\n</Info>\n\n<Note>\n  This endpoint requires the permission **Upsert courses** to be enabled in [your scope config](/scopes).\n</Note>\n\n### Example Request Body\n\n```json\n{\n  \"items\": [\n    {\n      \"origin_id\": \"course-1\",\n      \"course\": {\n        \"type\": \"EXTERNAL\",\n        \"title\": \"Building LMS integrations with Kombo\",\n        \"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.\",\n        \"course_url\": \"https://docs.kombo.dev/lms/introduction\",\n        \"thumbnail_url\": \"https://kombo.dev/images/courses/lms-integrations-thumbnail.png\",\n        \"duration\": 45,\n        \"languages\": [\n          \"en\",\n          \"de-CH\"\n        ]\n      }\n    },\n    {\n      \"origin_id\": \"course-2\",\n      \"course\": {\n        \"type\": \"EXTERNAL\",\n        \"title\": \"Introduction to TypeScript\",\n        \"description\": \"Learn one of the most popular programming languages of the recent years quickly and efficiently. Results guaranteed!\",\n        \"course_url\": \"https://example.com\",\n        \"thumbnail_url\": \"https://example.com/images/thumbnail.jpg\",\n        \"duration\": 60,\n        \"languages\": [\n          \"en-US\",\n          \"pl-PL\"\n        ]\n      }\n    }\n  ]\n}\n```"
      tags:
      - Unified LMS API
      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
      requestBody:
        description: POST /lms/courses/bulk Request body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostLmsCoursesBulkRequestBody'
            examples:
              example1:
                value:
                  items:
                  - origin_id: course-1
                    course:
                      type: EXTERNAL
                      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.
                      course_url: https://docs.kombo.dev/lms/introduction
                      thumbnail_url: https://kombo.dev/images/courses/lms-integrations-thumbnail.png
                      duration: 45
                      languages:
                      - en
                      - de-CH
                  - origin_id: course-2
                    course:
                      type: EXTERNAL
                      title: Introduction to TypeScript
                      description: Learn one of the most popular programming languages of the recent years quickly and efficiently. Results guaranteed!
                      course_url: https://example.com
                      thumbnail_url: https://example.com/images/thumbnail.jpg
                      duration: 60
                      languages:
                      - en-US
                      - pl-PL
      responses:
        '200':
          description: POST /lms/courses/bulk Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostLmsCoursesBulkPositiveResponse'
        default:
          $ref: '#/components/responses/ErrorResponseGeneral'
  /lms/courses/bulk/{task_id}:
    get:
      operationId: GetLmsCoursesBulkTaskId
      summary: Get status of “Upsert courses” task
      description: "Poll for the status of an existing “Upsert courses” task.\n\n<Info>\nThis endpoint returns the current status of a task. Poll it at regular intervals until the task reaches a terminal status. Learn more in our [async endpoints guide](/lms/guides/async-endpoints). The possible statuses are:\n  - `PENDING` – The task is still being processed.\n  - `COMPLETED` – The task finished successfully. The `data` field contains the results.\n  - `FAILED` – The task encountered an error. Check the `error` field for details.\n</Info>"
      tags:
      - Unified LMS API
      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: task_id
        in: path
        required: true
        description: GET /lms/courses/bulk/:task_id Parameter
        schema:
          $ref: '#/components/schemas/GetLmsCoursesBulkTaskIdParameterTaskId'
      responses:
        '200':
          description: GET /lms/courses/bulk/:task_id Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetLmsCoursesBulkTaskIdPositiveResponse'
        default:
          $ref: '#/components/responses/ErrorResponseGeneral'
  /lms/courses/{course_id}/deactivate:
    post:
      operationId: PostLmsCoursesCourseIdDeactivate
      summary: Deactivate course
      description: "Deactivate a course in the LMS.\n\nDeactivates a course, making it unavailable for new enrollments while preserving existing progress records.\n\n<Note>\n  This endpoint requires the permission **Upsert courses** to be enabled in [your scope config](/scopes).\n</Note>"
      tags:
      - Unified LMS API
      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: course_id
        in: path
        required: true
        description: The ID of the course in Kombo or its ID in the remote system by prefixing it with `remote:` (e.g., `remote:12312`)
        schema:
          $ref: '#/components/schemas/PostLmsCoursesCourseIdDeactivateParameterCourseId'
        examples:
          example1:
            value: 26vafvWSRmbhNcxJYqjCzuJg
      requestBody:
        description: POST /lms/courses/:course_id/deactivate Request body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostLmsCoursesCourseIdDeactivateRequestBody'
            examples:
              example1:
                value: {}
      responses:
        '200':
          description: POST /lms/courses/:course_id/deactivate Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostLmsCoursesCourseIdDeactivatePositiveResponse'
              examples:
                example1:
                  value:
                    status: success
                    data:
                      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 manageme

# --- truncated at 32 KB (145 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/kombo/refs/heads/main/openapi/kombo-unified-lms-api-api-openapi.yml