Ethena Training Campaigns API

Training campaign information and operations.

Documentation

Specifications

Other Resources

OpenAPI Specification

ethena-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: Training Campaigns
  description: Training campaign information and operations.
paths:
  /v1/training-campaigns:
    get:
      tags:
      - Training Campaigns
      summary: Get training campaigns
      description: "Get many training campaigns. \n\nThe query parameter filters are applied as `AND` conditions across different filters. \nIf multiple filters are used, the response will include only the training campaigns that satisfy all the filters.\n\nWithin a single filter, multiple values are applied as `OR` conditions."
      operationId: getTrainingCampaigns
      parameters:
      - name: id
        in: query
        description: Use this parameter to filter training campaigns by 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: status
        in: query
        description: Filter training campaigns by status. When omitted, training campaigns of all statuses will be included in the response.
        schema:
          type: array
          maxItems: 25
          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: &id001
            - 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: tc123abc25
        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
                        - courseName
                        - campaignName
                        - status
                        - initialTrainingAt
                        properties:
                          id:
                            allOf:
                            - description: The unique identifier of a training campaign.
                              type: string
                              pattern: ^[a-zA-Z0-9]+$
                              example: tc456xyz78
                          courseName:
                            allOf:
                            - description: The name of the course.
                              type: string
                              minLength: 2
                              maxLength: 255
                              example: Cybersecurity Awareness
                          campaignName:
                            allOf:
                            - description: The name of the training campaign.
                              type: string
                              minLength: 2
                              maxLength: 255
                              example: Security Training 2025
                          status:
                            allOf:
                            - 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: *id001
                              example: ACTIVE
                          initialTrainingAt:
                            allOf:
                            - description: The date and time when the training campaign is scheduled to start.
                              type: string
                              format: date-time
                              example: '2025-02-15T00:00:00Z'
                          nextTrainingAt:
                            allOf:
                            - description: The date and time when the next training session is scheduled to start.
                              type: string
                              format: date-time
                              example: '2026-02-15T00:00:00Z'
                          deadlineInDays:
                            allOf:
                            - description: The number of days before the deadline of the training campaign.  The deadline can be calculated as `initialTrainingAt`, plus the number of days specified in this field.  If the deadline in days is null, then the training campaign does not have a deadline.
                              type: integer
                              minimum: 0
                              example: 60
        '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: &id002
                - title
                properties: &id003
                  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: *id002
                properties: *id003
  /v1/training-campaigns/{id}:
    get:
      tags:
      - Training Campaigns
      summary: Get a training campaign by id
      description: Get a training campaign.
      operationId: getTrainingCampaignById
      parameters:
      - name: id
        in: path
        required: true
        schema:
          description: The unique identifier of a training campaign.
          type: string
          pattern: ^[a-zA-Z0-9]+$
          example: tc456xyz78
      security:
      - basic_auth: []
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - id
                  - courseName
                  - campaignName
                  - status
                  - initialTrainingAt
                  properties:
                    id:
                      allOf:
                      - description: The unique identifier of a training campaign.
                        type: string
                        pattern: ^[a-zA-Z0-9]+$
                        example: tc456xyz78
                    courseName:
                      allOf:
                      - description: The name of the course.
                        type: string
                        minLength: 2
                        maxLength: 255
                        example: Cybersecurity Awareness
                    campaignName:
                      allOf:
                      - description: The name of the training campaign.
                        type: string
                        minLength: 2
                        maxLength: 255
                        example: Security Training 2025
                    status:
                      allOf:
                      - 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
                    initialTrainingAt:
                      allOf:
                      - description: The date and time when the training campaign is scheduled to start.
                        type: string
                        format: date-time
                        example: '2025-02-15T00:00:00Z'
                    nextTrainingAt:
                      allOf:
                      - description: The date and time when the next training session is scheduled to start.
                        type: string
                        format: date-time
                        example: '2026-02-15T00:00:00Z'
                    deadlineInDays:
                      allOf:
                      - description: The number of days before the deadline of the training campaign.  The deadline can be calculated as `initialTrainingAt`, plus the number of days specified in this field.  If the deadline in days is null, then the training campaign does not have a deadline.
                        type: integer
                        minimum: 0
                        example: 60
        '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: &id004
                - title
                properties: &id005
                  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: *id004
                properties: *id005
        '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: *id004
                properties: *id005
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