# 360Learning Documentation > Documentation for 360Learning ## Guides - [360Learning API v2](https://360learning.readme.io/docs/introduction.md): Overview of the API v2 and its capabilities. - [Getting started](https://360learning.readme.io/docs/get-started.md): Step-by-step guide to setting up and using the API. - [Step 1: Obtain API v2 credentials](https://360learning.readme.io/docs/step-1-get-your-api-credentials.md) - [Step 2: Get an access token](https://360learning.readme.io/docs/step-2-create-an-access-token.md) - [Step 3: Make your first API call using the access token](https://360learning.readme.io/docs/step-3.md) - [Next steps](https://360learning.readme.io/docs/whats-next.md) - [Authentication](https://360learning.readme.io/docs/authentication.md): Learn how to securely access the API. - [Manage API credentials](https://360learning.readme.io/docs/manage-api-keys.md) - [Authentication best practices](https://360learning.readme.io/docs/authentication-best-practices.md) - [Scopes and permissions](https://360learning.readme.io/docs/oauth-scopes.md): Understand the permissions required for various API actions. - [Scopes best practices](https://360learning.readme.io/docs/scopes-best-practices.md) - [Pagination](https://360learning.readme.io/docs/pagination.md): Learn how to navigate through paginated responses. - [Filtering](https://360learning.readme.io/docs/filtering.md): Discover how to refine API responses with specific criteria. - [Bulk operations](https://360learning.readme.io/docs/bulk-operations-1.md): Perform large-scale operations on data and objects through the API, with features designed to automate, simplify, and track data processes. - [Error handling](https://360learning.readme.io/docs/errors.md): Learn how to interpret and manage errors returned by the API. - [Authentication errors](https://360learning.readme.io/docs/authentication-errors.md) - [Scope errors](https://360learning.readme.io/docs/scopes-errors.md) - [Rate limiting errors](https://360learning.readme.io/docs/copy-of-rate-limiting-errors.md) - [Webhooks](https://360learning.readme.io/docs/webhooks.md) - [Subscriptions](https://360learning.readme.io/docs/subscriptions.md) - [Event payload and headers](https://360learning.readme.io/docs/event-payload-and-headers.md) - [Webhooks security and signature verification](https://360learning.readme.io/docs/security-and-signature-verification.md) - [Retry logic](https://360learning.readme.io/docs/retry-logic.md) - [Testing webhooks](https://360learning.readme.io/docs/testing-webhooks.md) - [Webhooks processing best practices](https://360learning.readme.io/docs/webhooks-processing-best-practices.md) - [Why migrate from API v1 to API v2?](https://360learning.readme.io/docs/api-v1-to-v2-migration-1.md) - [Endpoint mapping](https://360learning.readme.io/docs/endpoint-mapping-1.md) - [Migrate updateClassroomSlotAttendance](https://360learning.readme.io/docs/replace-an-attendance-sheet.md) - [Migrate getCourse](https://360learning.readme.io/docs/retrieve-a-course-migration-guide.md) - [Migrate getCourses](https://360learning.readme.io/docs/list-all-courses-migration-guide.md) - [Migrate getExternalCourse (using external ID)](https://360learning.readme.io/docs/retrieve-an-external-course-migration-guide-1.md) - [Migrate getCoursesStats](https://360learning.readme.io/docs/migrate-getcoursesstats.md) - [Migrate getUserCourseStats](https://360learning.readme.io/docs/migrate-getusercoursestats.md) - [Migrate getUserCourses](https://360learning.readme.io/docs/migrate-getusercourses.md) - [Migrate getCourseStats](https://360learning.readme.io/docs/migrate-getcoursestats.md) - [Migrate createCustomField](https://360learning.readme.io/docs/create-a-custom-field-migration-guide.md) - [Migrate deleteCustomField](https://360learning.readme.io/docs/delete-a-custom-field-migration-guide.md) - [Migrate listCustomFields](https://360learning.readme.io/docs/list-all-custom-fields-migration-guide.md) - [Replace a user custom fields values: Migration guide](https://360learning.readme.io/docs/replace-a-user-custom-fields-values-migration-guide.md) - [Migrate addExternalIdToUser](https://360learning.readme.io/docs/create-an-id-mapping-migration-guide.md) - [Migrate getUserByExternalId](https://360learning.readme.io/docs/list-all-id-mappings-migration-guide.md) - [Retrieve a group: Migration guide](https://360learning.readme.io/docs/retrieve-a-group-migration-guide.md) - [List all memberships in a group: Migration guide](https://360learning.readme.io/docs/list-all-memberships-in-a-group-migration-guide.md) - [Migrate getGroups](https://360learning.readme.io/docs/list-all-groups-migration-guide.md) - [Migrate createGroup](https://360learning.readme.io/docs/create-a-group-migration-guide.md) - [Migrate updateGroup](https://360learning.readme.io/docs/edit-a-group-migration-guide.md) - [Migrate deleteGroup](https://360learning.readme.io/docs/delete-a-group-migration-guide.md) - [Migrate addUserToGroup](https://360learning.readme.io/docs/add-a-user-role-migration-guide.md) - [Migrate deleteUserFromGroup](https://360learning.readme.io/docs/remove-a-user-role-migration-guide.md) - [Migrate getGroupCatalog](https://360learning.readme.io/docs/list-all-content-ids-in-a-group-catalog-migration-guide.md) - [Migrate createPath](https://360learning.readme.io/docs/create-a-path-migration-guide.md) - [Migrate updatePath](https://360learning.readme.io/docs/edit-a-path-migration-guide.md) - [Retrieve metrics for a path session: Migration guide](https://360learning.readme.io/docs/retrieve-metrics-for-a-path-session-migration-guide.md) - [List all enrollments: Migration guide](https://360learning.readme.io/docs/list-all-enrollments-migration-guide.md) - [Replace a path session audience: Migration guide](https://360learning.readme.io/docs/replace-a-path-session-audience-migration-guide.md) - [List all user (path session) statistics: Migration guide](https://360learning.readme.io/docs/list-all-user-path-session-statistics-migration-guide.md) - [List all sessions in a path: Migration guide](https://360learning.readme.io/docs/list-all-sessions-in-a-path-migration-guide.md) - [Migrate createPathSession](https://360learning.readme.io/docs/create-a-path-session-migration-guide.md) - [Retrieve a path session: Migration guide](https://360learning.readme.io/docs/retrieve-a-path-session-migration-guide.md) - [Migrate updatePathSession](https://360learning.readme.io/docs/edit-a-path-session-migration-guide.md) - [Migrate deletePathSession](https://360learning.readme.io/docs/delete-a-path-session-migration-guide.md) - [Migrate getPaths](https://360learning.readme.io/docs/list-all-paths-migration-guide.md) - [Migrate getPath](https://360learning.readme.io/docs/retrieve-a-path-migration-guide.md) - [Migrate postSkills](https://360learning.readme.io/docs/create-a-tag-migration-guide.md) - [Migrate updateSkill](https://360learning.readme.io/docs/replace-a-tag-migration-guide.md) - [Migrate getSkills](https://360learning.readme.io/docs/list-all-tags.md) - [Migrate createOrInviteUser](https://360learning.readme.io/docs/create-a-user-20-migration-guide.md) - [Migrate updateUser](https://360learning.readme.io/docs/edit-a-user-migration-guide.md) - [Migrate getUser](https://360learning.readme.io/docs/retrieve-a-user-migration-guide.md) - [Migrate deleteUser](https://360learning.readme.io/docs/delete-a-user-migration-guide.md) - [Migrate getUsers](https://360learning.readme.io/docs/list-all-users-migration-guide.md) - [Migrate addManagerToUser](https://360learning.readme.io/docs/add-a-manager-to-a-user-migration-guide.md) - [Migrate deleteManagerFromUser](https://360learning.readme.io/docs/remove-a-manager-from-a-user-migration-guide.md) - [Migrate getUserRoles](https://360learning.readme.io/docs/list-all-memberships-of-a-user-migration-guide.md) - [Migrate pseudonymizeUser](https://360learning.readme.io/docs/pseudonymize-user-migration-guide.md) - [Migrate getAllCustomUserLinks](https://360learning.readme.io/docs/list-all-custom-user-links-for-a-user-migration-guide.md) - [Migrate createCustomUserLink](https://360learning.readme.io/docs/create-a-custom-user-link-migration-guide.md) - [Migrate updateCustomUserLink](https://360learning.readme.io/docs/replace-custom-user-links-migration-guide.md) - [Migrate deleteCustomUserLink](https://360learning.readme.io/docs/delete-a-custom-user-link-migration-guide.md) - [Migrate listLearningNeeds](https://360learning.readme.io/docs/list-all-learning-needs-migration-guide-1.md) - [Migrate getCustomLinks](https://360learning.readme.io/docs/list-custom-links-migration-guide.md) - [Migrate deleteCustomLink](https://360learning.readme.io/docs/delete-a-custom-link-migration-guide.md) - [Migrate listProjects](https://360learning.readme.io/docs/migrate-listprojects.md) - [Migrate addToGroupCatalog](https://360learning.readme.io/docs/add-content-to-group-catalog-migration-guide.md) - [Migrate deleteFromGroupCatalog](https://360learning.readme.io/docs/remove-content-from-catalogs.md) - [Migrate addToGroupLibrary](https://360learning.readme.io/docs/add-content-to-libraries-migration-guide.md) - [Migrate deleteFromGroupLibrary](https://360learning.readme.io/docs/remove-content-from-libraries-migration-guide.md) - [Create subscription events: Migration guide](https://360learning.readme.io/docs/template-v2-endpoint-name-migration-guide-copy.md) - [Migrate deleteExternalCourses](https://360learning.readme.io/docs/archive-external-courses-migration-guide.md) - [Migrate importExternalCourses](https://360learning.readme.io/docs/migrate-importexternalcourses.md) - [Migrate importExternalCoursesStats](https://360learning.readme.io/docs/migrate-importexternalcoursesstats.md) - [Create an API-based integration](https://360learning.readme.io/docs/create-an-api-based-integration.md): Learn how to create API-based integrations to synchronize courses and learning statistics into 360Learning customer platforms using the Integrations scope. - [ Step 1: Authenticate](https://360learning.readme.io/docs/step-1-authenticate.md) - [Step 2: Configure the integration](https://360learning.readme.io/docs/step-2.md) - [Step 3: Synchronize content](https://360learning.readme.io/docs/step-3-synchronize-content.md) - [Step 4: Synchronize statistics](https://360learning.readme.io/docs/step-4-synchronize-statistics.md) - [Next steps](https://360learning.readme.io/docs/next-steps.md) ## API Reference - [List all certificate outlines](https://360learning.readme.io/reference/v2certificateoutlinesgetcertificateoutlinescontroller_getcertificateoutlines.md): > πŸ”‘ > > Required OAuth scope: `certificateOutlines:read`. Lists all certificate outlines in your platform. - [Create certificate outline](https://360learning.readme.io/reference/v2certificateoutlinescreatecertificateoutlinecontroller_createcertificateoutline.md): > πŸ”‘ > > Required OAuth scope: `certificateOutlines:write`. Creates a new certificate outline in your platform. - [Delete a certificate outline](https://360learning.readme.io/reference/v2certificateoutlinesdeletecertificateoutlinecontroller_deletecertificateoutline.md): > πŸ”‘ > > Required OAuth scope: `certificateOutlines:write`. Deletes a specific certificate outline given its unique ID. - [Edit a certificate outline](https://360learning.readme.io/reference/v2certificateoutlinesupdatecertificateoutlinecontroller_updatecertificateoutline.md): > πŸ”‘ > > Required OAuth scope: `certificateOutlines:write`. Edits specific fields of an existing certificate outline. Fields not included in the request payload remain unchanged. - [Create a classroom](https://360learning.readme.io/reference/v2classroomscreateclassroomcontroller_createclassroom.md): > πŸ”‘ > > Required OAuth scope: `classrooms:write`. Creates a classroom. - [List all classrooms](https://360learning.readme.io/reference/v2classroomsgetclassroomscontroller_getclassrooms.md): > πŸ”‘ > > Required OAuth scope: `classrooms:read`. > πŸ“– > > This endpoint is paginated with a page size of 500 classrooms. For more information, see the [Pagination guide](doc:pagination). Lists all classrooms in your platform. - [Retrieve a classroom](https://360learning.readme.io/reference/v2classroomsgetclassroomcontroller_getclassroom.md): > πŸ”‘ > > Required OAuth scope: `classrooms:read`. Retrieves information about a classroom given its ID. - [Edit a classroom](https://360learning.readme.io/reference/v2classroomsupdateclassroomcontroller_updateclassroom.md): > πŸ”‘ > > Required OAuth scope: `classrooms:write`. Edits specific fields of an existing classroom. Fields not included in the request payload remain unchanged. - [Add a slot to a classroom](https://360learning.readme.io/reference/v2classroomscreateclassroomslotcontroller_createclassroomslot.md): > πŸ”‘ > > Required OAuth scope: `classrooms:write`. Adds a slot to a given classroom. - [List all slots in a classroom](https://360learning.readme.io/reference/v2classroomsgetclassroomslotscontroller_getclassroomslots.md): > πŸ”‘ > > Required OAuth scope: `classrooms:read`. > πŸ“– > > This endpoint is paginated with a page size of 100 classroom slots. For more information, see the [Pagination guide](doc:pagination). Lists all slots in a given classroom. - [Remove a slot from a classroom](https://360learning.readme.io/reference/v2classroomsdeleteclassroomslotcontroller_deleteclassroomslot.md): > πŸ”‘ > > Required OAuth scope: `classrooms:write`. Removes a slot from a classroom based on the provided slot ID. - [Create an attendance sheet](https://360learning.readme.io/reference/v2classroomscreateattendancesheetcontroller_createattendancesheet.md): > πŸ”‘ > > Required OAuth scope: `attendanceSheets:write`. Creates an attendance sheet for the given classroom slot. - [Edit a classroom slot](https://360learning.readme.io/reference/v2classroomsupdateclassroomslotcontroller_updateclassroomslot.md): > πŸ”‘ > > Required OAuth scope: `classrooms:write`. Edits specific fields of an existing classroom slot. Fields not included in the request payload remain unchanged. - [List all attendance sheets](https://360learning.readme.io/reference/v2classroomsgetattendancesheetscontroller_getattendancesheets.md): > πŸ”‘ > > Required OAuth scope: `attendanceSheets:read`. > πŸ“– > > This endpoint is paginated with a page size of 3,000 attendance sheets. For more information, see the [Pagination guide](doc:pagination). Lists all attendance sheets in your platform for the given classroom slot. - [Delete an attendance sheet](https://360learning.readme.io/reference/v2classroomsdeleteattendancesheetcontroller_deleteattendancesheet.md): > πŸ”‘ > > Required OAuth scope: `attendanceSheets:write`. Deletes a specific attendance sheet given its unique ID. - [Replace an attendance sheet](https://360learning.readme.io/reference/v2classroomsupdateattendancesheetcontroller_updateattendancesheet.md): > πŸ”‘ > > Required OAuth scope: `attendanceSheets:write`. Replaces the attendance sheet in the given classroom slot. - [List all attendances](https://360learning.readme.io/reference/v2classroomsgetattendancescontroller_getattendances.md): > πŸ”‘ > > Required OAuth scope: `attendanceSheets:read`. > πŸ“– > > This endpoint is paginated with a page size of 3,000 attendances. For more information, see the [Pagination guide](doc:pagination). Lists all attendances in your platform for the given classroom slot and attendance sheet. - [Register a user to a classroom slot](https://360learning.readme.io/reference/v2classroomsaddslotregistrationcontroller_addslotregistration.md): > πŸ”‘ > > Required OAuth scope: `classrooms:write`. Registers a user to a classroom slot based on the provided classroom slot ID and user ID. - [List all registrations in a classroom slot](https://360learning.readme.io/reference/v2classroomsgetslotregistrationscontroller_getslotregistrations.md): > πŸ”‘ > > Required OAuth scope: `classrooms:read`. > πŸ“– > > This endpoint is paginated with a page size of 2,000 slot registrations. For more information, see the [Pagination guide](doc:pagination). Lists all users registered to a given classroom slot. - [Edit a classroom slot registration](https://360learning.readme.io/reference/v2classroomsupdateslotregistrationcontroller_updateslotregistration.md): > πŸ”‘ > > Required OAuth scope: `classrooms:write`. Edits specific fields of an existing classroom slot registration. Fields not included in the request payload remain unchanged. - [List all registrations in a classroom](https://360learning.readme.io/reference/v2classroomsgetclassroomregistrationscontroller_getclassroomregistrations.md): > πŸ”‘ > > Required OAuth scope: `classrooms:read`. > πŸ“– > > This endpoint is paginated with a page size of 2,000 slot registrations. For more information, see the [Pagination guide](doc:pagination). Lists all users registered to any slot in the given classroom. - [List all waitlist requests in a classroom slot](https://360learning.readme.io/reference/v2classroomsgetclassroomslotwaitlistcontroller_getclassroomslotwaitlist.md): > πŸ”‘ > > Required OAuth scope: `classrooms:read`. Lists all waitlist requests in a given classroom slot. - [Add a user to a classroom slot waitlist](https://360learning.readme.io/reference/v2classroomsjoinclassroomslotwaitlistcontroller_joinclassroomslotwaitlist.md): > πŸ”‘ > > Required OAuth scope: `classrooms:write`. Adds a user to the waitlist of a given classroom slot. - [Remove a user from a classroom slot waitlist](https://360learning.readme.io/reference/v2classroomsleaveclassroomslotwaitlistcontroller_leaveclassroomslotwaitlist.md): > πŸ”‘ > > Required OAuth scope: `classrooms:write`. Removes a user from the waitlist of a given classroom slot. - [List all courses statistics](https://360learning.readme.io/reference/v2coursesgetallcoursestatscontroller_getallcoursestats.md): > πŸ”‘ > > Required OAuth scope: `courseStats:read`. > πŸ“– > > This endpoint is paginated with a page size of 500 courses attempts statistics. For more information, see the [Pagination guide](doc:pagination). Lists all courses statistics in your platform. - [Archive or restore a course](https://360learning.readme.io/reference/v2coursesarchiveorunarchivecoursecontroller_archiveorunarchivecourse.md): > πŸ”‘ > > Required OAuth scope: `courses:write`. Archives or restores a course. Archiving a course doesn't remove it from paths where it is included. It simply prevents the course from being added to new paths. The archived course will still be accessible in existing paths, but it will be hidden from search results. Statistics are kept and not deleted. - [Retrieve a course](https://360learning.readme.io/reference/v2coursesgetcoursecontroller_getcourse.md): > πŸ”‘ > > Required OAuth scope: `courses:read`. Retrieves the details of a specific course with the provided course ID. - [List all courses](https://360learning.readme.io/reference/v2coursesgetcoursescontroller_getcourses.md): > πŸ”‘ > > Required OAuth scope: `courses:read`. > πŸ“– > > This endpoint is paginated with a page size of 500 courses. For more information, see the [Pagination guide](doc:pagination). Lists all courses in your platform. - [List all tags in a course](https://360learning.readme.io/reference/v2coursesgetcoursetagscontroller_gettags.md): > πŸ”‘ > > Required OAuth scope: `tags:read`. > πŸ“– > > This endpoint is paginated with a page size of 500 tags. For more information, see the [Pagination guide](doc:pagination). Lists all unique tags of the given course. - [Replace all tags in a course](https://360learning.readme.io/reference/v2coursesupdatetagscontroller_updatetags.md): > πŸ”‘ > > Required OAuth scope: `courses:write`. Replaces all tags in the given course with the provided ones. Tags not included are removed. - [Create an eLearning standard course](https://360learning.readme.io/reference/v2coursescreateelearningstandardcoursecontroller_createelearningstandardcourse.md): > πŸ”‘ > > Required OAuth scope: `courses:write`. Creates a new eLearning standard (SCORM, AICC, xAPI, ...) course with the provided eLearning standard file. This endpoint should not be used to create native 360Learning courses. This endpoint has a specific rate limit of 1 request per second. - [Edit an eLearning standard course](https://360learning.readme.io/reference/v2coursesupdateelearningstandardcoursecontroller_updateelearningstandardcourse.md): > πŸ”‘ > > Required OAuth scope: `courses:write`. Edits specific fields of an existing eLearning standard (SCORM, AICC, xAPI, ...) course. Fields not included in the request payload remain unchanged. This endpoint should not be used to edit native 360Learning courses. This endpoint has a specific rate limit of 1 request per second. - [List all custom field values for a course](https://360learning.readme.io/reference/v2coursesgetcoursecustomfieldvaluescontroller_getcoursecustomfieldvalues.md): > πŸ”‘ > > Required OAuth scope: `courses:read`. Lists all custom field values in a given course. - [Replace all custom field values for a course](https://360learning.readme.io/reference/v2coursesupdatecoursecustomfieldvaluescontroller_updatecoursecustomfieldvalues.md): > πŸ”‘ > > Required OAuth scope: `courses:write`. Replaces all custom field values in the given course with the provided ones. Values not included are removed. - [Generate a course from a prompt (internal only)](https://360learning.readme.io/reference/v2coursesgeneratefrompromptcontroller_generatefromprompt.md): > πŸ”‘ > > Required OAuth scope: `courses:internal`. Triggers the generation of a course from a text prompt. This is an internal-only endpoint restricted to demo platforms. The course generation happens asynchronously, and you will receive an email notification when it completes. Retrieve the generated course using GET /courses sorted by created_at. - [Create a custom field](https://360learning.readme.io/reference/v2customfieldscreatecustomfieldcontroller_createcustomfield.md): > πŸ”‘ > > Required OAuth scope: `customFields:write`. Creates a custom field. - [List all custom fields](https://360learning.readme.io/reference/v2customfieldsgetcustomfieldscontroller_getcustomfields.md): > πŸ”‘ > > Required OAuth scope: `customFields:read`. > πŸ“– > > This endpoint is paginated with a page size of 1,000 custom fields. For more information, see the [Pagination guide](doc:pagination). Lists all custom fields in your platform. - [Delete a custom field](https://360learning.readme.io/reference/v2customfieldsdeletecustomfieldcontroller_deletecustomfield.md): > πŸ”‘ > > Required OAuth scope: `customFields:write`. Deletes a specific custom field given its unique ID. - [Edit a custom field](https://360learning.readme.io/reference/v2customfieldsupdatecustomfieldcontroller_updatecustomfield.md): > πŸ”‘ > > Required OAuth scope: `customFields:write`. Edits specific fields of an existing custom field. Fields not included in the request payload remain unchanged. - [List all authorized values](https://360learning.readme.io/reference/v2customfieldsgetauthorizedvaluescontroller_getauthorizedvalues.md): > πŸ”‘ > > Required OAuth scope: `customFields:read`. Lists all authorized values for the given custom field. - [Replace all authorized values](https://360learning.readme.io/reference/v2customfieldsreplaceauthorizedvaluescontroller_replaceauthorizedvalues.md): > πŸ”‘ > > Required OAuth scope: `customFields:write`. Replaces all authorized values in the given custom field with the provided ones. Values not included are removed. - [List custom links](https://360learning.readme.io/reference/v2customlinksgetcustomlinksbycompanycontroller_getcustomlinksbycompany.md): > πŸ”‘ > > Required OAuth scope: `customLinks:read`. > πŸ“– > > This endpoint is paginated with a page size of 1,000 custom links. For more information, see the [Pagination guide](doc:pagination). Lists all custom links. - [Create a custom link](https://360learning.readme.io/reference/v2customlinkscreatecustomlinkcontroller_createcustomlink.md): > πŸ”‘ > > Required OAuth scope: `customLinks:write`. Creates a custom link. - [Delete a custom link](https://360learning.readme.io/reference/v2customlinksdeletecustomlinkcontroller_deletecustomlink.md): > πŸ”‘ > > Required OAuth scope: `customLinks:write`. Deletes the custom link. - [Replace a custom link](https://360learning.readme.io/reference/v2customlinksreplacecustomlinkcontroller_replacecustomlink.md): > πŸ”‘ > > Required OAuth scope: `customLinks:write`. Replaces the custom link with the provided data. Fields not included in the payload are removed. - [Create an ID mapping](https://360learning.readme.io/reference/v2externalidscreateexternalidcontroller_createexternalid.md): > πŸ”‘ > > Required OAuth scope: `externalIds:write`. Creates an external ID mapping. - [List all ID mappings](https://360learning.readme.io/reference/v2externalidsgetexternalidscontroller_getexternalids.md): > πŸ”‘ > > Required OAuth scope: `externalIds:read`. > πŸ“– > > This endpoint is paginated with a page size of 5,000 external IDs. For more information, see the [Pagination guide](doc:pagination). Lists all external ID mappings that link resources together. - [Delete an ID mapping](https://360learning.readme.io/reference/v2externalidsdeleteexternalidcontroller_deleteexternalid.md): > πŸ”‘ > > Required OAuth scope: `externalIds:write`. Deletes a specific external ID mapping given its unique ID. - [Replace an ID mapping](https://360learning.readme.io/reference/v2externalidsupdateexternalidcontroller_updateexternalid.md): > πŸ”‘ > > Required OAuth scope: `externalIds:write`. Replaces an existing external ID mapping with the provided data. - [Add a user's role](https://360learning.readme.io/reference/v2groupsadduserroletogroupcontroller_adduserroletogroup.md): > πŸ”‘ > > Required OAuth scope: `groups:write`. Adds the given role to the given user in the given group. - [Remove a user's role](https://360learning.readme.io/reference/v2groupsremoveuserrolefromgroupcontroller_removeuserrolefromgroup.md): > πŸ”‘ > > Required OAuth scope: `groups:write`. Removes the given role from the given user in the given group. The `learner` role is also removed from all public subgroups down to first private excluded. - [Create a group](https://360learning.readme.io/reference/v2groupscreategroupcontroller_creategroup.md): > πŸ”‘ > > Required OAuth scope: `groups:write`. Creates a new group. - [List all groups](https://360learning.readme.io/reference/v2groupsgetgroupscontroller_getgroups.md): > πŸ”‘ > > Required OAuth scope: `groups:read`. > πŸ“– > > This endpoint is paginated with a page size of 500 groups. For more information, see the [Pagination guide](doc:pagination). Lists all groups in your platform. - [Retrieve a group](https://360learning.readme.io/reference/v2groupsgetgroupcontroller_getgroup.md): > πŸ”‘ > > Required OAuth scope: `groups:read`. Retrieves information about a group given its ID. - [Delete a group](https://360learning.readme.io/reference/v2groupsdeletegroupcontroller_deletegroup.md): > πŸ”‘ > > Required OAuth scope: `groups:write`. Deletes a group given its unique ID. - [List all memberships in a group](https://360learning.readme.io/reference/v2groupsgetgroupmemberscontroller_getgroupmembers.md): > πŸ”‘ > > Required OAuth scope: `groups:read`. > πŸ“– > > This endpoint is paginated with a page size of 1,000 memberships. For more information, see the [Pagination guide](doc:pagination). Lists all the memberships, sorted per user, of a specific group. - [Edit a group](https://360learning.readme.io/reference/v2groupsupdategroupcontroller_updategroup.md): > πŸ”‘ > > Required OAuth scope: `groups:write`. Edits specific fields of an existing group. Fields not included in the request payload remain unchanged. - [List all content IDs in a group catalog](https://360learning.readme.io/reference/v2groupsgetcatalogcontentidscontroller_getcatalogcontentids.md): > πŸ”‘ > > Required OAuth scope: `groups:read`. > πŸ“– > > This endpoint is paginated with a page size of 10,000 unique content IDs. For more information, see the [Pagination guide](doc:pagination). Lists all content IDs of a given type shared in the group catalog. - [List all content IDs in a group library](https://360learning.readme.io/reference/v2groupsgetlibrarycontentidscontroller_getlibrarycontentids.md): > πŸ”‘ > > Required OAuth scope: `groups:read`. > πŸ“– > > This endpoint is paginated with a page size of 10,000 unique content IDs. For more information, see the [Pagination guide](doc:pagination). Lists all content IDs of a given type shared in the group library. - [Set group branding](https://360learning.readme.io/reference/v2groupsupsertgroupcustomizationcolorscontroller_upsertgroupcustomizationcolors.md): > πŸ”‘ > > Required OAuth scope: `groups:write`. Sets the branding for a group. Branding is automatically inherited by all subgroups unless a subgroup defines its own branding. If the Extended Training package is not enabled on your platform, only the root group’s branding can be updated. Fields not included in the request payload remain unchanged. - [Upload group media](https://360learning.readme.io/reference/v2groupsuploadgroupmediacontroller_uploadgroupmedia.md): > πŸ”‘ > > Required OAuth scope: `groups:write`. Uploads media files (banner, background, favicon, logo) to a group. At least one file must be provided. - [Create an integration configuration](https://360learning.readme.io/reference/v2integrationscreateintegrationcontroller_createintegration.md): > πŸ”‘ > > Required OAuth scope: `integrations:write`. Create an integration configuration. - [List integration configurations](https://360learning.readme.io/reference/v2integrationsgetintegrationscontroller_getintegrations.md): > πŸ”‘ > > Required OAuth scope: `integrations:read`. > πŸ“– > > This endpoint is paginated with a page size of 100 integration configurations. For more information, see the [Pagination guide](doc:pagination). Lists all integration configurations. - [Delete an integration configuration](https://360learning.readme.io/reference/v2integrationsdeleteintegrationcontroller_deleteintegration.md): > πŸ”‘ > > Required OAuth scope: `integrations:write`. Deletes a specific configuration given its unique ID and archives all its related content. - [Edit an integration configuration](https://360learning.readme.io/reference/v2integrationseditintegrationcontroller_editintegration.md): > πŸ”‘ > > Required OAuth scope: `integrations:write`. Edits specific fields of an existing integration configuration. Fields not included in the request payload remain unchanged. - [Retrieve an external course](https://360learning.readme.io/reference/v2integrationsgetexternalcoursecontroller_getexternalcourse.md): > πŸ”‘ > > Required OAuth scope: `integrations:read`. Retrieves the details of a specific course with the provided external platform course ID. - [List all learning needs](https://360learning.readme.io/reference/v2learningneedsgetlearningneedscontroller_getlearningneeds.md): > πŸ”‘ > > Required OAuth scope: `learningNeeds:read`. > πŸ“– > > This endpoint is paginated with a page size of 500 learning needs. For more information, see the [Pagination guide](doc:pagination). Lists all learning needs in your platform. - [Create an access token](https://360learning.readme.io/reference/v2authenticationgeneratetokencontroller_generatetoken.md): Creates an OAuth access token using the `client_id` and `client_secret` credentials. Once generated, the token authorizes access to the 360Learning API v2 resources for 1 hour. It must be included in the `Authorization` header of each request as `Bearer`. - [Add tokens](https://360learning.readme.io/reference/v2pathsaddtokenscontroller_addtokens.md): > πŸ”‘ > > Required OAuth scope: `tokens:write`. Add tokens to a specific group for a given path. - [Archive or restore a path](https://360learning.readme.io/reference/v2pathsarchiveorunarchivepathcontroller_archiveorunarchivepath.md): > πŸ”‘ > > Required OAuth scope: `paths:write`. Archives or restores a path. - [Create a path session](https://360learning.readme.io/reference/v2pathscreatepathsessioncontroller_createpathsession.md): > πŸ”‘ > > Required OAuth scope: `paths:write`. Creates a path session for the given path. - [Create a path](https://360learning.readme.io/reference/v2pathscreatepathcontroller_createpath.md): > πŸ”‘ > > Required OAuth scope: `paths:write`. Creates a new path in the platform. - [List all sessions in a path](https://360learning.readme.io/reference/v2pathsgetpathsessionscontroller_getpathsessions.md): > πŸ”‘ > > Required OAuth scope: `paths:read`. > πŸ“– > > This endpoint is paginated with a page size of 100 path sessions. For more information, see the [Pagination guide](doc:pagination). Lists all sessions in a given path. - [Delete a path session](https://360learning.readme.io/reference/v2pathsdeletepathsessioncontroller_deletepathsession.md): > πŸ”‘ > > Required OAuth scope: `paths:write`. Deletes a path session given the path ID and session ID. - [Retrieve a path session](https://360learning.readme.io/reference/v2pathsgetpathsessioncontroller_getpathsession.md): > πŸ”‘ > > Required OAuth scope: `paths:read`. Retrieves information about the path session given the path ID and session ID. - [Edit a path session](https://360learning.readme.io/reference/v2pathsmodifypathsessioncontroller_modifypathsession.md): > πŸ”‘ > > Required OAuth scope: `paths:write`. Edits specific fields of an existing path session. Fields not included in the request payload remain unchanged. - [Delete a path](https://360learning.readme.io/reference/v2pathsdeletepathcontroller_deletepath.md): > πŸ”‘ > > Required OAuth scope: `paths:write`. Deletes a path given the path ID. - [List all enrollments](https://360learning.readme.io/reference/v2pathsgetenrollmentscontroller_getenrollments.md): > πŸ”‘ > > Required OAuth scope: `paths:read`. > πŸ“– > > This endpoint is paginated with a page size of 5,000 enrollments. For more information, see the [Pagination guide](doc:pagination). Lists all enrollments for the given path. - [Retrieve a path](https://360learning.readme.io/reference/v2pathsgetpathcontroller_getpath.md): > πŸ”‘ > > Required OAuth scope: `paths:read`. Retrieves information about a path given its ID. - [List all paths](https://360learning.readme.io/reference/v2pathsgetpathscontroller_getpaths.md): > πŸ”‘ > > Required OAuth scope: `paths:read`. > πŸ“– > > This endpoint is paginated with a page size of 200 paths. For more information, see the [Pagination guide](doc:pagination). Lists all paths in your platform. - [Retrieve a path session audience](https://360learning.readme.io/reference/v2pathsgetsessionaudiencecontroller_getsessionaudience.md): > πŸ”‘ > > Required OAuth scope: `paths:read`. Retrieves information about the path session audience given the path ID and session ID. - [Replace an audience for a path session](https://360learning.readme.io/reference/v2pathsupdatesessionaudiencecontroller_updatesessionaudience.md): > πŸ”‘ > > Required OAuth scope: `paths:write`. Replaces the audience in the given path and session with the provided one. Audience not included is removed. - [Retrieve metrics for a path session](https://360learning.readme.io/reference/v2pathsv2pathsgetsessionstatscontroller_getsessionstats.md): > πŸ”‘ > > Required OAuth scope: `pathStats:read`. Retrieves aggregated metrics for a given path session, including counts of users by session status and total certificates issued. - [List all custom field values for a session](https://360learning.readme.io/reference/v2pathsgetpathsessioncustomfieldvaluescontroller_getpathsessioncustomfieldvalues.md): > πŸ”‘ > > Required OAuth scope: `paths:read`. Lists all custom field values in a given session. - [Replace all custom fields values for a path session](https://360learning.readme.io/reference/v2pathsv2pathsupdatepathsessioncustomfieldvaluescontroller_updatepathsessioncustomfieldvalues.md): > πŸ”‘ > > Required OAuth scope: `paths:write`. Replaces all custom field values in the given path session with the provided ones. Values not included are removed. - [List all tags in a path](https://360learning.readme.io/reference/v2pathsgetpathtagscontroller_gettags.md): > πŸ”‘ > > Required OAuth scope: `tags:read`. > πŸ“– > > This endpoint is paginated with a page size of 500 tags. For more information, see the [Pagination guide](doc:pagination). Lists all unique tag IDs of the given path. - [List all user statistics for a path session](https://360learning.readme.io/reference/v2pathsgetuserstatscontroller_getuserstats.md): > πŸ”‘ > > Required OAuth scope: `pathStats:read`. > πŸ“– > > This endpoint is paginated with a page size of 2,000 user statistics. For more information, see the [Pagination guide](doc:pagination). Lists all user statistics for the given path session. - [Edit a child path session](https://360learning.readme.io/reference/v2pathsmodifychildpathsessioncontroller_modifychildpathsession.md): > πŸ”‘ > > Required OAuth scope: `paths:write`. Edits a child path session given its unique ID and path. - [Replace all steps](https://360learning.readme.io/reference/v2pathsupdatestepscontroller_updatesteps.md): > πŸ”‘ > > Required OAuth scope: `paths:write`. Replaces all steps in the given path with the provided ones. Steps not included are removed. - [Replace all tags in a path](https://360learning.readme.io/reference/v2pathsupdatetagscontroller_updatetags.md): > πŸ”‘ > > Required OAuth scope: `tags:write`. Replaces all tags in the given path with the provided onces. Tags not included are removed. - [Replace all translations for a path](https://360learning.readme.io/reference/v2pathsreplacepathtranslationscontroller_replacepathtranslations.md): > πŸ”‘ > > Required OAuth scope: `paths:write`. Replaces all translations in the given path with the provided ones. Translations not included are removed. - [Edit a path](https://360learning.readme.io/reference/v2pathsupdatepathcontroller_updatepath.md): > πŸ”‘ > > Required OAuth scope: `paths:write`. Edits specific fields of an existing path. Fields not included in the request payload remain unchanged. - [List all user statistics for all paths](https://360learning.readme.io/reference/v2pathsgetpathstatscontroller_getpathstats.md): > πŸ”‘ > > Required OAuth scope: `pathStats:read`. > πŸ“– > > This endpoint is paginated with a page size of 2,000 path user statistics. For more information, see the [Pagination guide](doc:pagination). Lists all user statistics for paths in the platform. - [List all sessions](https://360learning.readme.io/reference/v2pathsgetallpathsessionscontroller_getallpathsessions.md): > πŸ”‘ > > Required OAuth scope: `paths:read`. > πŸ“– > > This endpoint is paginated with a page size of 500 path sessions. For more information, see the [Pagination guide](doc:pagination). Lists all path sessions in your platform. This endpoint does not return path session translations. To retrieve translations, use the [Retrieve a path session](/reference/v2pathsgetpathsessioncontroller_getpathsession) endpoint or the [List all sessions in a path](/reference/v2pathsgetpathsessionscontroller_getpathsessions) endpoint. - [Archive a self-enrolled learner from a path session](https://360learning.readme.io/reference/v2pathsarchiveselfenrollmentcontroller_archiveselfenrollment.md): > πŸ”‘ > > Required OAuth scope: `paths:write`. Archives the self-enrollment of a learner in a path session. Learners enrolled through the Audience Builder are rejected β€” unassign those by updating the session audience with `PUT /audiences` and `excludedLearners`. - [List all projects](https://360learning.readme.io/reference/v2projectsgetprojectscontroller_getprojects.md): > πŸ”‘ > > Required OAuth scope: `projects:read`. > πŸ“– > > This endpoint is paginated with a page size of 500 projects. For more information, see the [Pagination guide](doc:pagination). Lists all live projects in your platform. - [List all the powers](https://360learning.readme.io/reference/v2skillsgetpowerscontroller_getpowers.md): > πŸ”‘ > > Required OAuth scope: `skillsPowers:read`. > πŸ“– > > This endpoint is paginated with a page size of 500 powers. For more information, see the [Pagination guide](doc:pagination). Lists all the powers. - [List all skills](https://360learning.readme.io/reference/v2skillsgetskillscontroller_getskills.md): > πŸ”‘ > > Required OAuth scope: `skills:read`. > πŸ“– > > This endpoint is paginated with a page size of 500 skills. For more information, see the [Pagination guide](doc:pagination). Lists all skills in your platform. - [Replace all jobs for a user](https://360learning.readme.io/reference/v2skillsreplaceuserjobscontroller_replaceuserjobs.md): > πŸ”‘ > > Required OAuth scope: `skillsJobs:write`. Replaces all jobs for the given user with the provided ones. Jobs not included are removed. - [Create a tag](https://360learning.readme.io/reference/v2tagscreatetagcontroller_createtag.md): > πŸ”‘ > > Required OAuth scope: `tags:write`. Creates a tag with the given properties. - [List all tags](https://360learning.readme.io/reference/v2tagsgettagscontroller_gettags.md): > πŸ”‘ > > Required OAuth scope: `tags:read`. > πŸ“– > > This endpoint is paginated with a page size of 5,000 tags. For more information, see the [Pagination guide](doc:pagination). Lists all tags in your platform. - [Delete a tag](https://360learning.readme.io/reference/v2tagsdeletetagcontroller_deletetag.md): > πŸ”‘ > > Required OAuth scope: `tags:write`. Deletes a specific tag given its unique ID. - [Retrieve a tag](https://360learning.readme.io/reference/v2tagsgettagcontroller_gettag.md): > πŸ”‘ > > Required OAuth scope: `tags:read`. Retrieves a tag given its ID. - [Replace a tag](https://360learning.readme.io/reference/v2tagsupdatetagcontroller_updatetag.md): > πŸ”‘ > > Required OAuth scope: `tags:write`. Replaces an existing tag with the provided data. Fields not included in the payload remain unchanged. - [Activate a user](https://360learning.readme.io/reference/v2usersactivateusercontroller_activateuser.md): > πŸ”‘ > > Required OAuth scope: `users:write`. Activates a specific user given its unique ID. - [Add a manager to a user](https://360learning.readme.io/reference/v2usersaddmanagercontroller_addmanager.md): > πŸ”‘ > > Required OAuth scope: `users:write`. Adds a manager to a user. - [Remove a manager from a user](https://360learning.readme.io/reference/v2usersdeletemanagercontroller_deletemanager.md): > πŸ”‘ > > Required OAuth scope: `users:write`. Removes a manager from a user. - [Create an invited user](https://360learning.readme.io/reference/v2userscreateusercontroller_createuser.md): > πŸ”‘ > > Required OAuth scope: `users:write`. Creates a new user account with the invited status. If a user with the same 'mail' or 'username' was previously deleted, this operation will restore their account to an invited status. If 'mail' is provided, the user receives an invitation email upon creation to activate their account, along with other emails. The account can also be activated via the 'Activate a user' endpoint. If 'sendInvitationEmail' is set to false, the user will not receive the invitation email, but may still receive other emails. - [Create a custom user link](https://360learning.readme.io/reference/v2userscreatecustomuserlinkcontroller_createcustomuserlink.md): > πŸ”‘ > > Required OAuth scope: `users:write`. Creates a custom user link for the given user. - [List all users](https://360learning.readme.io/reference/v2usersgetuserscontroller_getusers.md): > πŸ”‘ > > Required OAuth scope: `users:read`. > πŸ“– > > This endpoint is paginated with a page size of 500 users. For more information, see the [Pagination guide](doc:pagination). Lists all users in your platform. - [Delete a user](https://360learning.readme.io/reference/v2usersdeleteusercontroller_deleteuser.md): > πŸ”‘ > > Required OAuth scope: `users:write`. Deletes a specific user given its unique ID. - [Retrieve a user](https://360learning.readme.io/reference/v2usersgetusercontroller_getuser.md): > πŸ”‘ > > Required OAuth scope: `users:read`. Retrieves the profile details of a specific user with their given ID. - [Edit a user](https://360learning.readme.io/reference/v2usersupdateusercontroller_updateuser.md): > πŸ”‘ > > Required OAuth scope: `users:write`. Edits specific fields of an existing user. Fields not included in the request payload remain unchanged. - [Delete a custom user link](https://360learning.readme.io/reference/v2usersdeletecustomuserlinkcontroller_deletecustomuserlink.md): > πŸ”‘ > > Required OAuth scope: `users:write`. Deletes a specific custom user link given its unique ID. - [Import a certificate](https://360learning.readme.io/reference/v2userscreateusercertificatecontroller_createusercertificate.md): > πŸ”‘ > > Required OAuth scope: `users:write`. Imports a certificate for a specific user given its unique ID. - [List all custom user links for a user](https://360learning.readme.io/reference/v2usersgetcustomuserlinkscontroller_getcustomuserlinks.md): > πŸ”‘ > > Required OAuth scope: `users:read`. > πŸ“– > > This endpoint is paginated with a page size of 1,000 custom links. For more information, see the [Pagination guide](doc:pagination). Lists all custom user links for a given user. - [Replace custom user links](https://360learning.readme.io/reference/v2usersupdatecustomuserlinkcontroller_updatecustomuserlink.md): > πŸ”‘ > > Required OAuth scope: `users:write`. Replaces the custom user link with the provided data. - [List all manager IDs for a user](https://360learning.readme.io/reference/v2usersgetmanagerscontroller_getmanagers.md): > πŸ”‘ > > Required OAuth scope: `users:read`. > πŸ“– > > This endpoint is paginated with a page size of 1,000 manager IDs. For more information, see the [Pagination guide](doc:pagination). Lists all the manager IDs for a given user. - [List all subordinate IDs for a user](https://360learning.readme.io/reference/v2usersgetsubordinatescontroller_getsubordinates.md): > πŸ”‘ > > Required OAuth scope: `users:read`. > πŸ“– > > This endpoint is paginated with a page size of 1,000 subordinate IDs. For more information, see the [Pagination guide](doc:pagination). Lists all the subordinate IDs for a given user. - [List all custom field values for a user](https://360learning.readme.io/reference/v2usersgetusercustomfieldvaluescontroller_getusercustomfieldvalues.md): > πŸ”‘ > > Required OAuth scope: `users:read`. Lists all custom field values for a given user. - [Replace a user custom fields values](https://360learning.readme.io/reference/v2usersupdateusercustomfieldvaluescontroller_updateusercustomfieldvalues.md): > πŸ”‘ > > Required OAuth scope: `users:write`. Replaces a user custom fields values given its unique ID. - [List all memberships of a user](https://360learning.readme.io/reference/v2usersgetuserrolesingroupscontroller_getuserrolesingroups.md): > πŸ”‘ > > Required OAuth scope: `users:read`. > πŸ“– > > This endpoint is paginated with a page size of 1,000 user membership. For more information, see the [Pagination guide](doc:pagination). Lists all the memberships, sorted per group, of a specific user. - [Replace the password of a user](https://360learning.readme.io/reference/v2usersreplacepasswordcontroller_replacepassword.md): > πŸ”‘ > > Required OAuth scope: `users:write`. Replaces the password of a user with the provided data. If 'passwordMustBeChanged' is set to true, the user will be forced to change their password on the next login. - [Retrieve a certificate PDF file](https://360learning.readme.io/reference/v2usersgetusercertificateaspdfcontroller_getusercertificateaspdf.md): > πŸ”‘ > > Required OAuth scope: `users:read`. Retrieves a certificate PDF file given the user ID and certificate ID. - [List all certificates for a user](https://360learning.readme.io/reference/v2usersgetusercertificatescontroller_getusercertificates.md): > πŸ”‘ > > Required OAuth scope: `users:read`. > πŸ“– > > This endpoint is paginated with a page size of 1,000 certificates. For more information, see the [Pagination guide](doc:pagination). Lists all certificates in your platform for a given user. - [Pseudonymize user](https://360learning.readme.io/reference/v2userspseudonymizeusercontroller_pseudonymizeuser.md): > πŸ”‘ > > Required OAuth scope: `users:write`. Removes all personal information from a previously deleted user. The first name, last name, email, and username are replaced with random, irreversible alphanumeric strings. Custom field values are deleted permanently. The user ID remains unchanged, so this is not full GDPR anonymization. If 'deleteExternalIds' is set to true, the user's external identifiers are deleted. - [Upload user media](https://360learning.readme.io/reference/v2usersuploadusermediacontroller_uploadusermedia.md): > πŸ”‘ > > Required OAuth scope: `users:write`. Uploads a profile image to a user. - [Update certificates privacy level](https://360learning.readme.io/reference/v2usersupdateusercertificatesprivacylevelcontroller_updateusercertificatesprivacylevel.md): > πŸ”‘ > > Required OAuth scope: `users:write`. Updates the privacy level of the specified certificates belonging to the given user. - [Delete groups](https://360learning.readme.io/reference/v2bulkgroupsdeletegroupscontroller_deletegroups.md): > πŸ”‘ > > Required OAuth scope: `groups:bulk`. > 🚜 > > This endpoint processes up to 2,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1). Deletes multiple groups. It also deletes descendant groups and their contents. Upon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation. - [Add users to groups](https://360learning.readme.io/reference/v2bulkgroupsadduserstogroupscontroller_adduserstogroups.md): > πŸ”‘ > > Required OAuth scope: `groups:bulk`. > 🚜 > > This endpoint processes up to 20,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1). Adds multiple users to groups with their assigned roles. Upon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation. - [Add content to catalogs](https://360learning.readme.io/reference/v2bulkgroupsaddcontentstogroupscatalogcontroller_addcontentstogroupscatalog.md): > πŸ”‘ > > Required OAuth scope: `groups:bulk`. > 🚜 > > This endpoint processes up to 20,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1). Adds multiple content IDs of a given type to groups catalogs. Upon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation. - [Remove users from groups](https://360learning.readme.io/reference/v2bulkgroupsremoveusersfromgroupscontroller_removeusersfromgroups.md): > πŸ”‘ > > Required OAuth scope: `groups:bulk`. > 🚜 > > This endpoint processes up to 20,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1). Removes multiple users from groups with their assigned roles. The `learner` role is also removed from all public subgroups down to first private excluded. Upon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation. - [Remove content from catalogs](https://360learning.readme.io/reference/v2bulkgroupsremovecontentsfromgroupscatalogcontroller_removecontentsfromgroupscatalog.md): > πŸ”‘ > > Required OAuth scope: `groups:bulk`. > 🚜 > > This endpoint processes up to 20,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1). Removes multiple content IDs of a given type from groups catalogs. Upon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation. - [Add content to libraries](https://360learning.readme.io/reference/v2bulkgroupsaddcontentstogroupslibrarycontroller_addcontentstogroupslibrary.md): > πŸ”‘ > > Required OAuth scope: `groups:bulk`. > 🚜 > > This endpoint processes up to 20,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1). Adds multiple content IDs of a given type to groups libraries. Upon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation. - [Remove content from libraries](https://360learning.readme.io/reference/v2bulkgroupsremovecontentsfromgroupslibrarycontroller_removecontentsfromgroupslibrary.md): > πŸ”‘ > > Required OAuth scope: `groups:bulk`. > 🚜 > > This endpoint processes up to 20,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1). Removes multiple content IDs of a given type from groups libraries. Upon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation. - [Import integration statistics](https://360learning.readme.io/reference/v2bulkintegrationsimportexternalstatisticscontroller_importexternalstatistics.md): > πŸ”‘ > > Required OAuth scope: `integrations:bulk`. > 🚜 > > This endpoint processes up to 10,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1). Imports multiple integration statistics in bulk based on the provided `integrationId`. This endpoint will: - Create a new attempt if any of the following is true: `forceNew` is set to `true`; no attempt currently exists for the course and user; or `firstActivityAt` is later than the `lastActivityAt` or `completedAt` of all existing attempts. - Update existing non-completed attempts if `firstActivityAt` is earlier than the `lastActivityAt` or `completedAt` of those attempts. Upon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation. - [Archive external courses](https://360learning.readme.io/reference/v2bulkintegrationsarchiveexternalcoursescontroller_archiveexternalcourses.md): > πŸ”‘ > > Required OAuth scope: `integrations:bulk`. > 🚜 > > This endpoint processes up to 1,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1). Archives multiple external courses in bulk based on the provided integration ID. Upon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation. - [Upsert external courses](https://360learning.readme.io/reference/v2bulkintegrationsimportexternalcoursescontroller_importexternalcourses.md): > πŸ”‘ > > Required OAuth scope: `integrations:bulk`. > 🚜 > > This endpoint processes up to 10,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1). Adds or replaces multiple external courses based on the given `integrationId` and the courses's `externalId`. - If a provided `externalId` matches an existing external course, the course is replaced with the new data. - If no match is found, a new course is created and added to the group catalog and library. Upon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation. - [Retrieve a bulk operation](https://360learning.readme.io/reference/v2bulkoperationsgetbulkoperationcontroller_getbulkoperation.md): > πŸ”‘ > > Required OAuth scope: `bulkOperations:read`. Retrieves a bulk operation with its given ID. - [Retrieve a bulk operation result](https://360learning.readme.io/reference/v2bulkoperationsgetbulkoperationresultscontroller_getbulkoperationresults.md): > πŸ”‘ > > Required OAuth scope: `bulkOperations:read`. Retrieves a completed or erroneous bulk operation result given its unique ID. - [List all bulk operations](https://360learning.readme.io/reference/v2bulkoperationsgetbulkoperationscontroller_getbulkoperations.md): > πŸ”‘ > > Required OAuth scope: `bulkOperations:read`. > πŸ“– > > This endpoint is paginated with a page size of 20 bulk operations. For more information, see the [Pagination guide](doc:pagination). Lists all bulk operations. - [Delete libraries](https://360learning.readme.io/reference/v2bulkskillsdeletelibrariescontroller_deletelibraries.md): > πŸ”‘ > > Required OAuth scope: `skillsLibraries:bulk`. > 🚜 > > This endpoint processes up to 10,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1). Deletes libraries based on the given `externalId`. Upon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation. - [Add skill reviews](https://360learning.readme.io/reference/v2bulkskillsaddskillreviewscontroller_addskillreviews.md): > πŸ”‘ > > Required OAuth scope: `skillsPowers:bulk`. > 🚜 > > This endpoint processes up to 10,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1). Adds multiple skill reviews. - Reviews are related to three kind of actions: 'skill added', 'skill assessed', 'skill deleted'. - In the 'skill assessed' case, the assessment is automatically validated if the assessor is a manager of the user. Upon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation. - [Replace jobs skills](https://360learning.readme.io/reference/v2bulkskillsreplacejobsskillscontroller_replacejobsskills.md): > πŸ”‘ > > Required OAuth scope: `skillsJobSkills:bulk`. > 🚜 > > This endpoint processes up to 10,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1). Replaces jobs skills based on the given `jobId`. - All skills of each job will be replaced by the provided ones. For each job, a maximum of 100 skills is allowed. Upon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation. - [Delete jobs](https://360learning.readme.io/reference/v2bulkskillsdeletejobscontroller_deletejobs.md): > πŸ”‘ > > Required OAuth scope: `skillsJobs:bulk`. > 🚜 > > This endpoint processes up to 10,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1). Deletes jobs based on the given `externalId`. Upon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation. - [Replace users jobs](https://360learning.readme.io/reference/v2bulkskillsreplaceusersjobscontroller_replaceusersjobs.md): > πŸ”‘ > > Required OAuth scope: `skillsJobs:bulk`. > 🚜 > > This endpoint processes up to 10,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1). Replaces users jobs based on the given `userId`. - All jobs of each users will be replaced by the provided ones. For each user, a maximum of 100 jobs is allowed. Upon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation. - [Upsert jobs](https://360learning.readme.io/reference/v2bulkskillsupsertjobscontroller_upsertjobs.md): > πŸ”‘ > > Required OAuth scope: `skillsJobs:bulk`. > 🚜 > > This endpoint processes up to 10,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1). Adds or replaces multiple jobs based on the given `externalId`. - If a provided `externalId` matches an existing job, the job is replaced with the new data. - If no match is found, a new job is created. Upon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation. - [Delete skills](https://360learning.readme.io/reference/v2bulkskillsdeleteskillscontroller_deleteskills.md): > πŸ”‘ > > Required OAuth scope: `skills:bulk`. > 🚜 > > This endpoint processes up to 10,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1). Deletes skills based on the given `externalId`. Upon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation. - [Upsert libraries](https://360learning.readme.io/reference/v2bulkskillsupsertlibrariescontroller_upsertlibraries.md): > πŸ”‘ > > Required OAuth scope: `skillsLibraries:bulk`. > 🚜 > > This endpoint processes up to 10,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1). Adds or replaces multiple libraries based on the given `externalId`. - If a provided `externalId` matches an existing library, the library is replaced with the new data. - If no match is found, a new library is created. Upon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation. - [Upsert skills](https://360learning.readme.io/reference/v2bulkskillsupsertskillscontroller_upsertskills.md): > πŸ”‘ > > Required OAuth scope: `skills:bulk`. > 🚜 > > This endpoint processes up to 10,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1). Adds or replaces multiple skills based on the given `externalId`. - If a provided `externalId` matches an existing skill, the skill is replaced with the new data. - If no match is found, a new skill is created. Upon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation. - [Create email subscription events](https://360learning.readme.io/reference/v2bulksubscriptionscreatesubscriptioneventscontroller_createsubscriptionevents.md): > πŸ”‘ > > Required OAuth scope: `subscriptions:bulk`. > 🚜 > > This endpoint processes up to 20,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1). Creates multiple email subscription events. Upon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation. - [List all events for a webhook subscription](https://360learning.readme.io/reference/v2webhooksubscriptionsgeteventscontroller_getevents.md): > πŸ”‘ > > Required OAuth scope: `webhooks:read`. > πŸ“– > > This endpoint is paginated with a page size of 250 webhook events. For more information, see the [Pagination guide](doc:pagination). Lists all events for a given webhook subscription. - [Create a webhook subscription](https://360learning.readme.io/reference/v2webhooksubscriptionscreatesubscriptioncontroller_createsubscription.md): > πŸ”‘ > > Required OAuth scope: `webhooks:write`. Creates a webhook subscription. - [List all webhook subscriptions](https://360learning.readme.io/reference/v2webhooksubscriptionsgetsubscriptionscontroller_getsubscriptions.md): > πŸ”‘ > > Required OAuth scope: `webhooks:read`. > πŸ“– > > This endpoint is paginated with a page size of 2,000 webhook subscriptions. For more information, see the [Pagination guide](doc:pagination). Lists all webhook subscriptions in your platform. - [Delete a webhook subscription](https://360learning.readme.io/reference/v2webhooksubscriptionsdeletesubscriptioncontroller_deletesubscription.md): > πŸ”‘ > > Required OAuth scope: `webhooks:write`. Deletes a specific webhook subscription given its unique ID. - [Retrieve a webhook subscription](https://360learning.readme.io/reference/v2webhooksubscriptionsgetsubscriptioncontroller_getsubscription.md): > πŸ”‘ > > Required OAuth scope: `webhooks:read`. Retrieves the details of a specific webhook subscription with the provided subscription ID. - [Edit a webhook subscription](https://360learning.readme.io/reference/v2webhooksubscriptionsupdatesubscriptioncontroller_updatesubscription.md): > πŸ”‘ > > Required OAuth scope: `webhooks:write`. Edits specific fields of an existing webhook subscription. Fields not included in the request payload remain unchanged. - [Retrieve the signing secret of a webhook subscription](https://360learning.readme.io/reference/v2webhooksubscriptionsgetsigningsecretcontroller_getsigningsecret.md): > πŸ”‘ > > Required OAuth scope: `webhookSecrets:read`. Retrieves the details of the signing secret associated with the provided webhook subscription ID. - [Rotate the signing secret of a webhook subscription](https://360learning.readme.io/reference/v2webhooksubscriptionsrotatesigningsecretcontroller_rotatesigningsecret.md): > πŸ”‘ > > Required OAuth scope: `webhookSecrets:write`. Rotates the signing secret for the given webhook subscription. In addition to the new signature, the events will also be signed with the legacy secret for 24 hours. - [Retry the failed webhook events of a webhook subscription](https://360learning.readme.io/reference/v2webhooksubscriptionsretryeventfailurescontroller_retryeventfailures.md): > πŸ”‘ > > Required OAuth scope: `webhooks:write`. Retries all failed webhook events for a subscription within the specified timeframe (maximum 3 days per request). Events are retained for 90 days and can be retried in multiple requests. - [Retry the successful webhook events of a webhook subscription](https://360learning.readme.io/reference/v2webhooksubscriptionsretryeventsuccessescontroller_retryeventsuccesses.md): > πŸ”‘ > > Required OAuth scope: `webhooks:write`. Retries all successful webhook events for a subscription within the specified timeframe (maximum 3 days per request). Events are retained for 90 days and can be retried in multiple requests. - [xAPI Course Started](https://360learning.readme.io/reference/webhookxapistarted.md): Sent to your endpoint when a learner starts a course on the platform. This event is a statement following the xAPI specification. - [xAPI](https://360learning.readme.io/reference/webhookxapi.md): Sent to your endpoint when any xAPI event occurs. This event is a statement following the xAPI specification. - [User updated](https://360learning.readme.io/reference/webhookuserupdated.md): Sent to your endpoint when one or more of the following user properties are updated: mail, username, firstName, lastName, lang, custom, job, organization, phone, toBeDeactivatedAt, primaryGroupId. - [User activated](https://360learning.readme.io/reference/webhookuseractivated.md): Sent to your endpoint when a user is activated for the first time in your platform. - [User deleted](https://360learning.readme.io/reference/webhookuserdeleted.md): Sent to your endpoint when a user is soft deleted from your platform. - [User invited](https://360learning.readme.io/reference/webhookuserinvited.md): Sent to your endpoint when a user is invited to your platform. - [User reactivated](https://360learning.readme.io/reference/webhookuserreactivated.md): Sent to your endpoint when a user is reactivated in your platform. - [User created](https://360learning.readme.io/reference/webhookusercreated.md): Sent to your endpoint when a user is created as active in your platform. - [User assessment corrected](https://360learning.readme.io/reference/webhookuserassessmentcorrected.md): Sent to your endpoint when a user assessment in a path is corrected on your platform. The payload's success field indicates whether the user passed or failed. - [User certificate awarded](https://360learning.readme.io/reference/webhookusercertificateawarded.md): Sent to your endpoint when a user certificate is awarded in your platform. - [Path session users enrolled](https://360learning.readme.io/reference/webhookpathsessionusersenrolled.md): Sent to your endpoint when users are enrolled in a path session on your platform. Call the `List all enrollments` endpoint to get the updated list of enrolled users. - [Learner joined classroom slot waitlist](https://360learning.readme.io/reference/webhookpathsessionclassroomslotwaitlistuserjoined.md): Sent to your endpoint when a learner joins a classroom slot waitlist within a path session. - [Classroom slot waitlist closed](https://360learning.readme.io/reference/webhookpathsessionclassroomslotwaitlistclosed.md): Sent to your endpoint when a classroom slot's waitlist is closed. - [Path session user status updated](https://360learning.readme.io/reference/webhookpathsessionuserstatusupdated.md): Sent to your endpoint when a learner's status in a path session changes. This event is emitted once per status transition (e.g. onTime β†’ late, onTime β†’ successful). It is also emitted the first time a status is computed for a learner after enrollment. Each status change results from a tracking recalculation triggered by learner activity or other platform processes β€” for example, when a session opens or when a mandatory step is added to a path. One recalculation may affect multiple learners at once, producing bursts of webhook events. See our Webhook processing best practices guide (https://360learning.readme.io/docs/webhooks-processing-best-practices). - [Path session users unenrolled](https://360learning.readme.io/reference/webhookpathsessionusersunenrolled.md): Sent to your endpoint when users are unenrolled from a path session on your platform. - [Path created](https://360learning.readme.io/reference/webhookpathcreated.md): Sent to your endpoint when a path is created in your platform. - [Path archived](https://360learning.readme.io/reference/webhookpatharchived.md): Sent to your endpoint when a path is archived in your platform. - [Learners unregistered full classroom slot](https://360learning.readme.io/reference/webhookpathsessionclassroomslotusersunregisteredfull.md): Sent to your endpoint when a full classroom slot is left by learners. - [Classroom slot waitlist opened](https://360learning.readme.io/reference/webhookpathsessionclassroomslotwaitlistopened.md): Sent to your endpoint when a waitlist is added to a classroom slot. - [Path session removed](https://360learning.readme.io/reference/webhookpathsessionremoved.md): Sent to your endpoint when a session is removed from a path. For paths with path steps, this event only fires for the top-level session, not for sessions removed within each path step. This event is not fired when a session is removed as part of a path deletion. - [Path session added](https://360learning.readme.io/reference/webhookpathsessionadded.md): Sent to your endpoint when a session is added to a path. For paths with path steps, this event only fires for the top-level session, not for sessions created within each path step. - [Path deleted](https://360learning.readme.io/reference/webhookpathdeleted.md): Sent to your endpoint when a path is deleted in your platform. - [Path updated](https://360learning.readme.io/reference/webhookpathupdated.md): Sent to your endpoint when a path is updated on your platform. The payload's changeType field identifies the type of change (one of: settings, authors, group, duration, certificate, requirements, or steps) so consumers can decide whether to react. New changeType values may be added in future releases β€” only match the values your integration handles. - [Group created](https://360learning.readme.io/reference/webhookgroupcreated.md): Sent to your endpoint when a group is created in your platform. - [Group deleted](https://360learning.readme.io/reference/webhookgroupdeleted.md): Sent to your endpoint when a group is deleted in your platform. - [Group updated](https://360learning.readme.io/reference/webhookgroupupdated.md): Sent to your endpoint when any of the following group fields are updated in your platform: public, parentId, name, custom, bannerImageId, backgroundImageId, faviconImageId, logoImageId, subdomain, url, moderationCharter, privacyPolicy, termsOfUse, or imprint. - [Bulk operation created](https://360learning.readme.io/reference/webhookbulkoperationcreated.md): Sent to your endpoint when a bulk operation is created through API on your platform. - [Bulk operation ended](https://360learning.readme.io/reference/webhookbulkoperationended.md): Sent to your endpoint when a bulk operation has ended on your platform. - [Course attempt closed](https://360learning.readme.io/reference/webhookcourseattemptclosed.md): Sent to your endpoint when an attempt is closed. This event is currently triggered only when learners finish an attempt, materialized through the reason attribute. The reason attribute potential values are expected to grow over time as new closure reasons will be supported. - [Retrieve my profile](https://360learning.readme.io/reference/v2usersgetprofilecontroller_getprofile.md): > πŸ”‘ > > Required OAuth scope: `users:read`. Retrieves the profile details of the authenticated user. This user-authorized endpoint can only be used with a token issued for a specific user. Refer to the [Create an access token](doc:authentication#step-1-create-an-access-token) documentation for more information. - [Create an access token for plugin (backend)](https://360learning.readme.io/reference/v2authenticationgeneratepluginbackendtokencontroller_generatepluginbackendtoken.md): Creates an OAuth access token using the `client_id` and `client_secret` credentials. Once generated, the token authorizes access to the 360Learning API v2 resources for 1 hour. It must be included in the `Authorization` header of each request as `Bearer`. - [Create an access token for plugin (client)](https://360learning.readme.io/reference/v2authenticationgeneratepluginclienttokencontroller_generatepluginclienttoken.md): Creates an OAuth access token. Once generated, the token authorizes access to the 360Learning API v2 resources for 1 hour. It must be included in the `Authorization` header of each request as `Bearer`. ## Recipes - [Create an access token](https://360learning.readme.io/recipes/create-an-access-token.md) ## Changelog - [2026-06-03](https://360learning.readme.io/changelog/2026-6-3.md) - [2026-05-13](https://360learning.readme.io/changelog/2026-05-13.md) - [2026-04-22](https://360learning.readme.io/changelog/2026-04-22.md) - [2026-04-01](https://360learning.readme.io/changelog/2026-04-01.md) - [2026-03-11](https://360learning.readme.io/changelog/2026-03-11.md)