Ethena Learner Training Campaigns API

Learner training campaign information and operations.

Documentation

Specifications

Other Resources

OpenAPI Specification

ethena-learner-training-campaigns-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  version: 1.3.0
  title: Ethena Learner Training Campaigns 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 Campaigns
  description: Learner training campaign information and operations.
paths:
  /v1/learner-training-campaigns:
    get:
      tags:
      - Learner Training Campaigns
      summary: Get learner training campaigns
      description: "Get many learner training campaigns. Only learner training campaigns for `ACTIVE` training campaigns are included in the response.\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 campaigns that satisfy all the filters.\n\nWithin a single filter, multiple values are applied as `OR` conditions."
      operationId: getLearnerTrainingCampaigns
      parameters:
      - name: id
        in: query
        description: Use this parameter to filter learner training campaigns by id.
        schema:
          type: array
          maxItems: 25
          items:
            description: The unique identifier of a learner training campaign.
            type: string
            pattern: ^[a-zA-Z0-9]+$
            example: ltc789def0
        example:
        - ltc789def0
        - ltc789def1
      - name: learnerId
        in: query
        description: Use this parameter to filter learner training campaigns 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: trainingCampaignId
        in: query
        description: Use this parameter to filter learner training campaigns 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: learnerStatus
        in: query
        description: Use this parameter to filter learner training campaigns by the status of the learner. When omitted, learner training campaigns 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: enrollmentStatus
        in: query
        description: Use this parameter to filter learner training campaigns by enrollment status.
        schema:
          type: array
          maxItems: 25
          items:
            description: The status of the learner's enrollment in the training campaign.  `UPCOMING` occurs when the learner has no assigned or completed training yet,  either because they were enrolled during a deferral period or all training was manually removed.
            type: string
            enum: &id001
            - UPCOMING
            - ACTIVE
            example: ACTIVE
        example:
        - ACTIVE
      - name: completionStatus
        in: query
        description: Use this parameter to filter learner training campaigns by completion status.
        schema:
          type: array
          maxItems: 25
          items:
            description: The completion status of the learner training campaign.  If the enrollment status is `UPCOMING`, there will not be a completion status.
            type: string
            enum: &id002
            - COMPLETED
            - WITHIN_DEADLINE
            - INCOMPLETE
            example: WITHIN_DEADLINE
        example:
        - WITHIN_DEADLINE
        - INCOMPLETE
      - 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: ltc789def25
        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
                        - enrollmentStatus
                        properties:
                          id:
                            allOf:
                            - description: The unique identifier of a learner training campaign.
                              type: string
                              pattern: ^[a-zA-Z0-9]+$
                              example: ltc789def0
                          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
                          enrollmentStatus:
                            allOf:
                            - description: The status of the learner's enrollment in the training campaign.  `UPCOMING` occurs when the learner has no assigned or completed training yet,  either because they were enrolled during a deferral period or all training was manually removed.
                              type: string
                              enum: *id001
                              example: ACTIVE
                          completionStatus:
                            allOf:
                            - description: The completion status of the learner training campaign.  If the enrollment status is `UPCOMING`, there will not be a completion status.
                              type: string
                              enum: *id002
                              example: WITHIN_DEADLINE
                          nextTrainingAt:
                            allOf:
                            - description: The date and time when the next training session is scheduled to start.
                              type: string
                              format: date-time
                              example: '2026-09-01T00:00:00Z'
                          deadline:
                            allOf:
                            - description: The deadline for the learner to complete the training campaign. In the case of multiple assignments, this is the oldest incomplete assignment deadline.
                              type: string
                              format: date-time
                              example: '2025-12-10T00:00:00Z'
        '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
  /v1/learner-training-campaigns/{id}:
    get:
      tags:
      - Learner Training Campaigns
      summary: Get a learner training campaign by id
      description: Get a learner training campaign.
      operationId: getLearnerTrainingCampaignById
      parameters:
      - name: id
        in: path
        required: true
        schema:
          description: The unique identifier of a learner training campaign.
          type: string
          pattern: ^[a-zA-Z0-9]+$
          example: ltc789def0
      security:
      - basic_auth: []
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - id
                  - trainingCampaignId
                  - learnerId
                  - enrollmentStatus
                  properties:
                    id:
                      allOf:
                      - description: The unique identifier of a learner training campaign.
                        type: string
                        pattern: ^[a-zA-Z0-9]+$
                        example: ltc789def0
                    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
                    enrollmentStatus:
                      allOf:
                      - description: The status of the learner's enrollment in the training campaign.  `UPCOMING` occurs when the learner has no assigned or completed training yet,  either because they were enrolled during a deferral period or all training was manually removed.
                        type: string
                        enum:
                        - UPCOMING
                        - ACTIVE
                        example: ACTIVE
                    completionStatus:
                      allOf:
                      - description: The completion status of the learner training campaign.  If the enrollment status is `UPCOMING`, there will not be a completion status.
                        type: string
                        enum:
                        - COMPLETED
                        - WITHIN_DEADLINE
                        - INCOMPLETE
                        example: WITHIN_DEADLINE
                    nextTrainingAt:
                      allOf:
                      - description: The date and time when the next training session is scheduled to start.
                        type: string
                        format: date-time
                        example: '2026-09-01T00:00:00Z'
                    deadline:
                      allOf:
                      - description: The deadline for the learner to complete the training campaign. In the case of multiple assignments, this is the oldest incomplete assignment deadline.
                        type: string
                        format: date-time
                        example: '2025-12-10T00:00:00Z'
        '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: &id005
                - title
                properties: &id006
                  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: *id005
                properties: *id006
        '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: *id005
                properties: *id006
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