Ethena Learner Training Modules API

Learner training module information and operations.

Documentation

Specifications

Other Resources

OpenAPI Specification

ethena-learner-training-modules-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  version: 1.3.0
  title: Ethena Learner Training Campaigns Learner Training Modules API
  termsOfService: https://app.goethena.com/legal-and-privacy
  contact:
    name: Contact support
    email: support@goethena.com
  x-logo:
    url: ./ethena-logo.png
    altText: Ethena logo
  description: 'The Ethena API allows you to view and manage learners and training information.


    # Accessing the API

    In order to get access to our API please work with your sales representative to get an

    API key provisioned and shared with you.


    Webhooks are not enabled by default, please work with your sales representative to have them enabled if you need them.


    # Changelog

    - **v1.0.0** - Initial release of the API, including learners, training campaigns, learner training campaigns, and learner training modules.

    - **v1.1.0** - Added webhooks operations and support for learner training campaign completed webhook.

    - **v1.2.0** - Remove separate language region property on learner and support Unicode Common Locale Data Repository language formats.

    - **v1.3.0** - Added filter parameters for learners (email, name), learner training modules (learnerStatus, trainingCampaignStatus), and learner training campaigns (learnerStatus, trainingCampaignStatus). Added training campaign status field to training campaigns.'
servers:
- url: https://api.goethena.com
tags:
- name: Learner Training Modules
  description: Learner training module information and operations.
