{"openapi":"3.1.0","paths":{"/api/v2/bulk/groups/catalog":{"post":{"description":"> 🔑\n>\n> Required OAuth scope: `groups:bulk`.\n\n> 🚜\n>\n> This endpoint processes up to 20,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1).\n\nAdds multiple content IDs of a given type to groups catalogs. Upon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation.","operationId":"v2.bulk.groups.AddContentsToGroupsCatalogController_addContentsToGroupsCatalog","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddContentsToGroupsCatalogBody"}}}},"responses":{"202":{"description":"The operation is successfully created.","headers":{"Location":{"schema":{"type":"string"},"description":"The URL to retrieve the status of the bulk operation using its operation ID.\n\nExample: `https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011`.","example":"https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011"}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"schema":{"oneOf":[{"description":"The input of a bulk operation must be an array.","title":"Invalid Input","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidInput"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The input array size exceeds the maximum limit of 20,000 objects.","title":"Input Too Long","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["inputTooLong"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}]}}}},"401":{"description":"The given access token is either missing, invalid, has expired, or has been revoked.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["invalid_token"]}},"required":["error"]}}}},"403":{"description":"The given access token does not have the required OAuth scope to execute the request.","content":{"application/json":{"schema":{"title":"Invalid Scope","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_scope"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"The maximum number of concurrent operations has been reached.","content":{"application/json":{"schema":{"title":"Bulk Operations Concurrency Limit Reached","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkOperationsConcurrencyLimitReached"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"The bulk API is temporarily disabled.","content":{"application/json":{"schema":{"title":"Bulk API Disabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkAPIDisabled"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}}},"security":[{"oauth2":[]}],"summary":"Add content to catalogs","tags":["Groups"]},"delete":{"description":"> 🔑\n>\n> Required OAuth scope: `groups:bulk`.\n\n> 🚜\n>\n> This endpoint processes up to 20,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1).\n\nRemoves multiple content IDs of a given type from groups catalogs. Upon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation.","operationId":"v2.bulk.groups.RemoveContentsFromGroupsCatalogController_removeContentsFromGroupsCatalog","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveContentsFromGroupsCatalogBody"}}}},"responses":{"202":{"description":"The operation is successfully created.","headers":{"Location":{"schema":{"type":"string"},"description":"The URL to retrieve the status of the bulk operation using its operation ID.\n\nExample: `https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011`.","example":"https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011"}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"schema":{"oneOf":[{"description":"The input of a bulk operation must be an array.","title":"Invalid Input","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidInput"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The input array size exceeds the maximum limit of 20,000 objects.","title":"Input Too Long","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["inputTooLong"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}]}}}},"401":{"description":"The given access token is either missing, invalid, has expired, or has been revoked.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["invalid_token"]}},"required":["error"]}}}},"403":{"description":"The given access token does not have the required OAuth scope to execute the request.","content":{"application/json":{"schema":{"title":"Invalid Scope","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_scope"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"The maximum number of concurrent operations has been reached.","content":{"application/json":{"schema":{"title":"Bulk Operations Concurrency Limit Reached","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkOperationsConcurrencyLimitReached"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"The bulk API is temporarily disabled.","content":{"application/json":{"schema":{"title":"Bulk API Disabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkAPIDisabled"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}}},"security":[{"oauth2":[]}],"summary":"Remove content from catalogs","tags":["Groups"]}},"/api/v2/bulk/groups/library":{"post":{"description":"> 🔑\n>\n> Required OAuth scope: `groups:bulk`.\n\n> 🚜\n>\n> This endpoint processes up to 20,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1).\n\nAdds multiple content IDs of a given type to groups libraries. Upon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation.","operationId":"v2.bulk.groups.AddContentsToGroupsLibraryController_addContentsToGroupsLibrary","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddContentsToGroupsLibraryBody"}}}},"responses":{"202":{"description":"The operation is successfully created.","headers":{"Location":{"schema":{"type":"string"},"description":"The URL to retrieve the status of the bulk operation using its operation ID.\n\nExample: `https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011`.","example":"https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011"}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"schema":{"oneOf":[{"description":"The input of a bulk operation must be an array.","title":"Invalid Input","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidInput"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The input array size exceeds the maximum limit of 20,000 objects.","title":"Input Too Long","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["inputTooLong"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}]}}}},"401":{"description":"The given access token is either missing, invalid, has expired, or has been revoked.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["invalid_token"]}},"required":["error"]}}}},"403":{"description":"The given access token does not have the required OAuth scope to execute the request.","content":{"application/json":{"schema":{"title":"Invalid Scope","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_scope"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"The maximum number of concurrent operations has been reached.","content":{"application/json":{"schema":{"title":"Bulk Operations Concurrency Limit Reached","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkOperationsConcurrencyLimitReached"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"The bulk API is temporarily disabled.","content":{"application/json":{"schema":{"title":"Bulk API Disabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkAPIDisabled"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}}},"security":[{"oauth2":[]}],"summary":"Add content to libraries","tags":["Groups"]},"delete":{"description":"> 🔑\n>\n> Required OAuth scope: `groups:bulk`.\n\n> 🚜\n>\n> This endpoint processes up to 20,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1).\n\nRemoves multiple content IDs of a given type from groups libraries. Upon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation.","operationId":"v2.bulk.groups.RemoveContentsFromGroupsLibraryController_removeContentsFromGroupsLibrary","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveContentsFromGroupsLibraryBody"}}}},"responses":{"202":{"description":"The operation is successfully created.","headers":{"Location":{"schema":{"type":"string"},"description":"The URL to retrieve the status of the bulk operation using its operation ID.\n\nExample: `https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011`.","example":"https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011"}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"schema":{"oneOf":[{"description":"The input of a bulk operation must be an array.","title":"Invalid Input","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidInput"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The input array size exceeds the maximum limit of 20,000 objects.","title":"Input Too Long","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["inputTooLong"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}]}}}},"401":{"description":"The given access token is either missing, invalid, has expired, or has been revoked.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["invalid_token"]}},"required":["error"]}}}},"403":{"description":"The given access token does not have the required OAuth scope to execute the request.","content":{"application/json":{"schema":{"title":"Invalid Scope","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_scope"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"The maximum number of concurrent operations has been reached.","content":{"application/json":{"schema":{"title":"Bulk Operations Concurrency Limit Reached","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkOperationsConcurrencyLimitReached"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"The bulk API is temporarily disabled.","content":{"application/json":{"schema":{"title":"Bulk API Disabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkAPIDisabled"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}}},"security":[{"oauth2":[]}],"summary":"Remove content from libraries","tags":["Groups"]}},"/api/v2/bulk/groups/memberships":{"post":{"description":"> 🔑\n>\n> Required OAuth scope: `groups:bulk`.\n\n> 🚜\n>\n> This endpoint processes up to 20,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1).\n\nAdds multiple users to groups with their assigned roles. Upon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation.","operationId":"v2.bulk.groups.AddUsersToGroupsController_addUsersToGroups","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddUsersToGroupsBody"}}}},"responses":{"202":{"description":"The operation is successfully created.","headers":{"Location":{"schema":{"type":"string"},"description":"The URL to retrieve the status of the bulk operation using its operation ID.\n\nExample: `https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011`.","example":"https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011"}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"schema":{"oneOf":[{"description":"The input of a bulk operation must be an array.","title":"Invalid Input","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidInput"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The input array size exceeds the maximum limit of 20,000 objects.","title":"Input Too Long","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["inputTooLong"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}]}}}},"401":{"description":"The given access token is either missing, invalid, has expired, or has been revoked.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["invalid_token"]}},"required":["error"]}}}},"403":{"description":"The given access token does not have the required OAuth scope to execute the request.","content":{"application/json":{"schema":{"title":"Invalid Scope","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_scope"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"The maximum number of concurrent operations has been reached.","content":{"application/json":{"schema":{"title":"Bulk Operations Concurrency Limit Reached","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkOperationsConcurrencyLimitReached"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"The bulk API is temporarily disabled.","content":{"application/json":{"schema":{"title":"Bulk API Disabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkAPIDisabled"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}}},"security":[{"oauth2":[]}],"summary":"Add users to groups","tags":["Groups"]},"delete":{"description":"> 🔑\n>\n> Required OAuth scope: `groups:bulk`.\n\n> 🚜\n>\n> This endpoint processes up to 20,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1).\n\nRemoves multiple users from groups with their assigned roles. The `learner` role is also removed from all public subgroups down to first private excluded. Upon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation.","operationId":"v2.bulk.groups.RemoveUsersFromGroupsController_removeUsersFromGroups","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveUsersFromGroupsBody"}}}},"responses":{"202":{"description":"The operation is successfully created.","headers":{"Location":{"schema":{"type":"string"},"description":"The URL to retrieve the status of the bulk operation using its operation ID.\n\nExample: `https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011`.","example":"https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011"}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"schema":{"oneOf":[{"description":"The input of a bulk operation must be an array.","title":"Invalid Input","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidInput"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The input array size exceeds the maximum limit of 20,000 objects.","title":"Input Too Long","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["inputTooLong"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}]}}}},"401":{"description":"The given access token is either missing, invalid, has expired, or has been revoked.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["invalid_token"]}},"required":["error"]}}}},"403":{"description":"The given access token does not have the required OAuth scope to execute the request.","content":{"application/json":{"schema":{"title":"Invalid Scope","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_scope"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"The maximum number of concurrent operations has been reached.","content":{"application/json":{"schema":{"title":"Bulk Operations Concurrency Limit Reached","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkOperationsConcurrencyLimitReached"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"The bulk API is temporarily disabled.","content":{"application/json":{"schema":{"title":"Bulk API Disabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkAPIDisabled"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}}},"security":[{"oauth2":[]}],"summary":"Remove users from groups","tags":["Groups"]}},"/api/v2/bulk/groups":{"delete":{"description":"> 🔑\n>\n> Required OAuth scope: `groups:bulk`.\n\n> 🚜\n>\n> This endpoint processes up to 2,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1).\n\nDeletes multiple groups. It also deletes descendant groups and their contents. Upon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation.","operationId":"v2.bulk.groups.DeleteGroupsController_deleteGroups","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteGroupsBody"}}}},"responses":{"202":{"description":"The operation is successfully created.","headers":{"Location":{"schema":{"type":"string"},"description":"The URL to retrieve the status of the bulk operation using its operation ID.\n\nExample: `https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011`.","example":"https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011"}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"schema":{"oneOf":[{"description":"The input of a bulk operation must be an array.","title":"Invalid Input","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidInput"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The input array size exceeds the maximum limit of 2,000 objects.","title":"Input Too Long","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["inputTooLong"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}]}}}},"401":{"description":"The given access token is either missing, invalid, has expired, or has been revoked.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["invalid_token"]}},"required":["error"]}}}},"403":{"description":"The given access token does not have the required OAuth scope to execute the request.","content":{"application/json":{"schema":{"title":"Invalid Scope","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_scope"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"The maximum number of concurrent operations has been reached.","content":{"application/json":{"schema":{"title":"Bulk Operations Concurrency Limit Reached","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkOperationsConcurrencyLimitReached"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"The bulk API is temporarily disabled.","content":{"application/json":{"schema":{"title":"Bulk API Disabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkAPIDisabled"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}}},"security":[{"oauth2":[]}],"summary":"Delete groups","tags":["Groups"]}},"/api/v2/bulk/integrations/{integrationId}/courses":{"delete":{"description":"> 🔑\n>\n> Required OAuth scope: `integrations:bulk`.\n\n> 🚜\n>\n> This endpoint processes up to 1,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1).\n\nArchives multiple external courses in bulk based on the provided integration ID.\n\nUpon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation.","operationId":"v2.bulk.integrations.ArchiveExternalCoursesController_archiveExternalCourses","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"integrationId","required":true,"in":"path","description":"The unique ID of the integration.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArchiveExternalCoursesBody"}}}},"responses":{"202":{"description":"The operation is successfully created.","headers":{"Location":{"schema":{"type":"string"},"description":"The URL to retrieve the status of the bulk operation using its operation ID.\n\nExample: `https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011`.","example":"https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011"}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"schema":{"oneOf":[{"description":"The input of a bulk operation must be an array.","title":"Invalid Input","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidInput"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The input array size exceeds the maximum limit of 1,000 objects.","title":"Input Too Long","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["inputTooLong"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The platform is one of the reserved ones.","title":"Reserved Platform Name","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["reservedPlatformName"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}]}}}},"401":{"description":"The given access token is either missing, invalid, has expired, or has been revoked.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["invalid_token"]}},"required":["error"]}}}},"403":{"description":"The given access token does not have the required OAuth scope to execute the request.","content":{"application/json":{"schema":{"title":"Invalid Scope","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_scope"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"404":{"description":"The given `integrationId` does not correspond to any existing integration.","content":{"application/json":{"schema":{"title":"Integration Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["integrationNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"The maximum number of concurrent operations has been reached.","content":{"application/json":{"schema":{"title":"Bulk Operations Concurrency Limit Reached","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkOperationsConcurrencyLimitReached"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"The bulk API is temporarily disabled.","content":{"application/json":{"schema":{"title":"Bulk API Disabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkAPIDisabled"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}}},"security":[{"oauth2":[]}],"summary":"Archive external courses","tags":["Integrations"]},"put":{"description":"> 🔑\n>\n> Required OAuth scope: `integrations:bulk`.\n\n> 🚜\n>\n> This endpoint processes up to 10,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1).\n\nAdds or replaces multiple external courses based on the given `integrationId` and the courses's `externalId`.\n- If a provided `externalId` matches an existing external course, the course is replaced with the new data.\n- If no match is found, a new course is created and added to the group catalog and library.\n\nUpon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation.","operationId":"v2.bulk.integrations.ImportExternalCoursesController_importExternalCourses","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"integrationId","required":true,"in":"path","description":"The unique ID of the integration.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportExternalCoursesBody"}}}},"responses":{"202":{"description":"The operation is successfully created.","headers":{"Location":{"schema":{"type":"string"},"description":"The URL to retrieve the status of the bulk operation using its operation ID.\n\nExample: `https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011`.","example":"https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011"}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"schema":{"oneOf":[{"description":"The input of a bulk operation must be an array.","title":"Invalid Input","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidInput"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The input array size exceeds the maximum limit of 10,000 objects.","title":"Input Too Long","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["inputTooLong"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The platform is one of the reserved ones.","title":"Reserved Platform Name","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["reservedPlatformName"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}]}}}},"401":{"description":"The given access token is either missing, invalid, has expired, or has been revoked.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["invalid_token"]}},"required":["error"]}}}},"403":{"description":"The given access token does not have the required OAuth scope to execute the request.","content":{"application/json":{"schema":{"title":"Invalid Scope","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_scope"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"404":{"description":"The given `integrationId` does not correspond to any existing integration.","content":{"application/json":{"schema":{"title":"Integration Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["integrationNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"The maximum number of concurrent operations has been reached.","content":{"application/json":{"schema":{"title":"Bulk Operations Concurrency Limit Reached","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkOperationsConcurrencyLimitReached"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"The bulk API is temporarily disabled.","content":{"application/json":{"schema":{"title":"Bulk API Disabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkAPIDisabled"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}}},"security":[{"oauth2":[]}],"summary":"Upsert external courses","tags":["Integrations"]}},"/api/v2/bulk/integrations/{integrationId}/stats":{"post":{"description":"> 🔑\n>\n> Required OAuth scope: `integrations:bulk`.\n\n> 🚜\n>\n> This endpoint processes up to 10,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1).\n\nImports multiple integration statistics in bulk based on the provided `integrationId`.\nThis endpoint will:\n- Create a new attempt if any of the following is true: `forceNew` is set to `true`; no attempt currently exists for the course and user; or `firstActivityAt` is later than the `lastActivityAt` or `completedAt` of all existing attempts.\n- Update existing non-completed attempts if `firstActivityAt` is earlier than the `lastActivityAt` or `completedAt` of those attempts.\n\nUpon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation.","operationId":"v2.bulk.integrations.ImportExternalStatisticsController_importExternalStatistics","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"integrationId","required":true,"in":"path","description":"The unique ID of the integration.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportExternalStatisticsBody"}}}},"responses":{"202":{"description":"The operation is successfully created.","headers":{"Location":{"schema":{"type":"string"},"description":"The URL to retrieve the status of the bulk operation using its operation ID.\n\nExample: `https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011`.","example":"https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011"}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"schema":{"oneOf":[{"description":"The input of a bulk operation must be an array.","title":"Invalid Input","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidInput"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The input array size exceeds the maximum limit of 10,000 objects.","title":"Input Too Long","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["inputTooLong"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The platform is one of the reserved ones.","title":"Reserved Platform Name","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["reservedPlatformName"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}]}}}},"401":{"description":"The given access token is either missing, invalid, has expired, or has been revoked.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["invalid_token"]}},"required":["error"]}}}},"403":{"description":"The given access token does not have the required OAuth scope to execute the request.","content":{"application/json":{"schema":{"title":"Invalid Scope","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_scope"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"404":{"description":"The given `integrationId` does not correspond to any existing integration.","content":{"application/json":{"schema":{"title":"Integration Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["integrationNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"The maximum number of concurrent operations has been reached.","content":{"application/json":{"schema":{"title":"Bulk Operations Concurrency Limit Reached","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkOperationsConcurrencyLimitReached"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"The bulk API is temporarily disabled.","content":{"application/json":{"schema":{"title":"Bulk API Disabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkAPIDisabled"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}}},"security":[{"oauth2":[]}],"summary":"Import integration statistics","tags":["Integrations"]}},"/api/v2/bulk/operations/{bulkOperationId}":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `bulkOperations:read`.\n\nRetrieves a bulk operation with its given ID.","operationId":"v2.bulk.operations.GetBulkOperationController_getBulkOperation","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"bulkOperationId","required":true,"in":"path","description":"The unique ID of the bulk operation.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"200":{"description":"Returns the requested bulk operation.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PendingOperationDTO"},{"$ref":"#/components/schemas/QueuedOperationDTO"},{"$ref":"#/components/schemas/RunningOperationDTO"},{"$ref":"#/components/schemas/CompletedOperationDTO"},{"$ref":"#/components/schemas/ErroredOperationDTO"}]}}}},"401":{"description":"The given access token is either missing, invalid, has expired, or has been revoked.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["invalid_token"]}},"required":["error"]}}}},"403":{"description":"The given access token does not have the required OAuth scope to execute the request.","content":{"application/json":{"schema":{"title":"Invalid Scope","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_scope"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"404":{"description":"The given `bulkOperationId` does not correspond to any existing bulk operation.","content":{"application/json":{"schema":{"title":"Bulk Operation Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkOperationNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"The client has sent too many requests in a short amount of time. ","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["tooManyRequests"]}},"required":["error"]}}}}},"security":[{"oauth2":[]}],"summary":"Retrieve a bulk operation","tags":["Operations"]}},"/api/v2/bulk/operations/{bulkOperationId}/results":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `bulkOperations:read`.\n\nRetrieves a completed or erroneous bulk operation result given its unique ID.","operationId":"v2.bulk.operations.GetBulkOperationResultsController_getBulkOperationResults","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"bulkOperationId","required":true,"in":"path","description":"The unique ID of the bulk operation.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"200":{"description":"Returns the requested bulk operation.","content":{"application/json":{"schema":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/SuccessResultDTO"},{"$ref":"#/components/schemas/ErrorResultDTO"}]}}}}},"400":{"description":"The operation with the given `bulkOperationId` has not run yet.","content":{"application/json":{"schema":{"title":"Bulk Operation Not Run","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkOperationNotRun"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"The given access token is either missing, invalid, has expired, or has been revoked.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["invalid_token"]}},"required":["error"]}}}},"403":{"description":"The given access token does not have the required OAuth scope to execute the request.","content":{"application/json":{"schema":{"title":"Invalid Scope","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_scope"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"404":{"description":"The given `bulkOperationId` does not correspond to any existing bulk operation.","content":{"application/json":{"schema":{"title":"Bulk Operation Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkOperationNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"The client has sent too many requests in a short amount of time. ","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["tooManyRequests"]}},"required":["error"]}}}}},"security":[{"oauth2":[]}],"summary":"Retrieve a bulk operation result","tags":["Operations"]}},"/api/v2/bulk/operations":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `bulkOperations:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 20 bulk operations. For more information, see the [Pagination guide](doc:pagination).\n\nLists all bulk operations.","operationId":"v2.bulk.operations.GetBulkOperationsController_getBulkOperations","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"createdAt","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **createdAt** property with LHS bracket notation.\n\nExpected value format is a date (YYYY-MM-DDThh:mm:ss.sssZ). The milliseconds are always set to 0.","schema":{"properties":{"lt":{"type":"string","format":"date-time","description":"Filter on dates lower than the given one","example":"2020-01-01T10:30:26.000Z"},"gte":{"type":"string","format":"date-time","description":"Filter on dates greater than or equal the given one","example":"2020-01-01T10:30:26.000Z"}}}},{"name":"status","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **status** property with LHS bracket notation.\n\nExpected value format is a string (`pending`, `queued`, `running`, `completed`, `error`).","schema":{"properties":{"eq":{"type":"string","description":"Filter on values equal to the given one","example":"pending","enum":["pending","queued","running","completed","error"]}}}},{"name":"type","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **type** property with LHS bracket notation.\n\nExpected value format is a string (`addContentsToGroupsCatalog`, `addContentsToGroupsLibrary`, `addSkillReviews`, `addUsersToGroups`, `archiveExternalCourses`, `deleteSkills`, `createGroups`, `createSubscriptionEvents`, `deleteGroups`, `deleteJobs`, `deleteLibraries`, `importExternalCourses`, `importExternalStatistics`, `removeContentsFromGroupsCatalog`, `removeContentsFromGroupsLibrary`, `removeUsersFromGroups`, `replaceJobsSkills`, `replaceUsersJobs`, `upsertJobs`, `upsertLibraries`, `upsertSkills`).","schema":{"properties":{"eq":{"type":"string","description":"Filter on values equal to the given one","example":"addContentsToGroupsCatalog","enum":["addContentsToGroupsCatalog","addContentsToGroupsLibrary","addSkillReviews","addUsersToGroups","archiveExternalCourses","deleteSkills","createGroups","createSubscriptionEvents","deleteGroups","deleteJobs","deleteLibraries","importExternalCourses","importExternalStatistics","removeContentsFromGroupsCatalog","removeContentsFromGroupsLibrary","removeUsersFromGroups","replaceJobsSkills","replaceUsersJobs","upsertJobs","upsertLibraries","upsertSkills"]}}}}],"responses":{"200":{"description":"Returns one page of 20 bulk operations.","headers":{"Link":{"schema":{"type":"string"},"description":"URL (between `<` `>`) to fetch the immediate next page of results. For more information, see our [Pagination guide](doc:pagination).\n\n⚠️ Only included if there is another page of results.","example":"<my/resource/url>; rel=\"next\""}},"content":{"application/json":{"schema":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/PendingOperationDTO"},{"$ref":"#/components/schemas/QueuedOperationDTO"},{"$ref":"#/components/schemas/RunningOperationDTO"},{"$ref":"#/components/schemas/CompletedOperationDTO"},{"$ref":"#/components/schemas/ErroredOperationDTO"}]}}}}},"401":{"description":"The given access token is either missing, invalid, has expired, or has been revoked.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["invalid_token"]}},"required":["error"]}}}},"403":{"description":"The given access token does not have the required OAuth scope to execute the request.","content":{"application/json":{"schema":{"title":"Invalid Scope","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_scope"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"The client has sent too many requests in a short amount of time. ","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["tooManyRequests"]}},"required":["error"]}}}}},"security":[{"oauth2":[]}],"summary":"List all bulk operations","tags":["Operations"]}},"/api/v2/bulk/skills/reviews":{"post":{"description":"> 🔑\n>\n> Required OAuth scope: `skillsPowers:bulk`.\n\n> 🚜\n>\n> This endpoint processes up to 10,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1).\n\nAdds multiple skill reviews.\n- Reviews are related to three kind of actions: 'skill added', 'skill assessed', 'skill deleted'.\n- In the 'skill assessed' case, the assessment is automatically validated if the assessor is a manager of the user.\n\nUpon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation.","operationId":"v2.bulk.skills.AddSkillReviewsController_addSkillReviews","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddSkillReviewsBody"}}}},"responses":{"202":{"description":"The operation is successfully created.","headers":{"Location":{"schema":{"type":"string"},"description":"The URL to retrieve the status of the bulk operation using its operation ID.\n\nExample: `https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011`.","example":"https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011"}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"schema":{"oneOf":[{"description":"The input of a bulk operation must be an array.","title":"Invalid Input","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidInput"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The input array size exceeds the maximum limit of 10,000 objects.","title":"Input Too Long","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["inputTooLong"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The skill solution is not enabled.","title":"Skill Solution Not Enabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["skillSolutionNotEnabled"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}]}}}},"401":{"description":"The given access token is either missing, invalid, has expired, or has been revoked.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["invalid_token"]}},"required":["error"]}}}},"403":{"description":"The given access token does not have the required OAuth scope to execute the request.","content":{"application/json":{"schema":{"title":"Invalid Scope","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_scope"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"The maximum number of concurrent operations has been reached.","content":{"application/json":{"schema":{"title":"Bulk Operations Concurrency Limit Reached","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkOperationsConcurrencyLimitReached"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"The bulk API is temporarily disabled.","content":{"application/json":{"schema":{"title":"Bulk API Disabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkAPIDisabled"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}}},"security":[{"oauth2":[]}],"summary":"Add skill reviews","tags":["Skills"]}},"/api/v2/bulk/skills/jobs":{"delete":{"description":"> 🔑\n>\n> Required OAuth scope: `skillsJobs:bulk`.\n\n> 🚜\n>\n> This endpoint processes up to 10,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1).\n\nDeletes jobs based on the given `externalId`.\n\nUpon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation.","operationId":"v2.bulk.skills.DeleteJobsController_deleteJobs","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteJobsBody"}}}},"responses":{"202":{"description":"The operation is successfully created.","headers":{"Location":{"schema":{"type":"string"},"description":"The URL to retrieve the status of the bulk operation using its operation ID.\n\nExample: `https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011`.","example":"https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011"}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"schema":{"oneOf":[{"description":"The input of a bulk operation must be an array.","title":"Invalid Input","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidInput"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The input array size exceeds the maximum limit of 10,000 objects.","title":"Input Too Long","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["inputTooLong"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The skill solution is not enabled.","title":"Skill Solution Not Enabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["skillSolutionNotEnabled"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}]}}}},"401":{"description":"The given access token is either missing, invalid, has expired, or has been revoked.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["invalid_token"]}},"required":["error"]}}}},"403":{"description":"The given access token does not have the required OAuth scope to execute the request.","content":{"application/json":{"schema":{"title":"Invalid Scope","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_scope"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"The maximum number of concurrent operations has been reached.","content":{"application/json":{"schema":{"title":"Bulk Operations Concurrency Limit Reached","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkOperationsConcurrencyLimitReached"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"The bulk API is temporarily disabled.","content":{"application/json":{"schema":{"title":"Bulk API Disabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkAPIDisabled"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}}},"security":[{"oauth2":[]}],"summary":"Delete jobs","tags":["Skills"]},"put":{"description":"> 🔑\n>\n> Required OAuth scope: `skillsJobs:bulk`.\n\n> 🚜\n>\n> This endpoint processes up to 10,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1).\n\nAdds or replaces multiple jobs based on the given `externalId`.\n- If a provided `externalId` matches an existing job, the job is replaced with the new data.\n- If no match is found, a new job is created.\n\nUpon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation.","operationId":"v2.bulk.skills.UpsertJobsController_upsertJobs","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertJobsBody"}}}},"responses":{"202":{"description":"The operation is successfully created.","headers":{"Location":{"schema":{"type":"string"},"description":"The URL to retrieve the status of the bulk operation using its operation ID.\n\nExample: `https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011`.","example":"https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011"}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"schema":{"oneOf":[{"description":"The input of a bulk operation must be an array.","title":"Invalid Input","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidInput"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The input array size exceeds the maximum limit of 10,000 objects.","title":"Input Too Long","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["inputTooLong"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The skill solution is not enabled.","title":"Skill Solution Not Enabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["skillSolutionNotEnabled"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}]}}}},"401":{"description":"The given access token is either missing, invalid, has expired, or has been revoked.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["invalid_token"]}},"required":["error"]}}}},"403":{"description":"The given access token does not have the required OAuth scope to execute the request.","content":{"application/json":{"schema":{"title":"Invalid Scope","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_scope"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"The maximum number of concurrent operations has been reached.","content":{"application/json":{"schema":{"title":"Bulk Operations Concurrency Limit Reached","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkOperationsConcurrencyLimitReached"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"The bulk API is temporarily disabled.","content":{"application/json":{"schema":{"title":"Bulk API Disabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkAPIDisabled"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}}},"security":[{"oauth2":[]}],"summary":"Upsert jobs","tags":["Skills"]}},"/api/v2/bulk/skills/libraries":{"delete":{"description":"> 🔑\n>\n> Required OAuth scope: `skillsLibraries:bulk`.\n\n> 🚜\n>\n> This endpoint processes up to 10,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1).\n\nDeletes libraries based on the given `externalId`.\n\nUpon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation.","operationId":"v2.bulk.skills.DeleteLibrariesController_deleteLibraries","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteLibrariesBody"}}}},"responses":{"202":{"description":"The operation is successfully created.","headers":{"Location":{"schema":{"type":"string"},"description":"The URL to retrieve the status of the bulk operation using its operation ID.\n\nExample: `https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011`.","example":"https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011"}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"schema":{"oneOf":[{"description":"The input of a bulk operation must be an array.","title":"Invalid Input","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidInput"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The input array size exceeds the maximum limit of 10,000 objects.","title":"Input Too Long","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["inputTooLong"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The skill solution is not enabled.","title":"Skill Solution Not Enabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["skillSolutionNotEnabled"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}]}}}},"401":{"description":"The given access token is either missing, invalid, has expired, or has been revoked.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["invalid_token"]}},"required":["error"]}}}},"403":{"description":"The given access token does not have the required OAuth scope to execute the request.","content":{"application/json":{"schema":{"title":"Invalid Scope","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_scope"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"The maximum number of concurrent operations has been reached.","content":{"application/json":{"schema":{"title":"Bulk Operations Concurrency Limit Reached","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkOperationsConcurrencyLimitReached"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"The bulk API is temporarily disabled.","content":{"application/json":{"schema":{"title":"Bulk API Disabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkAPIDisabled"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}}},"security":[{"oauth2":[]}],"summary":"Delete libraries","tags":["Skills"]},"put":{"description":"> 🔑\n>\n> Required OAuth scope: `skillsLibraries:bulk`.\n\n> 🚜\n>\n> This endpoint processes up to 10,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1).\n\nAdds or replaces multiple libraries based on the given `externalId`.\n- If a provided `externalId` matches an existing library, the library is replaced with the new data.\n- If no match is found, a new library is created.\n\nUpon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation.","operationId":"v2.bulk.skills.UpsertLibrariesController_upsertLibraries","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertLibrariesBody"}}}},"responses":{"202":{"description":"The operation is successfully created.","headers":{"Location":{"schema":{"type":"string"},"description":"The URL to retrieve the status of the bulk operation using its operation ID.\n\nExample: `https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011`.","example":"https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011"}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"schema":{"oneOf":[{"description":"The input of a bulk operation must be an array.","title":"Invalid Input","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidInput"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The input array size exceeds the maximum limit of 10,000 objects.","title":"Input Too Long","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["inputTooLong"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The skill solution is not enabled.","title":"Skill Solution Not Enabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["skillSolutionNotEnabled"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}]}}}},"401":{"description":"The given access token is either missing, invalid, has expired, or has been revoked.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["invalid_token"]}},"required":["error"]}}}},"403":{"description":"The given access token does not have the required OAuth scope to execute the request.","content":{"application/json":{"schema":{"title":"Invalid Scope","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_scope"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"The maximum number of concurrent operations has been reached.","content":{"application/json":{"schema":{"title":"Bulk Operations Concurrency Limit Reached","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkOperationsConcurrencyLimitReached"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"The bulk API is temporarily disabled.","content":{"application/json":{"schema":{"title":"Bulk API Disabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkAPIDisabled"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}}},"security":[{"oauth2":[]}],"summary":"Upsert libraries","tags":["Skills"]}},"/api/v2/bulk/skills":{"delete":{"description":"> 🔑\n>\n> Required OAuth scope: `skills:bulk`.\n\n> 🚜\n>\n> This endpoint processes up to 10,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1).\n\nDeletes skills based on the given `externalId`.\n\nUpon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation.","operationId":"v2.bulk.skills.DeleteSkillsController_deleteSkills","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteSkillsBody"}}}},"responses":{"202":{"description":"The operation is successfully created.","headers":{"Location":{"schema":{"type":"string"},"description":"The URL to retrieve the status of the bulk operation using its operation ID.\n\nExample: `https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011`.","example":"https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011"}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"schema":{"oneOf":[{"description":"The input of a bulk operation must be an array.","title":"Invalid Input","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidInput"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The input array size exceeds the maximum limit of 10,000 objects.","title":"Input Too Long","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["inputTooLong"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The skill solution is not enabled.","title":"Skill Solution Not Enabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["skillSolutionNotEnabled"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}]}}}},"401":{"description":"The given access token is either missing, invalid, has expired, or has been revoked.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["invalid_token"]}},"required":["error"]}}}},"403":{"description":"The given access token does not have the required OAuth scope to execute the request.","content":{"application/json":{"schema":{"title":"Invalid Scope","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_scope"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"The maximum number of concurrent operations has been reached.","content":{"application/json":{"schema":{"title":"Bulk Operations Concurrency Limit Reached","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkOperationsConcurrencyLimitReached"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"The bulk API is temporarily disabled.","content":{"application/json":{"schema":{"title":"Bulk API Disabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkAPIDisabled"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}}},"security":[{"oauth2":[]}],"summary":"Delete skills","tags":["Skills"]},"put":{"description":"> 🔑\n>\n> Required OAuth scope: `skills:bulk`.\n\n> 🚜\n>\n> This endpoint processes up to 10,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1).\n\nAdds or replaces multiple skills based on the given `externalId`.\n- If a provided `externalId` matches an existing skill, the skill is replaced with the new data.\n- If no match is found, a new skill is created.\n\nUpon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation.","operationId":"v2.bulk.skills.UpsertSkillsController_upsertSkills","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertSkillsBody"}}}},"responses":{"202":{"description":"The operation is successfully created.","headers":{"Location":{"schema":{"type":"string"},"description":"The URL to retrieve the status of the bulk operation using its operation ID.\n\nExample: `https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011`.","example":"https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011"}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"schema":{"oneOf":[{"description":"The input of a bulk operation must be an array.","title":"Invalid Input","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidInput"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The input array size exceeds the maximum limit of 10,000 objects.","title":"Input Too Long","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["inputTooLong"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The skill solution is not enabled.","title":"Skill Solution Not Enabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["skillSolutionNotEnabled"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The relations between skills and parents create cycles.","title":"Skills Graph Has Cycles","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["skillsGraphHasCycles"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}]}}}},"401":{"description":"The given access token is either missing, invalid, has expired, or has been revoked.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["invalid_token"]}},"required":["error"]}}}},"403":{"description":"The given access token does not have the required OAuth scope to execute the request.","content":{"application/json":{"schema":{"title":"Invalid Scope","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_scope"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"The maximum number of concurrent operations has been reached.","content":{"application/json":{"schema":{"title":"Bulk Operations Concurrency Limit Reached","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkOperationsConcurrencyLimitReached"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"The bulk API is temporarily disabled.","content":{"application/json":{"schema":{"title":"Bulk API Disabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkAPIDisabled"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}}},"security":[{"oauth2":[]}],"summary":"Upsert skills","tags":["Skills"]}},"/api/v2/bulk/skills/jobs-skills":{"put":{"description":"> 🔑\n>\n> Required OAuth scope: `skillsJobSkills:bulk`.\n\n> 🚜\n>\n> This endpoint processes up to 10,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1).\n\nReplaces jobs skills based on the given `jobId`.\n- All skills of each job will be replaced by the provided ones. For each job, a maximum of 100 skills is allowed.\n\nUpon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation.","operationId":"v2.bulk.skills.ReplaceJobsSkillsController_replaceJobsSkills","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceJobsSkillsBody"}}}},"responses":{"202":{"description":"The operation is successfully created.","headers":{"Location":{"schema":{"type":"string"},"description":"The URL to retrieve the status of the bulk operation using its operation ID.\n\nExample: `https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011`.","example":"https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011"}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"schema":{"oneOf":[{"description":"The input of a bulk operation must be an array.","title":"Invalid Input","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidInput"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The input array size exceeds the maximum limit of 10,000 objects.","title":"Input Too Long","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["inputTooLong"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The skill solution is not enabled.","title":"Skill Solution Not Enabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["skillSolutionNotEnabled"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"Too many skills for a job.","title":"Too Many Skills","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["tooManySkills"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}]}}}},"401":{"description":"The given access token is either missing, invalid, has expired, or has been revoked.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["invalid_token"]}},"required":["error"]}}}},"403":{"description":"The given access token does not have the required OAuth scope to execute the request.","content":{"application/json":{"schema":{"title":"Invalid Scope","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_scope"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"The maximum number of concurrent operations has been reached.","content":{"application/json":{"schema":{"title":"Bulk Operations Concurrency Limit Reached","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkOperationsConcurrencyLimitReached"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"The bulk API is temporarily disabled.","content":{"application/json":{"schema":{"title":"Bulk API Disabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkAPIDisabled"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}}},"security":[{"oauth2":[]}],"summary":"Replace jobs skills","tags":["Skills"]}},"/api/v2/bulk/skills/users/jobs":{"put":{"description":"> 🔑\n>\n> Required OAuth scope: `skillsJobs:bulk`.\n\n> 🚜\n>\n> This endpoint processes up to 10,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1).\n\nReplaces users jobs based on the given `userId`.\n- All jobs of each users will be replaced by the provided ones. For each user, a maximum of 100 jobs is allowed.\n\nUpon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation.","operationId":"v2.bulk.skills.ReplaceUsersJobsController_replaceUsersJobs","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceUsersJobsBody"}}}},"responses":{"202":{"description":"The operation is successfully created.","headers":{"Location":{"schema":{"type":"string"},"description":"The URL to retrieve the status of the bulk operation using its operation ID.\n\nExample: `https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011`.","example":"https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011"}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"schema":{"oneOf":[{"description":"The input of a bulk operation must be an array.","title":"Invalid Input","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidInput"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The input array size exceeds the maximum limit of 10,000 objects.","title":"Input Too Long","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["inputTooLong"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The skill solution is not enabled.","title":"Skill Solution Not Enabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["skillSolutionNotEnabled"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"Too many jobs for a user.","title":"Too Many Jobs","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["tooManyJobs"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}]}}}},"401":{"description":"The given access token is either missing, invalid, has expired, or has been revoked.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["invalid_token"]}},"required":["error"]}}}},"403":{"description":"The given access token does not have the required OAuth scope to execute the request.","content":{"application/json":{"schema":{"title":"Invalid Scope","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_scope"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"The maximum number of concurrent operations has been reached.","content":{"application/json":{"schema":{"title":"Bulk Operations Concurrency Limit Reached","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkOperationsConcurrencyLimitReached"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"The bulk API is temporarily disabled.","content":{"application/json":{"schema":{"title":"Bulk API Disabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkAPIDisabled"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}}},"security":[{"oauth2":[]}],"summary":"Replace users jobs","tags":["Skills"]}},"/api/v2/bulk/notifications/subscriptions":{"post":{"description":"> 🔑\n>\n> Required OAuth scope: `subscriptions:bulk`.\n\n> 🚜\n>\n> This endpoint processes up to 20,000 objects asynchronously. For more information, see the [Bulk operations guide](doc:bulk-operations-1).\n\nCreates multiple email subscription events. Upon submission, the request is queued. Use the provided URL in the response header to check the status of the bulk operation.","operationId":"v2.bulk.subscriptions.CreateSubscriptionEventsController_createSubscriptionEvents","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSubscriptionEventsBody"}}}},"responses":{"202":{"description":"The operation is successfully created.","headers":{"Location":{"schema":{"type":"string"},"description":"The URL to retrieve the status of the bulk operation using its operation ID.\n\nExample: `https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011`.","example":"https://app.360learning.com/api/v2/bulk/operations/507f1f77bcf86cd799439011"}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"schema":{"oneOf":[{"description":"The input of a bulk operation must be an array.","title":"Invalid Input","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidInput"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The input array size exceeds the maximum limit of 20,000 objects.","title":"Input Too Long","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["inputTooLong"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}]}}}},"401":{"description":"The given access token is either missing, invalid, has expired, or has been revoked.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["invalid_token"]}},"required":["error"]}}}},"403":{"description":"The given access token does not have the required OAuth scope to execute the request.","content":{"application/json":{"schema":{"title":"Invalid Scope","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_scope"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"The maximum number of concurrent operations has been reached.","content":{"application/json":{"schema":{"title":"Bulk Operations Concurrency Limit Reached","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkOperationsConcurrencyLimitReached"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"The bulk API is temporarily disabled.","content":{"application/json":{"schema":{"title":"Bulk API Disabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bulkAPIDisabled"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}}},"security":[{"oauth2":[]}],"summary":"Create email subscription events","tags":["Subscriptions"]}}},"info":{"title":"Bulk API","description":"","version":"1.0.0","contact":{}},"tags":[],"servers":[{"url":"https://app.360learning.com","description":"Production EU"},{"url":"https://app.us.360learning.com","description":"Production US"}],"components":{"securitySchemes":{"oauth2":{"type":"oauth2","flows":{},"description":"Use the token from the authentication endpoint in the Authorization header.\n\nExample: `Authorization: Bearer <token>`"}},"schemas":{"CatalogDTO":{"title":"Catalog","type":"object","properties":{"groupId":{"type":"string","description":"The unique ID of the group.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"contentType":{"type":"string","enum":["path-session","course"],"description":"The type of the content."},"contentId":{"type":"string","description":"The unique ID of the content.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"}},"required":["groupId","contentType","contentId"]},"AddContentsToGroupsCatalogBody":{"title":"Add Contents To Groups Catalog Body","type":"object","properties":{"input":{"description":"An array of objects, each specifying details for adding content to a group catalog.","maxItems":20000,"type":"array","items":{"$ref":"#/components/schemas/CatalogDTO"}}},"required":["input"]},"LibraryDTO":{"title":"Library","type":"object","properties":{"groupId":{"type":"string","description":"The unique ID of the group.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"contentType":{"type":"string","enum":["path","course"],"description":"The type of the content."},"contentId":{"type":"string","description":"The unique ID of the content.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"}},"required":["groupId","contentType","contentId"]},"AddContentsToGroupsLibraryBody":{"title":"Add Contents To Groups Library Body","type":"object","properties":{"input":{"description":"An array of objects, each specifying details for adding content to a group library.","maxItems":20000,"type":"array","items":{"$ref":"#/components/schemas/LibraryDTO"}}},"required":["input"]},"MembershipAdditionDTO":{"title":"Membership Addition","type":"object","properties":{"userId":{"type":"string","description":"The unique ID of the user to be added to the group.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"groupId":{"type":"string","description":"The unique ID of the group to which the user will be added.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"role":{"type":"string","enum":["admin","analyst","editor","coach","contributor","learner","userAdmin"],"description":"The role assigned to the user within the group."}},"required":["userId","groupId","role"]},"AddUsersToGroupsBody":{"title":"Add Users To Groups Body","type":"object","properties":{"input":{"description":"An array of objects, each specifying details for adding a user to a group.","maxItems":20000,"type":"array","items":{"$ref":"#/components/schemas/MembershipAdditionDTO"}}},"required":["input"]},"DeleteGroupDTO":{"title":"Delete Group","type":"object","properties":{"groupId":{"type":"string","description":"The unique ID of the group to delete.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"}},"required":["groupId"]},"DeleteGroupsBody":{"title":"Delete Groups Body","type":"object","properties":{"input":{"description":"An array of objects, each specifying details for the group to be deleted.","maxItems":2000,"type":"array","items":{"$ref":"#/components/schemas/DeleteGroupDTO"}}},"required":["input"]},"RemoveContentsFromGroupsCatalogBody":{"title":"Remove Contents From Groups Catalog Body","type":"object","properties":{"input":{"description":"An array of objects, each specifying details for removing content from a group catalog.","maxItems":20000,"type":"array","items":{"$ref":"#/components/schemas/CatalogDTO"}}},"required":["input"]},"RemoveContentsFromGroupsLibraryBody":{"title":"Remove Contents From Groups Library Body","type":"object","properties":{"input":{"description":"An array of objects, each specifying details for removing content from a group library.","maxItems":20000,"type":"array","items":{"$ref":"#/components/schemas/LibraryDTO"}}},"required":["input"]},"MembershipDeletionDTO":{"title":"Membership Deletion","type":"object","properties":{"userId":{"type":"string","description":"The unique ID of the user to be removed from the group.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"groupId":{"type":"string","description":"The unique ID of the group from which the user will be removed.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"role":{"type":"string","enum":["admin","analyst","editor","coach","contributor","learner","userAdmin"],"description":"The role assigned to the user within the group."}},"required":["userId","groupId","role"]},"RemoveUsersFromGroupsBody":{"title":"Remove Users From Groups Body","type":"object","properties":{"input":{"description":"An array of objects, each specifying details for removing a user from a group.","maxItems":20000,"type":"array","items":{"$ref":"#/components/schemas/MembershipDeletionDTO"}}},"required":["input"]},"ArchiveExternalCourseDTO":{"title":"Archive External Course","type":"object","properties":{"externalId":{"type":"string","description":"Unique external identifier of the course to archive.","example":"l3ssup3rh3r0s","minLength":1}},"required":["externalId"]},"ArchiveExternalCoursesBody":{"title":"Archive External Courses Body","type":"object","properties":{"input":{"description":"An array of objects, each specifying details for external course to be archived.","maxItems":1000,"type":"array","items":{"$ref":"#/components/schemas/ArchiveExternalCourseDTO"}}},"required":["input"]},"ExternalCourseSourceDTO":{"title":"External Course Source","type":"object","properties":{"name":{"type":"string","example":"Wikipedia","description":"The name of the source.","minLength":1},"logoUrl":{"type":"string","example":"https://en.wikipedia.org/static/images/icons/wikipedia.png","description":"The logo URL of the source.","minLength":1}},"required":["name"]},"ExternalCourseTranslatedFields":{"title":"External Course Translated Fields","type":"object","properties":{"description":{"type":"string","description":"The translation of the field `description` for this language.","example":"Apprenez les bases de l'apprentissage automatique.","minLength":1},"launchUrl":{"type":"string","description":"The URL to launch and play the external course in this language.","example":"https://player.mylearningplatform.com/launch/l3ssup3rh3r0s/fr","minLength":1},"mobileLaunchUrl":{"type":"string","description":"The URL to launch and play the external course from a mobile in this language.","example":"https://player.mylearningplatform.com/mobile/launch/l3ssup3rh3r0s/fr","minLength":1},"name":{"type":"string","description":"The translation of the field `name` for this language.","example":"Cours intensif sur l'apprentissage automatique","minLength":1},"subjects":{"description":"The translation of the field `subjects` for this language.","example":["Apprentissage automatique","TI"],"type":"array","items":{"type":"string","minLength":1}}}},"ExternalCourseTranslationDTO":{"title":"External Course Translation","type":"object","properties":{"lang":{"type":"string","enum":["bg","cs","da","de","el","en","es","fi","fr","hr","ht_HT","hu","id","it","ja","kar_MM","ko","lt","mh_MH","nl","nl_BE","no","pl","pt","ro","ru","rw_RW","sk","sl","so_SO","sv","sw_KE","th","ti_ET","tr","uk","zh","am_ET","bn","bs","ca","cy","en_CA","en_GB","es_AR","es_MX","et","fr_CA","gu","he_IL","hy","kk","km","lo","lv","mi","mn_MN","mr","ms","my_MM","nn_NO","or","pa","pt_BR","pt_MZ","rn_BI","si","ta","te","tl_PH","ur","uz","yo_NG","zh_tw","el","hi","sr","ar","vi","zh_HANT"],"description":"The language of the translation.","example":"fr"},"translatedFields":{"description":"The translations of the external course fields for this language. If a field is not defined, the value from the default language is used.","allOf":[{"$ref":"#/components/schemas/ExternalCourseTranslatedFields"}]}},"required":["lang","translatedFields"]},"ExternalCourseDTO":{"title":"External Course","type":"object","properties":{"defaultLang":{"type":"string","enum":["bg","cs","da","de","el","en","es","fi","fr","hr","ht_HT","hu","id","it","ja","kar_MM","ko","lt","mh_MH","nl","nl_BE","no","pl","pt","ro","ru","rw_RW","sk","sl","so_SO","sv","sw_KE","th","ti_ET","tr","uk","zh","am_ET","bn","bs","ca","cy","en_CA","en_GB","es_AR","es_MX","et","fr_CA","gu","he_IL","hy","kk","km","lo","lv","mi","mn_MN","mr","ms","my_MM","nn_NO","or","pa","pt_BR","pt_MZ","rn_BI","si","ta","te","tl_PH","ur","uz","yo_NG","zh_tw","el","hi","sr","ar","vi","zh_HANT"],"description":"The language of the external course which is displayed by default when the learner’s profile language is not available. The `name`, `description`, `subjects`, `launchUrl`, and `mobileLaunchUrl` values must be coherent with this language."},"externalId":{"type":"string","example":"l3ssup3rh3r0s","description":"The unique external ID of the external course.","minLength":1},"launchUrl":{"type":"string","example":"https://player.mylearningplatform.com/launch/l3ssup3rh3r0s","description":"The URL to launch and play the external course.","minLength":1},"name":{"type":"string","example":"Machine Learning Crash Course","description":"The title of the external course.","minLength":1},"sources":{"description":"The list of sources of the external course.","type":"array","items":{"$ref":"#/components/schemas/ExternalCourseSourceDTO"}},"subjects":{"example":["Machine Learning","IT"],"description":"The list of subjects of the external course.","type":"array","items":{"type":"string","minLength":1}},"contentType":{"type":"string","enum":["aiVirtualClass","article","assessment","audiobook","book","certificate","channel","course","curriculum","interactive","journey","labs","linkedContent","mooc","podcast","program","roleplay","specialization","topvoice","video"],"description":"The type of the external course. If not set, `course` type is used."},"description":{"type":"string","example":"Learn the basics of machine learning.","description":"The description of the external course.","minLength":1},"difficultyLevel":{"type":"string","enum":["advanced","beginner","intermediate"],"description":"The level of difficulty of the external course."},"duration":{"type":"integer","minimum":1,"maximum":100000,"example":45,"description":"The duration of the external course, in minutes."},"imageUrl":{"type":"string","example":"https://player.mylearningplatform.com/image/l3ssup3rh3r0s","description":"The URL of the image of the external course.","minLength":1},"mobileLaunchUrl":{"type":"string","example":"https://player.mylearningplatform.com/mobile/launch/l3ssup3rh3r0s","description":"The URL to launch and play the external course from a mobile. If not set, the `launchUrl` is used.","minLength":1},"authorId":{"type":"string","description":"The unique ID of the author. If not set, the `authorId` from the integration is used.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"translations":{"description":"The different translations available for the external course.","type":"array","items":{"$ref":"#/components/schemas/ExternalCourseTranslationDTO"}}},"required":["defaultLang","externalId","launchUrl","name","sources","subjects"]},"ImportExternalCoursesBody":{"title":"Import External Courses Body","type":"object","properties":{"input":{"description":"An array of objects, each specifying details for external course to be imported.","maxItems":10000,"type":"array","items":{"$ref":"#/components/schemas/ExternalCourseDTO"}}},"required":["input"]},"CourseIdentifierDTO":{"title":"Course Identifier","type":"object","properties":{"type":{"type":"string","enum":["externalId","internalId"],"description":"Type of course identifier.\n`externalId`: identifier used on the external platform.\n`internalId`: internal identifier used on 360Learning platform."},"value":{"type":"string","description":"Value of the course identifier given the type provided.","example":"l3ssup3rh3r0s","minLength":1}},"required":["type","value"]},"UserIdentifierDTO":{"title":"User Identifier","type":"object","properties":{"type":{"type":"string","enum":["mail","internalId"],"description":"Type of user identifier.\n`mail`: learner mail.\n`internalId`: learner internal identifier used on 360Learning platform."},"value":{"type":"string","description":"Value of the user identifier given the type provided.","example":"j.doe@hotmail.com","minLength":1}},"required":["type","value"]},"ImportExternalStatisticsDTO":{"title":"Import External Statistics","type":"object","properties":{"courseIdentifier":{"description":"Unique course identifier for the statistics.","allOf":[{"$ref":"#/components/schemas/CourseIdentifierDTO"}]},"forceNew":{"type":"boolean","description":"Determine whether the statistics should force the creation of a new attempt (`true`) or update any existing one based on the couple `(courseIdentifier.value, userIdentifier.value)` (`false`). Default to `false`."},"userIdentifier":{"description":"Unique learner identifier for the statistics.","allOf":[{"$ref":"#/components/schemas/UserIdentifierDTO"}]},"lang":{"type":"string","enum":["bg","cs","da","de","el","en","es","fi","fr","hr","ht_HT","hu","id","it","ja","kar_MM","ko","lt","mh_MH","nl","nl_BE","no","pl","pt","ro","ru","rw_RW","sk","sl","so_SO","sv","sw_KE","th","ti_ET","tr","uk","zh","am_ET","bn","bs","ca","cy","en_CA","en_GB","es_AR","es_MX","et","fr_CA","gu","he_IL","hy","kk","km","lo","lv","mi","mn_MN","mr","ms","my_MM","nn_NO","or","pa","pt_BR","pt_MZ","rn_BI","si","ta","te","tl_PH","ur","uz","yo_NG","zh_tw","el","hi","sr","ar","vi","zh_HANT"],"description":"The language in which the learner played the course.","example":"fr"},"progress":{"type":"number","minimum":0,"maximum":100,"description":"The progress percentage of the learner, expressed as an integer (0-100).","example":100},"score":{"type":"number","minimum":0,"maximum":100,"description":"The score (0-100) of the learner for the external course.","example":90},"result":{"type":"string","enum":["success","failed"],"description":"The result of the learner on the course: `failed` or `success`."},"timeSpent":{"type":"number","minimum":1,"description":"The total time in milliseconds the learner spent playing the external course.","example":3600000},"firstActivityAt":{"format":"date-time","type":"string","description":"The date when the learner first interacted with the external course, expressed in ISO 8601 format.","example":"2025-07-08T22:00:00.000Z"},"lastActivityAt":{"format":"date-time","type":"string","description":"The date when the learner last interacted with the external course, expressed in ISO 8601 format. If progress is set to 100%, this will be the completion date of the course.","example":"2025-07-08T22:00:00.000Z"}},"required":["courseIdentifier","userIdentifier","progress","timeSpent","firstActivityAt","lastActivityAt"]},"ImportExternalStatisticsBody":{"title":"Import External Statistics Body","type":"object","properties":{"input":{"description":"An array of objects, each specifying details for external statistics to be imported.","maxItems":10000,"type":"array","items":{"$ref":"#/components/schemas/ImportExternalStatisticsDTO"}}},"required":["input"]},"PendingOperationDTO":{"title":"Pending Operation","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the bulk operation.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"type":{"type":"string","enum":["addContentsToGroupsCatalog","addContentsToGroupsLibrary","addSkillReviews","addUsersToGroups","archiveExternalCourses","deleteSkills","createGroups","createSubscriptionEvents","deleteGroups","deleteJobs","deleteLibraries","importExternalCourses","importExternalStatistics","removeContentsFromGroupsCatalog","removeContentsFromGroupsLibrary","removeUsersFromGroups","replaceJobsSkills","replaceUsersJobs","upsertJobs","upsertLibraries","upsertSkills"],"description":"The type of bulk operation."},"createdAt":{"format":"date-time","type":"string","description":"The date and time when the bulk operation was created, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"status":{"type":"string","enum":["pending"],"description":"The status of the bulk operation."}},"required":["_id","type","createdAt","status"]},"QueuedOperationDTO":{"title":"Queued Operation","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the bulk operation.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"type":{"type":"string","enum":["addContentsToGroupsCatalog","addContentsToGroupsLibrary","addSkillReviews","addUsersToGroups","archiveExternalCourses","deleteSkills","createGroups","createSubscriptionEvents","deleteGroups","deleteJobs","deleteLibraries","importExternalCourses","importExternalStatistics","removeContentsFromGroupsCatalog","removeContentsFromGroupsLibrary","removeUsersFromGroups","replaceJobsSkills","replaceUsersJobs","upsertJobs","upsertLibraries","upsertSkills"],"description":"The type of bulk operation."},"createdAt":{"format":"date-time","type":"string","description":"The date and time when the bulk operation was created, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"status":{"type":"string","enum":["queued"],"description":"The status of the bulk operation."},"queuedAt":{"format":"date-time","type":"string","description":"The date and time when the bulk operation was queued, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."}},"required":["_id","type","createdAt","status","queuedAt"]},"OperationProgressDTO":{"title":"Operation Progress","type":"object","properties":{"index":{"type":"number","description":"The index of the last processed element of the bulk operation."},"updatedAt":{"format":"date-time","type":"string","description":"The date and time of the last update of the bulk operation, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."}},"required":["index","updatedAt"]},"RunningOperationDTO":{"title":"Running Operation","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the bulk operation.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"type":{"type":"string","enum":["addContentsToGroupsCatalog","addContentsToGroupsLibrary","addSkillReviews","addUsersToGroups","archiveExternalCourses","deleteSkills","createGroups","createSubscriptionEvents","deleteGroups","deleteJobs","deleteLibraries","importExternalCourses","importExternalStatistics","removeContentsFromGroupsCatalog","removeContentsFromGroupsLibrary","removeUsersFromGroups","replaceJobsSkills","replaceUsersJobs","upsertJobs","upsertLibraries","upsertSkills"],"description":"The type of bulk operation."},"createdAt":{"format":"date-time","type":"string","description":"The date and time when the bulk operation was created, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"status":{"type":"string","enum":["running"],"description":"The status of the bulk operation."},"progress":{"description":"The current progress of the bulk operation.","allOf":[{"$ref":"#/components/schemas/OperationProgressDTO"}]},"queuedAt":{"format":"date-time","type":"string","description":"The date and time when the bulk operation was queued, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"startedAt":{"format":"date-time","type":"string","description":"The date and time when the bulk operation started, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."}},"required":["_id","type","createdAt","status","progress","queuedAt","startedAt"]},"CompletedOperationDTO":{"title":"Completed Operation","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the bulk operation.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"type":{"type":"string","enum":["addContentsToGroupsCatalog","addContentsToGroupsLibrary","addSkillReviews","addUsersToGroups","archiveExternalCourses","deleteSkills","createGroups","createSubscriptionEvents","deleteGroups","deleteJobs","deleteLibraries","importExternalCourses","importExternalStatistics","removeContentsFromGroupsCatalog","removeContentsFromGroupsLibrary","removeUsersFromGroups","replaceJobsSkills","replaceUsersJobs","upsertJobs","upsertLibraries","upsertSkills"],"description":"The type of bulk operation."},"createdAt":{"format":"date-time","type":"string","description":"The date and time when the bulk operation was created, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"status":{"type":"string","enum":["completed"],"description":"The status of the bulk operation."},"progress":{"description":"The current progress of the bulk operation.","allOf":[{"$ref":"#/components/schemas/OperationProgressDTO"}]},"queuedAt":{"format":"date-time","type":"string","description":"The date and time when the bulk operation was queued, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"startedAt":{"format":"date-time","type":"string","description":"The date and time when the bulk operation started, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"endedAt":{"format":"date-time","type":"string","description":"The date and time when the bulk operation ended, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."}},"required":["_id","type","createdAt","status","progress","queuedAt","startedAt","endedAt"]},"ErroredOperationDTO":{"title":"Errored Operation","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the bulk operation.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"type":{"type":"string","enum":["addContentsToGroupsCatalog","addContentsToGroupsLibrary","addSkillReviews","addUsersToGroups","archiveExternalCourses","deleteSkills","createGroups","createSubscriptionEvents","deleteGroups","deleteJobs","deleteLibraries","importExternalCourses","importExternalStatistics","removeContentsFromGroupsCatalog","removeContentsFromGroupsLibrary","removeUsersFromGroups","replaceJobsSkills","replaceUsersJobs","upsertJobs","upsertLibraries","upsertSkills"],"description":"The type of bulk operation."},"createdAt":{"format":"date-time","type":"string","description":"The date and time when the bulk operation was created, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"status":{"type":"string","enum":["error"],"description":"The status of the bulk operation."},"progress":{"description":"The current progress of the bulk operation.","allOf":[{"$ref":"#/components/schemas/OperationProgressDTO"}]},"errorMessage":{"type":"string","description":"A human-readable message to help with debugging."},"queuedAt":{"format":"date-time","type":"string","description":"The date and time when the bulk operation was queued, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"startedAt":{"format":"date-time","type":"string","description":"The date and time when the bulk operation started, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"endedAt":{"format":"date-time","type":"string","description":"The date and time when the bulk operation ended, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."}},"required":["_id","type","createdAt","status","progress","errorMessage","queuedAt","startedAt","endedAt"]},"SuccessResultDTO":{"title":"Success Result","type":"object","properties":{"input":{"type":"object","description":"The input object used for the operation."},"status":{"type":"string","enum":["success"],"description":"The status of the operation result."},"resourceId":{"type":"string","description":"The unique ID of the impacted resource.","example":"ID123456"}},"required":["input","status","resourceId"]},"ErrorResultDTO":{"title":"Error Result","type":"object","properties":{"input":{"type":"object","description":"The input object used for the operation."},"status":{"type":"string","enum":["error"],"description":"The status of the operation result."},"errorMessage":{"type":"string","description":"The error message of the failed result."}},"required":["input","status","errorMessage"]},"SkillAddedDTO":{"title":"Skill Added","type":"object","properties":{"externalId":{"type":"string","description":"The unique external ID of the review.","example":"5d9b7bf9-47bf-40ca-b670-2a2a80d992da","minLength":1},"userId":{"type":"string","description":"The unique ID of the user the review is about.","example":"672b473e3e8d1c8cee0f1a4b","minLength":1,"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"},"assessorId":{"type":"string","description":"The unique ID of the user that made the review.","example":"672b47e33e8d1c8cee0f1a5c","minLength":1,"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"},"skillId":{"type":"string","description":"The unique ID of the skill the review is about.","example":"SKI1708592191403r2x5","minLength":1},"actionType":{"type":"string","enum":["skillAdded"],"description":"The skill is added to the user profile."},"comment":{"type":"string","maxLength":1000,"description":"A comment about the review.","example":"You demonstrated a good understanding of the topic.","minLength":1},"createdAt":{"format":"date-time","type":"string","description":"The date and time of the review, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC)). If not set, the current date is used.","minLength":1}},"required":["userId","assessorId","skillId","actionType"]},"ValueByIdQualifierDTO":{"title":"Value By Id Qualifier","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the qualifier.","example":"SKQ1701914859202x53r","minLength":1},"valueId":{"type":"string","description":"The unique ID of the qualifier value.","example":"5wQSd5xljil5zndlsieqA5","minLength":1}},"required":["_id","valueId"]},"SkillAssessedByIdDTO":{"title":"Skill Assessed By Id","type":"object","properties":{"externalId":{"type":"string","description":"The unique external ID of the review.","example":"5d9b7bf9-47bf-40ca-b670-2a2a80d992da","minLength":1},"userId":{"type":"string","description":"The unique ID of the user the review is about.","example":"672b473e3e8d1c8cee0f1a4b","minLength":1,"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"},"assessorId":{"type":"string","description":"The unique ID of the user that made the review.","example":"672b47e33e8d1c8cee0f1a5c","minLength":1,"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"},"skillId":{"type":"string","description":"The unique ID of the skill the review is about.","example":"SKI1708592191403r2x5","minLength":1},"actionType":{"type":"string","enum":["skillAssessed"],"description":"The skill is assessed, with qualifier values given by ID."},"comment":{"type":"string","maxLength":1000,"description":"A comment about the review.","example":"You demonstrated a good understanding of the topic.","minLength":1},"createdAt":{"format":"date-time","type":"string","description":"The date and time of the review, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC)). If not set, the current date is used.","minLength":1},"qualifiers":{"maxItems":100,"description":"The qualifier values related to the assessment, specified by ID. Required when the target skill has a main qualifier configured.","type":"array","items":{"$ref":"#/components/schemas/ValueByIdQualifierDTO"}}},"required":["userId","assessorId","skillId","actionType"]},"ValueByIndexQualifierDTO":{"title":"Value By Index Qualifier","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the qualifier.","example":"SKQ1701914859202x53r","minLength":1},"valueIndex":{"type":"integer","minimum":1,"maximum":100,"description":"The index of the qualifier value, among the list of possible values. Takes values from 1 to the number of possible values for the qualifier.","example":2}},"required":["_id","valueIndex"]},"SkillAssessedByIndexDTO":{"title":"Skill Assessed By Index","type":"object","properties":{"externalId":{"type":"string","description":"The unique external ID of the review.","example":"5d9b7bf9-47bf-40ca-b670-2a2a80d992da","minLength":1},"userId":{"type":"string","description":"The unique ID of the user the review is about.","example":"672b473e3e8d1c8cee0f1a4b","minLength":1,"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"},"assessorId":{"type":"string","description":"The unique ID of the user that made the review.","example":"672b47e33e8d1c8cee0f1a5c","minLength":1,"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"},"skillId":{"type":"string","description":"The unique ID of the skill the review is about.","example":"SKI1708592191403r2x5","minLength":1},"actionType":{"type":"string","enum":["skillAssessedByIndex"],"description":"The skill is assessed, with qualifier values given by index."},"comment":{"type":"string","maxLength":1000,"description":"A comment about the review.","example":"You demonstrated a good understanding of the topic.","minLength":1},"createdAt":{"format":"date-time","type":"string","description":"The date and time of the review, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC)). If not set, the current date is used.","minLength":1},"qualifiers":{"maxItems":100,"description":"The qualifier values related to the assessment, specified by index. Required when the target skill has a main qualifier configured.","type":"array","items":{"$ref":"#/components/schemas/ValueByIndexQualifierDTO"}}},"required":["userId","assessorId","skillId","actionType"]},"SkillDeletedDTO":{"title":"Skill Deleted","type":"object","properties":{"externalId":{"type":"string","description":"The unique external ID of the review.","example":"5d9b7bf9-47bf-40ca-b670-2a2a80d992da","minLength":1},"userId":{"type":"string","description":"The unique ID of the user the review is about.","example":"672b473e3e8d1c8cee0f1a4b","minLength":1,"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"},"assessorId":{"type":"string","description":"The unique ID of the user that made the review.","example":"672b47e33e8d1c8cee0f1a5c","minLength":1,"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"},"skillId":{"type":"string","description":"The unique ID of the skill the review is about.","example":"SKI1708592191403r2x5","minLength":1},"actionType":{"type":"string","enum":["skillDeleted"],"description":"The skill is removed from the user profile."},"comment":{"type":"string","maxLength":1000,"description":"A comment about the review.","example":"You demonstrated a good understanding of the topic.","minLength":1},"createdAt":{"format":"date-time","type":"string","description":"The date and time of the review, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC)). If not set, the current date is used.","minLength":1}},"required":["userId","assessorId","skillId","actionType"]},"AddSkillReviewsBody":{"title":"Add Skill Reviews Body","type":"object","properties":{"input":{"maxItems":10000,"description":"An array of skill review objects.","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/SkillAddedDTO"},{"$ref":"#/components/schemas/SkillAssessedByIdDTO"},{"$ref":"#/components/schemas/SkillAssessedByIndexDTO"},{"$ref":"#/components/schemas/SkillDeletedDTO"}]}}},"required":["input"]},"JobDeleteDTO":{"title":"Job Delete","type":"object","properties":{"externalId":{"type":"string","description":"The unique external ID of the job.","example":"ff583381-f8b5-477e-a24d-947aa55f407b","minLength":1}},"required":["externalId"]},"DeleteJobsBody":{"title":"Delete Jobs Body","type":"object","properties":{"input":{"description":"An array of job delete objects.","maxItems":10000,"type":"array","items":{"$ref":"#/components/schemas/JobDeleteDTO"}}},"required":["input"]},"LibraryDeleteDTO":{"title":"Library Delete","type":"object","properties":{"externalId":{"type":"string","description":"The unique external ID of the library.","example":"ff583381-f8b5-477e-a24d-947aa55f407b","minLength":1}},"required":["externalId"]},"DeleteLibrariesBody":{"title":"Delete Libraries Body","type":"object","properties":{"input":{"description":"An array of library delete objects.","maxItems":10000,"type":"array","items":{"$ref":"#/components/schemas/LibraryDeleteDTO"}}},"required":["input"]},"SkillDeleteDTO":{"title":"Skill Delete","type":"object","properties":{"externalId":{"type":"string","description":"The unique external ID of the skill.","example":"5d9b7bf9-47bf-40ca-b670-2a2a80d992da","minLength":1}},"required":["externalId"]},"DeleteSkillsBody":{"title":"Delete Skills Body","type":"object","properties":{"input":{"description":"An array of skill delete objects.","maxItems":10000,"type":"array","items":{"$ref":"#/components/schemas/SkillDeleteDTO"}}},"required":["input"]},"JobSkillInputDTO":{"title":"Job Skill Input","type":"object","properties":{"jobId":{"type":"string","description":"The unique ID of the job.","example":"7793c9b2189d4ef3b026ec10","minLength":1},"skillId":{"type":"string","description":"The unique ID of the skill.","example":"034276eb12a14720a6091406","minLength":1},"qualifiers":{"maxItems":100,"description":"The qualifier values related to the job skill.","type":"array","items":{"$ref":"#/components/schemas/ValueByIdQualifierDTO"}}},"required":["jobId","skillId"]},"ReplaceJobsSkillsBody":{"title":"Replace Jobs Skills Body","type":"object","properties":{"input":{"description":"An array of job skill objects.","maxItems":10000,"type":"array","items":{"$ref":"#/components/schemas/JobSkillInputDTO"}}},"required":["input"]},"ReplaceUserJobsDTO":{"title":"Replace User Jobs","type":"object","properties":{"userId":{"type":"string","description":"The unique ID of the user the jobs are associated to.","example":"672b473e3e8d1c8cee0f1a4b","minLength":1,"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"},"currentJobIds":{"description":"The list of unique IDs of the current jobs given to the user. Do not include the property to keep existing jobs. Send empty list ([]) to remove all corresponding jobs","example":["JOB1","JOB2"],"type":"array","items":{"type":"string"}},"targetJobIds":{"description":"The list of unique IDs of the target jobs given to the user. Do not include the property to keep existing jobs. Send empty list ([]) to remove all corresponding jobs","example":["JOB3","JOB4"],"type":"array","items":{"type":"string"}},"previousJobIds":{"description":"The list of unique IDs of the previous jobs given to the user. Do not include the property to keep existing jobs. Send empty list ([]) to remove all corresponding jobs","example":["JOB5","JOB6"],"type":"array","items":{"type":"string"}}},"required":["userId"]},"ReplaceUsersJobsBody":{"title":"Replace Users Jobs Body","type":"object","properties":{"input":{"description":"An array of jobs by user and status.","maxItems":10000,"type":"array","items":{"$ref":"#/components/schemas/ReplaceUserJobsDTO"}}},"required":["input"]},"JobTranslatedFieldsDTO":{"title":"Job Translated Fields","type":"object","properties":{"name":{"type":"string","description":"The translation of the field `name` for this language.","example":"Le nom traduit en français","minLength":1},"description":{"type":"string","description":"The translation of the field `description` for this language.","example":"Traduction en français de la description.","minLength":1}}},"JobTranslationDTO":{"title":"Job Translation","type":"object","properties":{"lang":{"type":"string","enum":["bg","cs","de","en","es","fr","hu","it","ja","nl","pl","pt","ro","ru","sa","tr","uk","vm","zh"],"description":"The language of the translation.","example":"fr"},"translatedFields":{"description":"The translations of the job fields for this language.","allOf":[{"$ref":"#/components/schemas/JobTranslatedFieldsDTO"}]}},"required":["lang","translatedFields"]},"JobUpsertDTO":{"title":"Job Upsert","type":"object","properties":{"externalId":{"type":"string","description":"The unique external ID of the job.","example":"ff583381-f8b5-477e-a24d-947aa55f407b","minLength":1},"name":{"type":"string","description":"The name of the job.","example":"Product manager","minLength":1},"description":{"type":"string","description":"The description of the job.","example":"The product manager is responsible for the design, development, and lifecycle management of products to meet customer needs and business objectives.","minLength":1},"parentExternalId":{"type":"string","description":"The unique external ID of the parent job.","example":"477e108e-60b5-4908-856e-aa123e133921","minLength":1},"translations":{"description":"The different translations available for the job.","type":"array","items":{"$ref":"#/components/schemas/JobTranslationDTO"}}},"required":["externalId","name"]},"UpsertJobsBody":{"title":"Upsert Jobs Body","type":"object","properties":{"input":{"description":"An array of job upsert objects.","maxItems":10000,"type":"array","items":{"$ref":"#/components/schemas/JobUpsertDTO"}}},"required":["input"]},"BaseTranslatedFieldsDTO":{"title":"Base Translated Fields","type":"object","properties":{"name":{"type":"string","description":"The translation of the field `name` for this language.","example":"Le nom traduit en français","minLength":1},"description":{"type":"string","description":"The translation of the field `description` for this language.","example":"Traduction en français de la description.","minLength":1}}},"LibraryTranslationDTO":{"title":"Library Translation","type":"object","properties":{"lang":{"type":"string","enum":["bg","cs","de","en","es","fr","hu","it","ja","nl","pl","pt","ro","ru","sa","tr","uk","vm","zh"],"description":"The language of the translation.","example":"fr"},"translatedFields":{"description":"The translations of the library fields for this language.","allOf":[{"$ref":"#/components/schemas/BaseTranslatedFieldsDTO"}]}},"required":["lang","translatedFields"]},"LibraryUpsertDTO":{"title":"Library Upsert","type":"object","properties":{"externalId":{"type":"string","description":"The unique external ID of the library.","example":"ff583381-f8b5-477e-a24d-947aa55f407b","minLength":1},"name":{"type":"string","description":"The name of the library.","example":"Development experience","minLength":1},"description":{"type":"string","description":"The description of the library.","example":"All you have to know about how we develop here.","minLength":1},"translations":{"description":"The different translations available for the library.","type":"array","items":{"$ref":"#/components/schemas/LibraryTranslationDTO"}},"status":{"type":"string","enum":["draft","published"],"description":"The status of the library."}},"required":["externalId","name"]},"UpsertLibrariesBody":{"title":"Upsert Libraries Body","type":"object","properties":{"input":{"description":"An array of library upsert objects.","maxItems":10000,"type":"array","items":{"$ref":"#/components/schemas/LibraryUpsertDTO"}}},"required":["input"]},"SkillTranslatedFieldsDTO":{"title":"Skill Translated Fields","type":"object","properties":{"name":{"type":"string","description":"The translation of the field `name` for this language.","example":"Le nom traduit en français","minLength":1},"description":{"type":"string","description":"The translation of the field `description` for this language.","example":"Traduction en français de la description.","minLength":1}}},"SkillTranslationDTO":{"title":"Skill Translation","type":"object","properties":{"lang":{"type":"string","enum":["bg","cs","de","en","es","fr","hu","it","ja","nl","pl","pt","ro","ru","sa","tr","uk","vm","zh"],"description":"The language of the translation.","example":"fr"},"translatedFields":{"description":"The translations of the skill fields for this language.","allOf":[{"$ref":"#/components/schemas/SkillTranslatedFieldsDTO"}]}},"required":["lang","translatedFields"]},"SkillUpsertDTO":{"title":"Skill Upsert","type":"object","properties":{"externalId":{"type":"string","description":"The unique external ID of the skill.","example":"5d9b7bf9-47bf-40ca-b670-2a2a80d992da","minLength":1},"name":{"type":"string","description":"The name of the skill.","example":"Releases and deployments","minLength":1},"description":{"type":"string","description":"The description of the skill.","example":"Did the user already release the software on the production environment?","minLength":1},"libraryId":{"type":"string","description":"The ID of the library that contains the skill.","example":"6b14f596-b5dd-40bf-af4c-a4270487a3c4","deprecated":true,"minLength":1},"parentExternalIds":{"description":"The unique external IDs of the parent skills and libraries.","example":["477e108e-60b5-4908-856e-aa123e133921"],"maxItems":10,"type":"array","items":{"type":"string"}},"translations":{"description":"The different translations available for the skill.","type":"array","items":{"$ref":"#/components/schemas/SkillTranslationDTO"}}},"required":["externalId","name","parentExternalIds"]},"UpsertSkillsBody":{"title":"Upsert Skills Body","type":"object","properties":{"input":{"description":"An array of skill upsert objects.","maxItems":10000,"type":"array","items":{"$ref":"#/components/schemas/SkillUpsertDTO"}}},"required":["input"]},"SubscriptionEventDTO":{"title":"Subscription Event","type":"object","properties":{"mail":{"type":"string","description":"The email address of the user.","example":"john.smith@yopmail.com","minLength":1},"type":{"type":"string","enum":["activation","deactivation"],"description":"The type of subscription event to create."}},"required":["mail","type"]},"CreateSubscriptionEventsBody":{"title":"Create Subscription Events Body","type":"object","properties":{"input":{"description":"An array of email subscription events for users.","maxItems":20000,"type":"array","items":{"$ref":"#/components/schemas/SubscriptionEventDTO"}}},"required":["input"]}}},"webhooks":{}}