# 360learning MCP connector

The 360learning connector lets Claude, ChatGPT, Cursor, or the Elaichi Agent list and manage classrooms, session slots, registrations, waitlists, attendance sheets, and certificate outlines from 360learning, with each person signed in as themselves and every action logged.

Source: https://elaichi.ai/connectors/360learning/

## Facts

| | |
| --- | --- |
| Application | 360learning |
| Category | HRIS |
| AI tools | 156 |
| Authentication | App credentials |
| Needs your own OAuth app | No |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. 156 tools is past the 30-tool threshold, so clients use `search_tools` and `execute_tool` |

## What you can ask once 360learning is connected

- Who is on the waitlist for Thursday's onboarding classroom?
- Register Priya for the next security awareness slot
- List classrooms with open slots next month

## Connect 360learning in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick 360learning.
2. Optionally set Share with, then press Connect.
3. Paste your 360learning app credentials. 360learning authenticates the app rather than a person. One person supplies the credentials once, and everyone else works through Share with.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which 360learning tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Connect 360learning to Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Connect 360learning to ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Connect 360learning to Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect 360learning to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a 360learning tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with 360learning through Elaichi

### Set up a classroom and its sessions

Learning and development. Create a new 360learning classroom, add the session slots, and adjust dates or capacity when a trainer's calendar changes, all by asking in plain language.

### Register new hires for onboarding sessions

HR. Put each starter on the next onboarding slot in 360learning, move them if their start date shifts, and check who is still unregistered before Monday.

### Keep certificate outlines current

Compliance. List every certificate outline in 360learning, update the ones tied to a policy change, and retire outlines that no longer apply.

### Fill product training slots from the waitlist

Sales enablement. See who is waiting for a full session, open a new slot when demand is there, and move waitlisted reps onto it.

### Record attendance after a session

Operations. Create the attendance sheet for a classroom slot in 360learning, mark who showed up, and correct a sheet when someone was registered under the wrong name.

### Check which team members are registered

Managers. Ask which of your reports are booked on an upcoming classroom slot and who has not signed up yet, without opening 360learning yourself.

## Frequently asked questions

### How do I connect 360learning to Claude?

Connect 360learning in Elaichi by entering the app credentials from your 360learning account. There is no OAuth application to register and no client ID or secret to generate. Then in Claude open Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp. Claude asks you to sign in, and from then on it works in 360learning as you.

### Does 360learning work with ChatGPT and Cursor as well as Claude?

Yes. Once 360learning is connected in Elaichi, the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any other MCP client, and the Elaichi Agent. You connect 360learning once and every client picks it up.

### What can an AI agent actually do with my 360learning data?

It can list and create classrooms, add or change session slots, register people on a slot, move them off a waitlist, record attendance, and keep certificate outlines up to date in 360learning. Because 360learning has many tools, the agent searches for the right one as you ask. Short, concrete asks such as "register Sam on Thursday's onboarding slot" work better than long sentences.

### Does connecting 360learning give the AI access to every classroom and learner?

No. The agent works inside the access of the person who signed in to 360learning, so it sees the classrooms, registrations, and outlines that person can already see. Elaichi can narrow that further with restrictions, and it can never widen it beyond what 360learning itself allows.

### Can my team share one 360learning connection?

Yes. One person connects 360learning with the app credentials and shares the connection with a team in Elaichi, so nobody else ever handles a credential. Each teammate still signs in to Elaichi as themselves, so the audit log names the real person behind every registration or slot change.

### Can I stop an agent from deleting or changing things in 360learning?

Yes. Restrictions in Elaichi work per action, so you can allow listing classrooms and registrations while blocking deletes of slots, waitlists, or certificate outlines in 360learning. A blocked action is never advertised to Claude, ChatGPT, or Cursor, so no prompt can reach it.

### What happens to a 360learning connection when someone leaves?

