---
title: 360learning API Integration on Truto
slug: 360learning
category: HRIS
canonical: "https://truto.one/integrations/detail/360learning/"
---

# 360learning API Integration on Truto



**Category:** HRIS  
**Status:** Beta

## MCP-ready AI tools

Truto exposes 156 tools for 360learning that AI agents can call directly.

- **list_all_360_learning_certificate_outlines** — List all certificate outlines in 360learning, optionally filtered by createdAt or groupId using LHS bracket notation. Returns: id, createdAt.
- **create_a_360_learning_certificate_outline** — Create a new certificate outline in 360learning. Returns the created certificate outline including id, groupId, createdAt, and wording.
- **update_a_360_learning_certificate_outline_by_id** — Update specific fields of an existing 360learning certificate outline by id. Fields not included in the request body remain unchanged. Returns the updated certificate outline including certificateOutlineId, groupId, createdAt, and wording. Required: id.
- **delete_a_360_learning_certificate_outline_by_id** — Delete a specific 360learning certificate outline by id. Returns an empty 204 response on success. Required: id.
- **list_all_360_learning_classrooms** — List all classrooms in 360learning, with optional filtering by group, creation date, and modification date. Returns: id, createdAt. Page size of 500 classrooms.
- **create_a_360_learning_classroom** — Create a classroom in 360learning. Returns: id, createdAt. Required: groupId.
- **get_single_360_learning_classroom_by_id** — Get a single classroom in 360learning by id. Returns: id, createdAt. Required: id.
- **update_a_360_learning_classroom_by_id** — Update specific fields of an existing classroom in 360learning; fields not included in the request payload remain unchanged. Returns: id, createdAt. Required: id.
- **list_all_360_learning_classroom_slots** — List all slots in a 360learning classroom. Returns: createdAt. Required: classroom_id. Page size of 100 slots.
- **update_a_360_learning_classroom_slot_by_id** — Edit specific fields of an existing classroom slot in 360learning. Fields not included in the request payload remain unchanged. Returns: createdAt. Required: classroom_id, id.
- **delete_a_360_learning_classroom_slot_by_id** — Remove a classroom slot from a classroom in 360learning by its slot ID. Returns an empty 204 response on success. Required: classroom_id, id.
- **list_all_360_learning_classrooms_registrations** — List all classroom registrations in 360learning. Returns: id, createdAt. Page size of 7,000 registrations per page.
- **list_all_360_learning_classroom_registrations** — List all slot registrations for a classroom in 360learning. Returns: id, classroom_slot_id, user_id, status. Required: classroom_id. Paginated with a page size of 7,000 registrations.
- **create_a_360_learning_classroom_slot_attendance_sheet** — Create an attendance sheet for a classroom slot in 360learning. Returns the created attendance sheet object as either an opened or closed attendance sheet. Required: classroom_slot_id. A maximum of 100 attendance sheets is allowed per classroom slot.
- **update_a_360_learning_classroom_slot_attendance_sheet_by_id** — Replace an attendance sheet in a 360learning classroom slot by id. Returns the updated attendance sheet object including its id and sheet-specific attributes (shape varies for opened vs closed sheets). Required: classroom_slot_id, id.
- **delete_a_360_learning_classroom_slot_attendance_sheet_by_id** — Delete an attendance sheet from a 360learning classroom slot by id. Returns an empty 204 response on success. Required: classroom_slot_id, id.
- **list_all_360_learning_attendance_sheet_attendances** — List all learner attendances in 360learning for a given classroom slot and attendance sheet. Returns a paginated array of attendance records (AttendanceDTO objects) with a page size of 3,000. Required: classroom_slot_id, attendance_sheet_id.
- **list_all_360_learning_classroom_slot_waitlists** — List all waitlist requests in a 360learning classroom slot. Returns: userId. Required: classroom_slot_id.
- **create_a_360_learning_classroom_slot_waitlist** — Add a user to a 360learning classroom slot waitlist. The classroom slot must be full and not yet started. Returns an empty 204 response on success. Required: classroom_slot_id, user_id.
- **delete_a_360_learning_classroom_slot_waitlist_by_id** — Remove a user from a 360learning classroom slot waitlist. Returns an empty 204 response on success. Required: classroom_slot_id, id.
- **create_a_360_learning_classroom_slot_registration** — Register a user to a 360learning classroom slot. Returns the created slot registration including userId, hasAttended, status, createdAt, and modifiedAt. Required: classroom_slot_id, user_id. The user must be enrolled in the classroom slot's path session, and the slot must not be full.
- **update_a_360_learning_classroom_slot_registration_by_id** — Update specific fields of a classroom slot registration in 360learning. Fields not included in the request body remain unchanged. Returns the updated registration including id, userId, status, hasAttended, createdAt, and modifiedAt. Required: classroom_slot_id, id.
- **delete_a_360_learning_classroom_slot_registration_by_id** — Unregister a user from a classroom slot in 360learning. Returns an empty 204 response on success. Required: classroom_slot_id, id.
- **list_all_360_learning_classroom_slot_registrations** — List all users registered to a classroom slot in 360learning. Returns: id, createdAt. Required: classroom_slot_id. Paginated with a page size of 7,000 registrations.
- **get_single_360_learning_course_by_id** — Get a single 360Learning course by id. Returns: id, createdAt, type. Required: id.
- **list_all_360_learning_courses** — List all courses in 360Learning with optional filters by status, type, author, group, creation/modification date, tags, co-authors, source language, and collaborative learning flag. Returns: id, createdAt, type. Page size is 500 courses.
- **360_learning_courses_archive** — Archive or restore a 360learning course. Returns: id, status, type, createdAt, modifiedAt, authorId, groupId, originalAuthorId, tagIds, coAuthorIds, sourceLang, collaborativeLearning. Required: course_id. Archiving prevents the course from being added to new paths but keeps it accessible in existing paths; statistics are not deleted.
- **update_a_360_learning_courses_elearning_standard_by_id** — Update specific fields of an existing eLearning standard (SCORM, AICC, xAPI) course in 360Learning. Fields omitted from the request body remain unchanged. Returns the updated course including id, groupId, and duration. Required: id (courseId). Not for native 360Learning courses; rate limited to 1 request per second.
- **create_a_360_learning_courses_generate_from_prompt** — Trigger asynchronous generation of a 360learning course from a text prompt. An email notification is sent when generation completes; retrieve the course via GET /courses sorted by created_at. Required: prompt, userId, groupId. Returns an empty 200 response on success.
- **list_all_360_learning_courses_stats** — List all courses statistics in 360learning. Returns: courseId, userId, completedAt. Page size of 500 course attempt statistics per page.
- **list_all_360_learning_custom_fields** — List all custom fields in 360learning with optional filtering by name, targetType, and type. Returns: id, name, targetType, type. Page size of 1,000 custom fields.
- **create_a_360_learning_custom_field** — Create a custom field in 360learning. Returns: id, targetType, type, name. Required: name, targetType, type.
- **update_a_360_learning_custom_field_by_id** — Update an existing custom field in 360learning. Returns: id, targetType, type, name. Required: id. Fields not included in the payload remain unchanged.
- **delete_a_360_learning_custom_field_by_id** — Delete a custom field in 360learning by id. Returns an empty 204 response on success. Required: id.
- **list_all_360_learning_custom_field_authorized_values** — List all authorized values for a specific custom field in 360learning. Returns an array of authorized value strings, which may be date strings in YYYY-MM-DD format or plain string values depending on the custom field type. Required: custom_field_id.
- **360_learning_custom_field_authorized_values_bulk_update** — Replace all authorized values for a 360Learning custom field, removing any existing values not included in the request body. Returns an array of the updated authorized value strings (YYYY-MM-DD dates for date-type fields, or arbitrary strings for string-type fields). Required: custom_field_id.
- **list_all_360_learning_custom_links** — List all custom links in 360Learning. Returns an array of custom link objects including id, name, and type. Page size is 1,000.
- **create_a_360_learning_custom_link** — Create a custom link in 360Learning. Returns the created custom link object including id, name, and type. Required: name, type. The name and type must each be unique across all custom links.
- **update_a_360_learning_custom_link_by_id** — Replace a custom link in 360Learning by id. Fields not included in the payload are removed. Returns the updated custom link object including id, name, and type. Required: id, name, type. The name and type must each be unique across all custom links.
- **delete_a_360_learning_custom_link_by_id** — Delete a custom link in 360Learning by id. Returns an empty 204 response on success. Required: id.
- **list_all_360_learning_external_ids** — List all external ID mappings in 360learning that link resources together. Returns: id, type. Page size of 5,000. Optional filters on platform, type, value, and targetId using LHS bracket notation.
- **create_a_360_learning_external_id** — Create an external ID mapping in 360learning. Returns: id, type. Required: platform, type, value, targetId. A 400 is returned if a mapping already exists for the resource on this platform, the platform name is reserved, or the value is already used by another resource.
- **update_a_360_learning_external_id_by_id** — Replace an existing external ID mapping in 360learning by id. Returns: id, type. Required: id, platform, type, value, targetId. A 404 is returned if the mapping ID does not exist.
- **delete_a_360_learning_external_id_by_id** — Delete an external ID mapping in 360learning by id. Returns an empty 204 response on success. Required: id. A 404 is returned if the mapping ID does not correspond to any existing mapping.
- **list_all_360_learning_groups** — List all groups in 360Learning. Returns: id. Page size of 500 groups.
- **get_single_360_learning_group_by_id** — Get a single 360Learning group by id. Returns: id. Required: id.
- **update_a_360_learning_group_by_id** — Edit specific fields of an existing 360Learning group; fields not included in the request payload remain unchanged. Returns the updated group including id, parentId, isPublic, subdomain, customUrl, imprint, moderationCharter, privacyPolicy, termsOfUse. Required: id.
- **delete_a_360_learning_group_by_id** — Delete a 360Learning group by id. Returns an empty 204 response on success. Required: id.
- **360_learning_groups_add_user_role** — Add a role to a user in a 360Learning group. Returns an empty 204 response on success. Required: group_id, role (one of admin, analyst, coach, contributor, editor, learner, user-admin), user_id.
- **360_learning_groups_remove_user_role** — Remove a user's role from a group in 360learning. When removing the `learner` role, it is also removed from all public subgroups down to the first private excluded. Returns an empty 204 response on success. Required: group_id, role, user_id.
- **create_a_360_learning_group** — Add a user's role in a 360learning group. Returns an empty 204 response on success. Required: id (the group ID), role, user_id.
- **list_all_360_learning_group_roles** — List all memberships (user-role assignments) in a 360Learning group, sorted per user. Returns: userId, role. Required: group_id. Page size of 1,000 memberships.
- **list_all_360_learning_group_catalogs** — List all content IDs of a given type shared in a 360Learning group catalog. Returns a paginated array of content ID strings in ObjectId format. Required: group_id, content_type. Paginated with a page size of 10,000 content IDs.
- **list_all_360_learning_group_libraries** — List all content IDs of a given type shared in a 360learning group library. Returns an array of unique content IDs, each an ObjectId string (e.g. 507f1f77bcf86cd799439011). Required: group_id, content_type. Page size of 10,000 content IDs per page.
- **360_learning_group_brandings_bulk_update** — Update the branding for a 360Learning group by group_id. Returns: id. Required: group_id. Branding is inherited by subgroups unless a subgroup defines its own branding; without the Extended Training package, only the root group's branding can be updated.
- **list_all_360_learning_integrations** — List integration configurations in 360learning. Returns one page of integration configurations including id, externalPlatform, groupId, and authorId. Max 100 per page.
- **create_a_360_learning_integration** — Create a new integration configuration in 360learning, or reactivate an existing inactive one. Returns the created integration configuration including id, externalPlatform, groupId, and authorId.
- **update_a_360_learning_integration_by_id** — Update specific fields of an existing 360learning integration configuration by id. Fields omitted from the request body remain unchanged. Returns: id. Required: id.
- **delete_a_360_learning_integration_by_id** — Delete a 360learning integration configuration by id, archiving all its related content. Returns an empty 204 response on success. Required: id.
- **get_single_360_learning_integration_course_by_id** — Get a specific 360Learning integration course by id. Returns the course object including id, group_id, and created_at. Required: integration_id, id.
- **360_learning_integration_courses_bulk_update** — Bulk upsert external courses in 360Learning, adding or replacing courses matched by their externalId for a given integration. The request is queued and processed asynchronously (up to 10,000 objects per call). Returns an empty 202 response with a Location header URL for polling the bulk operation status. Required: integration_id.
- **360_learning_integration_courses_bulk_delete** — Archive multiple external courses in bulk in 360Learning by integration ID. Processes up to 1,000 objects asynchronously and returns a 202 with a Location header URL to poll the bulk operation status. Required: integration_id.
- **list_all_360_learning_learning_needs** — List all learning needs in your 360Learning platform. Returns: id, createdAt, updatedAt. Page size of 500 learning needs.
- **create_a_360_learning_oauth_2_token** — Create an OAuth2 access token in 360Learning using the client_credentials grant. Returns: access_token, token_type, expires_in. Required: grant_type, client_id, client_secret. The token is valid for 1 hour.
- **list_all_360_learning_paths_sessions** — List all path sessions in 360learning across your platform. Returns: sessionId, pathId, createdAt, modifiedAt, startDate, endDate. Does not return session translations; use the Retrieve a path session endpoint for those. Page size of 500.
- **list_all_360_learning_paths_stats** — List all user statistics for all paths in 360learning. Returns one page of path user statistics including pathId, userId, status, and completedAt. Page size is 2,000 records. All filter parameters are optional and use LHS bracket notation.
- **create_a_360_learning_paths_add_token** — Add tokens to a specific group for a given path in 360Learning. Returns an empty 204 response on success. Required: pathId, groupId.
- **create_a_360_learning_path** — Create a new learning path in 360Learning. Returns the created path object including its id, groupId, certificateId, and createdAt.
- **update_a_360_learning_path_by_id** — Update specific fields of an existing 360learning path by id. Fields not included in the request body remain unchanged. Returns the updated path object. Required: id.
- **delete_a_360_learning_path_by_id** — Delete a 360learning path by id. Returns an empty 204 response on success. Required: id. A path cannot be deleted if it is used as a step or requirement in at least one other path (returns a 409 conflict).
- **360_learning_paths_archive** — Archive or restore a path in 360learning. Returns the updated path object. Required: path_id. A path with running sessions cannot be archived.
- **create_a_360_learning_path_session** — Create a path session for a specific path in 360Learning. Returns the created session information including startDate, endDate, pathId, mainInstructorId, and instructorIds. Required: path_id.
- **update_a_360_learning_path_session_by_id** — Update a 360learning path session by editing specific fields; omitted fields remain unchanged. Returns the updated session including id, groupId, startDate, and endDate. Required: path_id, id.
- **delete_a_360_learning_path_session_by_id** — Delete a 360learning path session by id. Returns an empty 204 response on success. Required: path_id, id.
- **delete_a_360_learning_session_self_enrollment_by_id** — Archive a self-enrolled learner from a 360learning path session. Returns an empty 204 response on success. Required: path_id, session_id, id (the learner's user ID). Learners enrolled through the Audience Builder cannot be archived here — unassign them by updating the session audience's excludedLearners instead.
- **list_all_360_learning_path_enrollments** — List all enrollments for a given learning path in 360learning. Returns: id, createdAt. Required: path_id. Paginated with a page size of 5,000 enrollments.
- **list_all_360_learning_session_audiences** — Retrieve a path session audience in 360learning given the path ID and session ID. Returns the session audience object with its audience builder configuration, mode, and filter settings as defined by the upstream SessionAudienceDTO schema. Required: path_id, session_id.
- **360_learning_session_audiences_bulk_update** — Replace the audience for a path session in 360learning. Audiences not included in the request body are removed. Returns the updated session audience object with its audience builder configuration, mode, and filter settings. Required: path_id, session_id.
- **list_all_360_learning_session_user_statuses** — Retrieve aggregated metrics for a 360Learning path session, including counts of users by session status and total certificates issued. Returns: attributes containing the aggregated session statistics. Required: path_id, session_id.
- **list_all_360_learning_session_user_stats** — List all user statistics for a 360learning path session. Returns: userId. Required: path_id, session_id. Paginated with a page size of 2,000 user statistics.
- **update_a_360_learning_path_child_session_by_id** — Update a child path session in 360Learning. Returns the updated child session including id, startDate, endDate, and pathId. Required: path_id, id.
- **360_learning_path_translations_bulk_update** — Replace all translations for a 360learning path, removing any translations not included in the request body. Returns the updated path translations as an array of translation objects. Required: path_id. The default language translation cannot be removed or unpublished.
- **list_all_360_learning_projects** — List all live projects in your 360learning platform. Returns a paginated array of project objects, one page per request. Page size is 500 projects per page.
- **list_all_360_learning_skills_powers** — List all powers in 360Learning, paginated at 500 per page. Returns: id. Optional LHS-bracket filters available on skillId, status (toAssess, pendingValidation, validated), and userId.
- **list_all_360_learning_skills** — List all skills in your 360learning platform, optionally filtering by status and updatedAt. Returns: id, status, updatedAt, createdAt. Paginated with a fixed page size of 500 skills.
- **360_learning_user_jobs_bulk_update** — Replace all jobs for a 360learning user with the provided ones; any jobs not included are removed. Returns the current list of job identifiers as an array of strings. Required: user_id. A maximum of 100 jobs is allowed per user.
- **list_all_360_learning_tags** — List all tags in your 360learning platform. Returns: id, name. Page size of 5,000 tags.
- **create_a_360_learning_tag** — Create a tag in 360learning with the given name. Returns: id, name. Required: name.
- **get_single_360_learning_tag_by_id** — Retrieve a single tag in 360learning by its id. Returns: id, name. Required: id.
- **update_a_360_learning_tag_by_id** — Replace an existing 360learning tag by id. Fields not included in the payload remain unchanged. Returns: id, name. Required: id.
- **delete_a_360_learning_tag_by_id** — Delete a 360learning tag by its unique ObjectId. Returns an empty 204 response on success. Required: id.
- **list_all_360_learning_users** — List all 360learning users in your platform, paginated at 500 per page. Returns: userId, firstName, lastName, mail, username, status, createdAt, toBeDeactivatedAt, primaryGroupId. Filterable by mail, username, and status.
- **create_a_360_learning_user** — Create a new invited user in 360learning; if a previously deleted user with the same mail or username exists, their account is restored to invited status. Returns: userId, firstName, lastName, mail, username, status, createdAt, toBeDeactivatedAt, primaryGroupId. Required: at least one of mail or username in the request body.
- **get_single_360_learning_user_by_id** — Get a single 360learning user by id. Returns: userId, firstName, lastName, mail, username, status, createdAt, toBeDeactivatedAt, primaryGroupId. Required: id.
- **update_a_360_learning_user_by_id** — Update specific fields of an existing 360learning user; omitted fields remain unchanged. Returns: userId, firstName, lastName, mail, username, status, createdAt, toBeDeactivatedAt, primaryGroupId. Required: id.
- **delete_a_360_learning_user_by_id** — Delete a 360learning user by id. Returns an empty 204 response on success. The company owner cannot be deleted.
- **360_learning_users_activate** — Activate a specific user in 360learning by their unique user ID. Returns the activated user object including userId, firstName, lastName, and mail. Required: user_id. If the user was previously deleted, it must be recreated before it can be activated.
- **create_a_360_learning_user_manager** — Add a manager to a user in 360learning. Returns an empty 204 response on success. Required: user_id, manager_id.
- **delete_a_360_learning_user_manager_by_id** — Remove a manager from a user in 360learning. Returns an empty 204 response on success. Required: user_id, id.
- **list_all_360_learning_user_managers** — List all manager IDs assigned to a user in 360learning. Returns an array of manager IDs as ObjectId strings. Required: user_id. Page size of 1,000 manager IDs.
- **list_all_360_learning_user_custom_links** — List all custom user links for a 360learning user. Returns: id. Required: user_id. Paginated with a page size of 1,000 custom links.
- **create_a_360_learning_user_custom_link** — Create a custom user link for a 360learning user by associating a custom link with the user. Returns: id. Required: user_id, customLinkId.
- **update_a_360_learning_user_custom_link_by_id** — Replace a custom user link for a 360learning user with the provided data. Returns: id. Required: user_id, id, customLinkId.
- **delete_a_360_learning_user_custom_link_by_id** — Delete a specific custom user link for a 360learning user by id. Returns an empty 204 response on success. Required: user_id, id.
- **list_all_360_learning_user_certificates** — List all certificates for a specific user in 360learning. Returns: id. Required: user_id. Page size of 1,000 certificates.
- **create_a_360_learning_user_certificate** — Import an external certificate for a specific user in 360learning. Returns: id. Required: user_id, certificateOutlineId, deliveryDate. The expiry date cannot be set if the related certificate outline has a validity period.
- **list_all_360_learning_user_subordinates** — List all subordinate user IDs for a given 360learning user. Returns an array of subordinate user IDs as ObjectId strings. Required: user_id. Paginated with a page size of 1,000 subordinate IDs.
- **list_all_360_learning_certificate_pdfs** — Download a certificate PDF file for a specific user in 360Learning. Returns: data (the binary PDF file content). Required: user_id, certificate_id.
- **list_all_360_learning_user_roles** — List all group memberships (roles) for a specific user in 360Learning, sorted per group. Returns: groupId, role, userId. Required: user_id. Page size of 1,000 memberships.
- **360_learning_user_pseudonymizes_bulk_update** — Pseudonymize a previously deleted 360learning user by replacing personal data (firstName, lastName, mail, username) with irreversible random alphanumeric strings while preserving the user ID. Returns the pseudonymized user object including id, firstName, lastName, mail, and username. Required: user_id. The user must already be deleted; a 400 error is returned otherwise.
- **360_learning_user_passwords_bulk_update** — Replace the password of a 360Learning user. If passwordMustBeChanged is set to true, the user will be forced to change their password on the next login. Returns an empty 204 response on success. Required: user_id, password.
- **360_learning_certificates_privacy_levels_bulk_update** — Update the privacy level of specified certificates for a 360Learning user. Returns an empty response on success. Required: user_id.
- **360_learning_groups_catalogs_bulk_create** — Bulk add multiple content IDs of a given type to 360Learning group catalogs. Processes up to 20,000 objects asynchronously; returns a 202 response with a Location header URL to poll the bulk operation status.
- **360_learning_groups_catalogs_bulk_delete** — Bulk-remove multiple content IDs of a given type from groups catalogs in 360learning. The request is queued and processed asynchronously (up to 20,000 objects); a 202 response returns a Location header URL for polling the bulk operation status. Returns an empty 202 response on success. Required: request body with content IDs, content type, and group IDs.
- **360_learning_groups_libraries_bulk_create** — Bulk add content to 360learning group libraries asynchronously. Adds multiple content IDs of a given type to group libraries; the request is queued and processed in the background. Returns a 202 Accepted response with a Location header URL to poll the bulk operation status. Processes up to 20,000 objects per request.
- **360_learning_groups_memberships_bulk_create** — Bulk add users to groups with assigned roles in 360learning. Processes up to 20,000 objects asynchronously; poll the returned operation status URL to check progress. Returns an empty 202 response on success. Required: body (array of objects with userId, groupId, and role).
- **360_learning_groups_memberships_bulk_delete** — Bulk remove users from 360Learning groups with their assigned roles; the learner role is also removed from all public subgroups down to the first private excluded. Returns a 202 Accepted response with no body; a Location header provides the URL to poll the operation status. Required: body — an array of objects each with groupId, userId, and role. Max 20,000 objects, processed asynchronously.
- **360_learning_bulk_groups_bulk_delete** — Delete multiple groups in 360learning asynchronously, including descendant groups and their contents. Returns a 202 Accepted response with no body; the Location header provides a URL to track the bulk operation status. Required: a JSON array body of group IDs. Processes up to 2,000 objects per request.
- **360_learning_integration_stats_bulk_create** — Bulk import integration statistics into 360Learning for a given integration. Processes up to 10,000 objects asynchronously, creating or updating course attempts based on firstActivityAt, lastActivityAt, completedAt, and forceNew. Returns a 202 Accepted with a Location header URL to poll the operation status. Required: integration_id.
- **get_single_360_learning_bulk_operation_by_id** — Get a single bulk operation in 360learning by id. Returns: id, type, createdAt. Required: id.
- **list_all_360_learning_bulk_operations** — List all bulk operations in 360learning with optional filters on status, type, and createdAt. Returns: id, type, createdAt. Page size of 20.
- **list_all_360_learning_operation_results** — Retrieve the results of a completed or erroneous bulk operation in 360learning by its unique operation ID. Returns an array of result items, each being either a success result or an error result. Required: bulk_operation_id. Returns a 400 error if the operation has not run yet, or a 404 if the operation ID does not exist.
- **360_learning_skills_reviews_bulk_create** — Bulk add skill reviews in 360Learning. Reviews support three actions — skill added, skill assessed, and skill deleted; assessments are auto-validated when the assessor is a manager of the user. Returns a 202 Accepted response with a Location header to poll the bulk operation status. Required: a JSON array body of skill review objects. Processes up to 10,000 objects asynchronously.
- **360_learning_skills_jobs_bulk_update** — Bulk upsert (add or replace) skills jobs in 360learning by externalId — matching externalIds replace existing jobs, unmatched ones create new jobs. Returns a 202 Accepted response with a Location header URL for polling the bulk operation status; no response body. Processes up to 10,000 objects asynchronously. Required: an array body of job objects each with an externalId.
- **360_learning_skills_jobs_bulk_delete** — Bulk delete 360learning skills jobs by externalId, processing up to 10,000 objects asynchronously. Returns an empty 204 response on success. Required: body (array of objects each containing externalId).
- **360_learning_skills_libraries_bulk_update** — Bulk upsert skills libraries in 360learning by externalId — matching libraries are replaced with new data and unmatched externalIds create new libraries. Returns a 202 Accepted response with a Location header URL to poll the bulk operation status. Processes up to 10,000 objects asynchronously; the request is queued upon submission. Required: a request body containing the libraries to upsert.
- **360_learning_skills_libraries_bulk_delete** — Bulk delete skills libraries in 360learning by externalId. Submits an asynchronous bulk operation queued for background processing. Returns an empty 202 response on success; the Location response header provides a URL to poll the operation status. Required: body (array of objects each containing externalId). Processes up to 10,000 objects per request.
- **360_learning_bulk_skills_bulk_update** — Bulk upsert skills in 360learning by matching on 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. Returns a 202 Accepted with no response body — a Location header provides the URL for polling the bulk operation status. Required: externalId (per array item). Processes up to 10,000 objects…
- **360_learning_bulk_skills_bulk_delete** — Bulk delete skills in 360learning by externalId. Processes up to 10,000 objects asynchronously; the request is queued upon submission and a Location header URL is provided to track operation status. Returns an empty 202 response on success. Required: externalId.
- **360_learning_skills_jobs_skills_bulk_update** — Bulk replace jobs skills in 360learning by jobId — all existing skills for each job are replaced with the provided ones. Returns a 202 Accepted with no response body; a Location header provides a URL to poll the bulk operation status. Processes up to 10,000 objects asynchronously; maximum 100 skills per job. Required: body (a JSON array of objects, each with jobId and skills).
- **360_learning_users_jobs_bulk_update** — Bulk replace users' jobs in 360learning by submitting an array of user-job mappings processed asynchronously (up to 10,000 objects, max 100 jobs per user). Each user's existing jobs are fully replaced by the provided ones. Returns an empty 202 response; the Location response header provides a URL to poll the bulk operation status. Required: body array where each item includes userId and jobs.
- **360_learning_notifications_subscriptions_bulk_create** — Bulk create email subscription events in 360Learning. The request is queued and processed asynchronously (up to 20,000 objects). Returns a 202 Accepted with no response body; the Location response header provides a URL to poll the bulk operation status. Required: a JSON request body with the subscription events to create.
- **create_a_360_learning_oauth_2_backend_token** — Create an OAuth backend access token for a 360Learning plugin using company credentials. Returns: access_token, token_type, expires_in. Required: company_id, client_id, client_secret. The token expires after 1 hour and must be sent as a Bearer token in the Authorization header of subsequent API calls.
- **create_a_360_learning_oauth_2_client_token** — Create an OAuth client access token for a 360Learning plugin. Returns: access_token, token_type, expires_in. The generated token authorizes access to 360Learning API v2 resources for 1 hour and must be sent as a Bearer token in the Authorization header of subsequent requests. A JSON request body is required.
- **list_all_360_learning_uaa_users** — Retrieve the profile of the authenticated user in 360learning. Returns: userId, firstName, lastName, mail, createdAt. Must be called with a user-authorized token issued for a specific user.
- **list_all_360_learning_webhooks_subscriptions** — List all webhook subscriptions in 360learning, optionally filtered by event type using LHS bracket notation. Returns: eventType, name, url, _id, status, id. Page size of 2000 subscriptions.
- **create_a_360_learning_webhooks_subscription** — Create a webhook subscription in 360learning. Returns: eventType, url, _id, status, id, name. Required: eventType, name, url.
- **get_single_360_learning_webhooks_subscription_by_id** — Get a single webhook subscription by id in 360learning. Returns: eventType, name, url, _id, status, id. Required: id.
- **update_a_360_learning_webhooks_subscription_by_id** — Update specific fields of an existing webhook subscription in 360learning. Fields omitted from the request body remain unchanged. Returns: eventType, url, _id, status, id, name. Required: id.
- **delete_a_360_learning_webhooks_subscription_by_id** — Delete a 360learning webhook subscription by id. Returns an empty 204 response on success. Required: id.
- **list_all_360_learning_subscription_secrets** — Retrieve the signing secret for a webhook subscription in 360learning. The signing secret is a confidential key used to generate and verify webhook signatures. Returns: secret. Required: subscription_id.
- **create_a_360_learning_events_retry_failure** — Retry all failed webhook events for a 360learning webhook subscription within a specified timeframe. Returns an empty 204 response on success. The retry timeframe is limited to a maximum of 3 days per request and endDate must be after startDate; events are retained for 90 days and can be retried across multiple requests. Required: subscription_id, startDate, endDate.
- **create_a_360_learning_events_retry_succese** — Retry all successful webhook events for a 360learning webhook subscription within a specified timeframe. Returns an empty 204 response on success. Maximum 3 days per request; events retained for 90 days. Required: subscription_id, startDate, endDate.
- **create_a_360_learning_secrets_rotate** — Rotate the signing secret of a 360Learning webhook subscription. The new secret takes effect immediately and events are also signed with the legacy secret for 24 hours. Returns: secret. Required: subscription_id.
- **list_all_360_learning_course_custom_field_values** — List all custom field values for a 360learning course. Returns: timestamp, data. Required: course_id.
- **360_learning_course_custom_field_values_bulk_update** — Replace all custom field values for a 360learning course with the provided ones; values not included in the request body are removed. Returns an array of updated custom field value objects including customFieldId and value. Required: course_id, body (array of customFieldId and value entries).
- **list_all_360_learning_path_session_custom_field_values** — List all custom field values for a 360learning path session. Returns an array of custom field value objects including customFieldId, value, createdAt, and updatedAt. Required: path_id, session_id. Both IDs must be 24-character hexadecimal ObjectId strings.
- **360_learning_path_session_custom_field_values_bulk_update** — Replace all custom field values for a 360Learning path session with the provided ones; values not included in the request are removed. Returns an array of updated custom field values, each containing customField and value. Required: path_id, session_id.
- **360_learning_user_custom_field_values_bulk_update** — Replace all custom field values for a 360learning user by user_id. Returns the updated custom field values as an array of objects with customFieldId and value. Values not included in the request body are removed. Required: user_id.
- **create_a_360_learning_group_media** — Upload media files (banner, background, favicon, or logo) to a 360Learning group. Returns the updated group object. Required: group_id. At least one media file must be provided in the request body.
- **create_a_360_learning_user_media** — Upload a profile image to a 360learning user by user_id. Returns the updated user object including userId, firstName, lastName, mail, and createdAt. Required: user_id. The uploaded file must be a valid image within size limits.
- **list_all_360_learning_course_tags** — List all tags in a 360Learning course. Returns each tag's tagId and source. Required: course_id. Paginated with a page size of 500 tags.
- **360_learning_course_tags_bulk_update** — Replace all tags in a 360Learning course with the provided ones; any tags not included are removed. Returns an array of the new tag IDs linked to the course. Required: course_id, tagIds.
- **list_all_360_learning_path_tags** — List all tags associated with a 360learning path. Returns each tag's id and source. Required: path_id. Paginated with a page size of 500 tags.
- **360_learning_path_tags_bulk_update** — Replace all tags on a 360learning path — tags not included in the request body are removed. Returns the updated list of tag IDs linked to the path. Required: path_id.
- **list_all_360_learning_webhook_events** — List all webhook events for a given 360Learning subscription. Returns: _id, createdAt, status, payload, type, timestamp, data. Page size is 250 events per page. Required: subscription_id.

## How it works

1. **Link your customer's 360learning account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach 360learning.** The Proxy API is a 1-to-1 mapping of the 360learning API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Zero-touch employee onboarding from your HRIS** — HRIS and payroll platforms can automatically provision 360Learning users, assign managers, and enroll new hires into onboarding paths the moment an employee is created in their system. Terminations trigger user deletion or pseudonymization to keep access compliant.
- **Native content distribution for e-learning vendors** — Content and training providers can mirror their catalog into their customers' 360Learning tenants and push completion stats back, so learners never leave their primary LXP. This removes catalog-sync friction for enterprise deals.
- **Certification-gated workflows for PRM and CRM platforms** — Partner and revenue platforms can enroll users into 360Learning paths and subscribe to webhooks that fire on completion. Certifications instantly unlock downstream actions like deal registration, tier upgrades, or CRM record updates.
- **Skills-driven performance and talent workflows** — Performance management and talent SaaS can read 360Learning's skills and job architecture, push review outcomes back as skill assessments, and recommend specific learning paths as remediation. This turns review cycles into measurable learning interventions.
- **Centralized compliance and certification tracking** — Compliance, GRC, and workforce management tools can import external certificates into 360Learning and pull generated certificate PDFs into a central locker. Auditors get a single source of truth across all training providers.

## What you can build

- **Bulk user and group provisioning** — Sync users, managers, and group memberships from your platform into 360Learning using bulk endpoints designed for enterprise-scale cohorts.
- **External course catalog publishing** — Register your product as a 360Learning integration and bulk upsert your entire course catalog so it appears natively inside your customers' academies.
- **Completion write-back for external training** — Push learner progress and completion stats from your platform back into 360Learning so L&D teams see unified reporting across internal and third-party content.
- **Real-time certification triggers via webhooks** — Subscribe to course, path, and enrollment events to instantly gate features, issue digital badges, or update CRM records when a user gets certified.
- **Skills and job architecture sync** — Read and write 360Learning's skills, jobs, and skill-to-job mappings, and push performance review results as skill assessments to close the loop between learning and performance.
- **Classroom and ILT session management** — Create classrooms, manage slots, registrations, waitlists, and attendance sheets so your scheduling or workforce app can orchestrate instructor-led training end to end.

## FAQs

### How does authentication work with 360Learning?

360Learning uses OAuth 2.0. Truto supports generating OAuth 2 tokens, including backend and client credential flows, so your end users can securely connect their 360Learning tenant without you handling token refresh or storage.

### Can we handle enterprise-scale data volumes?

Yes. 360Learning's API is built around asynchronous bulk operations for users, group memberships, integration courses, skills, jobs, and stats. You can submit bulk jobs and poll operation results and bulk operation status endpoints to track completion.

### How do we get real-time updates instead of polling?

You can create webhook subscriptions programmatically, list available webhook events, rotate subscription secrets, and retry failed or successful events. This lets you react instantly to course completions, enrollments, and other lifecycle events.

### Does the integration support custom fields?

Yes. Truto exposes 360Learning custom fields for users, courses, and path sessions, including listing authorized values and bulk-updating custom field values, so customer-specific data models flow through your integration.

### Can we publish our own courses into a customer's 360Learning tenant?

Yes. Create an integration configuration, then bulk upsert or delete your external course catalog and push completion stats back using the dedicated integration course and stats endpoints.

### How do we handle user offboarding and privacy requirements?

You can delete users, bulk pseudonymize users, bulk update passwords, and adjust certificate privacy levels. This covers standard offboarding, GDPR-style pseudonymization, and access revocation flows.

## Related reading

- [Connect 360learning to ChatGPT: Build courses and track learners](https://truto.one/blog/connect-360learning-to-chatgpt-build-courses-and-track-learners/) — Learn how to build a production-ready MCP server for 360learning, connect it to ChatGPT, and automate course creation, enrollment, and skills tracking.
- [Connect 360learning to Claude: Manage users, groups, and skills](https://truto.one/blog/connect-360learning-to-claude-manage-users-groups-and-skills/) — Learn how to build and deploy a managed MCP server to connect 360learning to Claude. Automate LMS user onboarding, group management, and skill tracking.
- [Connect 360learning to AI Agents: Automate Enrollment and Certs](https://truto.one/blog/connect-360learning-to-ai-agents-automate-enrollment-and-certs/) — Learn how to connect 360learning to AI Agents using Truto's /tools endpoint. Fetch LMS schemas, bind them to LangChain, and automate complex enrollment workflows.
