Goethena Learner Training Campaigns API
Learner training campaign information and operations.
Learner training campaign information and operations.
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