Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
version: '2.0'
title: Tech Risk & Compliance Training API
servers:
- url: https://customer.my.onetrust.com/api/awareness-training
security:
- oauth2: []
tags:
- name: Training
paths:
/v1/courses:
get:
tags:
- Training
summary: Get List of Courses
deprecated: true
description: '> ❗️ End of Support Notification
>
> As of December 5, 2025, this API is now deprecated. For more information, see OneTrust API Sunsetting & Deprecation Guidelines.
Use this API to retrieve a list of all courses with basic course details.
> 🗒 Things to Know
>
> - The `searchText` query parameter can be used to search for courses by title based on keywords. For example, `searchText=privacy` or `searchText=data%20protection`.'
operationId: listOfCoursesUsingGet
parameters:
- name: searchText
in: query
description: The field to search for a particular course.
required: false
schema:
type: string
- name: page
in: query
required: true
description: Page number of the results list (0….N).
schema:
type: integer
format: int64
- name: size
in: query
required: true
description: Number of records per page (0…N).
schema:
type: integer
format: int64
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CourseDetails'
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Not Found
'429':
description: 'Too Many Requests
For more information, see [API Rate Limits](https://developer.onetrust.com/onetrust/reference/rate-limits-overview).'
headers:
Retry-After:
description: The number of seconds after which requests will be allowed again.
schema:
type: integer
format: int32
ot-ratelimit-event-id:
description: The unique identifier for the rate-limiting event.
schema:
type: string
format: uuid
ot-requests-allowed:
description: The number of requests allowed within the specified period.
schema:
type: integer
format: int32
ot-period:
description: The unit of time for which the rate limit applies.
schema:
type: string
enum:
- HOUR
- MINUTE
ot-request-made:
description: The number of requests made within the specified period.
schema:
type: integer
format: int32
/v2/enrollments:
post:
tags:
- Training
summary: Enroll Users to Course
deprecated: true
description: '> ❗️ End of Support Notification
>
> As of December 5, 2025, this API is now deprecated. For more information, see OneTrust API Sunsetting & Deprecation Guidelines.
Use this API to enroll users into a specific course.
> 🗒 Things to Know
>
> - Any number of users can be enrolled into the specified course per each API call.'
operationId: enrollUsersToCourseUsingPost
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/EnrollmentRequest'
description: User enrollment request
required: true
x-examples:
application/json:
courseId: 00000000-0000-0000-0000-000000000001
courseName: Conflict of Interest
courseNameKey: ATCourseConflictOfInterest
deadline: '0000-00-00T00:00:00.000Z'
reminders:
- numberOfDays: 0
type: BEFORE
defaultLanguageId: 00000000-0000-0000-0000-000000000002
defaultLanguageKey: ATLanguageAmericanEnglish
defaultLanguageName: English US
courseLanguageVersion: 1
comments: complete the course within deadline
users:
- id: 00000000-0000-0001-0000-000000000001
- id: 00000000-0000-0002-0000-000000000003
- id: 00000000-0000-0003-0000-000000000002
responses:
'202':
description: Enroll users request has been accepted.
content:
application/json:
schema:
type: string
format: uuid
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Not Found
/v1/enrollment-assignees/{enrollmentAssigneeId}/enrollment-progress:
get:
tags:
- Training
summary: Get User's Enrollment Status
deprecated: true
description: '> ❗️ End of Support Notification
>
> As of December 5, 2025, this API is now deprecated. For more information, see OneTrust API Sunsetting & Deprecation Guidelines.
Use this API to retrieve the enrollment status of a user using the `enrollmentAssigneeId` query parameter.'
operationId: getStatusOfEnrollmentUsingGET
parameters:
- name: enrollmentAssigneeId
in: path
description: ID which gets created when the user is enrolled to a course. The `enrollmentAssigneeId` can be retrieved by calling the [Get Enrollment Details](/onetrust/reference/getenrollmentdetailsusingpost) API.
required: true
schema:
type: string
format: uuid
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/EnrollmentStatusDetails'
examples:
response:
value:
languageId": 00000000-0000-0000-0000-000000000000
languageName": English US
languageNameKey": ATLanguageAmericanEnglish
status": IN_PROGRESS
progress": '{"suspend_data":"","launch_data":"","comments":"","comments_from_lms":"","core":{"student_id":"","student_name":"","lesson_location":"","credit":"","lesson_status":"","entry":"","total_time":"","lesson_mode":"normal","exit":"","session_time":"","score":{"raw":"","min":"","max":"100"}},"objectives":{"childArray":[]},"student_data":{"mastery_score":"","max_time_allowed":"","time_limit_action":""},"student_preference":{"audio":"","language":"","speed":"","text":""},"interactions":{"childArray":[]}}'
courseId": 00000001-0001-0001-0001-000000000001
score": null
completedDT": null
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Not Found
'429':
description: 'Too Many Requests
For more information, see [API Rate Limits](https://developer.onetrust.com/onetrust/reference/rate-limits-overview).'
headers:
Retry-After:
description: The number of seconds after which requests will be allowed again.
schema:
type: integer
format: int32
ot-ratelimit-event-id:
description: The unique identifier for the rate-limiting event.
schema:
type: string
format: uuid
ot-requests-allowed:
description: The number of requests allowed within the specified period.
schema:
type: integer
format: int32
ot-period:
description: The unit of time for which the rate limit applies.
schema:
type: string
enum:
- HOUR
- MINUTE
ot-request-made:
description: The number of requests made within the specified period.
schema:
type: integer
format: int32
/v1/enrollments/enrollment-assignees/{enrollmentAssigneeId}:
delete:
tags:
- Training
summary: Unenroll User from Course
deprecated: true
description: '> ❗️ End of Support Notification
>
> As of December 5, 2025, this API is now deprecated. For more information, see OneTrust API Sunsetting & Deprecation Guidelines.
Use this API to unenroll a user from a specific course using the `enrollmentAssigneeId`.'
operationId: unEnrollUserUsingDELETE
parameters:
- name: enrollmentAssigneeId
in: path
description: ID which gets created when the user is enrolled to a course. The `enrollmentAssigneeId` can be retrieved by calling the [Get Enrollment Details](/onetrust/reference/getenrollmentdetailsusingpost) API.
required: true
schema:
type: string
format: uuid
responses:
'204':
description: No Content
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Not Found
/v1/enrollments/assignments:
post:
tags:
- Training
summary: Get Enrollment Details
deprecated: true
description: '> ❗️ End of Support Notification
>
> As of December 5, 2025, this API is now deprecated. For more information, see OneTrust API Sunsetting & Deprecation Guidelines.
Use this API to retrieve enrollment records for all courses.
> 🗒 Things to Know
>
> The following are examples of available filters that can be applied:
>
>
>
> Available Filters
>
> #### Organization:
>
> [{"field":"organization","operator":"=","value":”00000000-0000-0000-0000-000000000000"}]
>
> #### Assignee ID:
>
> \[{"field":"assigneeId","operator":"=","value":["00000000-0000-0000-0000-000000000000"]}]
> \[{"field":"assigneeId","operator":"=","value":["00000000-0000-0000-0000-000000000001","00000000-0000-0000-0000-000000000002"]}]
>
> #### Assigned Date:
>
> [{"field":"assignedDate","operator":"BW","value":"yyyy-mm-ddT00:00:00.000Z","toValue":"yyyy-mm-ddT00:00:00.000Z"}]
>
> #### Status:
>
> \[{"field":"status","operator":"=","value":["NOT_STARTED"]}]
> \[{"field":"status","operator":"=","value":["NOT_STARTED","COMPLETED"]}]
> Available status values: ["NOT_STARTED","IN_PROGRESS","INCOMPLETE","COMPLETED"]
>
> #### Score:
>
> [{"field":"score","operator":"BW","value":"00","toValue":"100"}]
>
> #### Language ID:
>
> \[{"field":"languageId","operator":"=","value":["00000000-0000-0000-0000-000000000000"]}]
>
> #### Deadline:
>
> [{"field":"deadline","operator":"BW","value":"yyyy-mm-ddT00:00:00.000Z","toValue":"yyyy-mm-ddT00:00:00.000Z"}]
>
> #### Completed Date:
>
> [{"field":"completedDate","operator":"BW","value":"yyyy-mm-ddT00:00:00.000Z","toValue":"yyyy-mm-ddT00:00:00.000Z"}]
>
> #### Course ID:
>
> \[{"field":"courseId","operator":"=","value":["00000000-0000-0000-0000-000000000000"]}]
>
> #### Multiple Filters:
>
> \[ {"field":"courseId","operator":"=","value":["00000000-0000-0000-0000-000000000000"],"additionalInformation":null},
> {"field":"status","operator":"=","value":["NOT_STARTED"],"additionalInformation":null} ]
>
>'
operationId: getEnrollmentDetailsUsingPOST
parameters:
- name: page
in: query
required: false
description: Page number of the results list (0…N).
schema:
type: integer
format: int32
minimum: 0
default: 0
- name: size
in: query
required: false
description: The number of elements to be returned in a page. The maximum is 2000, if you exceed 2000 then 2000 is used by default.
schema:
type: integer
format: int32
minimum: 0
maximum: 2000
default: 10
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SearchCriteriaRequest'
description: Workpaper search
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PageEnrollmentAssigneeInformation'
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Not Found
'429':
description: 'Too Many Requests
For more information, see [API Rate Limits](https://developer.onetrust.com/onetrust/reference/rate-limits-overview).'
headers:
Retry-After:
description: The number of seconds after which requests will be allowed again.
schema:
type: integer
format: int32
ot-ratelimit-event-id:
description: The unique identifier for the rate-limiting event.
schema:
type: string
format: uuid
ot-requests-allowed:
description: The number of requests allowed within the specified period.
schema:
type: integer
format: int32
ot-period:
description: The unit of time for which the rate limit applies.
schema:
type: string
enum:
- HOUR
- MINUTE
ot-request-made:
description: The number of requests made within the specified period.
schema:
type: integer
format: int32
components:
schemas:
CourseSupportedLanguageInfo:
type: array
description: Basic details of the languages supported by the course.
items:
$ref: '#/components/schemas/CourseSupportedLanguageObject'
title: CourseSupportedLanguageInfo
SearchCriteriaRequest:
type: array
description: This is a map of the field name and the field value.
title: SearchCriteriaRequest
items:
$ref: '#/components/schemas/FilterInformation'
PageEnrollmentAssigneeInformation:
type: object
title: PageEnrollmentAssigneeInformation
properties:
content:
type: array
items:
$ref: '#/components/schemas/EnrollmentAssigneeInformation'
empty:
type: boolean
example: 'FALSE'
description: The flag to check if a result list is empty or not.
first:
type: boolean
description: The flag to check if the page is the first page or not.
example: 'TRUE'
last:
type: boolean
example: 'FALSE'
description: the flag to check if the page is the last page or not.
number:
type: integer
format: int32
description: A number to show the total in the list.
example: 0
numberOfElements:
type: integer
format: int32
example: 10
description: Number of total elements returned in the API.
pageable:
$ref: '#/components/schemas/Pageable'
size:
type: integer
format: int32
description: Size of the list.
example: 5
sort:
$ref: '#/components/schemas/Sort'
totalElements:
type: integer
format: int64
description: Total elements in the return list.
example: 20
totalPages:
type: integer
format: int32
description: Total pages returned in the list.
example: 5
Sort:
type: object
title: Sort
properties:
empty:
type: boolean
description: The flag to determine if the list is empty.
example: true
sorted:
type: boolean
description: The flag to determine if the list is sorted. If set True, the list is sorted.
example: true
unsorted:
type: boolean
description: The flag to determine if the list is unsorted. If set True, the list is unsorted.
example: 'True'
UserDTO:
type: object
description: Used to set Course deadline reminder.
properties:
id:
type: string
format: uuid
description: Valid unique id assigned to each user.
title: UserDTO
CourseSupportedLanguageObject:
type: object
properties:
id:
type: string
format: uuid
description: Valid unique id assigned to each language.
name:
type: string
description: Valid unique name assigned to each language.
nameKey:
type: string
description: Valid unique nameKey assigned to each language.
courseVersion:
type: integer
description: Valid course version available for the language.
version:
type: integer
description: Number of times the sql db gets updated.
title: CourseSupportedLanguageObject
CourseObject:
type: object
properties:
id:
type: string
format: uuid
description: Valid unique id assigned to each course.
name:
type: string
description: Valid unique name assigned to each course.
nameKey:
type: string
description: Valid unique nameKey assigned to each course name.
description:
type: string
description: Short summary of the course.
descriptionKey:
type: string
description: Valid unique nameKey assigned to the course description.
courseSupportedLanguages:
$ref: '#/components/schemas/CourseSupportedLanguageInfo'
courseLanguageUpdates:
$ref: '#/components/schemas/CourseLanguageUpdatesInfo'
thumbnailPath:
type: string
description: Path of the course thumbnail.
courseActive:
type: boolean
description: The flag to get the status of the course. The value will be false if no users are enrolled to the course.
title: CourseObject
CourseDetails:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/CourseObject'
errors:
type: array
items:
type: object
meta:
$ref: '#/components/schemas/OneTrustMetadata'
title: CourseDetails
OneTrustSort:
type: object
properties:
direction:
type: string
enum:
- ASC
- DESC
property:
type: string
title: OneTrustSort
Pageable:
type: object
title: Pageable
properties:
offset:
type: integer
format: int64
example: 3
description: The offset of the list.
pageNumber:
type: integer
format: int32
description: Page number of the results list (0….N).
example: 3
pageSize:
type: integer
format: int32
description: Number of records per page (0…N).
example: 23
paged:
type: boolean
description: The flag to determine if the list is paged. If set True, the list is paged.
example: true
sort:
$ref: '#/components/schemas/Sort'
unpaged:
type: boolean
description: The flag to determine if the list is not paged. If set True, the list is not paged.
example: false
EnrollmentReminder:
type: object
description: The reminder for course deadline.
properties:
numberOfDays:
type: integer
format: int32
description: The number of days as a reminder for course deadline.
type:
type: string
description: The reminder type for course deadline.
enum:
- BEFORE
- AFTER
title: EnrollmentReminder
OneTrustPage:
type: object
properties:
first:
type: boolean
description: Flag to check if the result page is the first page.
last:
type: boolean
description: Flag to check if the result page is the last page.
number:
type: integer
format: int64
description: Number assigned to the page.
size:
type: integer
format: int64
description: Number of records in each page.
sort:
type: array
items:
$ref: '#/components/schemas/OneTrustSort'
totalElements:
type: integer
format: int64
description: Total number of elements in a page.
totalPages:
type: integer
format: int64
description: Total number of pages in the result.
title: OneTrustPage
EnrollmentStatusDetails:
type: object
title: EnrollmentStatusDetails
properties:
languageId:
type: string
format: uuid
description: Valid unique id for a particular language.
languageName:
type: string
description: Valid Language available for the course.
languageNameKey:
type: string
description: Valid Language key for the course.
status:
type: string
description: Status of the enrolled user.
progress:
type: string
description: Progress of the enrolled user.
courseId:
type: string
format: uuid
description: Valid unique id for the course which user is assigned.
score:
type: integer
format: int64
description: Score for the course which user is assigned.
completedDT:
type: string
format: date-time
description: Completion Date for the course (If user is in COMPLETED status).
EnrollmentRequest:
type: object
required:
- courseId
- courseName
- courseNameKey
- deadline
- defaultLanguageId
- defaultLanguageName
- defaultLanguageKey
- courseLanguageVersion
- users
properties:
courseId:
type: string
format: uuid
description: ID assigned to each course. The value is obtained from [Get List of Courses](/onetrust/reference/listofcoursesusingget) API.
courseName:
type: string
description: Name of the course.
courseNameKey:
type: string
description: NameKey assigned to each course.
deadline:
type: string
format: date-time
description: The date and time at which the course should be completed. The format is YYYY-MM-DDTHH:MM:SS.FFFZ
reminders:
$ref: '#/components/schemas/EnrollmentReminder'
defaultLanguageId:
type: string
format: uuid
description: Valid unique id assigned to each language. The value is obtained from [Get List of Courses](/onetrust/reference/listofcoursesusingget) API.
defaultLanguageKey:
type: string
description: Valid unique nameKey assigned to each language.
defaultLanguageName:
type: string
description: Valid unique name assigned to each language.
courseLanguageVersion:
type: integer
format: int32
description: Version of the course for particular language.
comments:
type: string
description: Comments added if any while enrolling the users to the course.
users:
type: array
description: Valid unique id assigned to each user.
items:
$ref: '#/components/schemas/UserDTO'
title: EnrollmentRequest
FilterInformation:
type: object
title: FilterInformation
properties:
field:
type: string
description: "The field value to filter the results.\nAvailable field Values:\n organization, assigneeId, assignedDate, status, score, languageId, deadline, completedDate, courseId"
operator:
type: string
description: The search operator for the filter.
example: = , BW
value:
type: object
description: The search value to filter the results.
example: NameA
toValue:
type: object
CourseLanguageUpdatesInfo:
type: object
properties:
languageIds:
type: integer
description: Valid unique id assigned to each language.
languageKeys:
type: integer
description: Valid unique nameKey assigned to each language.
title: CourseLanguageUpdatesInfo
OneTrustMetadata:
type: object
properties:
page:
$ref: '#/components/schemas/OneTrustPage'
title: OneTrustMetadata
EnrollmentAssigneeInformation:
type: object
title: EnrollmentAssigneeInformation
properties:
assigneeId:
type: string
format: uuid
description: ID of an assignee.
example: f3d38630-9246-45be-898a-69878bd108e4
assignedDate:
type: string
format: date-time
description: The date and time at which the course was assigned. The format is YYYY-MM-DDTHH:MM:SS.FFFZ
assigneeName:
type: string
description: Name of the assignee.
assigneeEmail:
type: string
description: Email Id of the assignee.
deadline:
type: string
format: date-time
description: The date and time at which the course should be completed. The format is YYYY-MM-DDTHH:MM:SS.FFFZ
status:
type: string
description: Status of the course period.
enum:
- NOT_STARTED
- IN_PROGRESS
- INCOMPLETE
- COMPLETED
score:
type: integer
format: int32
description: Number of records per page (0…N).
example: 80
completedDate:
type: string
format: date-time
description: The date and time at which user completes the course. The format is YYYY-MM-DDTHH:MM:SS.FFFZ
languageId:
type: string
format: uuid
description: ID assigned to each language.
languageName:
type: string
description: Name of the language.
languageKey:
type: string
description: NameKey assigned to each language.
courseId:
type: string
format: uuid
description: ID assigned to each course.
courseName:
type: string
description: Name of the course.
courseNameKey:
type: string
description: NameKey assigned to each course.
enrollmentAssigneeId:
type: string
format: uuid
description: ID which gets created when the user is enrolled to a course.
orgGroupId:
type: string
format: uuid
description: ID of an organization.
example: f3d38630-9246-45be-898a-69878bd108e4
organization:
type: string
description: Name of the organization.
courseVersion:
type: integer
description: Valid course version to which the user has been enrolled.
enrollmentId:
type: string
format: uuid
description: ID which gets created when the user is enrolled to a course.
securitySchemes:
oauth2:
type: oauth2
flows:
clientCredentials:
tokenUrl: https://{$$.env.host}/api/access/v1/oauth/token
scopes:
TRAINING_READ: Scope used to perform READ operation in Training Module
TRAINING: Scope used for both READ and WRITE operation in Training Module
x-readme:
explorer-enabled: false
metrics-enabled: false
x-onetrust:
spec-label: Swagger 2
links:
Training Knowledge Base: https://my.onetrust.com/s/topic/0TO1Q000000ssEEWAY/awareness-training