Offboarding that person in Elaichi ends their access to 360learning through every client at once. A shared 360learning connection keeps working for everyone else on the team. If you want to remove 360learning entirely, disconnecting it once in Elaichi removes it from Claude, ChatGPT, Cursor, and every other client.

## All 156 360learning tools

Every tool below is callable through https://api.elaichi.ai/mcp once 360learning is connected, subject to the toolbox it is in and the restrictions on the caller.

- **List all 360learning certificate outlines** (List). List all certificate outlines in 360learning, optionally filtered by createdAt or groupId using LHS bracket notation. Returns: id, createdAt.
- **Create a 360learning certificate outline** (Create). Create a new certificate outline in 360learning. Returns the created certificate outline including id, groupId, createdAt, and wording.
- **Update a 360learning certificate outline by ID** (Update). 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 360learning certificate outline by ID** (Delete). Delete a specific 360learning certificate outline by id. Returns an empty 204 response on success. Required: id.
- **List all 360learning classrooms** (List). 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 360learning classroom** (Create). Create a classroom in 360learning. Returns: id, createdAt. Required: groupId.
- **Get single 360learning classroom by ID** (Get). Get a single classroom in 360learning by id. Returns: id, createdAt. Required: id.
- **Update a 360learning classroom by ID** (Update). 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 360learning classroom slots** (List). List all slots in a 360learning classroom. Returns: createdAt. Required: classroom_id. Page size of 100 slots.
- **Update a 360learning classroom slot by ID** (Update). 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 360learning classroom slot by ID** (Delete). 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 360learning classrooms registrations** (List). List all classroom registrations in 360learning. Returns: id, createdAt. Page size of 7,000 registrations per page.
- **List all 360learning classroom registrations** (List). 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 360learning classroom slot attendance sheet** (Create). 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 360learning classroom slot attendance sheet by ID** (Update). 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 360learning classroom slot attendance sheet by ID** (Delete). 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 360learning attendance sheet attendances** (List). 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 360learning classroom slot waitlists** (List). List all waitlist requests in a 360learning classroom slot. Returns: userId. Required: classroom_slot_id.
- **Create a 360learning classroom slot waitlist** (Create). 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 360learning classroom slot waitlist by ID** (Delete). Remove a user from a 360learning classroom slot waitlist. Returns an empty 204 response on success. Required: classroom_slot_id, id.
- **Create a 360learning classroom slot registration** (Create). 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 360learning classroom slot registration by ID** (Update). 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 360learning classroom slot registration by ID** (Delete). Unregister a user from a classroom slot in 360learning. Returns an empty 204 response on success. Required: classroom_slot_id, id.
- **List all 360learning classroom slot registrations** (List). 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 360learning course by ID** (Get). Get a single 360Learning course by id. Returns: id, createdAt, type. Required: id.
- **List all 360learning courses** (List). 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.
- **360learning courses archive** (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 360learning courses elearning standard by ID** (Update). 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 360learning courses generate from prompt** (Create). 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 360learning courses stats** (List). List all courses statistics in 360learning. Returns: courseId, userId, completedAt. Page size of 500 course attempt statistics per page.
- **List all 360learning custom fields** (List). 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 360learning custom field** (Create). Create a custom field in 360learning. Returns: id, targetType, type, name. Required: name, targetType, type.
- **Update a 360learning custom field by ID** (Update). Update an existing custom field in 360learning. Returns: id, targetType, type, name. Required: id. Fields not included in the payload remain unchanged.
- **Delete a 360learning custom field by ID** (Delete). Delete a custom field in 360learning by id. Returns an empty 204 response on success. Required: id.
- **List all 360learning custom field authorized values** (List). 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.
- **360learning custom field authorized values bulk update** (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 360learning custom links** (List). 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 360learning custom link** (Create). 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 360learning custom link by ID** (Update). 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 360learning custom link by ID** (Delete). Delete a custom link in 360Learning by id. Returns an empty 204 response on success. Required: id.
- **List all 360learning external IDS** (List). 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 360learning external ID** (Create). 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 360learning external ID by ID** (Update). 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 360learning external ID by ID** (Delete). 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 360learning groups** (List). List all groups in 360Learning. Returns: id. Page size of 500 groups.
- **Get single 360learning group by ID** (Get). Get a single 360Learning group by id. Returns: id. Required: id.
- **Update a 360learning group by ID** (Update). 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 360learning group by ID** (Delete). Delete a 360Learning group by id. Returns an empty 204 response on success. Required: id.
- **360learning groups add user role** (Add). 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.
- **360learning groups remove user role** (Delete). 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 360learning group** (Create). 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 360learning group roles** (List). 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 360learning group catalogs** (List). 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 360learning group libraries** (List). 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.
- **360learning group brandings bulk update** (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 360learning integrations** (List). List integration configurations in 360learning. Returns one page of integration configurations including id, externalPlatform, groupId, and authorId. Max 100 per page.
- **Create a 360learning integration** (Create). 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 360learning integration by ID** (Update). 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 360learning integration by ID** (Delete). Delete a 360learning integration configuration by id, archiving all its related content. Returns an empty 204 response on success. Required: id.
- **Get single 360learning integration course by ID** (Get). Get a specific 360Learning integration course by id. Returns the course object including id, group_id, and created_at. Required: integration_id, id.
- **360learning integration courses bulk update** (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.
- **360learning integration courses bulk delete** (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 360learning learning needs** (List). List all learning needs in your 360Learning platform. Returns: id, createdAt, updatedAt. Page size of 500 learning needs.
- **Create a 360learning oauth 2 token** (Create). 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 360learning paths sessions** (List). 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 360learning paths stats** (List). 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 360learning paths add token** (Create). Add tokens to a specific group for a given path in 360Learning. Returns an empty 204 response on success. Required: pathId, groupId.
- **Create a 360learning path** (Create). Create a new learning path in 360Learning. Returns the created path object including its id, groupId, certificateId, and createdAt.
- **Update a 360learning path by ID** (Update). 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 360learning path by ID** (Delete). 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).
- **360learning paths archive** (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 360learning path session** (Create). 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 360learning path session by ID** (Update). 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 360learning path session by ID** (Delete). Delete a 360learning path session by id. Returns an empty 204 response on success. Required: path_id, id.
- **Delete a 360learning session self enrollment by ID** (Delete). 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 360learning path enrollments** (List). 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 360learning session audiences** (List). 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.
- **360learning session audiences bulk update** (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 360learning session user statuses** (List). 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 360learning session user stats** (List). 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 360learning path child session by ID** (Update). Update a child path session in 360Learning. Returns the updated child session including id, startDate, endDate, and pathId. Required: path_id, id.
- **360learning path translations bulk update** (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 360learning projects** (List). 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 360learning skills powers** (List). 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 360learning skills** (List). 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.
- **360learning user jobs bulk update** (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 360learning tags** (List). List all tags in your 360learning platform. Returns: id, name. Page size of 5,000 tags.
- **Create a 360learning tag** (Create). Create a tag in 360learning with the given name. Returns: id, name. Required: name.
- **Get single 360learning tag by ID** (Get). Retrieve a single tag in 360learning by its id. Returns: id, name. Required: id.
- **Update a 360learning tag by ID** (Update). Replace an existing 360learning tag by id. Fields not included in the payload remain unchanged. Returns: id, name. Required: id.
- **Delete a 360learning tag by ID** (Delete). Delete a 360learning tag by its unique ObjectId. Returns an empty 204 response on success. Required: id.
- **List all 360learning users** (List). 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 360learning user** (Create). 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 360learning user by ID** (Get). Get a single 360learning user by id. Returns: userId, firstName, lastName, mail, username, status, createdAt, toBeDeactivatedAt, primaryGroupId. Required: id.
- **Update a 360learning user by ID** (Update). 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 360learning user by ID** (Delete). Delete a 360learning user by id. Returns an empty 204 response on success. The company owner cannot be deleted.
- **360learning users activate** (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 360learning user manager** (Create). Add a manager to a user in 360learning. Returns an empty 204 response on success. Required: user_id, manager_id.
- **Delete a 360learning user manager by ID** (Delete). Remove a manager from a user in 360learning. Returns an empty 204 response on success. Required: user_id, id.
- **List all 360learning user managers** (List). 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 360learning user custom links** (List). 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 360learning user custom link** (Create). 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 360learning user custom link by ID** (Update). Replace a custom user link for a 360learning user with the provided data. Returns: id. Required: user_id, id, customLinkId.
- **Delete a 360learning user custom link by ID** (Delete). 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 360learning user certificates** (List). List all certificates for a specific user in 360learning. Returns: id. Required: user_id. Page size of 1,000 certificates.
- **Create a 360learning user certificate** (Create). 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 360learning user subordinates** (List). 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 360learning certificate pdfs** (List). 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 360learning user roles** (List). 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.
- **360learning user pseudonymizes bulk update** (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.
- **360learning user passwords bulk update** (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.
- **360learning certificates privacy levels bulk update** (Update). Update the privacy level of specified certificates for a 360Learning user. Returns an empty response on success. Required: user_id.
- **360learning groups catalogs bulk create** (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.
- **360learning groups catalogs bulk delete** (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.
- **360learning groups libraries bulk create** (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.
- **360learning groups memberships bulk create** (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).
- **360learning groups memberships bulk delete** (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.
- **360learning bulk groups bulk delete** (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.
- **360learning integration stats bulk create** (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 360learning bulk operation by ID** (Get). Get a single bulk operation in 360learning by id. Returns: id, type, createdAt. Required: id.
- **List all 360learning bulk operations** (List). List all bulk operations in 360learning with optional filters on status, type, and createdAt. Returns: id, type, createdAt. Page size of 20.
- **List all 360learning operation results** (List). 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.
- **360learning skills reviews bulk create** (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.
- **360learning skills jobs bulk update** (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.
- **360learning skills jobs bulk delete** (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).
- **360learning skills libraries bulk update** (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.
- **360learning skills libraries bulk delete** (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.
- **360learning bulk skills bulk update** (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…
- **360learning bulk skills bulk delete** (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.
- **360learning skills jobs skills bulk update** (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).
- **360learning users jobs bulk update** (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.
- **360learning notifications subscriptions bulk create** (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 360learning oauth 2 backend token** (Create). 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 360learning oauth 2 client token** (Create). 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 360learning uaa users** (List). 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 360learning webhooks subscriptions** (List). 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 360learning webhooks subscription** (Create). Create a webhook subscription in 360learning. Returns: eventType, url, _id, status, id, name. Required: eventType, name, url.
- **Get single 360learning webhooks subscription by ID** (Get). Get a single webhook subscription by id in 360learning. Returns: eventType, name, url, _id, status, id. Required: id.
- **Update a 360learning webhooks subscription by ID** (Update). 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 360learning webhooks subscription by ID** (Delete). Delete a 360learning webhook subscription by id. Returns an empty 204 response on success. Required: id.
- **List all 360learning subscription secrets** (List). 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 360learning events retry failure** (Create). 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 360learning events retry succese** (Create). 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 360learning secrets rotate** (Create). 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 360learning course custom field values** (List). List all custom field values for a 360learning course. Returns: timestamp, data. Required: course_id.
- **360learning course custom field values bulk update** (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 360learning path session custom field values** (List). 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.
- **360learning path session custom field values bulk update** (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.
- **360learning user custom field values bulk update** (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 360learning group media** (Create). 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 360learning user media** (Create). 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 360learning course tags** (List). 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.
- **360learning course tags bulk update** (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 360learning path tags** (List). 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.
- **360learning path tags bulk update** (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 360learning webhook events** (List). 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.
