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: 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 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 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 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. 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 OneTrustSort: type: object properties: direction: type: string enum: - ASC - DESC property: type: string title: OneTrustSort CourseSupportedLanguageInfo: type: array description: Basic details of the languages supported by the course. items: $ref: '#/components/schemas/CourseSupportedLanguageObject' title: CourseSupportedLanguageInfo 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 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 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). 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 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 OneTrustMetadata: type: object properties: page: $ref: '#/components/schemas/OneTrustPage' title: OneTrustMetadata 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 SearchCriteriaRequest: type: array description: This is a map of the field name and the field value. title: SearchCriteriaRequest items: $ref: '#/components/schemas/FilterInformation' 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 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' 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 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