paths:
  /v1/learner-training-modules:
    get:
      tags:
      - Learner Training Modules
      summary: Get learner training modules
      description: "Get many learner training modules. \n\nThe query parameter filters are applied as `AND` conditions across different filters. \nIf multiple filters are used, the response will include only the learner training modules that satisfy all the filters.\n\nWithin a single filter, multiple values are applied as `OR` conditions."
      operationId: getLearnerTrainingModules
      parameters:
      - name: id
        in: query
        description: Use this parameter to filter learner training modules by id.
        schema:
          type: array
          maxItems: 25
          items:
            description: The unique identifier of a learner training module.
            type: string
            pattern: ^[a-zA-Z0-9]+$
            example: ltm456ghi9
        example:
        - ltm456ghi9
        - ltm456ghi10
      - name: learnerId
        in: query
        description: Use this parameter to filter learner training modules by learner id.
        schema:
          type: array
          maxItems: 25
          items:
            description: The unique identifier of a learner.
            type: string
            pattern: ^[a-zA-Z0-9]+$
            example: abc123def4
        example:
        - abc123def4
        - xyz123abc4
      - name: learnerStatus
        in: query
        description: Use this parameter to filter learner training modules by the status of the learner. When omitted, learner training modules for learners of all statuses will be included in the response.
        schema:
          type: array
          items:
            description: Status of the learner account. Active learners can access training. Deactivated and terminated learners cannot access training.
            type: string
            enum:
            - ACTIVE
            - DEACTIVATED
            - TERMINATED
            example: ACTIVE
        example:
        - ACTIVE
      - name: trainingCampaignId
        in: query
        description: Use this parameter to filter learner training modules by training campaign id.
        schema:
          type: array
          maxItems: 25
          items:
            description: The unique identifier of a training campaign.
            type: string
            pattern: ^[a-zA-Z0-9]+$
            example: tc456xyz78
        example:
        - tc123abc4
        - tc123abc5
      - name: trainingCampaignStatus
        in: query
        description: Use this parameter to filter learner training modules by the status of the training campaign. When omitted, learner training modules for training campaigns of all statuses will be included in the response.
        schema:
          type: array
          items:
            description: The status of the training campaign. `ACTIVE` campaigns may be scheduling training now and/or in the future. `ARCHIVED` campaigns have been deactivated and will no longer schedule new training.
            type: string
            enum:
            - ACTIVE
            - ARCHIVED
            example: ACTIVE
        example:
        - ACTIVE
      - name: limit
        in: query
        description: Use this parameter to limit the number of entities returned.
        schema:
          type: integer
          minimum: 1
          default: 25
          maximum: 100
      - example: ltm456ghi25
        name: cursor
        in: query
        description: "Use this parameter to paginate through entities. The cursor is the `id` of the last entity you want to start from.\n\nTo get the first page, omit this parameter. \n\nTo get the next page, use the `id` of the last entity from the previous response. Continue paginating while `hasMore` is `true` in the response.\n\nExample workflow:\n1. GET /v1/{endpoint} → returns data + hasMore: true, last entity id: \"xyz789end\"\n2. GET /v1/{endpoint}?cursor=xyz789end → returns next page"
        schema:
          type: string
      security:
      - basic_auth: []
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  properties:
                    limit:
                      type: integer
                    hasMore:
                      type: boolean
                    data:
                      type: array
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                        required:
                        - id
                        - trainingCampaignId
                        - learnerId
                        - moduleName
                        - lengthInMinutes
                        - assignedAt
                        - status
                        - statusUpdatedAt
                        properties:
                          id:
                            allOf:
                            - description: The unique identifier of a learner training module.
                              type: string
                              pattern: ^[a-zA-Z0-9]+$
                              example: ltm456ghi9
                          trainingCampaignId:
                            allOf:
                            - description: The unique identifier of a training campaign.
                              type: string
                              pattern: ^[a-zA-Z0-9]+$
                              example: tc456xyz78
                          learnerId:
                            allOf:
                            - description: The unique identifier of a learner.
                              type: string
                              pattern: ^[a-zA-Z0-9]+$
                              example: abc123def4
                          moduleName:
                            allOf:
                            - description: The name of the training module.
                              type: string
                              example: Foundations
                          lengthInMinutes:
                            allOf:
                            - description: The training length of the module in minutes.
                              type: number
                              example: 45
                          assignedAt:
                            allOf:
                            - description: The date and time the learner was assigned the training module.
                              type: string
                              format: date-time
                              example: '2025-05-01T00:00:00Z'
                          status:
                            allOf:
                            - description: 'The status of the learner training module.


                                Active statuses (learner can still interact and complete training):

                                - WITHIN_DEADLINE: Assigned but not yet completed, still within the deadline

                                - INCOMPLETE: Assigned but not completed, the deadline has passed


                                Completed statuses:

                                - USER_COMPLETED: Learner completed the module themselves

                                - ADMIN_COMPLETED: Administrator marked the module as completed

                                - CLASSROOM_COMPLETED: Completed in a classroom facilitated training

                                - ASSESSMENT_SKIPPED: Learner passed an assessment, and skipped this module


                                Removed statuses:

                                - ADMIN_REMOVED: Administrator removed the module

                                - ADMIN_ARCHIVED: Archived by administrator when training campaign was cancelled or archived

                                - SYSTEM_REMOVED: System automatically removed the module due to a change in population, learner status, or learner profile

                                - YEARLY_TRAINING_REMOVED: Incomplete module that was removed when new yearly training was assigned

                                - COURSE_UNENROLLED: Company unenrolled from the course

                                - MIGRATION_COMPANY_UNENROLLED: Status changed during data migration

                                - MIGRATED: Status changed during data migration'
                              type: string
                              enum:
                              - YEARLY_TRAINING_REMOVED
                              - COURSE_UNENROLLED
                              - MIGRATION_COMPANY_UNENROLLED
                              - ADMIN_ARCHIVED
                              - WITHIN_DEADLINE
                              - INCOMPLETE
                              - USER_COMPLETED
                              - ADMIN_COMPLETED
                              - CLASSROOM_COMPLETED
                              - ASSESSMENT_SKIPPED
                              - SYSTEM_REMOVED
                              - ADMIN_REMOVED
                              - MIGRATED
                              example: WITHIN_DEADLINE
                          statusUpdatedAt:
                            allOf:
                            - description: The instant of the latest status change of the training module.
                              type: string
                              format: date-time
                              example: '2025-06-10T21:39:59Z'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                minProperties: 1
                description: JSON description of the issues based on the The Problem Details JSON Object [[RFC7807](https://tools.ietf.org/html/rfc7807)].
                required: &id001
                - title
                properties: &id002
                  title:
                    description: A short, human-readable summary of the problem type.
                    type: string
                  detail:
                    description: A human-readable explanation specific to this occurrence of the problem.
                    type: string
                  invalid-params:
                    description: An array of objects, each representing a parameter that was invalid.
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                          description: The name of the invalid parameter.
                        reason:
                          type: string
                          description: The reason why the parameter is invalid.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                minProperties: 1
                description: JSON description of the issues based on the The Problem Details JSON Object [[RFC7807](https://tools.ietf.org/html/rfc7807)].
                required: *id001
                properties: *id002
  /v1/learner-training-modules/{id}:
    get:
      tags:
      - Learner Training Modules
      summary: Get a learner training module by id
      description: Get a training module.
      operationId: getLearnerTrainingModuleById
      parameters:
      - name: id
        in: path
        required: true
        schema:
          description: The unique identifier of a learner training module.
          type: string
          pattern: ^[a-zA-Z0-9]+$
          example: ltm456ghi9
      security:
      - basic_auth: []
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - id
                  - trainingCampaignId
                  - learnerId
                  - moduleName
                  - lengthInMinutes
                  - assignedAt
                  - status
                  - statusUpdatedAt
                  properties:
                    id:
                      allOf:
                      - description: The unique identifier of a learner training module.
                        type: string
                        pattern: ^[a-zA-Z0-9]+$
                        example: ltm456ghi9
                    trainingCampaignId:
                      allOf:
                      - description: The unique identifier of a training campaign.
                        type: string
                        pattern: ^[a-zA-Z0-9]+$
                        example: tc456xyz78
                    learnerId:
                      allOf:
                      - description: The unique identifier of a learner.
                        type: string
                        pattern: ^[a-zA-Z0-9]+$
                        example: abc123def4
                    moduleName:
                      allOf:
                      - description: The name of the training module.
                        type: string
                        example: Foundations
                    lengthInMinutes:
                      allOf:
                      - description: The training length of the module in minutes.
                        type: number
                        example: 45
                    assignedAt:
                      allOf:
                      - description: The date and time the learner was assigned the training module.
                        type: string
                        format: date-time
                        example: '2025-05-01T00:00:00Z'
                    status:
                      allOf:
                      - description: 'The status of the learner training module.


                          Active statuses (learner can still interact and complete training):

                          - WITHIN_DEADLINE: Assigned but not yet completed, still within the deadline

                          - INCOMPLETE: Assigned but not completed, the deadline has passed


                          Completed statuses:

                          - USER_COMPLETED: Learner completed the module themselves

                          - ADMIN_COMPLETED: Administrator marked the module as completed

                          - CLASSROOM_COMPLETED: Completed in a classroom facilitated training

                          - ASSESSMENT_SKIPPED: Learner passed an assessment, and skipped this module


                          Removed statuses:

                          - ADMIN_REMOVED: Administrator removed the module

                          - ADMIN_ARCHIVED: Archived by administrator when training campaign was cancelled or archived

                          - SYSTEM_REMOVED: System automatically removed the module due to a change in population, learner status, or learner profile

                          - YEARLY_TRAINING_REMOVED: Incomplete module that was removed when new yearly training was assigned

                          - COURSE_UNENROLLED: Company unenrolled from the course

                          - MIGRATION_COMPANY_UNENROLLED: Status changed during data migration

                          - MIGRATED: Status changed during data migration'
                        type: string
                        enum:
                        - YEARLY_TRAINING_REMOVED
                        - COURSE_UNENROLLED
                        - MIGRATION_COMPANY_UNENROLLED
                        - ADMIN_ARCHIVED
                        - WITHIN_DEADLINE
                        - INCOMPLETE
                        - USER_COMPLETED
                        - ADMIN_COMPLETED
                        - CLASSROOM_COMPLETED
                        - ASSESSMENT_SKIPPED
                        - SYSTEM_REMOVED
                        - ADMIN_REMOVED
                        - MIGRATED
                        example: WITHIN_DEADLINE
                    statusUpdatedAt:
                      allOf:
                      - description: The instant of the latest status change of the training module.
                        type: string
                        format: date-time
                        example: '2025-06-10T21:39:59Z'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                minProperties: 1
                description: JSON description of the issues based on the The Problem Details JSON Object [[RFC7807](https://tools.ietf.org/html/rfc7807)].
                required: &id003
                - title
                properties: &id004
                  title:
                    description: A short, human-readable summary of the problem type.
                    type: string
                  detail:
                    description: A human-readable explanation specific to this occurrence of the problem.
                    type: string
                  invalid-params:
                    description: An array of objects, each representing a parameter that was invalid.
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                          description: The name of the invalid parameter.
                        reason:
                          type: string
                          description: The reason why the parameter is invalid.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                minProperties: 1
                description: JSON description of the issues based on the The Problem Details JSON Object [[RFC7807](https://tools.ietf.org/html/rfc7807)].
                required: *id003
                properties: *id004
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                minProperties: 1
                description: JSON description of the issues based on the The Problem Details JSON Object [[RFC7807](https://tools.ietf.org/html/rfc7807)].
                required: *id003
                properties: *id004
components:
  securitySchemes:
    basic_auth:
      description: Send requests with the Authorization header that contains the word `Basic` followed by a space and a base64-encoded string of the username and api key, `username:apiKey`.
      type: http
      scheme: basic
x-tagGroups:
- name: General
  tags:
  - Learners
  - Training Campaigns
  - Learner Training Campaigns
  - Learner Training Modules
  - Webhooks