{"openapi":"3.1.0","paths":{"/api/v2/certificate-outlines":{"post":{"description":"> 🔑\n>\n> Required OAuth scope: `certificateOutlines:write`.\n\nCreates a new certificate outline in your platform.","operationId":"v2.certificateOutlines.CreateCertificateOutlineController_createCertificateOutline","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/InputCertificateOutlineDTO"}}}},"responses":{"200":{"description":"Returns newly created certificate outline.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CertificateOutlineResponseDTO"}}}},"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":"A tag is mandatory for the given wording.","title":"Wording With Missing Tag","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["wordingWithMissingTag"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given media ID does not correspond to any existing image media.","title":"Media Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["mediaNotFound"]},"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 `groupId` does not correspond to any existing group.","content":{"application/json":{"schema":{"title":"Group Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["groupNotFound"]},"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":"Create certificate outline","tags":["Certificate Outlines"]},"get":{"description":"> 🔑\n>\n> Required OAuth scope: `certificateOutlines:read`.\n\nLists all certificate outlines in your platform.","operationId":"v2.certificateOutlines.GetCertificateOutlinesController_getCertificateOutlines","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":"groupId","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **groupId** property with LHS bracket notation.\n\nExpected value format is a valid ID (24 digits or letters).","schema":{"properties":{"eq":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values equal to the given one","example":"507f1f77bcf86cd799439011"},"ne":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values not equal to the given one","example":"507f1f77bcf86cd799439011"},"in":{"type":"array","description":"Filter on values including the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}},"nin":{"type":"array","description":"Filter on values excluding the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}}}}}],"responses":{"200":{"description":"Returns all certificate outlines in the company.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CertificateOutlineResponseDTO"}}}}},"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 certificate outlines","tags":["Certificate Outlines"]}},"/api/v2/certificate-outlines/{certificateOutlineId}":{"delete":{"description":"> 🔑\n>\n> Required OAuth scope: `certificateOutlines:write`.\n\nDeletes a specific certificate outline given its unique ID.","operationId":"v2.certificateOutlines.DeleteCertificateOutlineController_deleteCertificateOutline","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"certificateOutlineId","required":true,"in":"path","description":"The unique ID of the certificate outline.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"204":{"description":"Deletes a specific certificate outline."},"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 `certificateOutlineId` does not correspond to any existing certificate outline.","content":{"application/json":{"schema":{"title":"Certificate Outline Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["certificateOutlineNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"409":{"description":"The given `certificateOutlineId` is used in paths.","content":{"application/json":{"schema":{"title":"Certificate Outline Still Used","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["certificateOutlineStillUsed"]},"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":"Delete a certificate outline","tags":["Certificate Outlines"]},"patch":{"description":"> 🔑\n>\n> Required OAuth scope: `certificateOutlines:write`.\n\nEdits specific fields of an existing certificate outline. Fields not included in the request payload remain unchanged.","operationId":"v2.certificateOutlines.UpdateCertificateOutlineController_updateCertificateOutline","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"certificateOutlineId","required":true,"in":"path","description":"The unique ID of the certificate outline.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchCertificateOutlineDTO"}}}},"responses":{"200":{"description":"Returns the updated certificate outline.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CertificateOutlineResponseDTO"}}}},"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 given media ID does not correspond to any existing image media.","title":"Media Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["mediaNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"A tag is mandatory for the given wording.","title":"Wording With Missing Tag","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["wordingWithMissingTag"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `certificateOutlineId` does not correspond to any existing certificate outline.","title":"Certificate Outline Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["certificateOutlineNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `groupId` does not correspond to any existing group.","title":"Group Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["groupNotFound"]},"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":"Edit a certificate outline","tags":["Certificate Outlines"]}},"/api/v2/classrooms":{"post":{"description":"> 🔑\n>\n> Required OAuth scope: `classrooms:write`.\n\nCreates a classroom.","operationId":"v2.classrooms.CreateClassroomController_createClassroom","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/InputClassroomDTO"}}}},"responses":{"201":{"description":"Returns the created classroom.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClassroomDTO"}}}},"400":{"description":"Some of the given medias are not allowed in a classroom. Allowed types are: attachment, excel, flash, image, pdf, slideshow, video, word","content":{"application/json":{"schema":{"title":"Bad Media Type","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["badMediaType"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `groupId` does not correspond to any existing group.","title":"Group Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["groupNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"Some of the given media IDs do not correspond to any existing media.","title":"Media Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["mediaNotFound"]},"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":"Create a classroom","tags":["Classrooms"]},"get":{"description":"> 🔑\n>\n> Required OAuth scope: `classrooms:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 500 classrooms. For more information, see the [Pagination guide](doc:pagination).\n\nLists all classrooms in your platform.","operationId":"v2.classrooms.GetClassroomsController_getClassrooms","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"groupId","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **groupId** property with LHS bracket notation.\n\nExpected value format is a valid ID (24 digits or letters).","schema":{"properties":{"eq":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values equal to the given one","example":"507f1f77bcf86cd799439011"},"ne":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values not equal to the given one","example":"507f1f77bcf86cd799439011"},"in":{"type":"array","description":"Filter on values including the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}},"nin":{"type":"array","description":"Filter on values excluding the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}}}}},{"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":"modifiedAt","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **modifiedAt** 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"}}}}],"responses":{"200":{"description":"Returns one page of 500 classrooms.","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":{"$ref":"#/components/schemas/ClassroomDTO"}}}}},"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 classrooms","tags":["Classrooms"]}},"/api/v2/classrooms/{classroomId}/slots":{"post":{"description":"> 🔑\n>\n> Required OAuth scope: `classrooms:write`.\n\nAdds a slot to a given classroom.","operationId":"v2.classrooms.CreateClassroomSlotController_createClassroomSlot","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"classroomId","required":true,"in":"path","description":"The unique ID of the classroom.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InputClassroomSlotDTO"}}}},"responses":{"201":{"description":"Returns the created classroom slot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PathClassroomSlotDTO"}}}},"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":"Classroom slot waitlist feature is not active for your company.","title":"Classroom Slot Waitlist Not Active","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["classroomSlotWaitlistNotActive"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The maximum capacity must be set and greater than 0 in order to activate the waitlist.","title":"Classroom Slot Waitlist Not Allowed","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["classroomSlotWaitlistNotAllowed"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `endDate` is before the given `startDate`.","title":"Invalid Start Or End Date","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidStartOrEndDate"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"Some of the given medias are not allowed in a classroom. Allowed types are: attachment, excel, flash, image, pdf, slideshow, video, word","title":"Bad Media Type","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["badMediaType"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The classroom dates are out of the parent path session dates.","title":"Out Of Path Session Dates","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["outOfPathSessionDates"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `authorId` does not have the rights to author a slot on this path session.","title":"Author Not Allowed","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["authorNotAllowed"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `authorId` does not correspond to any existing and non-deleted user.","title":"User Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `classroomId` does not correspond to any existing classroom.","title":"Classroom Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["classroomNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"Some of the given media IDs do not correspond to any existing media.","title":"Media Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["mediaNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `context._id` does not correspond to any existing path session.","title":"Path Session Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathSessionNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"At least one of the given `trainerIds` does not correspond to any existing and non-deleted user.","title":"Users Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["usersNotFound"]},"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":"Add a slot to a classroom","tags":["Classrooms"]},"get":{"description":"> 🔑\n>\n> Required OAuth scope: `classrooms:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 100 classroom slots. For more information, see the [Pagination guide](doc:pagination).\n\nLists all slots in a given classroom.","operationId":"v2.classrooms.GetClassroomSlotsController_getClassroomSlots","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"classroomId","required":true,"in":"path","description":"The unique ID of the classroom.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"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":"modifiedAt","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **modifiedAt** 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"}}}}],"responses":{"200":{"description":"Returns one page of 100 classroom slots.","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":{"$ref":"#/components/schemas/ClassroomSlotDTO"}}}}},"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 `classroomId` does not correspond to any existing classroom.","content":{"application/json":{"schema":{"title":"Classroom Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["classroomNotFound"]},"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 slots in a classroom","tags":["Classrooms"]}},"/api/v2/classrooms/{classroomId}/slots/{classroomSlotId}":{"delete":{"description":"> 🔑\n>\n> Required OAuth scope: `classrooms:write`.\n\nRemoves a slot from a classroom based on the provided slot ID.","operationId":"v2.classrooms.DeleteClassroomSlotController_deleteClassroomSlot","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"classroomId","required":true,"in":"path","description":"The unique ID of the classroom.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"classroomSlotId","required":true,"in":"path","description":"The unique ID of the classroom slot.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"204":{"description":"Deletes a specific classroom slot given its unique ID."},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `classroomId` does not correspond to any existing classroom.","title":"Classroom Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["classroomNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `classroomSlotId` does not correspond to any existing classroom slot.","title":"Classroom Slot Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["classroomSlotNotFound"]},"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":"Remove a slot from a classroom","tags":["Classrooms"]},"patch":{"description":"> 🔑\n>\n> Required OAuth scope: `classrooms:write`.\n\nEdits specific fields of an existing classroom slot. Fields not included in the request payload remain unchanged.","operationId":"v2.classrooms.UpdateClassroomSlotController_updateClassroomSlot","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"classroomId","required":true,"in":"path","description":"The unique ID of the classroom.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"classroomSlotId","required":true,"in":"path","description":"The unique ID of the classroom slot.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchClassroomSlotDTO"}}}},"responses":{"200":{"description":"Updates a specific classroom slot given its unique ID.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PathClassroomSlotDTO"}}}},"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 given classroom slot is linked to a webinar integration which is already started.","title":"Already Started Webinar","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["alreadyStartedWebinar"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The location of a classroom slot linked to a webinar integration cannot be modified.","title":"Cannot Update Location For Webinar","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["cannotUpdateLocationForWebinar"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"Classroom slot waitlist feature is not active for your company.","title":"Classroom Slot Waitlist Not Active","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["classroomSlotWaitlistNotActive"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The maximum capacity must be set and greater than 0 in order to activate the waitlist.","title":"Classroom Slot Waitlist Not Allowed","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["classroomSlotWaitlistNotAllowed"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `endDate` is before the given `startDate`.","title":"Invalid Start Or End Date","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidStartOrEndDate"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The classroom dates are out of the parent path session dates.","title":"Out Of Path Session Dates","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["outOfPathSessionDates"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `classroomId` does not correspond to any existing classroom.","title":"Classroom Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["classroomNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `classroomSlotId` does not correspond to any existing classroom slot.","title":"Classroom Slot Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["classroomSlotNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `context._id` does not correspond to any existing path session.","title":"Path Session Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathSessionNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"At least one of the given `trainerIds` does not correspond to any existing and non-deleted user.","title":"Users Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["usersNotFound"]},"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":"Edit a classroom slot","tags":["Classrooms"]}},"/api/v2/classrooms/registrations":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `classrooms:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 7,000 slot registrations. For more information, see the [Pagination guide](doc:pagination).\n\nLists all classroom registrations in your platform.","operationId":"v2.classrooms.GetRegistrationsController_getRegistrations","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":"hasAttended","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **hasAttended** property with LHS bracket notation.\n\nExpected value format is a boolean (`true` or `false`).","schema":{"properties":{"eq":{"type":"boolean","description":"Filter on values equal to the given one","example":"true"}}}},{"name":"modifiedAt","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **modifiedAt** 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":"userId","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **userId** property with LHS bracket notation.\n\nExpected value format is a valid ID (24 digits or letters).","schema":{"properties":{"eq":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values equal to the given one","example":"507f1f77bcf86cd799439011"},"ne":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values not equal to the given one","example":"507f1f77bcf86cd799439011"},"in":{"type":"array","description":"Filter on values including the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}},"nin":{"type":"array","description":"Filter on values excluding the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}}}}},{"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 (`archived`, `published`).","schema":{"properties":{"eq":{"type":"string","description":"Filter on values equal to the given one","example":"archived","enum":["archived","published"]}}}},{"name":"classroomId","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **classroomId** property with LHS bracket notation.\n\nExpected value format is a valid ID (24 digits or letters).","schema":{"properties":{"eq":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values equal to the given one","example":"507f1f77bcf86cd799439011"},"ne":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values not equal to the given one","example":"507f1f77bcf86cd799439011"},"in":{"type":"array","description":"Filter on values including the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}},"nin":{"type":"array","description":"Filter on values excluding the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}}}}},{"name":"classroomSlotId","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **classroomSlotId** property with LHS bracket notation.\n\nExpected value format is a valid ID (24 digits or letters).","schema":{"properties":{"eq":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values equal to the given one","example":"507f1f77bcf86cd799439011"},"ne":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values not equal to the given one","example":"507f1f77bcf86cd799439011"},"in":{"type":"array","description":"Filter on values including the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}},"nin":{"type":"array","description":"Filter on values excluding the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}}}}}],"responses":{"200":{"description":"Returns one page of 7000 slot registrations.","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":{"$ref":"#/components/schemas/SlotRegistrationWithClassroomAndSlotIdDTO"}}}}},"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 registrations","tags":["Classrooms"]}},"/api/v2/classrooms/{classroomId}":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `classrooms:read`.\n\nRetrieves information about a classroom given its ID.","operationId":"v2.classrooms.GetClassroomController_getClassroom","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"classroomId","required":true,"in":"path","description":"The unique ID of the classroom.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"200":{"description":"Returns the information about the given classroom. The classroom must be linked to a group.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClassroomDTO"}}}},"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 `classroomId` does not correspond to any existing classroom.","content":{"application/json":{"schema":{"title":"Classroom Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["classroomNotFound"]},"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 classroom","tags":["Classrooms"]},"patch":{"description":"> 🔑\n>\n> Required OAuth scope: `classrooms:write`.\n\nEdits specific fields of an existing classroom. Fields not included in the request payload remain unchanged.","operationId":"v2.classrooms.UpdateClassroomController_updateClassroom","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"classroomId","required":true,"in":"path","description":"The unique ID of the classroom.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchClassroomDTO"}}}},"responses":{"200":{"description":"Returns the updated classroom.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClassroomDTO"}}}},"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":"Some of the given medias are not allowed in a classroom. Allowed types are: attachment, excel, flash, image, pdf, slideshow, video, word","title":"Bad Media Type","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["badMediaType"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given classroom does not belong to a group.","title":"Unsupported Classroom Type","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["unsupportedClassroomType"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `classroomId` does not correspond to any existing classroom.","title":"Classroom Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["classroomNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"Some of the given media IDs do not correspond to any existing media.","title":"Media Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["mediaNotFound"]},"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":"Edit a classroom","tags":["Classrooms"]}},"/api/v2/classrooms/{classroomId}/registrations":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `classrooms:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 7,000 slot registrations. For more information, see the [Pagination guide](doc:pagination).\n\nLists all users registered to any slot in the given classroom.","operationId":"v2.classrooms.GetClassroomRegistrationsController_getClassroomRegistrations","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"classroomId","required":true,"in":"path","description":"The unique ID of the classroom.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"200":{"description":"Returns one page of 7000 slot registrations.","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":{"$ref":"#/components/schemas/SlotRegistrationWithClassroomSlotIdDTO"}}}}},"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 `classroomId` does not correspond to any existing classroom.","content":{"application/json":{"schema":{"title":"Classroom Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["classroomNotFound"]},"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 registrations in a classroom","tags":["Classrooms"]}},"/api/v2/classroom-slots/{classroomSlotId}/attendance-sheets":{"post":{"description":"> 🔑\n>\n> Required OAuth scope: `attendanceSheets:write`.\n\nCreates an attendance sheet for the given classroom slot.","operationId":"v2.classrooms.CreateAttendanceSheetController_createAttendanceSheet","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"classroomSlotId","required":true,"in":"path","description":"The unique ID of the classroom slot.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InputAttendanceSheetDTO"}}}},"responses":{"201":{"description":"Returns the created attendance sheet.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ClosedAttendanceSheetDTO"},{"$ref":"#/components/schemas/OpenedAttendanceSheetDTO"}]}}}},"400":{"description":"Maximum of 100 attendance sheets is reached for the given classroom slot.","content":{"application/json":{"schema":{"title":"Max Attendance Sheets Reached","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["maxAttendanceSheetsReached"]},"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 `classroomSlotId` does not correspond to any existing classroom slot.","content":{"application/json":{"schema":{"title":"Classroom Slot Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["classroomSlotNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"409":{"description":"Concurrency issue during the creation of the attendance sheet.","content":{"application/json":{"schema":{"title":"Attendance Sheet Creation Conflict","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["attendanceSheetCreationConflict"]},"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":"Create an attendance sheet","tags":["Classrooms"]},"get":{"description":"> 🔑\n>\n> Required OAuth scope: `attendanceSheets:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 3,000 attendance sheets. For more information, see the [Pagination guide](doc:pagination).\n\nLists all attendance sheets in your platform for the given classroom slot.","operationId":"v2.classrooms.GetAttendanceSheetsController_getAttendanceSheets","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"classroomSlotId","required":true,"in":"path","description":"The unique ID of the classroom slot.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"200":{"description":"Returns one page of 3000 attendance sheets.","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/ClosedAttendanceSheetDTO"},{"$ref":"#/components/schemas/OpenedAttendanceSheetDTO"}]}}}}},"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 `classroomSlotId` does not correspond to any existing classroom slot.","content":{"application/json":{"schema":{"title":"Classroom Slot Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["classroomSlotNotFound"]},"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 attendance sheets","tags":["Classrooms"]}},"/api/v2/classroom-slots/{classroomSlotId}/attendance-sheets/{attendanceSheetId}":{"delete":{"description":"> 🔑\n>\n> Required OAuth scope: `attendanceSheets:write`.\n\nDeletes a specific attendance sheet given its unique ID.","operationId":"v2.classrooms.DeleteAttendanceSheetController_deleteAttendanceSheet","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"attendanceSheetId","required":true,"in":"path","description":"The unique ID of the attendance sheet.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"classroomSlotId","required":true,"in":"path","description":"The unique ID of the classroom slot.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"204":{"description":"Deletes a specific attendance sheet and the corresponding learner attendances."},"400":{"description":"The given `attendanceSheetId` does not belong to the given `classroomSlotId`.","content":{"application/json":{"schema":{"title":"Attendance Sheet Not Belong To Classroom Slot","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["attendanceSheetNotBelongToClassroomSlot"]},"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 `attendanceSheetId` does not correspond to any existing attendance sheet.","content":{"application/json":{"schema":{"title":"Attendance Sheet Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["attendanceSheetNotFound"]},"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":"Delete an attendance sheet","tags":["Classrooms"]},"put":{"description":"> 🔑\n>\n> Required OAuth scope: `attendanceSheets:write`.\n\nReplaces the attendance sheet in the given classroom slot.","operationId":"v2.classrooms.UpdateAttendanceSheetController_updateAttendanceSheet","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"classroomSlotId","required":true,"in":"path","description":"The unique ID of the classroom slot.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"attendanceSheetId","required":true,"in":"path","description":"The unique ID of the attendance sheet.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InputAttendanceSheetDTO"}}}},"responses":{"200":{"description":"Returns the updated attendance sheet.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ClosedAttendanceSheetDTO"},{"$ref":"#/components/schemas/OpenedAttendanceSheetDTO"}]}}}},"400":{"description":"The given `attendanceSheetId` does not belong to the given `classroomSlotId`.","content":{"application/json":{"schema":{"title":"Attendance Sheet Not Belong To Classroom Slot","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["attendanceSheetNotBelongToClassroomSlot"]},"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 `attendanceSheetId` does not correspond to any existing attendance sheet.","content":{"application/json":{"schema":{"title":"Attendance Sheet Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["attendanceSheetNotFound"]},"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":"Replace an attendance sheet","tags":["Classrooms"]}},"/api/v2/classroom-slots/{classroomSlotId}/attendance-sheets/{attendanceSheetId}/attendances":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `attendanceSheets:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 3,000 attendances. For more information, see the [Pagination guide](doc:pagination).\n\nLists all attendances in your platform for the given classroom slot and attendance sheet.","operationId":"v2.classrooms.GetAttendancesController_getAttendances","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"classroomSlotId","required":true,"in":"path","description":"The unique ID of the classroom slot.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"attendanceSheetId","required":true,"in":"path","description":"The unique ID of the attendance sheet.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"200":{"description":"Returns one page of 3000 attendances.","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":{"$ref":"#/components/schemas/AttendanceDTO"}}}}},"400":{"description":"The given `attendanceSheetId` does not belong to the given `classroomSlotId`.","content":{"application/json":{"schema":{"title":"Attendance Sheet Not Belong To Classroom Slot","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["attendanceSheetNotBelongToClassroomSlot"]},"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 `attendanceSheetId` does not correspond to any existing attendance sheet.","content":{"application/json":{"schema":{"title":"Attendance Sheet Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["attendanceSheetNotFound"]},"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 attendances","tags":["Classrooms"]}},"/api/v2/classroom-slots/{classroomSlotId}/waitlist":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `classrooms:read`.\n\nLists all waitlist requests in a given classroom slot.","operationId":"v2.classrooms.GetClassroomSlotWaitlistController_getClassroomSlotWaitlist","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"classroomSlotId","required":true,"in":"path","description":"The unique ID of the classroom slot.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"200":{"description":"Returns all waitlist requests in the classroom slot.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ClassroomSlotWaitlistRequestDTO"}}}}},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `classroomSlotId` does not correspond to any existing classroom slot.","title":"Classroom Slot Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["classroomSlotNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `classroomSlotId` does not contain any waitlist.","title":"Classroom Slot Waitlist Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["classroomSlotWaitlistNotFound"]},"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 waitlist requests in a classroom slot","tags":["Classrooms"]}},"/api/v2/classroom-slots/{classroomSlotId}/waitlist/{userId}":{"post":{"description":"> 🔑\n>\n> Required OAuth scope: `classrooms:write`.\n\nAdds a user to the waitlist of a given classroom slot.","operationId":"v2.classrooms.JoinClassroomSlotWaitlistController_joinClassroomSlotWaitlist","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"classroomSlotId","required":true,"in":"path","description":"The unique ID of the classroom slot.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"userId","required":true,"in":"path","description":"The unique ID of the user.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"204":{"description":"Adds a user to a classroom slot waitlist."},"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 classroom slot is not full.","title":"Classroom Slot Not Full","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["classroomSlotNotFull"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The classroom slot is already started.","title":"Classroom Slot Already Started","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["classroomSlotAlreadyStarted"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The classroom slot waitlist is full.","title":"Classroom Slot Waitlist Full","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["classroomSlotWaitlistFull"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given user is already registered in a classroom slot in the same classroom.","title":"User Already Registered In A Classroom Slot","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userAlreadyRegisteredInAClassroomSlot"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The user is not enrolled in the path session of the classroom slot.","title":"User Not Enrolled In Path Session","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotEnrolledInPathSession"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `classroomSlotId` does not correspond to any existing classroom slot.","title":"Classroom Slot Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["classroomSlotNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `classroomSlotId` does not contain any waitlist.","title":"Classroom Slot Waitlist Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["classroomSlotWaitlistNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `userId` does not correspond to any existing user.","title":"User Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotFound"]},"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":"Add a user to a classroom slot waitlist","tags":["Classrooms"]},"delete":{"description":"> 🔑\n>\n> Required OAuth scope: `classrooms:write`.\n\nRemoves a user from the waitlist of a given classroom slot.","operationId":"v2.classrooms.LeaveClassroomSlotWaitlistController_leaveClassroomSlotWaitlist","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"classroomSlotId","required":true,"in":"path","description":"The unique ID of the classroom slot.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"userId","required":true,"in":"path","description":"The unique ID of the user.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"204":{"description":"Removes a user from a classroom slot waitlist."},"400":{"description":"The user is not in the classroom slot waitlist.","content":{"application/json":{"schema":{"title":"User Not In Classroom Slot Waitlist","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotInClassroomSlotWaitlist"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `classroomSlotId` does not correspond to any existing classroom slot.","title":"Classroom Slot Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["classroomSlotNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `userId` does not correspond to any existing user.","title":"User Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `classroomSlotId` does not contain any waitlist.","title":"Classroom Slot Waitlist Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["classroomSlotWaitlistNotFound"]},"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":"Remove a user from a classroom slot waitlist","tags":["Classrooms"]}},"/api/v2/classroom-slots/{classroomSlotId}/registrations/{userId}":{"post":{"description":"> 🔑\n>\n> Required OAuth scope: `classrooms:write`.\n\nRegisters a user to a classroom slot based on the provided classroom slot ID and user ID.","operationId":"v2.classrooms.AddSlotRegistrationController_addSlotRegistration","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"classroomSlotId","required":true,"in":"path","description":"The unique ID of the classroom slot.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"userId","required":true,"in":"path","description":"The unique ID of the user.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"201":{"description":"Returns the created slot registration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlotRegistrationDTO"}}}},"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 given user is already registered to this classroom slot.","title":"User Already Registered","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userAlreadyRegistered"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given user is already registered in another classroom slot with a pending or attended registration.","title":"User Already Registered In Another Non Missed Slot","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userAlreadyRegisteredInAnotherNonMissedSlot"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The classroom slot is full.","title":"Classroom Slot Full","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["classroomSlotFull"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The user is not enrolled in the path session of the classroom slot.","title":"User Not Enrolled In Path Session","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotEnrolledInPathSession"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `classroomId` does not correspond to any existing classroom.","title":"Classroom Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["classroomNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `userId` does not correspond to any existing user.","title":"User Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotFound"]},"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":"Register a user to a classroom slot","tags":["Classrooms"]}},"/api/v2/classroom-slots/{classroomSlotId}/registrations/{slotRegistrationId}":{"delete":{"description":"> 🔑\n>\n> Required OAuth scope: `classrooms:write`.\n\nUnregisters a user from a classroom slot based on the provided classroom slot ID and slot registration ID.","operationId":"v2.classrooms.DeleteSlotRegistrationController_deleteSlotRegistration","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"classroomSlotId","required":true,"in":"path","description":"The unique ID of the classroom slot.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"slotRegistrationId","required":true,"in":"path","description":"The unique ID of the slot registration.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"204":{"description":"The user has been successfully unregistered from the classroom slot."},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `classroomSlotId` does not correspond to any existing classroom slot.","title":"Classroom Slot Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["classroomSlotNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `slotRegistrationId` does not correspond to any existing slot registration.","title":"Slot Registration Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["slotRegistrationNotFound"]},"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":"Unregister a user from a classroom slot","tags":["Classrooms"]},"patch":{"description":"> 🔑\n>\n> Required OAuth scope: `classrooms:write`.\n\nEdits specific fields of an existing classroom slot registration. Fields not included in the request payload remain unchanged.","operationId":"v2.classrooms.UpdateSlotRegistrationController_updateSlotRegistration","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"classroomSlotId","required":true,"in":"path","description":"The unique ID of the classroom slot.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"slotRegistrationId","required":true,"in":"path","description":"The unique ID of the slot registration.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchSlotRegistrationDTO"}}}},"responses":{"200":{"description":"Returns the updated classroom slot registration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlotRegistrationDTO"}}}},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `classroomId` does not correspond to any existing classroom.","title":"Classroom Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["classroomNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `slotRegistrationId` does not correspond to any existing slot registration.","title":"Slot Registration Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["slotRegistrationNotFound"]},"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":"Edit a classroom slot registration","tags":["Classrooms"]}},"/api/v2/classroom-slots/{classroomSlotId}/registrations":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `classrooms:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 7,000 slot registrations. For more information, see the [Pagination guide](doc:pagination).\n\nLists all users registered to a given classroom slot.","operationId":"v2.classrooms.GetSlotRegistrationsController_getSlotRegistrations","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"classroomSlotId","required":true,"in":"path","description":"The unique ID of the classroom slot.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"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":"hasAttended","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **hasAttended** property with LHS bracket notation.\n\nExpected value format is a boolean (`true` or `false`).","schema":{"properties":{"eq":{"type":"boolean","description":"Filter on values equal to the given one","example":"true"}}}},{"name":"modifiedAt","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **modifiedAt** 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":"userId","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **userId** property with LHS bracket notation.\n\nExpected value format is a valid ID (24 digits or letters).","schema":{"properties":{"eq":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values equal to the given one","example":"507f1f77bcf86cd799439011"},"ne":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values not equal to the given one","example":"507f1f77bcf86cd799439011"},"in":{"type":"array","description":"Filter on values including the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}},"nin":{"type":"array","description":"Filter on values excluding the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}}}}},{"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 (`archived`, `published`).","schema":{"properties":{"eq":{"type":"string","description":"Filter on values equal to the given one","example":"archived","enum":["archived","published"]}}}}],"responses":{"200":{"description":"Returns one page of 7000 slot registrations.","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":{"$ref":"#/components/schemas/SlotRegistrationDTO"}}}}},"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 `classroomSlotId` does not correspond to any existing classroom slot.","content":{"application/json":{"schema":{"title":"Classroom Slot Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["classroomSlotNotFound"]},"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 registrations in a classroom slot","tags":["Classrooms"]}},"/api/v2/courses/{courseId}/archive":{"put":{"description":"> 🔑\n>\n> Required OAuth scope: `courses:write`.\n\nArchives or restores a course. Archiving a course doesn't remove it from paths where it is included. It simply prevents the course from being added to new paths. The archived course will still be accessible in existing paths, but it will be hidden from search results. Statistics are kept and not deleted.","operationId":"v2.courses.ArchiveOrUnarchiveCourseController_archiveOrUnarchiveCourse","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"courseId","required":true,"in":"path","description":"The unique ID of the course.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArchiveCourseBody"}}}},"responses":{"200":{"description":"Returns the updated course.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CourseDTO"}}}},"400":{"description":"The external course is linked to an inactive integration.","content":{"application/json":{"schema":{"title":"Integration Inactive","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["integrationInactive"]},"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 `courseId` does not correspond to any existing course.","content":{"application/json":{"schema":{"title":"Course Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["courseNotFound"]},"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":"Archive or restore a course","tags":["Courses"]}},"/api/v2/courses/elearning-standard":{"post":{"description":"> 🔑\n>\n> Required OAuth scope: `courses:write`.\n\nCreates a new eLearning standard (SCORM, AICC, xAPI, ...) course with the provided eLearning standard file. This endpoint should not be used to create native 360Learning courses.\n\nThis endpoint has a specific rate limit of 1 request per second.","operationId":"v2.courses.CreateELearningStandardCourseController_createELearningStandardCourse","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":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/CreateELearningStandardCourseBody"}}}},"responses":{"201":{"description":"Returns the created course.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CourseDTO"}}}},"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 given course duration is not a positive integer within the allowed range.","title":"Invalid Course Duration","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidCourseDuration"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given zip file cannot be processed.","title":"Invalid File","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidFile"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The main author is present in the co-authors list.","title":"Main Author As Co Author","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["mainAuthorAsCoAuthor"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"Rustici is not enabled.","title":"Rustici Not Enabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["rusticiNotEnabled"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The user `userId` does not correspond to an editor in the company.","title":"User Is Not An Editor","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userIsNotAnEditor"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `groupId` does not correspond to any existing group.","title":"Group Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["groupNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"At least one of the given users does not correspond to any existing and non-deleted user.","title":"Users Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["usersNotFound"]},"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. This endpoint has a specific rate limit of 1 requests per second.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["tooManyRequests"]}},"required":["error"]}}}}},"security":[{"oauth2":[]}],"summary":"Create an eLearning standard course","tags":["Courses"]}},"/api/v2/courses/generate-from-prompt":{"post":{"description":"> 🔑\n>\n> Required OAuth scope: `courses:internal`.\n\nTriggers the generation of a course from a text prompt. This is an internal-only endpoint restricted to demo platforms. The course generation happens asynchronously, and you will receive an email notification when it completes. Retrieve the generated course using GET /courses sorted by created_at.","operationId":"v2.courses.GenerateFromPromptController_generateFromPrompt","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/GenerateFromPromptBody"}}}},"responses":{"200":{"description":"The course generation has been successfully triggered. The course will be created asynchronously."},"400":{"description":"The user `userId` does not correspond to an editor in the company.","content":{"application/json":{"schema":{"title":"User Is Not An Editor","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userIsNotAnEditor"]},"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 `groupId` does not correspond to any existing group.","content":{"application/json":{"schema":{"title":"Group Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["groupNotFound"]},"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":"Generate a course from a prompt (internal only)","tags":["Courses"]}},"/api/v2/courses/stats":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `courseStats:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 500 courses attempts statistics. For more information, see the [Pagination guide](doc:pagination).\n\nLists all courses statistics in your platform.","operationId":"v2.courses.GetAllCourseStatsController_getAllCourseStats","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"completedAt","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **completedAt** 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":"courseId","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **courseId** property with LHS bracket notation.\n\nExpected value format is a valid ID (24 digits or letters).","schema":{"properties":{"eq":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values equal to the given one","example":"507f1f77bcf86cd799439011"},"ne":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values not equal to the given one","example":"507f1f77bcf86cd799439011"},"in":{"type":"array","description":"Filter on values including the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}},"nin":{"type":"array","description":"Filter on values excluding the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}}}}},{"name":"userId","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **userId** property with LHS bracket notation.\n\nExpected value format is a valid ID (24 digits or letters).","schema":{"properties":{"eq":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values equal to the given one","example":"507f1f77bcf86cd799439011"},"ne":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values not equal to the given one","example":"507f1f77bcf86cd799439011"},"in":{"type":"array","description":"Filter on values including the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}},"nin":{"type":"array","description":"Filter on values excluding the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}}}}}],"responses":{"200":{"description":"Returns one page of 500 courses attempts statistics.","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":{"$ref":"#/components/schemas/CourseStatDTO"}}}}},"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 courses statistics","tags":["Courses"]}},"/api/v2/courses/{courseId}":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `courses:read`.\n\nRetrieves the details of a specific course with the provided course ID.","operationId":"v2.courses.GetCourseController_getCourse","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"courseId","required":true,"in":"path","description":"The unique ID of the course.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"200":{"description":"Returns the details of the given course.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CourseDTO"}}}},"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 `courseId` does not correspond to any existing course.","content":{"application/json":{"schema":{"title":"Course Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["courseNotFound"]},"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 course","tags":["Courses"]}},"/api/v2/courses/{courseId}/custom-fields/values":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `courses:read`.\n\nLists all custom field values in a given course.","operationId":"v2.courses.GetCourseCustomFieldValuesController_getCourseCustomFieldValues","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"courseId","required":true,"in":"path","description":"The unique ID of the course.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"200":{"description":"Returns all custom field values for the given course.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CustomFieldValueDTO"}}}}},"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 `courseId` does not correspond to any existing course.","content":{"application/json":{"schema":{"title":"Course Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["courseNotFound"]},"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 custom field values for a course","tags":["Courses"]},"put":{"description":"> 🔑\n>\n> Required OAuth scope: `courses:write`.\n\nReplaces all custom field values in the given course with the provided ones. Values not included are removed.","operationId":"v2.courses.UpdateCourseCustomFieldValuesController_updateCourseCustomFieldValues","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"courseId","required":true,"in":"path","description":"The unique ID of the course.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCourseCustomFieldValuesBody"}}}},"responses":{"200":{"description":"Returns the updated course custom field values.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CustomFieldValueDTO"}}}}},"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 given body has a `customField` with an unauthorized value.","title":"Unauthorized Value","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["unauthorizedValue"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given body has a `customField` with invalid value type.","title":"Wrong Type Value","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["wrongTypeValue"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given body has multiple values for a single `customField`.","title":"Multiple Values For Single Custom Field","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["multipleValuesForSingleCustomField"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `courseId` does not correspond to any existing course.","title":"Course Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["courseNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `customFieldId` does not correspond to any existing custom field.","title":"Custom Field Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["customFieldNotFound"]},"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":"Replace all custom field values for a course","tags":["Courses"]}},"/api/v2/courses":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `courses:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 500 courses. For more information, see the [Pagination guide](doc:pagination).\n\nLists all courses in your platform.","operationId":"v2.courses.GetCoursesController_getCourses","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":"modifiedAt","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **modifiedAt** 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 (`archived`, `deleted`, `published`).","schema":{"properties":{"eq":{"type":"string","description":"Filter on values equal to the given one","example":"archived","enum":["archived","deleted","published"]}}}},{"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 (`elearning standard`, `external`, `native`).","schema":{"properties":{"eq":{"type":"string","description":"Filter on values equal to the given one","example":"elearning standard","enum":["elearning standard","external","native"]}}}},{"name":"authorId","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **authorId** property with LHS bracket notation.\n\nExpected value format is a valid ID (24 digits or letters).","schema":{"properties":{"eq":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values equal to the given one","example":"507f1f77bcf86cd799439011"}}}},{"name":"groupId","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **groupId** property with LHS bracket notation.\n\nExpected value format is a valid ID (24 digits or letters).","schema":{"properties":{"eq":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values equal to the given one","example":"507f1f77bcf86cd799439011"}}}},{"name":"originalAuthorId","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **originalAuthorId** property with LHS bracket notation.\n\nExpected value format is a valid ID (24 digits or letters).","schema":{"properties":{"eq":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values equal to the given one","example":"507f1f77bcf86cd799439011"}}}},{"name":"tagIds","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **tagIds** property with LHS bracket notation.\n\nExpected value format is a valid ID (24 digits or letters).","schema":{"properties":{"in":{"type":"array","description":"Filter on values including the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}}}}},{"name":"coAuthorIds","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **coAuthorIds** property with LHS bracket notation.\n\nExpected value format is a valid ID (24 digits or letters).","schema":{"properties":{"in":{"type":"array","description":"Filter on values including the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}}}}},{"name":"sourceLang","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **sourceLang** property with LHS bracket notation.\n\nExpected value format is a string (`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`).","schema":{"properties":{"eq":{"type":"string","description":"Filter on values equal to the given one","example":"bg","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"]},"in":{"type":"array","description":"Filter on values including the given ones","items":{"type":"string","example":"bg","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"]}}}}},{"name":"collaborativeLearning","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **collaborativeLearning** property with LHS bracket notation.\n\nExpected value format is a boolean (`true` or `false`).","schema":{"properties":{"eq":{"type":"boolean","description":"Filter on values equal to the given one","example":"true"}}}}],"responses":{"200":{"description":"Returns one page of 500 courses.","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":{"$ref":"#/components/schemas/CourseDTO"}}}}},"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 courses","tags":["Courses"]}},"/api/v2/courses/{courseId}/tags":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `tags:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 500 tags. For more information, see the [Pagination guide](doc:pagination).\n\nLists all unique tags of the given course.","operationId":"v2.courses.GetCourseTagsController_getTags","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"courseId","required":true,"in":"path","description":"The unique ID of the course.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"200":{"description":"Returns one page of 500 tags.","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":{"$ref":"#/components/schemas/TagIdWithSource"}}}}},"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 `courseId` does not correspond to any existing course.","content":{"application/json":{"schema":{"title":"Course Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["courseNotFound"]},"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 tags in a course","tags":["Courses"]},"put":{"description":"> 🔑\n>\n> Required OAuth scope: `courses:write`.\n\nReplaces all tags in the given course with the provided ones. Tags not included are removed.","operationId":"v2.courses.UpdateTagsController_updateTags","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"courseId","required":true,"in":"path","description":"The unique ID of the course.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCourseTagsBody"}}}},"responses":{"200":{"description":"Returns the new tags IDs linked to the course.","content":{"application/json":{"schema":{"type":"array","items":{"type":"string","format":"ObjectId","example":"507f1f77bcf86cd799439011"}}}}},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `courseId` does not correspond to any existing course.","title":"Course Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["courseNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"At least one of the given `tagIds` does not correspond to any existing tag.","title":"Tag Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["tagNotFound"]},"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":"Replace all tags in a course","tags":["Courses"]}},"/api/v2/courses/elearning-standard/{courseId}":{"patch":{"description":"> 🔑\n>\n> Required OAuth scope: `courses:write`.\n\nEdits specific fields of an existing eLearning standard (SCORM, AICC, xAPI, ...) course. Fields not included in the request payload remain unchanged. This endpoint should not be used to edit native 360Learning courses.\n\nThis endpoint has a specific rate limit of 1 request per second.","operationId":"v2.courses.UpdateELearningStandardCourseController_updateELearningStandardCourse","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"courseId","required":true,"in":"path","description":"The unique ID of the course.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/UpdateELearningStandardCourseBody"}}}},"responses":{"200":{"description":"Returns the updated course.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CourseDTO"}}}},"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 given `courseId` does not correspond to an eLearning standard course.","title":"Course Not Estd","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["courseNotEstd"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given course duration is not a positive integer within the allowed range.","title":"Invalid Course Duration","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidCourseDuration"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given zip file cannot be processed.","title":"Invalid File","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidFile"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The main author is present in the co-authors list.","title":"Main Author As Co Author","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["mainAuthorAsCoAuthor"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The user `userId` does not correspond to an editor in the company.","title":"User Is Not An Editor","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userIsNotAnEditor"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `courseId` does not correspond to any existing course.","title":"Course Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["courseNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `groupId` does not correspond to any existing group.","title":"Group Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["groupNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"At least one of the given users does not correspond to any existing and non-deleted user.","title":"Users Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["usersNotFound"]},"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. This endpoint has a specific rate limit of 1 requests per second.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["tooManyRequests"]}},"required":["error"]}}}}},"security":[{"oauth2":[]}],"summary":"Edit an eLearning standard course","tags":["Courses"]}},"/api/v2/custom-fields":{"post":{"description":"> 🔑\n>\n> Required OAuth scope: `customFields:write`.\n\nCreates a custom field.","operationId":"v2.customFields.CreateCustomFieldController_createCustomField","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/InputCustomFieldDTO"}}}},"responses":{"201":{"description":"Returns the created custom field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomFieldDTO"}}}},"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 company has reached the maximum number of custom fields for this collection.","title":"Custom Field Limit Reached","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["customFieldLimitReached"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The name of the custom field should not be empty.","title":"Invalid Name","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidName"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The name of the custom field is already taken.","title":"Name Already Taken","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["nameAlreadyTaken"]},"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 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":"Create a custom field","tags":["Custom Fields"]},"get":{"description":"> 🔑\n>\n> Required OAuth scope: `customFields:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 1,000 custom fields. For more information, see the [Pagination guide](doc:pagination).\n\nLists all custom fields in your platform.","operationId":"v2.customFields.GetCustomFieldsController_getCustomFields","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"name","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **name** property with LHS bracket notation.\n\nExpected value format is a string.","schema":{"properties":{"eq":{"type":"string","description":"Filter on values equal to the given one","example":"loremIpsum"},"ne":{"type":"string","description":"Filter on values not equal to the given one","example":"loremIpsum"},"in":{"type":"array","description":"Filter on values including the given ones","items":{"type":"string","example":"loremIpsum"}},"nin":{"type":"array","description":"Filter on values excluding the given ones","items":{"type":"string","example":"loremIpsum"}}}}},{"name":"targetType","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **targetType** property with LHS bracket notation.\n\nExpected value format is a string (`users`, `contents`).","schema":{"properties":{"eq":{"type":"string","description":"Filter on values equal to the given one","example":"users","enum":["users","contents"]},"ne":{"type":"string","description":"Filter on values not equal to the given one","example":"users","enum":["users","contents"]},"in":{"type":"array","description":"Filter on values including the given ones","items":{"type":"string","example":"users","enum":["users","contents"]}},"nin":{"type":"array","description":"Filter on values excluding the given ones","items":{"type":"string","example":"users","enum":["users","contents"]}}}}},{"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 (`string`, `date`).","schema":{"properties":{"eq":{"type":"string","description":"Filter on values equal to the given one","example":"string","enum":["string","date"]},"ne":{"type":"string","description":"Filter on values not equal to the given one","example":"string","enum":["string","date"]},"in":{"type":"array","description":"Filter on values including the given ones","items":{"type":"string","example":"string","enum":["string","date"]}},"nin":{"type":"array","description":"Filter on values excluding the given ones","items":{"type":"string","example":"string","enum":["string","date"]}}}}}],"responses":{"200":{"description":"Returns one page of 1000 custom fields.","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":{"$ref":"#/components/schemas/CustomFieldDTO"}}}}},"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 custom fields","tags":["Custom Fields"]}},"/api/v2/custom-fields/{customFieldId}":{"delete":{"description":"> 🔑\n>\n> Required OAuth scope: `customFields:write`.\n\nDeletes a specific custom field given its unique ID.","operationId":"v2.customFields.DeleteCustomFieldController_deleteCustomField","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"customFieldId","required":true,"in":"path","description":"The unique ID of the custom field.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"204":{"description":"Deletes a specific custom field."},"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 `customFieldId` does not correspond to any existing custom field.","content":{"application/json":{"schema":{"title":"Custom Field Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["customFieldNotFound"]},"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":"Delete a custom field","tags":["Custom Fields"]},"patch":{"description":"> 🔑\n>\n> Required OAuth scope: `customFields:write`.\n\nEdits specific fields of an existing custom field. Fields not included in the request payload remain unchanged.","operationId":"v2.customFields.UpdateCustomFieldController_updateCustomField","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"customFieldId","required":true,"in":"path","description":"The unique ID of the custom field.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCustomFieldBody"}}}},"responses":{"200":{"description":"Returns the updated custom field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomFieldDTO"}}}},"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 name of the custom field should not be empty.","title":"Invalid Name","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidName"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The name of the custom field is already taken.","title":"Name Already Taken","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["nameAlreadyTaken"]},"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 `customFieldId` does not correspond to any existing custom field.","content":{"application/json":{"schema":{"title":"Custom Field Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["customFieldNotFound"]},"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":"Edit a custom field","tags":["Custom Fields"]}},"/api/v2/custom-fields/{customFieldId}/authorized-values":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `customFields:read`.\n\nLists all authorized values for the given custom field.","operationId":"v2.customFields.GetAuthorizedValuesController_getAuthorizedValues","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"customFieldId","required":true,"in":"path","description":"The unique ID of the custom field.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"200":{"description":"Returns all authorized values for the given custom field.","content":{"application/json":{"schema":{"oneOf":[{"type":"array","title":"date type","items":{"type":"string","format":"date","example":"2024-06-30"},"description":"The date format is `YYYY-MM-DD` (ISO 8601 in Coordinated Universal Time (UTC))."},{"type":"array","title":"string type","items":{"type":"string","example":"Marketing"}}]}}}},"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 `customFieldId` does not correspond to any existing custom field.","content":{"application/json":{"schema":{"title":"Custom Field Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["customFieldNotFound"]},"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 authorized values","tags":["Custom Fields"]},"put":{"description":"> 🔑\n>\n> Required OAuth scope: `customFields:write`.\n\nReplaces all authorized values in the given custom field with the provided ones. Values not included are removed.","operationId":"v2.customFields.ReplaceAuthorizedValuesController_replaceAuthorizedValues","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"customFieldId","required":true,"in":"path","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceAuthorizedValuesDTO"}}}},"responses":{"200":{"description":"Returns the updated authorized values.","content":{"application/json":{"schema":{"oneOf":[{"type":"array","title":"date type","items":{"type":"string","format":"date","example":"2024-06-30"},"description":"The date format is `YYYY-MM-DD` (ISO 8601 in Coordinated Universal Time (UTC))."},{"type":"array","title":"string type","items":{"type":"string","example":"Marketing"}}]}}}},"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":"Some existing custom fields values are not listed in the given authorized values.","title":"Custom Field Values Conflict","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["customFieldValuesConflict"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"Some given authorized values do not match with the given custom field's type.","title":"Authorized Values Type Mismatch","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["authorizedValuesTypeMismatch"]},"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 `customFieldId` does not correspond to any existing custom field.","content":{"application/json":{"schema":{"title":"Custom Field Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["customFieldNotFound"]},"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":"Replace all authorized values","tags":["Custom Fields"]}},"/api/v2/custom-links":{"post":{"description":"> 🔑\n>\n> Required OAuth scope: `customLinks:write`.\n\nCreates a custom link.","operationId":"v2.customLinks.CreateCustomLinkController_createCustomLink","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/InputCustomLinkDTO"}}}},"responses":{"201":{"description":"Returns the created custom link.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomLinkDTO"}}}},"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 given `name` is already used by another custom link.","title":"Name Already Used","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["nameAlreadyUsed"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `order` is already used by another custom link.","title":"Order Already Used","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["orderAlreadyUsed"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `type` is already used by another custom link.","title":"Type Already Used","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["typeAlreadyUsed"]},"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 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":"Create a custom link","tags":["Custom Links"]},"get":{"description":"> 🔑\n>\n> Required OAuth scope: `customLinks:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 1,000 custom links. For more information, see the [Pagination guide](doc:pagination).\n\nLists all custom links.","operationId":"v2.customLinks.GetCustomLinksByCompanyController_getCustomLinksByCompany","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}}],"responses":{"200":{"description":"Returns one page of 1000 custom links.","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":{"$ref":"#/components/schemas/CustomLinkDTO"}}}}},"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 custom links","tags":["Custom Links"]}},"/api/v2/custom-links/{customLinkId}":{"delete":{"description":"> 🔑\n>\n> Required OAuth scope: `customLinks:write`.\n\nDeletes the custom link.","operationId":"v2.customLinks.DeleteCustomLinkController_deleteCustomLink","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"customLinkId","required":true,"in":"path","description":"The unique ID of the custom link.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"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 `customLinkId` does not match any existing custom link.","content":{"application/json":{"schema":{"title":"Custom Link Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["customLinkNotFound"]},"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":"Delete a custom link","tags":["Custom Links"]},"put":{"description":"> 🔑\n>\n> Required OAuth scope: `customLinks:write`.\n\nReplaces the custom link with the provided data. Fields not included in the payload are removed.","operationId":"v2.customLinks.ReplaceCustomLinkController_replaceCustomLink","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"customLinkId","required":true,"in":"path","description":"The unique ID of the custom link.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InputCustomLinkDTO"}}}},"responses":{"200":{"description":"Returns the updated custom link.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomLinkDTO"}}}},"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 given `name` is already used by another custom link.","title":"Name Already Used","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["nameAlreadyUsed"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `order` is already used by another custom link.","title":"Order Already Used","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["orderAlreadyUsed"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `type` is already used by another custom link.","title":"Type Already Used","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["typeAlreadyUsed"]},"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 `customLinkId` does not match any existing custom link.","content":{"application/json":{"schema":{"title":"Custom Link Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["customLinkNotFound"]},"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":"Replace a custom link","tags":["Custom Links"]}},"/api/v2/external-ids":{"post":{"description":"> 🔑\n>\n> Required OAuth scope: `externalIds:write`.\n\nCreates an external ID mapping.","operationId":"v2.externalIds.CreateExternalIdController_createExternalId","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/InputExternalIdDTO"}}}},"responses":{"201":{"description":"Returns the created external ID mapping.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalIdDTO"}}}},"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":"A mapping already exists for the given resource on this platform.","title":"Mapping Already Exists","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["mappingAlreadyExists"]},"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"]},{"description":"The value is already used with another resource.","title":"Value Already Used","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["valueAlreadyUsed"]},"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 targeted resource does not exist.","content":{"application/json":{"schema":{"title":"Resource Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["resourceNotFound"]},"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":"Create an ID mapping","tags":["External IDs"]},"get":{"description":"> 🔑\n>\n> Required OAuth scope: `externalIds:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 5,000 external IDs. For more information, see the [Pagination guide](doc:pagination).\n\nLists all external ID mappings that link resources together.","operationId":"v2.externalIds.GetExternalIdsController_getExternalIds","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"platform","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **platform** property with LHS bracket notation.\n\nExpected value format is a string.","schema":{"properties":{"eq":{"type":"string","description":"Filter on values equal to the given one","example":"loremIpsum"},"ne":{"type":"string","description":"Filter on values not equal to the given one","example":"loremIpsum"},"in":{"type":"array","description":"Filter on values including the given ones","items":{"type":"string","example":"loremIpsum"}},"nin":{"type":"array","description":"Filter on values excluding the given ones","items":{"type":"string","example":"loremIpsum"}}}}},{"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 (`attempt`, `classroom`, `classroomAttendance`, `classroomAttendanceSheet`, `classroomSlot`, `classroomSlotRegistration`, `course`, `group`, `learningNeed`, `path`, `pathEnrollment`, `pathSession`, `pathTracking`, `registrationRequest`, `user`).","schema":{"properties":{"eq":{"type":"string","description":"Filter on values equal to the given one","example":"attempt","enum":["attempt","classroom","classroomAttendance","classroomAttendanceSheet","classroomSlot","classroomSlotRegistration","course","group","learningNeed","path","pathEnrollment","pathSession","pathTracking","registrationRequest","user"]},"ne":{"type":"string","description":"Filter on values not equal to the given one","example":"attempt","enum":["attempt","classroom","classroomAttendance","classroomAttendanceSheet","classroomSlot","classroomSlotRegistration","course","group","learningNeed","path","pathEnrollment","pathSession","pathTracking","registrationRequest","user"]},"in":{"type":"array","description":"Filter on values including the given ones","items":{"type":"string","example":"attempt","enum":["attempt","classroom","classroomAttendance","classroomAttendanceSheet","classroomSlot","classroomSlotRegistration","course","group","learningNeed","path","pathEnrollment","pathSession","pathTracking","registrationRequest","user"]}},"nin":{"type":"array","description":"Filter on values excluding the given ones","items":{"type":"string","example":"attempt","enum":["attempt","classroom","classroomAttendance","classroomAttendanceSheet","classroomSlot","classroomSlotRegistration","course","group","learningNeed","path","pathEnrollment","pathSession","pathTracking","registrationRequest","user"]}}}}},{"name":"value","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **value** property with LHS bracket notation.\n\nExpected value format is a string.","schema":{"properties":{"eq":{"type":"string","description":"Filter on values equal to the given one","example":"loremIpsum"},"ne":{"type":"string","description":"Filter on values not equal to the given one","example":"loremIpsum"},"in":{"type":"array","description":"Filter on values including the given ones","items":{"type":"string","example":"loremIpsum"}},"nin":{"type":"array","description":"Filter on values excluding the given ones","items":{"type":"string","example":"loremIpsum"}}}}},{"name":"targetId","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **targetId** property with LHS bracket notation.\n\nExpected value format is a valid ID (24 digits or letters).","schema":{"properties":{"eq":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values equal to the given one","example":"507f1f77bcf86cd799439011"},"ne":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values not equal to the given one","example":"507f1f77bcf86cd799439011"},"in":{"type":"array","description":"Filter on values including the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}},"nin":{"type":"array","description":"Filter on values excluding the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}}}}}],"responses":{"200":{"description":"Returns one page of 5000 external IDs.","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":{"$ref":"#/components/schemas/ExternalIdDTO"}}}}},"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 ID mappings","tags":["External IDs"]}},"/api/v2/external-ids/{mappingId}":{"delete":{"description":"> 🔑\n>\n> Required OAuth scope: `externalIds:write`.\n\nDeletes a specific external ID mapping given its unique ID.","operationId":"v2.externalIds.DeleteExternalIdController_deleteExternalId","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"mappingId","required":true,"in":"path","description":"The unique ID that identifies the resources mapping.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"204":{"description":"Deletes a specific external ID mapping."},"400":{"description":"The platform is one of the reserved ones.","content":{"application/json":{"schema":{"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 `mappingId` does not correspond to any existing mapping.","content":{"application/json":{"schema":{"title":"Mapping Id Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["mappingIdNotFound"]},"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":"Delete an ID mapping","tags":["External IDs"]},"put":{"description":"> 🔑\n>\n> Required OAuth scope: `externalIds:write`.\n\nReplaces an existing external ID mapping with the provided data.","operationId":"v2.externalIds.UpdateExternalIdController_updateExternalId","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"mappingId","required":true,"in":"path","description":"The unique ID that identifies the resources mapping.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InputExternalIdDTO"}}}},"responses":{"200":{"description":"Returns the updated external ID mapping.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalIdDTO"}}}},"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 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"]},{"description":"The target already has an external ID on this platform.","title":"Target Already Mapped","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["targetAlreadyMapped"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The value is already used with another resource.","title":"Value Already Used","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["valueAlreadyUsed"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `mappingId` does not correspond to any existing mapping.","title":"Mapping Id Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["mappingIdNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The targeted resource does not exist.","title":"Resource Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["resourceNotFound"]},"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":"Replace an ID mapping","tags":["External IDs"]}},"/api/v2/groups/{groupId}/{role}/{userId}":{"post":{"description":"> 🔑\n>\n> Required OAuth scope: `groups:write`.\n\nAdds the given role to the given user in the given group.","operationId":"v2.groups.AddUserRoleToGroupController_addUserRoleToGroup","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"groupId","required":true,"in":"path","description":"The unique ID of the group.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"role","required":true,"in":"path","description":"The role to add to the user.","schema":{"enum":["admin","analyst","coach","contributor","editor","learner","user-admin"],"type":"string"}},{"name":"userId","required":true,"in":"path","description":"The unique ID of the user.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"204":{"description":"Adds the given role to the given user in the given group."},"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 `analyst` group role is not available in this company.","title":"Analyst Unavailable","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["analystUnavailable"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `userId` corresponds to a deleted user.","title":"User Deleted","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userDeleted"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `groupId` does not correspond to any existing group.","title":"Group Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["groupNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `userId` does not correspond to any existing user.","title":"User Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotFound"]},"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":"Add a user's role","tags":["Groups"]},"delete":{"description":"> 🔑\n>\n> Required OAuth scope: `groups:write`.\n\nRemoves the given role from the given user in the given group. The `learner` role is also removed from all public subgroups down to first private excluded.","operationId":"v2.groups.RemoveUserRoleFromGroupController_removeUserRoleFromGroup","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"groupId","required":true,"in":"path","description":"The unique ID of the group.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"role","required":true,"in":"path","description":"The role to withdraw from the user.","schema":{"enum":["admin","analyst","coach","contributor","editor","learner","user-admin"],"type":"string"}},{"name":"userId","required":true,"in":"path","description":"The unique ID of the user.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"204":{"description":"Removes the given role from the given user in the given group."},"400":{"description":"The `analyst` group role is not available in this company.","content":{"application/json":{"schema":{"title":"Analyst Unavailable","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["analystUnavailable"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `groupId` does not correspond to any existing group.","title":"Group Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["groupNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `userId` does not correspond to any existing user with this role in this group.","title":"User Not Found In Group","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotFoundInGroup"]},"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":"Remove a user's role","tags":["Groups"]}},"/api/v2/groups":{"post":{"description":"> 🔑\n>\n> Required OAuth scope: `groups:write`.\n\nCreates a new group.","operationId":"v2.groups.CreateGroupController_createGroup","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/InputGroupDTO"}}}},"responses":{"201":{"description":"Returns the created group.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupDTO"}}}},"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 given URL does not resolve to the same address as the 360Learning platform. Update its DNS record before setting it.","title":"Custom Url Dns Not Configured","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["customUrlDnsNotConfigured"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given media ID does not correspond to any existing image media.","title":"Media Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["mediaNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The maximum number of groups has been reached.","title":"Max Groups Limit Reached","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["maxGroupsLimitReached"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The custom URL cannot be set on a public group.","title":"No Custom Url On Public Group","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["noCustomUrlOnPublicGroup"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The imprint cannot be set on a public group.","title":"No Imprint On Public Group","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["noImprintOnPublicGroup"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The moderation charter cannot be set on a public group.","title":"No Moderation Charter On Public Group","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["noModerationCharterOnPublicGroup"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The privacy policy cannot be set on a public group.","title":"No Privacy Policy On Public Group","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["noPrivacyPolicyOnPublicGroup"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The subdomain cannot be set on a public group.","title":"No Subdomain On Public Group","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["noSubdomainOnPublicGroup"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The terms of use cannot be set on a public group.","title":"No Terms Of Use On Public Group","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["noTermsOfUseOnPublicGroup"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"This subdomain is not available.","title":"Subdomain Unavailable","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["subdomainUnavailable"]},"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 `parentId` doesn't correspond to any existing group.","content":{"application/json":{"schema":{"title":"Parent Group Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["parentGroupNotFound"]},"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":"Create a group","tags":["Groups"]},"get":{"description":"> 🔑\n>\n> Required OAuth scope: `groups:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 500 groups. For more information, see the [Pagination guide](doc:pagination).\n\nLists all groups in your platform.","operationId":"v2.groups.GetGroupsController_getGroups","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}}],"responses":{"200":{"description":"Returns one page of 500 groups.","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":{"$ref":"#/components/schemas/GroupDTO"}}}}},"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 groups","tags":["Groups"]}},"/api/v2/groups/{groupId}":{"delete":{"description":"> 🔑\n>\n> Required OAuth scope: `groups:write`.\n\nDeletes a group given its unique ID.","operationId":"v2.groups.DeleteGroupController_deleteGroup","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"groupId","required":true,"in":"path","description":"The unique ID of the group.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"204":{"description":"Deletes a specific group."},"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 given `groupId` corresponds to the root group and cannot be deleted.","title":"Group Is Root","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["groupIsRoot"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `groupId` or one of its descendants has active integrations or lti connectors and cannot be deleted.","title":"Has Active Integrations Or Lti Connectors","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["hasActiveIntegrationsOrLtiConnectors"]},"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 `groupId` does not correspond to any existing group.","content":{"application/json":{"schema":{"title":"Group Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["groupNotFound"]},"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":"Delete a group","tags":["Groups"]},"get":{"description":"> 🔑\n>\n> Required OAuth scope: `groups:read`.\n\nRetrieves information about a group given its ID.","operationId":"v2.groups.GetGroupController_getGroup","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"groupId","required":true,"in":"path","description":"The unique ID of the group.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"200":{"description":"Returns the information about the given group.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupDTO"}}}},"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 `groupId` does not correspond to any existing group.","content":{"application/json":{"schema":{"title":"Group Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["groupNotFound"]},"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 group","tags":["Groups"]},"patch":{"description":"> 🔑\n>\n> Required OAuth scope: `groups:write`.\n\nEdits specific fields of an existing group. Fields not included in the request payload remain unchanged.","operationId":"v2.groups.UpdateGroupController_updateGroup","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"groupId","required":true,"in":"path","description":"The unique ID of the group.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchGroupDTO"}}}},"responses":{"200":{"description":"Returns the updated group.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupDTO"}}}},"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 given URL does not resolve to the same address as the 360Learning platform. Update its DNS record before setting it.","title":"Custom Url Dns Not Configured","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["customUrlDnsNotConfigured"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given media ID does not correspond to any existing image media.","title":"Media Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["mediaNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The custom URL cannot be set on a public group.","title":"No Custom Url On Public Group","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["noCustomUrlOnPublicGroup"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The imprint cannot be set on a public group.","title":"No Imprint On Public Group","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["noImprintOnPublicGroup"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The moderation charter cannot be set on a public group.","title":"No Moderation Charter On Public Group","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["noModerationCharterOnPublicGroup"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The privacy policy cannot be set on a public group.","title":"No Privacy Policy On Public Group","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["noPrivacyPolicyOnPublicGroup"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The subdomain cannot be set on a public group.","title":"No Subdomain On Public Group","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["noSubdomainOnPublicGroup"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The terms of use cannot be set on a public group.","title":"No Terms Of Use On Public Group","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["noTermsOfUseOnPublicGroup"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The parent group cannot be the group itself or one of its descendants.","title":"Parent Group Not Descendant Or Self","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["parentGroupNotDescendantOrSelf"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The root group cannot be public.","title":"Root Group Not Public","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["rootGroupNotPublic"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"This subdomain is not available.","title":"Subdomain Unavailable","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["subdomainUnavailable"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `groupId` does not correspond to any existing group.","title":"Group Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["groupNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `parentId` doesn't correspond to any existing group.","title":"Parent Group Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["parentGroupNotFound"]},"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":"Edit a group","tags":["Groups"]}},"/api/v2/groups/{groupId}/roles":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `groups:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 1,000 memberships. For more information, see the [Pagination guide](doc:pagination).\n\nLists all the memberships, sorted per user, of a specific group.","operationId":"v2.groups.GetGroupMembersController_getGroupMembers","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"groupId","required":true,"in":"path","description":"The unique ID of the group.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"200":{"description":"Returns one page of 1000 memberships.","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":{"$ref":"#/components/schemas/UserRole"}}}}},"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 `groupId` does not correspond to any existing group.","content":{"application/json":{"schema":{"title":"Group Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["groupNotFound"]},"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 memberships in a group","tags":["Groups"]}},"/api/v2/groups/{groupId}/catalog/{contentType}-ids":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `groups:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 10,000 unique content IDs. For more information, see the [Pagination guide](doc:pagination).\n\nLists all content IDs of a given type shared in the group catalog.","operationId":"v2.groups.GetCatalogContentIdsController_getCatalogContentIds","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"groupId","required":true,"in":"path","description":"The unique ID of the group.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"contentType","required":true,"in":"path","description":"The type of content IDs to retrieve.","schema":{"enum":["path-session","course"],"type":"string"}}],"responses":{"200":{"description":"Returns one page of 10000 unique content IDs.","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":{"type":"string","format":"ObjectId","example":"507f1f77bcf86cd799439011"}}}}},"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 `groupId` does not correspond to any existing group.","content":{"application/json":{"schema":{"title":"Group Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["groupNotFound"]},"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 content IDs in a group catalog","tags":["Groups"]}},"/api/v2/groups/{groupId}/library/{contentType}-ids":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `groups:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 10,000 unique content IDs. For more information, see the [Pagination guide](doc:pagination).\n\nLists all content IDs of a given type shared in the group library.","operationId":"v2.groups.GetLibraryContentIdsController_getLibraryContentIds","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"groupId","required":true,"in":"path","description":"The unique ID of the group.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"contentType","required":true,"in":"path","description":"The type of content IDs to retrieve.","schema":{"enum":["path","course"],"type":"string"}}],"responses":{"200":{"description":"Returns one page of 10000 unique content IDs.","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":{"type":"string","format":"ObjectId","example":"507f1f77bcf86cd799439011"}}}}},"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 `groupId` does not correspond to any existing group.","content":{"application/json":{"schema":{"title":"Group Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["groupNotFound"]},"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 content IDs in a group library","tags":["Groups"]}},"/api/v2/groups/{groupId}/media":{"post":{"description":"> 🔑\n>\n> Required OAuth scope: `groups:write`.\n\nUploads media files (banner, background, favicon, logo) to a group. At least one file must be provided.","operationId":"v2.groups.UploadGroupMediaController_uploadGroupMedia","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"groupId","required":true,"in":"path","description":"The unique ID of the group.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/UploadGroupMediaBodyDTO"}}}},"responses":{"200":{"description":"Returns the updated group.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupDTO"}}}},"400":{"description":"At least one media file must be provided (banner, background, favicon, or logo).","content":{"application/json":{"schema":{"title":"No Files Provided","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["noFilesProvided"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `groupId` does not correspond to any existing group.","title":"Group Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["groupNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"At least one of the given users does not correspond to any existing and non-deleted user.","title":"Users Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["usersNotFound"]},"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":"Upload group media","tags":["Groups"]}},"/api/v2/groups/{groupId}/branding":{"patch":{"description":"> 🔑\n>\n> Required OAuth scope: `groups:write`.\n\nSets the branding for a group. Branding is automatically inherited by all subgroups unless a subgroup defines its own branding. If the Extended Training package is not enabled on your platform, only the root group’s branding can be updated. Fields not included in the request payload remain unchanged.","operationId":"v2.groups.UpsertGroupCustomizationColorsController_upsertGroupCustomizationColors","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"groupId","required":true,"in":"path","description":"The unique ID of the group.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchBrandCustomizationDTO"}}}},"responses":{"200":{"description":"Returns the updated group branding.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandCustomizationDTO"}}}},"400":{"description":"The extended training package is not enabled.","content":{"application/json":{"schema":{"title":"Extended Training Solution Not Enabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["extendedTrainingSolutionNotEnabled"]},"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 `groupId` does not correspond to any existing group.","content":{"application/json":{"schema":{"title":"Group Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["groupNotFound"]},"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":"Set group branding","tags":["Groups"]}},"/api/v2/integrations":{"post":{"description":"> 🔑\n>\n> Required OAuth scope: `integrations:write`.\n\nCreates a new integration configuration, or reactivates an existing inactive one.","operationId":"v2.integrations.CreateIntegrationController_createIntegration","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/BaseIntegrationDTO"}}}},"responses":{"200":{"description":"Returns the integration configuration that has been successfully reactivated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationDTO"}}}},"201":{"description":"Returns the created integration configuration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationDTO"}}}},"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 given `externalPlatform` already has an integration defined for this group.","title":"Duplicate External Platform","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["duplicateExternalPlatform"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The maximum number of integration configurations has been reached.","title":"Integrations Limit Reached","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["integrationsLimitReached"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `groupId` does not correspond to any existing group.","title":"Group Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["groupNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `authorId` does not correspond to any existing user.","title":"User Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotFound"]},"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":"Create an integration configuration","tags":["Integrations"]},"get":{"description":"> 🔑\n>\n> Required OAuth scope: `integrations:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 100 integration configurations. For more information, see the [Pagination guide](doc:pagination).\n\nLists all integration configurations.","operationId":"v2.integrations.GetIntegrationsController_getIntegrations","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"externalPlatform","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **externalPlatform** property with LHS bracket notation.\n\nExpected value format is a string.","schema":{"properties":{"eq":{"type":"string","description":"Filter on values equal to the given one","example":"loremIpsum"},"ne":{"type":"string","description":"Filter on values not equal to the given one","example":"loremIpsum"},"in":{"type":"array","description":"Filter on values including the given ones","items":{"type":"string","example":"loremIpsum"}},"nin":{"type":"array","description":"Filter on values excluding the given ones","items":{"type":"string","example":"loremIpsum"}}}}}],"responses":{"200":{"description":"Returns one page of 100 integration configurations.","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":{"$ref":"#/components/schemas/IntegrationDTO"}}}}},"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 integration configurations","tags":["Integrations"]}},"/api/v2/integrations/{integrationId}":{"delete":{"description":"> 🔑\n>\n> Required OAuth scope: `integrations:write`.\n\nDeletes a specific configuration given its unique ID and archives all its related content.","operationId":"v2.integrations.DeleteIntegrationController_deleteIntegration","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"}}],"responses":{"204":{"description":"Deletes a specific integration configuration."},"400":{"description":"The platform is one of the reserved ones.","content":{"application/json":{"schema":{"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 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":"Delete an integration configuration","tags":["Integrations"]},"patch":{"description":"> 🔑\n>\n> Required OAuth scope: `integrations:write`.\n\nEdits specific fields of an existing integration configuration. Fields not included in the request payload remain unchanged.","operationId":"v2.integrations.EditIntegrationController_editIntegration","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/PatchIntegrationDTO"}}}},"responses":{"200":{"description":"Returns the updated integration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BaseIntegrationDTO"}}}},"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 given `externalPlatform` already has an integration defined for this group.","title":"Duplicate External Platform","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["duplicateExternalPlatform"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `integrationId` does not correspond to any existing integration.","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"]},{"description":"The given `groupId` does not correspond to any existing group.","title":"Group Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["groupNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `authorId` does not correspond to any existing user.","title":"User Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotFound"]},"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":"Edit an integration configuration","tags":["Integrations"]}},"/api/v2/integrations/{integrationId}/courses/{externalId}":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `integrations:read`.\n\nRetrieves the details of a specific course with the provided external platform course ID.","operationId":"v2.integrations.GetExternalCourseController_getExternalCourse","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 the course has been imported for.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"externalId","required":true,"in":"path","description":"The unique external ID of the course.","schema":{"minLength":1,"example":"a3215H-7","type":"string"}}],"responses":{"200":{"description":"Returns the details of the given external course.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalCourseResponseDTO"}}}},"400":{"description":"The given `externalId` does not belong to the given integration.","content":{"application/json":{"schema":{"title":"Course Not Belong To Integration","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["courseNotBelongToIntegration"]},"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 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 an external course","tags":["Integrations"]}},"/api/v2/learning-needs":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `learningNeeds:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 500 learning needs. For more information, see the [Pagination guide](doc:pagination).\n\nLists all learning needs in your platform.","operationId":"v2.learningNeeds.GetLearningNeedsController_getLearningNeeds","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}}],"responses":{"200":{"description":"Returns one page of 500 learning needs.","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":{"$ref":"#/components/schemas/LearningNeedDTO"}}}}},"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 learning needs","tags":["Learning Needs"]}},"/api/v2/oauth2/token":{"post":{"description":"Creates an OAuth access token using the `client_id` and `client_secret` credentials. Once generated, the token authorizes access to the 360Learning API v2 resources for 1 hour. It must be included in the `Authorization` header of each request as `Bearer`.","operationId":"v2.authentication.GenerateTokenController_generateToken","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateTokenBody"}}}},"responses":{"200":{"description":"Returns an access token that must be used in all your calls to public API endpoints.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateTokenResponse"}}}},"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":[{"title":"invalid request","description":"The given request is malformed. Ensure your payload contains only the expected properties with the correct types.","type":"object","properties":{"error":{"type":"string","enum":["invalid_request"]}},"required":["error"]},{"title":"unsupported grant type","description":"The given grant type is unsupported. Make sure `grant_type` is set to `client_credentials`.","type":"object","properties":{"error":{"type":"string","enum":["unsupported_grant_type"]}},"required":["error"]},{"title":"non existing user","description":"The given `user_id` does not correspond to any non-deleted user.","type":"object","properties":{"error":{"type":"string","enum":["non_existing_user"]}},"required":["error"]}]}}}},"401":{"description":"Your credentials pair `client_id`/`client_secret` is invalid.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["invalid_client"]}},"required":["error"]}}}}},"summary":"Create an access token","tags":["Authentication"]}},"/api/v2/paths/sessions":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `paths:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 500 path sessions. For more information, see the [Pagination guide](doc:pagination).\n\nLists all path sessions in your platform. This endpoint does not return path session translations. To retrieve translations, use the [Retrieve a path session](/reference/v2pathsgetpathsessioncontroller_getpathsession) endpoint or the [List all sessions in a path](/reference/v2pathsgetpathsessionscontroller_getpathsessions) endpoint.","operationId":"v2.paths.GetAllPathSessionsController_getAllPathSessions","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":"modifiedAt","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **modifiedAt** 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":"startDate","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **startDate** 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":"endDate","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **endDate** 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":"sessionId","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **sessionId** property with LHS bracket notation.\n\nExpected value format is a valid ID (24 digits or letters).","schema":{"properties":{"eq":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values equal to the given one","example":"507f1f77bcf86cd799439011"},"ne":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values not equal to the given one","example":"507f1f77bcf86cd799439011"},"in":{"type":"array","description":"Filter on values including the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}},"nin":{"type":"array","description":"Filter on values excluding the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}}}}},{"name":"pathId","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **pathId** property with LHS bracket notation.\n\nExpected value format is a valid ID (24 digits or letters).","schema":{"properties":{"eq":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values equal to the given one","example":"507f1f77bcf86cd799439011"},"ne":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values not equal to the given one","example":"507f1f77bcf86cd799439011"},"in":{"type":"array","description":"Filter on values including the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}},"nin":{"type":"array","description":"Filter on values excluding the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}}}}}],"responses":{"200":{"description":"Returns one page of 500 path sessions.","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":{"$ref":"#/components/schemas/PathSessionWithoutTranslationsDTO"}}}}},"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 sessions","tags":["Paths"]}},"/api/v2/paths/stats":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `pathStats:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 2,000 path user statistics. For more information, see the [Pagination guide](doc:pagination).\n\nLists all user statistics for paths in the platform.","operationId":"v2.paths.GetPathStatsController_getPathStats","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"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 (`archived`, `published`).","schema":{"properties":{"eq":{"type":"string","description":"Filter on values equal to the given one","example":"archived","enum":["archived","published"]}}}},{"name":"completedAt","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **completedAt** 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":"pathId","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **pathId** property with LHS bracket notation.\n\nExpected value format is a valid ID (24 digits or letters).","schema":{"properties":{"eq":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values equal to the given one","example":"507f1f77bcf86cd799439011"},"ne":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values not equal to the given one","example":"507f1f77bcf86cd799439011"},"in":{"type":"array","description":"Filter on values including the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}},"nin":{"type":"array","description":"Filter on values excluding the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}}}}},{"name":"userId","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **userId** property with LHS bracket notation.\n\nExpected value format is a valid ID (24 digits or letters).","schema":{"properties":{"eq":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values equal to the given one","example":"507f1f77bcf86cd799439011"},"ne":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values not equal to the given one","example":"507f1f77bcf86cd799439011"},"in":{"type":"array","description":"Filter on values including the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}},"nin":{"type":"array","description":"Filter on values excluding the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}}}}}],"responses":{"200":{"description":"Returns one page of 2000 path user statistics.","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":{"$ref":"#/components/schemas/PathSessionUserStatDTO"}}}}},"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 user statistics for all paths","tags":["Paths"]}},"/api/v2/paths/add-tokens":{"post":{"description":"> 🔑\n>\n> Required OAuth scope: `tokens:write`.\n\nAdd tokens to a specific group for a given path.","operationId":"v2.paths.AddTokensController_addTokens","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/AddTokensBody"}}}},"responses":{"204":{"description":"Add tokens."},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `pathId` does not correspond to any existing path.","title":"Path Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `groupId` does not correspond to any existing group.","title":"Group Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["groupNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given user does not correspond to any existing and non-deleted user.","title":"User Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotFound"]},"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":"Add tokens","tags":["Paths"]}},"/api/v2/paths/{pathId}/archive":{"put":{"description":"> 🔑\n>\n> Required OAuth scope: `paths:write`.\n\nArchives or restores a path.","operationId":"v2.paths.ArchiveOrUnarchivePathController_archiveOrUnarchivePath","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"pathId","required":true,"in":"path","description":"The unique ID of the path.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArchivePathBody"}}}},"responses":{"200":{"description":"Returns the updated path."},"400":{"description":"The given path has running sessions.","content":{"application/json":{"schema":{"title":"Path Has Running Sessions","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathHasRunningSessions"]},"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 `pathId` does not correspond to any existing path.","content":{"application/json":{"schema":{"title":"Path Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathNotFound"]},"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":"Archive or restore a path","tags":["Paths"]}},"/api/v2/paths":{"post":{"description":"> 🔑\n>\n> Required OAuth scope: `paths:write`.\n\nCreates a new path in the platform.","operationId":"v2.paths.CreatePathController_createPath","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":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/InputPathDTO"}}}},"responses":{"201":{"description":"Returns the information about the created path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PathDTO"}}}},"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 main author is present in the co-authors list.","title":"Main Author As Co Author","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["mainAuthorAsCoAuthor"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given media ID does not correspond to any existing image media.","title":"Media Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["mediaNotFound"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `groupId` does not correspond to any existing group.","title":"Group Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["groupNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"At least one of the given users does not correspond to any existing and non-deleted user.","title":"Users Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["usersNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `certificateId` does not correspond to any existing certificate outline.","title":"Certificate Outline Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["certificateOutlineNotFound"]},"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":"Create a path","tags":["Paths"]},"get":{"description":"> 🔑\n>\n> Required OAuth scope: `paths:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 200 paths. For more information, see the [Pagination guide](doc:pagination).\n\nLists all paths in your platform.","operationId":"v2.paths.GetPathsController_getPaths","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":"modifiedAt","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **modifiedAt** 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 (`archived`, `published`).","schema":{"properties":{"eq":{"type":"string","description":"Filter on values equal to the given one","example":"archived","enum":["archived","published"]}}}}],"responses":{"200":{"description":"Returns one page of 200 paths.","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":{"$ref":"#/components/schemas/PathDTO"}}}}},"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 paths","tags":["Paths"]}},"/api/v2/paths/{pathId}/sessions":{"post":{"description":"> 🔑\n>\n> Required OAuth scope: `paths:write`.\n\nCreates a path session for the given path.","operationId":"v2.paths.CreatePathSessionController_createPathSession","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"pathId","required":true,"in":"path","description":"The unique ID of the path.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InputPathSessionDTO"}}}},"responses":{"200":{"description":"Returns the information about the created session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PathSessionDTO"}}}},"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 given `endDate` is before the given `startDate`.","title":"Invalid Start Or End Date","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidStartOrEndDate"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"At least one of the given IP addresses is invalid.","title":"Invalid Ip Filtering","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidIpFiltering"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"Automatic re-enrollment is set to `certificationExpiryDate` but certificate is missing.","title":"Missing Certificate","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["missingCertificate"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `pathId` corresponds to an archived path.","title":"Path Archived","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathArchived"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The `assessors` property of `registrationRequestSetting` is required when `enrollmentRequestEnabled` or `unenrollmentRequestEnabled` is `true`.","title":"Registration Request Assessors Missing","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["registrationRequestAssessorsMissing"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The `assessors` property of `registrationRequestSetting` must be omitted when both `enrollmentRequestEnabled` and `unenrollmentRequestEnabled` are `false`.","title":"Registration Request Assessors Not Allowed","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["registrationRequestAssessorsNotAllowed"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"Either `registrationRequestValidation` or `registrationRequestSetting` must be provided when creating a path session.","title":"Registration Request Configuration Missing","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["registrationRequestConfigurationMissing"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given assessor option (`registrationRequestValidation` or `registrationRequestSetting.assessors`) is not active for this group.","title":"Invalid Registration Request Option","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidRegistrationRequestOption"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"Unenrollment requests are not enabled for this company — `unenrollmentRequestEnabled` cannot be set to `true`.","title":"Unenrollment Request Feature Disabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["unenrollmentRequestFeatureDisabled"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `pathId` does not correspond to any existing path.","title":"Path Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"At least one of the given `mainInstructorId` or `instructorIds` does not correspond to any existing and non-deleted user.","title":"Users Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["usersNotFound"]},"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":"Create a path session","tags":["Paths"]},"get":{"description":"> 🔑\n>\n> Required OAuth scope: `paths:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 100 path sessions. For more information, see the [Pagination guide](doc:pagination).\n\nLists all sessions in a given path.","operationId":"v2.paths.GetPathSessionsController_getPathSessions","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"pathId","required":true,"in":"path","description":"The unique ID of the path.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"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":"modifiedAt","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **modifiedAt** 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":"startDate","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **startDate** 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":"endDate","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **endDate** 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"}}}}],"responses":{"200":{"description":"Returns one page of 100 path sessions.","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":{"$ref":"#/components/schemas/PathSessionDTO"}}}}},"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 `pathId` does not correspond to any existing path.","content":{"application/json":{"schema":{"title":"Path Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathNotFound"]},"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 sessions in a path","tags":["Paths"]}},"/api/v2/paths/{pathId}":{"delete":{"description":"> 🔑\n>\n> Required OAuth scope: `paths:write`.\n\nDeletes a path given the path ID.","operationId":"v2.paths.DeletePathController_deletePath","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"pathId","required":true,"in":"path","description":"The unique ID of the path.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"204":{"description":"Deletes a specific path."},"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 `pathId` does not correspond to any existing path.","content":{"application/json":{"schema":{"title":"Path Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}}}},"409":{"description":"You cannot delete this path, it's used as a step or requirement in at least one path.","content":{"application/json":{"schema":{"title":"Path Is Used As A Training","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathIsUsedAsATraining"]},"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":"Delete a path","tags":["Paths"]},"get":{"description":"> 🔑\n>\n> Required OAuth scope: `paths:read`.\n\nRetrieves information about a path given its ID.","operationId":"v2.paths.GetPathController_getPath","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"pathId","required":true,"in":"path","description":"The unique ID of the path.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"200":{"description":"Returns the information about the given path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PathDTO"}}}},"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 `pathId` does not correspond to any existing path.","content":{"application/json":{"schema":{"title":"Path Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathNotFound"]},"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 path","tags":["Paths"]},"patch":{"description":"> 🔑\n>\n> Required OAuth scope: `paths:write`.\n\nEdits specific fields of an existing path. Fields not included in the request payload remain unchanged.","operationId":"v2.paths.UpdatePathController_updatePath","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"pathId","required":true,"in":"path","description":"The unique ID of the path.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/PatchPathDTO"}}}},"responses":{"200":{"description":"Returns the information about the updated path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PathDTO"}}}},"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 main author is present in the co-authors list.","title":"Main Author As Co Author","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["mainAuthorAsCoAuthor"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given media ID does not correspond to any existing image media.","title":"Media Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["mediaNotFound"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `pathId` does not correspond to any existing path.","title":"Path Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `groupId` does not correspond to any existing group.","title":"Group Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["groupNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"At least one of the given users does not correspond to any existing and non-deleted user.","title":"Users Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["usersNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `certificateId` does not correspond to any existing certificate outline.","title":"Certificate Outline Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["certificateOutlineNotFound"]},"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":"Edit a path","tags":["Paths"]}},"/api/v2/paths/{pathId}/sessions/{sessionId}":{"delete":{"description":"> 🔑\n>\n> Required OAuth scope: `paths:write`.\n\nDeletes a path session given the path ID and session ID.","operationId":"v2.paths.DeletePathSessionController_deletePathSession","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"pathId","required":true,"in":"path","description":"The unique ID of the path.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"sessionId","required":true,"in":"path","description":"The unique ID of the path session.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"204":{"description":"Deletes a specific session given its unique ID."},"400":{"description":"The given `sessionId` does not belong to the `pathId`.","content":{"application/json":{"schema":{"title":"Session Not Belong To Path","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["sessionNotBelongToPath"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `pathId` does not correspond to any existing path.","title":"Path Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `sessionId` does not correspond to any existing path session.","title":"Session Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["sessionNotFound"]},"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":"Delete a path session","tags":["Paths"]},"get":{"description":"> 🔑\n>\n> Required OAuth scope: `paths:read`.\n\nRetrieves information about the path session given the path ID and session ID.","operationId":"v2.paths.GetPathSessionController_getPathSession","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"pathId","required":true,"in":"path","description":"The unique ID of the path.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"sessionId","required":true,"in":"path","description":"The unique ID of the path session.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"200":{"description":"Returns the information about the given session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PathSessionDTO"}}}},"400":{"description":"The given `sessionId` does not belong to the `pathId`.","content":{"application/json":{"schema":{"title":"Session Not Belong To Path","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["sessionNotBelongToPath"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `pathId` does not correspond to any existing path.","title":"Path Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `sessionId` does not correspond to any existing path session.","title":"Session Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["sessionNotFound"]},"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 path session","tags":["Paths"]},"patch":{"description":"> 🔑\n>\n> Required OAuth scope: `paths:write`.\n\nEdits specific fields of an existing path session. Fields not included in the request payload remain unchanged.","operationId":"v2.paths.ModifyPathSessionController_modifyPathSession","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"pathId","required":true,"in":"path","description":"The unique ID of the path.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"sessionId","required":true,"in":"path","description":"The unique ID of the path session.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchPathSessionDTO"}}}},"responses":{"200":{"description":"Returns the updated session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PathSessionDTO"}}}},"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 given `sessionId` corresponds to a child path session.","title":"Child Path Session","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["childPathSession"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"At least one of the given IP addresses is invalid.","title":"Invalid Ip Filtering","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidIpFiltering"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"Automatic re-enrollment is set to `certificationExpiryDate` but certificate is missing.","title":"Missing Certificate","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["missingCertificate"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The `assessors` property of `registrationRequestSetting` is required when `enrollmentRequestEnabled` or `unenrollmentRequestEnabled` is `true`.","title":"Registration Request Assessors Missing","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["registrationRequestAssessorsMissing"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The `assessors` property of `registrationRequestSetting` must be omitted when both `enrollmentRequestEnabled` and `unenrollmentRequestEnabled` are `false`.","title":"Registration Request Assessors Not Allowed","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["registrationRequestAssessorsNotAllowed"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given assessor option (`registrationRequestValidation` or `registrationRequestSetting.assessors`) is not active for this group.","title":"Invalid Registration Request Option","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidRegistrationRequestOption"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `sessionId` does not belong to the `pathId`.","title":"Session Not Belong To Path","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["sessionNotBelongToPath"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `sessionId` corresponds to an ended session.","title":"Session Ended","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["sessionEnded"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `endDate` is before the given `startDate`.","title":"Invalid Start Or End Date","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidStartOrEndDate"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"Unenrollment requests are not enabled for this company — `unenrollmentRequestEnabled` cannot be set to `true`.","title":"Unenrollment Request Feature Disabled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["unenrollmentRequestFeatureDisabled"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The `endDate` is updated, but the `sessionId` corresponds to an ended session.","title":"Unsupported End Date Update","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["unsupportedEndDateUpdate"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `pathId` does not correspond to any existing path.","title":"Path Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `sessionId` does not correspond to any existing path session.","title":"Session Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["sessionNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `groupId` does not correspond to any existing group.","title":"Group Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["groupNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"At least one of the given `mainInstructorId` or `instructorIds` does not correspond to any existing and non-deleted user.","title":"Users Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["usersNotFound"]},"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":"Edit a path session","tags":["Paths"]}},"/api/v2/paths/{pathId}/sessions/{sessionId}/self-enrollments/{userId}":{"delete":{"description":"> 🔑\n>\n> Required OAuth scope: `paths:write`.\n\nArchives the self-enrollment of a learner in a path session. Learners enrolled through the Audience Builder are rejected — unassign those by updating the session audience with `PUT /audiences` and `excludedLearners`.","operationId":"v2.paths.ArchiveSelfEnrollmentController_archiveSelfEnrollment","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"pathId","required":true,"in":"path","description":"The unique ID of the path.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"sessionId","required":true,"in":"path","description":"The unique ID of the path session.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"userId","required":true,"in":"path","description":"The unique ID of the learner.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"204":{"description":"Archives the learner's self-enrollment in the session."},"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 given `sessionId` does not belong to the `pathId`.","title":"Session Not Belong To Path","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["sessionNotBelongToPath"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `sessionId` corresponds to an ended session.","title":"Session Ended","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["sessionEnded"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `sessionId` corresponds to a child path session.","title":"Child Path Session","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["childPathSession"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `userId` is enrolled in the session but not via self-enrollment. If they were enrolled through the Audience Builder, unassign them by updating the session audience with `PUT /audiences` and `excludedLearners`.","title":"Learner Not Self Enrolled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["learnerNotSelfEnrolled"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `pathId` does not correspond to any existing path.","title":"Path Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `sessionId` does not correspond to any existing path session.","title":"Session Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["sessionNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `userId` has no active enrollment in the given session.","title":"Learner Not Enrolled","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["learnerNotEnrolled"]},"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":"Archive a self-enrolled learner from a path session","tags":["Paths"]}},"/api/v2/paths/{pathId}/enrollments":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `paths:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 5,000 enrollments. For more information, see the [Pagination guide](doc:pagination).\n\nLists all enrollments for the given path.","operationId":"v2.paths.GetEnrollmentsController_getEnrollments","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"pathId","required":true,"in":"path","description":"The unique ID of the path.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"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 (`archived`, `published`).","schema":{"properties":{"eq":{"type":"string","description":"Filter on values equal to the given one","example":"archived","enum":["archived","published"]}}}},{"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":"modifiedAt","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **modifiedAt** 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":"sessionId","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **sessionId** property with LHS bracket notation.\n\nExpected value format is a valid ID (24 digits or letters).","schema":{"properties":{"eq":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values equal to the given one","example":"507f1f77bcf86cd799439011"},"ne":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values not equal to the given one","example":"507f1f77bcf86cd799439011"},"in":{"type":"array","description":"Filter on values including the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}},"nin":{"type":"array","description":"Filter on values excluding the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}}}}}],"responses":{"200":{"description":"Returns one page of 5000 enrollments.","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":{"$ref":"#/components/schemas/PathEnrollmentDTO"}}}}},"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 `pathId` does not correspond to any existing path.","content":{"application/json":{"schema":{"title":"Path Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathNotFound"]},"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 enrollments","tags":["Paths"]}},"/api/v2/paths/{pathId}/sessions/{sessionId}/custom-fields/values":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `paths:read`.\n\nLists all custom field values in a given session.","operationId":"v2.paths.GetPathSessionCustomFieldValuesController_getPathSessionCustomFieldValues","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"pathId","required":true,"in":"path","description":"The unique ID of the path.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"sessionId","required":true,"in":"path","description":"The unique ID of the path session.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"200":{"description":"Returns all custom field values for the given session.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CustomFieldValueDTO"}}}}},"400":{"description":"The given `sessionId` does not belong to the `pathId`.","content":{"application/json":{"schema":{"title":"Session Not Belong To Path","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["sessionNotBelongToPath"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `pathId` does not correspond to any existing path.","title":"Path Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `sessionId` does not correspond to any existing path session.","title":"Session Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["sessionNotFound"]},"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 custom field values for a session","tags":["Paths"]},"put":{"description":"> 🔑\n>\n> Required OAuth scope: `paths:write`.\n\nReplaces all custom field values in the given path session with the provided ones. Values not included are removed.","operationId":"v2.paths.v2.paths.UpdatePathSessionCustomFieldValuesController_updatePathSessionCustomFieldValues","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"pathId","required":true,"in":"path","description":"The unique ID of the path.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"sessionId","required":true,"in":"path","description":"The unique ID of the path session.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePathSessionCustomFieldValuesBody"}}}},"responses":{"200":{"description":"Returns the updated path session custom field values.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CustomFieldValueDTO"}}}}},"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 given `sessionId` does not belong to the `pathId`.","title":"Session Not Belong To Path","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["sessionNotBelongToPath"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given body has a `customField` with an unauthorized value.","title":"Unauthorized Value","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["unauthorizedValue"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given body has a `customField` with invalid value type.","title":"Wrong Type Value","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["wrongTypeValue"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given body has multiple values for a single `customField`.","title":"Multiple Values For Single Custom Field","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["multipleValuesForSingleCustomField"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `pathId` does not correspond to any existing path.","title":"Path Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `sessionId` does not correspond to any existing path session.","title":"Session Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["sessionNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `customFieldId` does not correspond to any existing custom field.","title":"Custom Field Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["customFieldNotFound"]},"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":"Replace all custom fields values for a path session","tags":["Paths","Paths"]}},"/api/v2/paths/{pathId}/tags":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `tags:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 500 tags. For more information, see the [Pagination guide](doc:pagination).\n\nLists all unique tag IDs of the given path.","operationId":"v2.paths.GetPathTagsController_getTags","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"pathId","required":true,"in":"path","description":"The unique ID of the path.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"200":{"description":"Returns one page of 500 tags.","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":{"$ref":"#/components/schemas/TagIdWithSource"}}}}},"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 `pathId` does not correspond to any existing path.","content":{"application/json":{"schema":{"title":"Path Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathNotFound"]},"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 tags in a path","tags":["Paths"]},"put":{"description":"> 🔑\n>\n> Required OAuth scope: `tags:write`.\n\nReplaces all tags in the given path with the provided onces. Tags not included are removed.","operationId":"v2.paths.UpdateTagsController_updateTags","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"pathId","required":true,"in":"path","description":"The unique ID of the path.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePathsTagsBody"}}}},"responses":{"200":{"description":"Returns the new tag IDs linked to the path.","content":{"application/json":{"schema":{"type":"array","items":{"type":"string","format":"ObjectId","example":"507f1f77bcf86cd799439011"}}}}},"400":{"description":"The given `pathId` corresponds to an archived path.","content":{"application/json":{"schema":{"title":"Path Archived","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathArchived"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `pathId` does not correspond to any existing path.","title":"Path Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"At least one of the given `tagIds` does not correspond to any existing tag.","title":"Tag Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["tagNotFound"]},"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":"Replace all tags in a path","tags":["Paths"]}},"/api/v2/paths/{pathId}/sessions/{sessionId}/audiences":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `paths:read`.\n\nRetrieves information about the path session audience given the path ID and session ID.","operationId":"v2.paths.GetSessionAudienceController_getSessionAudience","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"pathId","required":true,"in":"path","description":"The unique ID of the path.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"sessionId","required":true,"in":"path","description":"The unique ID of the path session.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"200":{"description":"Returns the information about the given session audience.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionAudienceDTO"}}}},"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 given `sessionId` does not belong to the `pathId`.","title":"Session Not Belong To Path","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["sessionNotBelongToPath"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `sessionId` does not correspond to an audience builder session.","title":"Session Is Not Audience Builder","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["sessionIsNotAudienceBuilder"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `sessionId` has unsupported filter type.","title":"Unsupported Audience Filter","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["unsupportedAudienceFilter"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `pathId` does not correspond to any existing path.","title":"Path Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `sessionId` does not correspond to any existing path session.","title":"Session Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["sessionNotFound"]},"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 path session audience","tags":["Paths"]},"put":{"description":"> 🔑\n>\n> Required OAuth scope: `paths:write`.\n\nReplaces the audience in the given path and session with the provided one. Audience not included is removed.","operationId":"v2.paths.UpdateSessionAudienceController_updateSessionAudience","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"pathId","required":true,"in":"path","description":"The unique ID of the path.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"sessionId","required":true,"in":"path","description":"The unique ID of the path session.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutSessionAudienceDTO"}}}},"responses":{"200":{"description":"Returns the updated session audience.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionAudienceDTO"}}}},"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 given `sessionId` does not belong to the `pathId`.","title":"Session Not Belong To Path","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["sessionNotBelongToPath"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `sessionId` does not correspond to an audience builder session.","title":"Session Is Not Audience Builder","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["sessionIsNotAudienceBuilder"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `pathId` corresponds to an archived path.","title":"Path Archived","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathArchived"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `sessionId` corresponds to a child path session.","title":"Child Path Session","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["childPathSession"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `sessionId` corresponds to an ended session.","title":"Session Ended","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["sessionEnded"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `sessionId` has unsupported filter type.","title":"Unsupported Audience Filter","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["unsupportedAudienceFilter"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given body has an invalid audience builder shape.","title":"Invalid Audience Builder Shape","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidAudienceBuilderShape"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given body has invalid audience filter for token based path.","title":"Token Based Path Audience Filter","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["tokenBasedPathAudienceFilter"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given body has invalid mode for token based path.","title":"Token Based Path Mode","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["tokenBasedPathMode"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given body has excluded learners for token based path.","title":"Token Based Path Excluded Learners","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["tokenBasedPathExcludedLearners"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `pathId` does not correspond to any existing path.","title":"Path Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `sessionId` does not correspond to any existing path session.","title":"Session Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["sessionNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"At least one of the given users does not correspond to any existing and non-deleted user.","title":"Users Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["usersNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"At least one of the given groups does not correspond to any existing group.","title":"Groups Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["groupsNotFound"]},"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":"Replace an audience for a path session","tags":["Paths"]}},"/api/v2/paths/{pathId}/sessions/{sessionId}/user-statuses":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `pathStats:read`.\n\nRetrieves aggregated metrics for a given path session, including counts of users by session status and total certificates issued.","operationId":"v2.paths.v2.paths.GetSessionStatsController_getSessionStats","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"pathId","required":true,"in":"path","description":"The unique ID of the path.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"sessionId","required":true,"in":"path","description":"The unique ID of the path session.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"200":{"description":"Returns aggregated stats for the given session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AggregatedSessionStatDTO"}}}},"400":{"description":"The given `sessionId` does not belong to the `pathId`.","content":{"application/json":{"schema":{"title":"Session Not Belong To Path","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["sessionNotBelongToPath"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `pathId` does not correspond to any existing path.","title":"Path Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `sessionId` does not correspond to any existing path session.","title":"Session Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["sessionNotFound"]},"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 metrics for a path session","tags":["Paths","Paths"]}},"/api/v2/paths/{pathId}/sessions/{sessionId}/user-stats":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `pathStats:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 2,000 user statistics. For more information, see the [Pagination guide](doc:pagination).\n\nLists all user statistics for the given path session.","operationId":"v2.paths.GetUserStatsController_getUserStats","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"pathId","required":true,"in":"path","description":"The unique ID of the path.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"sessionId","required":true,"in":"path","description":"The unique ID of the path session.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"completedAt","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **completedAt** 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":"userId","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **userId** property with LHS bracket notation.\n\nExpected value format is a valid ID (24 digits or letters).","schema":{"properties":{"eq":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values equal to the given one","example":"507f1f77bcf86cd799439011"},"ne":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values not equal to the given one","example":"507f1f77bcf86cd799439011"},"in":{"type":"array","description":"Filter on values including the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}},"nin":{"type":"array","description":"Filter on values excluding the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}}}}}],"responses":{"200":{"description":"Returns one page of 2000 user statistics.","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":{"$ref":"#/components/schemas/SessionUserStatDTO"}}}}},"400":{"description":"The given `sessionId` does not belong to the `pathId`.","content":{"application/json":{"schema":{"title":"Session Not Belong To Path","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["sessionNotBelongToPath"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `pathId` does not correspond to any existing path.","title":"Path Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `sessionId` does not correspond to any existing path session.","title":"Session Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["sessionNotFound"]},"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 user statistics for a path session","tags":["Paths"]}},"/api/v2/paths/{pathId}/child-sessions/{childSessionId}":{"patch":{"description":"> 🔑\n>\n> Required OAuth scope: `paths:write`.\n\nEdits a child path session given its unique ID and path.","operationId":"v2.paths.ModifyChildPathSessionController_modifyChildPathSession","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"pathId","required":true,"in":"path","description":"The unique ID of the path.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"childSessionId","required":true,"in":"path","description":"The unique ID of the path session.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchChildPathSessionDTO"}}}},"responses":{"200":{"description":"Returns the updated child session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PathSessionDTO"}}}},"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 given `sessionId` corresponds to a root path session.","title":"Root Path Session","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["rootPathSession"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `sessionId` does not belong to the `pathId`.","title":"Session Not Belong To Path","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["sessionNotBelongToPath"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `sessionId` corresponds to an ended session.","title":"Session Ended","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["sessionEnded"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `pathId` does not correspond to any existing path.","title":"Path Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `sessionId` does not correspond to any existing path session.","title":"Session Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["sessionNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"At least one of the given `mainInstructorId` or `instructorIds` does not correspond to any existing and non-deleted user.","title":"Users Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["usersNotFound"]},"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":"Edit a child path session","tags":["Paths"]}},"/api/v2/paths/{pathId}/translations":{"put":{"description":"> 🔑\n>\n> Required OAuth scope: `paths:write`.\n\nReplaces all translations in the given path with the provided ones. Translations not included are removed.","operationId":"v2.paths.ReplacePathTranslationsController_replacePathTranslations","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"pathId","required":true,"in":"path","description":"The unique ID of the path.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplacePathTranslationsBody"}}}},"responses":{"200":{"description":"Returns the updated path translations.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PathTranslationDTO"}}}}},"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 default lang of a path cannot be removed.","title":"Removing Default Lang","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["removingDefaultLang"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The default lang of a path cannot be unpublished.","title":"Unpublishing Default Lang","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["unpublishingDefaultLang"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"Each lang can only be translated once.","title":"Non Unique Lang Entries","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["nonUniqueLangEntries"]},"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 `pathId` does not correspond to any existing path.","content":{"application/json":{"schema":{"title":"Path Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathNotFound"]},"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":"Replace all translations for a path","tags":["Paths"]}},"/api/v2/paths/{pathId}/steps":{"put":{"description":"> 🔑\n>\n> Required OAuth scope: `paths:write`.\n\nReplaces all steps in the given path with the provided ones. Steps not included are removed.","operationId":"v2.paths.UpdateStepsController_updateSteps","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"pathId","required":true,"in":"path","description":"The unique ID of the path.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateStepsBody"}}}},"responses":{"200":{"description":"Returns the updated steps.","content":{"application/json":{"schema":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/AssessmentStepDTO"},{"$ref":"#/components/schemas/ClassroomStepDTO"},{"$ref":"#/components/schemas/CourseStepDTO"},{"$ref":"#/components/schemas/EmailStepDTO"},{"$ref":"#/components/schemas/PathStepDTO"},{"$ref":"#/components/schemas/ProgramStepDTO"},{"$ref":"#/components/schemas/SlackMessageStepDTO"},{"$ref":"#/components/schemas/TeamsMessageStepDTO"}]}}}}},"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 given `pathId` corresponds to an archived path.","title":"Path Archived","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathArchived"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"Some steps are duplicated in the payload.","title":"Duplicated Step","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["duplicatedStep"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The Teams or Slack message steps can only be used if an active integration is set up in the root group.","title":"Message Step Unavailable","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["messageStepUnavailable"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The condition and conditionOnDetailedStatus are inconsistent with each other.","title":"Message Step Inconsistent Scheduling Conditions","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["messageStepInconsistentSchedulingConditions"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The conditionOnDetailedStatus cannot be an empty array.","title":"Message Step Empty Detailed Conditions","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["messageStepEmptyDetailedConditions"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The conditionOnDetailedStatus contains duplicate elements.","title":"Message Step Duplicate Detailed Conditions","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["messageStepDuplicateDetailedConditions"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"Some steps are already assigned to another path.","title":"Step Already Assigned","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["stepAlreadyAssigned"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"A path cannot have only optional steps.","title":"Only Optional Steps","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["onlyOptionalSteps"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"Some path steps would create a cycle in the path structure.","title":"Path Cycle","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathCycle"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"Some steps are part of the path requirements.","title":"Step As A Requirement","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["stepAsARequirement"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"You cannot add a step which contains a classroom in a path which has re-enrollment activated in one of its sessions.","title":"No Classroom With Reenrollment","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["noClassroomWithReenrollment"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"Steps with examination option can only be used on a certifying path.","title":"Examination Without Certification","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["examinationWithoutCertification"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"MinScore option on an assessment step can only be used on an assessment with the `scored` scoreMode.","title":"Min Score With Wrong Score Mode","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["minScoreWithWrongScoreMode"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"Only one step in the path can have thresholds.","title":"Multiple Positioning Quiz Steps","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["multiplePositioningQuizSteps"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The step with thresholds must be the first non-message step in the path.","title":"Threshold Not On First Non Message Step","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["thresholdNotOnFirstNonMessageStep"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"Two or more thresholds share the same thresholdValue.","title":"Duplicate Threshold Value","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["duplicateThresholdValue"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"A step ID appears in more than one threshold's waivedStepIds.","title":"Duplicate Waived Step","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["duplicateWaivedStep"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"One or more step IDs in waivedStepIds do not correspond to a valid step in this path, or is a message step.","title":"Invalid Waived Step","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidWaivedStep"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `pathId` does not correspond to any existing path.","title":"Path Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given assessment step does not correspond to any existing assessment.","title":"Assessment Step Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["assessmentStepNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given classroom step does not correspond to any existing classroom.","title":"Classroom Step Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["classroomStepNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given course step does not correspond to any existing course.","title":"Course Step Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["courseStepNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given email step does not correspond to any existing email.","title":"Email Step Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["emailStepNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given path step does not correspond to any existing path.","title":"Path Step Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pathStepNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given program step does not correspond to any existing program.","title":"Program Step Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["programStepNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given slackMessage step does not correspond to any existing slackMessage.","title":"Slack Message Step Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["slackMessageStepNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given teamsMessage step does not correspond to any existing teamsMessage.","title":"Teams Message Step Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["teamsMessageStepNotFound"]},"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":"Replace all steps","tags":["Paths"]}},"/api/v2/projects":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `projects:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 500 projects. For more information, see the [Pagination guide](doc:pagination).\n\nLists all live projects in your platform.","operationId":"v2.projects.GetProjectsController_getProjects","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}}],"responses":{"200":{"description":"Returns one page of 500 projects.","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":{"$ref":"#/components/schemas/ProjectDTO"}}}}},"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 projects","tags":["Projects"]}},"/api/v2/skills/powers":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `skillsPowers:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 500 powers. For more information, see the [Pagination guide](doc:pagination).\n\nLists all the powers.","operationId":"v2.skills.GetPowersController_getPowers","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"skillId","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **skillId** property with LHS bracket notation.\n\nExpected value format is a string.","schema":{"properties":{"eq":{"type":"string","description":"Filter on values equal to the given one","example":"loremIpsum"},"in":{"type":"array","description":"Filter on values including the given ones","items":{"type":"string","example":"loremIpsum"}}}}},{"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 (`toAssess`, `pendingValidation`, `validated`).","schema":{"properties":{"eq":{"type":"string","description":"Filter on values equal to the given one","example":"toAssess","enum":["toAssess","pendingValidation","validated"]},"ne":{"type":"string","description":"Filter on values not equal to the given one","example":"toAssess","enum":["toAssess","pendingValidation","validated"]}}}},{"name":"userId","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **userId** property with LHS bracket notation.\n\nExpected value format is a valid ID (24 digits or letters).","schema":{"properties":{"eq":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"Filter on values equal to the given one","example":"507f1f77bcf86cd799439011"},"in":{"type":"array","description":"Filter on values including the given ones","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011"}}}}}],"responses":{"200":{"description":"Returns one page of 500 powers.","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":{"$ref":"#/components/schemas/PowerDTO"}}}}},"400":{"description":"The skill solution is not enabled.","content":{"application/json":{"schema":{"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 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 the powers","tags":["Skills"]}},"/api/v2/skills":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `skills:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 500 skills. For more information, see the [Pagination guide](doc:pagination).\n\nLists all skills in your platform.","operationId":"v2.skills.GetSkillsController_getSkills","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"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 (`archived`, `published`).","schema":{"properties":{"eq":{"type":"string","description":"Filter on values equal to the given one","example":"archived","enum":["archived","published"]},"ne":{"type":"string","description":"Filter on values not equal to the given one","example":"archived","enum":["archived","published"]},"in":{"type":"array","description":"Filter on values including the given ones","items":{"type":"string","example":"archived","enum":["archived","published"]}},"nin":{"type":"array","description":"Filter on values excluding the given ones","items":{"type":"string","example":"archived","enum":["archived","published"]}}}}},{"name":"updatedAt","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **updatedAt** 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"}}}}],"responses":{"200":{"description":"Returns one page of 500 skills.","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":{"$ref":"#/components/schemas/SkillDTO"}}}}},"400":{"description":"The skill solution is not enabled.","content":{"application/json":{"schema":{"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 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 skills","tags":["Skills"]}},"/api/v2/skills/users/{userId}/jobs":{"put":{"description":"> 🔑\n>\n> Required OAuth scope: `skillsJobs:write`.\n\nReplaces all jobs for the given user with the provided ones. Jobs not included are removed.","operationId":"v2.skills.ReplaceUserJobsController_replaceUserJobs","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"userId","required":true,"in":"path","description":"The unique ID of a user.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceUserJobsBody"}}}},"responses":{"200":{"description":"Returns the current jobs of the user.","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}}}}},"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 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":"Job externalId not found.","title":"Job External Id Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["jobExternalIdNotFound"]},"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"]}}}},"404":{"description":"The given user does not correspond to any existing and non-deleted user.","content":{"application/json":{"schema":{"title":"User Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotFound"]},"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":"Replace all jobs for a user","tags":["Skills"]}},"/api/v2/tags":{"post":{"description":"> 🔑\n>\n> Required OAuth scope: `tags:write`.\n\nCreates a tag with the given properties.","operationId":"v2.tags.CreateTagController_createTag","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/TagUpdatableFields"}}}},"responses":{"201":{"description":"Returns the created tag.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagDTO"}}}},"400":{"description":"The given tag name belongs to another tag.","content":{"application/json":{"schema":{"title":"Tag Name Not Available","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["tagNameNotAvailable"]},"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 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":"Create a tag","tags":["Tags"]},"get":{"description":"> 🔑\n>\n> Required OAuth scope: `tags:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 5,000 tags. For more information, see the [Pagination guide](doc:pagination).\n\nLists all tags in your platform.","operationId":"v2.tags.GetTagsController_getTags","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"isMain","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **isMain** property with LHS bracket notation.\n\nExpected value format is a boolean (`true` or `false`).","schema":{"properties":{"eq":{"type":"boolean","description":"Filter on values equal to the given one","example":"true"}}}}],"responses":{"200":{"description":"Returns one page of 5000 tags.","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":{"$ref":"#/components/schemas/TagDTOWithSource"}}}}},"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 tags","tags":["Tags"]}},"/api/v2/tags/{tagId}":{"delete":{"description":"> 🔑\n>\n> Required OAuth scope: `tags:write`.\n\nDeletes a specific tag given its unique ID.","operationId":"v2.tags.DeleteTagController_deleteTag","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"tagId","required":true,"in":"path","description":"The unique ID of the tag.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"204":{"description":"Deletes a specific tag."},"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 `tagId` does not correspond to any existing tag.","content":{"application/json":{"schema":{"title":"Tag Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["tagNotFound"]},"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":"Delete a tag","tags":["Tags"]},"get":{"description":"> 🔑\n>\n> Required OAuth scope: `tags:read`.\n\nRetrieves a tag given its ID.","operationId":"v2.tags.GetTagController_getTag","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"tagId","required":true,"in":"path","description":"The unique ID of the tag.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"200":{"description":"Returns the details of the given tag.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagDTOWithSource"}}}},"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 `tagId` does not correspond to any existing tag.","content":{"application/json":{"schema":{"title":"Tag Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["tagNotFound"]},"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 tag","tags":["Tags"]},"put":{"description":"> 🔑\n>\n> Required OAuth scope: `tags:write`.\n\nReplaces an existing tag with the provided data. Fields not included in the payload remain unchanged.","operationId":"v2.tags.UpdateTagController_updateTag","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"tagId","required":true,"in":"path","description":"The unique ID of the tag.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagUpdatableFields"}}}},"responses":{"200":{"description":"Update the tag.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagDTO"}}}},"400":{"description":"The given tag name belongs to another tag.","content":{"application/json":{"schema":{"title":"Tag Name Not Available","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["tagNameNotAvailable"]},"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 `tagId` does not correspond to any existing tag.","content":{"application/json":{"schema":{"title":"Tag Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["tagNotFound"]},"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":"Replace a tag","tags":["Tags"]}},"/api/v2/users/{userId}/activate":{"put":{"description":"> 🔑\n>\n> Required OAuth scope: `users:write`.\n\nActivates a specific user given its unique ID.","operationId":"v2.users.ActivateUserController_activateUser","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"userId","required":true,"in":"path","description":"The unique ID of the user.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"200":{"description":"Returns the activated user.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserDTO"}}}},"400":{"description":"The given `userId` corresponds to a deleted user. Recreate the user first (using `POST /api/v2/users`) and then activate it.","content":{"application/json":{"schema":{"title":"User Deleted","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userDeleted"]},"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 `userId` does not correspond to any existing user.","content":{"application/json":{"schema":{"title":"User Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotFound"]},"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":"Activate a user","tags":["Users"]}},"/api/v2/users/{userId}/managers/{managerId}":{"post":{"description":"> 🔑\n>\n> Required OAuth scope: `users:write`.\n\nAdds a manager to a user.","operationId":"v2.users.AddManagerController_addManager","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"userId","required":true,"in":"path","description":"The unique ID of the user the manager will be added to.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"managerId","required":true,"in":"path","description":"The unique ID of the manager to be added.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"204":{"description":"Adds a manager to a user."},"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 given `userId` corresponds to a deleted user.","title":"User Deleted","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userDeleted"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `managerId` corresponds to a deleted user.","title":"Manager Deleted","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["managerDeleted"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `userId` does not correspond to any existing user.","title":"User Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `managerId` does not correspond to any existing user.","title":"Manager Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["managerNotFound"]},"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":"Add a manager to a user","tags":["Users"]},"delete":{"description":"> 🔑\n>\n> Required OAuth scope: `users:write`.\n\nRemoves a manager from a user.","operationId":"v2.users.DeleteManagerController_deleteManager","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"userId","required":true,"in":"path","description":"The unique ID of the user the manager will be removed from.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"managerId","required":true,"in":"path","description":"The unique ID of the manager to be removed.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"204":{"description":"Removes a manager from a user."},"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 given `userId` corresponds to a deleted user.","title":"User Deleted","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userDeleted"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The user corresponding to the given `userId` has no manager corresponding to the given `managerId`.","title":"Manager Not Assigned To User","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["managerNotAssignedToUser"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `userId` does not correspond to any existing user.","title":"User Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `managerId` does not correspond to any existing user.","title":"Manager Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["managerNotFound"]},"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":"Remove a manager from a user","tags":["Users"]}},"/api/v2/users/{userId}/custom-links":{"post":{"description":"> 🔑\n>\n> Required OAuth scope: `users:write`.\n\nCreates a custom user link for the given user.","operationId":"v2.users.CreateCustomUserLinkController_createCustomUserLink","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"userId","required":true,"in":"path","description":"The unique ID of the user.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCustomUserLinkRequestBody"}}}},"responses":{"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given user does not correspond to any existing and non-deleted user.","title":"User Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `customLinkId` does not match any existing custom link.","title":"Custom Link Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["customLinkNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}]}}}},"409":{"description":"The given `customLinkId` is already used by the given user.","content":{"application/json":{"schema":{"title":"Custom Link Already Used","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["customLinkAlreadyUsed"]},"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":"Create a custom user link","tags":["Users"]},"get":{"description":"> 🔑\n>\n> Required OAuth scope: `users:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 1,000 custom links. For more information, see the [Pagination guide](doc:pagination).\n\nLists all custom user links for a given user.","operationId":"v2.users.GetCustomUserLinksController_getCustomUserLinks","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"userId","required":true,"in":"path","description":"The unique ID of the user.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"200":{"description":"Returns one page of 1000 custom links.","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":{"$ref":"#/components/schemas/UserCustomLinkDTO"}}}}},"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 user does not correspond to any existing and non-deleted user.","content":{"application/json":{"schema":{"title":"User Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotFound"]},"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 custom user links for a user","tags":["Users"]}},"/api/v2/users":{"post":{"description":"> 🔑\n>\n> Required OAuth scope: `users:write`.\n\nCreates a new user account with the invited status. If a user with the same 'mail' or 'username' was previously deleted, this operation will restore their account to an invited status. \n\n If 'mail' is provided, the user receives an invitation email upon creation to activate their account, along with other emails. The account can also be activated via the 'Activate a user' endpoint. If 'sendInvitationEmail' is set to false, the user will not receive the invitation email, but may still receive other emails.","operationId":"v2.users.CreateUserController_createUser","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"sendInvitationEmail","required":false,"in":"query","description":"If true (or not provided), the invitation email is sent to the created user. If false, the invitation email is not sent.","schema":{"enum":["true","false"],"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InputUserDTO"}}}},"responses":{"200":{"description":"Returns the previously deleted user, who has been successfully restored to an invited status.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserDTO"}}}},"201":{"description":"Returns newly created invited user.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserDTO"}}}},"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 `analyst` group role is not available in this company.","title":"Analyst Unavailable","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["analystUnavailable"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given deactivation date must be set to a future date.","title":"Deactivation Date Invalid","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["deactivationDateInvalid"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"Mail and username match a different user each.","title":"Login Identifier Multiple Users Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["loginIdentifierMultipleUsersFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given mail is invalid.","title":"Mail Invalid","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["mailInvalid"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given input must contain a `mail` or a `username`.","title":"Mail And Username Undefined","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["mailAndUsernameUndefined"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given mail is already used.","title":"Mail Already Used","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["mailAlreadyUsed"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given mail is already used too many times.","title":"Mail Used Too Many Times","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["mailUsedTooManyTimes"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The user is not a member of the `primaryGroupId` group.","title":"Not Member Of Primary Group","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["notMemberOfPrimaryGroup"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given username is already used.","title":"Username Already Used","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["usernameAlreadyUsed"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The use of username for login is not allowed by your company.","title":"Username Not Allowed","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["usernameNotAllowed"]},"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 `groupId` does not correspond to any existing group.","content":{"application/json":{"schema":{"title":"Group Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["groupNotFound"]},"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":"Create an invited user","tags":["Users"]},"get":{"description":"> 🔑\n>\n> Required OAuth scope: `users:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 500 users. For more information, see the [Pagination guide](doc:pagination).\n\nLists all users in your platform.","operationId":"v2.users.GetUsersController_getUsers","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"mail","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **mail** property with LHS bracket notation.\n\nExpected value format is a string.","schema":{"properties":{"eq":{"type":"string","description":"Filter on values equal to the given one","example":"loremIpsum"},"ne":{"type":"string","description":"Filter on values not equal to the given one","example":"loremIpsum"},"in":{"type":"array","description":"Filter on values including the given ones","items":{"type":"string","example":"loremIpsum"}},"nin":{"type":"array","description":"Filter on values excluding the given ones","items":{"type":"string","example":"loremIpsum"}}}}},{"name":"username","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **username** property with LHS bracket notation.\n\nExpected value format is a string.","schema":{"properties":{"eq":{"type":"string","description":"Filter on values equal to the given one","example":"loremIpsum"},"ne":{"type":"string","description":"Filter on values not equal to the given one","example":"loremIpsum"},"in":{"type":"array","description":"Filter on values including the given ones","items":{"type":"string","example":"loremIpsum"}},"nin":{"type":"array","description":"Filter on values excluding the given ones","items":{"type":"string","example":"loremIpsum"}}}}},{"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 (`active`, `invited`, `deleted`).","schema":{"properties":{"eq":{"type":"string","description":"Filter on values equal to the given one","example":"active","enum":["active","invited","deleted"]},"ne":{"type":"string","description":"Filter on values not equal to the given one","example":"active","enum":["active","invited","deleted"]}}}}],"responses":{"200":{"description":"Returns one page of 500 users.","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":{"$ref":"#/components/schemas/UserDTO"}}}}},"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 users","tags":["Users"]}},"/api/v2/users/{userId}/certificates":{"post":{"description":"> 🔑\n>\n> Required OAuth scope: `users:write`.\n\nImports a certificate for a specific user given its unique ID.","operationId":"v2.users.CreateUserCertificateController_createUserCertificate","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"userId","required":true,"in":"path","description":"The unique ID of the user.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/InputExternalCertificateDTO"}}}},"responses":{"201":{"description":"Returns the created user's certificate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutputUserExternalCertificateDTO"}}}},"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 delivery date cannot be in the future.","title":"Delivery Date In Future","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["deliveryDateInFuture"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The expiry date cannot be before the delivery date.","title":"Expiry Date Before Delivery Date","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["expiryDateBeforeDeliveryDate"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The expiry date cannot be set if the related certificate outline has a validity period.","title":"Unexpected Expiry Date","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["unexpectedExpiryDate"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `certificateOutlineId` does not correspond to any existing certificate outline.","title":"Certificate Outline Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["certificateOutlineNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given user does not correspond to any existing and non-deleted user.","title":"User Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotFound"]},"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":"Import a certificate","tags":["Users"]},"get":{"description":"> 🔑\n>\n> Required OAuth scope: `users:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 1,000 certificates. For more information, see the [Pagination guide](doc:pagination).\n\nLists all certificates in your platform for a given user.","operationId":"v2.users.GetUserCertificatesController_getUserCertificates","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"userId","required":true,"in":"path","description":"The unique ID of the user.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"deliveryDate","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **deliveryDate** 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":"expirationDate","required":false,"in":"query","style":"deepObject","explode":true,"description":"Filter on **expirationDate** 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"}}}}],"responses":{"200":{"description":"Returns one page of 1000 certificates.","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/OutputUserExternalCertificateDTO"},{"$ref":"#/components/schemas/OutputUserPathCertificateDTO"}]}}}}},"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 `userId` does not correspond to any existing user.","content":{"application/json":{"schema":{"title":"User Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotFound"]},"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 certificates for a user","tags":["Users"]}},"/api/v2/users/{userId}/custom-links/{customUserLinkId}":{"delete":{"description":"> 🔑\n>\n> Required OAuth scope: `users:write`.\n\nDeletes a specific custom user link given its unique ID.","operationId":"v2.users.DeleteCustomUserLinkController_deleteCustomUserLink","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"userId","required":true,"in":"path","description":"The unique ID of the user.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"customUserLinkId","required":true,"in":"path","description":"The unique ID of the custom user link to be deleted.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"204":{"description":"Deletes a specific custom user link."},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given user does not correspond to any existing and non-deleted user.","title":"User Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `customUserLinkId` does not match any existing custom user link for this user.","title":"Custom User Link Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["customUserLinkNotFound"]},"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":"Delete a custom user link","tags":["Users"]},"put":{"description":"> 🔑\n>\n> Required OAuth scope: `users:write`.\n\nReplaces the custom user link with the provided data.","operationId":"v2.users.UpdateCustomUserLinkController_updateCustomUserLink","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"userId","required":true,"in":"path","description":"The unique ID of the user.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"customUserLinkId","required":true,"in":"path","description":"The unique ID of the custom user link to be updated.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCustomUserLinkRequestBody"}}}},"responses":{"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `userId` does not correspond to any existing user.","title":"User Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `customUserLinkId` does not match any existing custom user link for this user.","title":"Custom User Link Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["customUserLinkNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `customLinkId` does not match any existing custom link.","title":"Custom Link Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["customLinkNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]}]}}}},"409":{"description":"The given `customLinkId` is already used by the given user.","content":{"application/json":{"schema":{"title":"Custom Link Already Used","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["customLinkAlreadyUsed"]},"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":"Replace custom user links","tags":["Users"]}},"/api/v2/users/{userId}":{"delete":{"description":"> 🔑\n>\n> Required OAuth scope: `users:write`.\n\nDeletes a specific user given its unique ID.","operationId":"v2.users.DeleteUserController_deleteUser","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"userId","required":true,"in":"path","description":"The unique ID of the user.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"204":{"description":"Deletes a specific user."},"400":{"description":"The given `userId` corresponds to the company owner and cannot be deleted.","content":{"application/json":{"schema":{"title":"User Is Company Owner","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userIsCompanyOwner"]},"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 `userId` does not correspond to any existing user.","content":{"application/json":{"schema":{"title":"User Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotFound"]},"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":"Delete a user","tags":["Users"]},"get":{"description":"> 🔑\n>\n> Required OAuth scope: `users:read`.\n\nRetrieves the profile details of a specific user with their given ID.","operationId":"v2.users.GetUserController_getUser","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"userId","required":true,"in":"path","description":"The unique ID of the user.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"200":{"description":"Returns the profile details of the user.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserDTO"}}}},"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 `userId` does not correspond to any existing user.","content":{"application/json":{"schema":{"title":"User Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotFound"]},"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 user","tags":["Users"]},"patch":{"description":"> 🔑\n>\n> Required OAuth scope: `users:write`.\n\nEdits specific fields of an existing user. Fields not included in the request payload remain unchanged.","operationId":"v2.users.UpdateUserController_updateUser","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"userId","required":true,"in":"path","description":"The unique ID of the user.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserDTO"}}}},"responses":{"200":{"description":"Returns the updated user.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserDTO"}}}},"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 given deactivation date must be set to a future date.","title":"Deactivation Date Invalid","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["deactivationDateInvalid"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given media ID does not correspond to any existing image media.","title":"Media Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["mediaNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The field `toBeDeactivatedAt` cannot be updated on a deleted user.","title":"Invalid Update On Deleted User","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidUpdateOnDeletedUser"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"Changing the mail of a free trial user is not allowed.","title":"Mail Change Not Allowed For Free Trial","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["mailChangeNotAllowedForFreeTrial"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given mail is invalid.","title":"Mail Invalid","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["mailInvalid"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given mail is already used.","title":"Mail Already Used","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["mailAlreadyUsed"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The user is not a member of the `primaryGroupId` group.","title":"Not Member Of Primary Group","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["notMemberOfPrimaryGroup"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given username is already used.","title":"Username Already Used","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["usernameAlreadyUsed"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The use of username for login is not allowed by your company.","title":"Username Not Allowed","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["usernameNotAllowed"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"Proceeding with this request would make this user have no valid identifier (mail, username).","title":"User Should Have At Least One Valid Identifier","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userShouldHaveAtLeastOneValidIdentifier"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"Updating the deactivation date of the platform owner is not allowed.","title":"Owner Deactivation Not Allowed","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["ownerDeactivationNotAllowed"]},"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 `userId` does not correspond to any existing user.","content":{"application/json":{"schema":{"title":"User Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotFound"]},"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":"Edit a user","tags":["Users"]}},"/api/v2/users/{userId}/managers":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `users:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 1,000 manager IDs. For more information, see the [Pagination guide](doc:pagination).\n\nLists all the manager IDs for a given user.","operationId":"v2.users.GetManagersController_getManagers","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"userId","required":true,"in":"path","description":"The unique ID of the user.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"200":{"description":"Returns one page of 1000 manager IDs.","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":{"type":"string","format":"ObjectId","example":"507f1f77bcf86cd799439011"}}}}},"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 `userId` does not correspond to any existing user.","content":{"application/json":{"schema":{"title":"User Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotFound"]},"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 manager IDs for a user","tags":["Users"]}},"/api/v2/users/{userId}/subordinates":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `users:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 1,000 subordinate IDs. For more information, see the [Pagination guide](doc:pagination).\n\nLists all the subordinate IDs for a given user.","operationId":"v2.users.GetSubordinatesController_getSubordinates","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"userId","required":true,"in":"path","description":"The unique ID of the user.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"200":{"description":"Returns one page of 1000 subordinate IDs.","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":{"type":"string","format":"ObjectId","example":"507f1f77bcf86cd799439011"}}}}},"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 `userId` does not correspond to any existing user.","content":{"application/json":{"schema":{"title":"User Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotFound"]},"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 subordinate IDs for a user","tags":["Users"]}},"/api/v2/users/{userId}/custom-fields/values":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `users:read`.\n\nLists all custom field values for a given user.","operationId":"v2.users.GetUserCustomFieldValuesController_getUserCustomFieldValues","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"userId","required":true,"in":"path","description":"The unique ID of the user.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"200":{"description":"Returns all custom field values for the given user.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CustomFieldValueDTO"}}}}},"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 `userId` does not correspond to any existing user.","content":{"application/json":{"schema":{"title":"User Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotFound"]},"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 custom field values for a user","tags":["Users"]},"put":{"description":"> 🔑\n>\n> Required OAuth scope: `users:write`.\n\nReplaces a user custom fields values given its unique ID.","operationId":"v2.users.UpdateUserCustomFieldValuesController_updateUserCustomFieldValues","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"userId","required":true,"in":"path","description":"The unique ID of the user.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserCustomFieldValuesBody"}}}},"responses":{"200":{"description":"Returns the updated user custom values.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CustomFieldValueDTO"}}}}},"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 given body has a `customField` with an unauthorized value.","title":"Unauthorized Value","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["unauthorizedValue"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given body has a `customField` with invalid value type.","title":"Wrong Type Value","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["wrongTypeValue"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given body has multiple values for a single `customField`.","title":"Multiple Values For Single Custom Field","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["multipleValuesForSingleCustomField"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `userId` does not correspond to any existing user.","title":"User Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `customFieldId` does not correspond to any existing custom field.","title":"Custom Field Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["customFieldNotFound"]},"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":"Replace a user custom fields values","tags":["Users"]}},"/api/v2/users/{userId}/certificates/{certificateId}/pdf":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `users:read`.\n\nRetrieves a certificate PDF file given the user ID and certificate ID.","operationId":"v2.users.GetUserCertificateAsPdfController_getUserCertificateAsPdf","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"certificateId","required":true,"in":"path","description":"The unique ID of the certificate.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"userId","required":true,"in":"path","description":"The unique ID of the user.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"200":{"description":"PDF file of the certificate.","content":{"application/pdf":{"schema":{"type":"string","format":"binary"}}}},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `certificateId` does not correspond to any existing certificate.","title":"Certificate Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["certificateNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `userId` does not correspond to any existing user.","title":"User Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotFound"]},"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 certificate PDF file","tags":["Users"]}},"/api/v2/users/{userId}/roles":{"get":{"description":"> 🔑\n>\n> Required OAuth scope: `users:read`.\n\n> 📖\n>\n> This endpoint is paginated with a page size of 1,000 user membership. For more information, see the [Pagination guide](doc:pagination).\n\nLists all the memberships, sorted per group, of a specific user.","operationId":"v2.users.GetUserRolesInGroupsController_getUserRolesInGroups","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"userId","required":true,"in":"path","description":"The unique ID of the user.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"responses":{"200":{"description":"Returns one page of 1000 user membership.","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":{"$ref":"#/components/schemas/Membership"}}}}},"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 `userId` does not correspond to any existing user.","content":{"application/json":{"schema":{"title":"User Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotFound"]},"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 memberships of a user","tags":["Users"]}},"/api/v2/users/{userId}/pseudonymize":{"put":{"description":"> 🔑\n>\n> Required OAuth scope: `users:write`.\n\nRemoves all personal information from a previously deleted user. The first name, last name, email, and username are replaced with random, irreversible alphanumeric strings. Custom field values are deleted permanently. The user ID remains unchanged, so this is not full GDPR anonymization. If 'deleteExternalIds' is set to true, the user's external identifiers are deleted.","operationId":"v2.users.PseudonymizeUserController_pseudonymizeUser","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"userId","required":true,"in":"path","description":"The unique ID of the user.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"deleteExternalIds","required":false,"in":"query","description":"If true, user's external identifiers (identifier mappings for third-party platforms) are deleted. If false (or not provided), they are kept.","schema":{"enum":["true","false"],"type":"string"}}],"responses":{"200":{"description":"Returns the pseudonymized user.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserDTO"}}}},"400":{"description":"The given `userId` does not correspond to a deleted user.","content":{"application/json":{"schema":{"title":"User Not Deleted","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotDeleted"]},"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 `userId` does not correspond to any existing user.","content":{"application/json":{"schema":{"title":"User Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotFound"]},"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":"Pseudonymize user","tags":["Users"]}},"/api/v2/users/{userId}/password":{"put":{"description":"> 🔑\n>\n> Required OAuth scope: `users:write`.\n\nReplaces the password of a user with the provided data. If 'passwordMustBeChanged' is set to true, the user will be forced to change their password on the next login.","operationId":"v2.users.ReplacePasswordController_replacePassword","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"userId","required":true,"in":"path","description":"The unique ID of the user.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplacePasswordBody"}}}},"responses":{"204":{"description":"Replaces the password of a user with the provided data."},"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 given `userId` corresponds to a deleted user.","title":"User Deleted","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userDeleted"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given password does not meet the password restrictions set by your company.","title":"Password Invalid","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["passwordInvalid"]},"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 `userId` does not correspond to any existing user.","content":{"application/json":{"schema":{"title":"User Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotFound"]},"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":"Replace the password of a user","tags":["Users"]}},"/api/v2/users/{userId}/certificates/privacy-level":{"patch":{"description":"> 🔑\n>\n> Required OAuth scope: `users:write`.\n\nUpdates the privacy level of the specified certificates belonging to the given user.","operationId":"v2.users.UpdateUserCertificatesPrivacyLevelController_updateUserCertificatesPrivacyLevel","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"userId","required":true,"in":"path","description":"The unique ID of the user.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserCertificatesPrivacyLevelBody"}}}},"responses":{"200":{"description":"Successfully updated the privacy level of the certificates.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmptyResponse"}}}},"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 requested certificate privacy level is not allowed by the company settings.","title":"Privacy Level Not Allowed By Company Settings","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["privacyLevelNotAllowedByCompanySettings"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"Too many certificates to update.","title":"Too Many Certificates To Update","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["tooManyCertificatesToUpdate"]},"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 server cannot find the requested resource.","content":{"application/json":{"schema":{"oneOf":[{"description":"The given `userId` does not correspond to any existing user.","title":"User Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotFound"]},"message":{"type":"string","example":"A human-readable message to help with debugging."}},"required":["code","message"]}},"required":["error"]},{"description":"The given `certificateId` does not correspond to any existing certificate.","title":"Certificate Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["certificateNotFound"]},"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":"Update certificates privacy level","tags":["Users"]}},"/api/v2/users/{userId}/media":{"post":{"description":"> 🔑\n>\n> Required OAuth scope: `users:write`.\n\nUploads a profile image to a user.","operationId":"v2.users.UploadUserMediaController_uploadUserMedia","parameters":[{"name":"360-api-version","in":"header","description":"The version of the API.","required":true,"schema":{"type":"string","enum":["v2.0"]}},{"name":"userId","required":true,"in":"path","description":"The unique ID of the user.","schema":{"format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","example":"507f1f77bcf86cd799439011","type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/UploadUserMediaBodyDTO"}}}},"responses":{"200":{"description":"Returns the updated user.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserDTO"}}}},"400":{"description":"The provided file is not a valid image or exceeds size limits.","content":{"application/json":{"schema":{"title":"Invalid File","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalidFile"]},"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 `userId` does not correspond to any existing user.","content":{"application/json":{"schema":{"title":"User Not Found","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["userNotFound"]},"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":"Upload user media","tags":["Users"]}}},"info":{"title":"Core 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":{"InputCertificateOutlineDTO":{"title":"Input Certificate Outline","type":"object","properties":{"title":{"type":"string","description":"The title of the certificate outline.","example":"Certificate of Completion","minLength":1},"groupId":{"type":"string","description":"The unique ID of the group this outline belongs to.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"bodyHtml":{"type":"string","description":"The content of the certificate outline. Can contain tags which will dynamically be replaced when delivering a certificate. Available tags are: [person_first_name], [person_last_name], [person_email], [person_organization], [authenticity_verification_url], [credits_acquired], [delivery_date], [path_session_title], [path_title], [reference_number], [score_reached], [start_date], [time_spent], [validity_period].","example":"<p>This certificate ensures [person_first_name] [person_last_name] received a certificate on [path_title] <br> This certificate was delivered by Training Organization <br> Contact: training@organization.com </p>","minLength":1},"authenticityVerificationUrlWording":{"type":"string","description":"A wording to display the authenticity verification URL. If set, it needs to contain [authenticity_verification_url] tag.","example":"You can also find this document on the Internet at the following address: [authenticity_verification_url]"},"backgroundImageId":{"type":"string","description":"The media unique ID of the background image for this outline.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"logoImageId":{"type":"string","description":"The media unique ID of the logo to display at the top of the certificate.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"referenceNumberWording":{"type":"string","description":"A wording to display the reference number. If set, it needs to contain [reference_number] tag.","example":"Reference number: [reference_number]"},"subtitle":{"type":"string","description":"The subtitle of the certificate outline.","example":"Certificate topic","minLength":1},"validityPeriod":{"type":"integer","minimum":1,"description":"Number of months of validity of the certificate."},"validityPeriodWording":{"type":"string","description":"A wording to display the validity period. If set, it needs to contain [validity_period] tag.","example":"This certificate is valid for a period of [validity_period] months"}},"required":["title","groupId","bodyHtml"]},"CertificateOutlineResponseDTO":{"title":"Certificate Outline Response","type":"object","properties":{"title":{"type":"string","description":"The title of the certificate outline.","example":"Certificate of Completion","minLength":1},"groupId":{"type":"string","description":"The unique ID of the group this outline belongs to.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"_id":{"type":"string","description":"The unique ID of the certificate outline.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"createdAt":{"format":"date-time","type":"string","description":"The date and time when the certificate outline was created, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."}},"required":["title","groupId","_id","createdAt"]},"PatchCertificateOutlineDTO":{"title":"Patch Certificate Outline","type":"object","properties":{"title":{"type":"string","description":"The title of the certificate outline.","example":"Certificate of Completion","minLength":1},"groupId":{"type":"string","description":"The unique ID of the group this outline belongs to.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"bodyHtml":{"type":"string","description":"The content of the certificate outline. Can contain tags which will dynamically be replaced when delivering a certificate. Available tags are: [person_first_name], [person_last_name], [person_email], [person_organization], [authenticity_verification_url], [credits_acquired], [delivery_date], [path_session_title], [path_title], [reference_number], [score_reached], [start_date], [time_spent], [validity_period].","example":"<p>This certificate ensures [person_first_name] [person_last_name] received a certificate on [path_title] <br> This certificate was delivered by Training Organization <br> Contact: training@organization.com </p>","minLength":1},"authenticityVerificationUrlWording":{"type":"string","nullable":true,"description":"A wording to display the authenticity verification URL. If set, it needs to contain [authenticity_verification_url] tag.","example":"You can also find this document on the Internet at the following address: [authenticity_verification_url]"},"backgroundImageId":{"type":"string","nullable":true,"description":"The media unique ID of the background image for this outline.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"logoImageId":{"type":"string","nullable":true,"description":"The media unique ID of the logo to display at the top of the certificate.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"referenceNumberWording":{"type":"string","nullable":true,"description":"A wording to display the reference number. If set, it needs to contain [reference_number] tag.","example":"Reference number: [reference_number]"},"subtitle":{"type":"string","nullable":true,"description":"The subtitle of the certificate outline.","example":"Certificate topic","minLength":1},"validityPeriod":{"type":"integer","minimum":1,"nullable":true,"description":"Number of months of validity of the certificate."},"validityPeriodWording":{"type":"string","nullable":true,"description":"A wording to display the validity period. If set, it needs to contain [validity_period] tag.","example":"This certificate is valid for a period of [validity_period] months"}}},"InputClassroomDTO":{"title":"Input Classroom","type":"object","properties":{"groupId":{"type":"string","description":"The unique ID of the creation group of the classroom.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"name":{"type":"string","description":"The title of the classroom.","example":"Security Conference","minLength":1},"mediaIds":{"maxItems":20,"description":"The list of unique IDs of the medias assigned to this classroom. These attachments will be sent by email to registered learners.","example":["507f1f77bcf86cd799439011"],"type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}},"message":{"type":"string","description":"Complementary information about the classroom. This information will be sent by email to registered learners.","example":"Be sure to have read all the attachments before the conference.","minLength":1},"trainingObjective":{"type":"string","description":"The training objective of the classroom.","example":"Learn the security rules of the company.","minLength":1}},"required":["groupId","name"]},"ClassroomDTO":{"title":"Classroom","type":"object","properties":{"groupId":{"type":"string","description":"The unique ID of the creation group of the classroom.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"_id":{"type":"string","description":"The unique ID of the classroom.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"createdAt":{"format":"date-time","type":"string","description":"The date at which the classroom was created, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"name":{"type":"string","description":"The title of the classroom.","example":"Security Conference"},"mediaIds":{"maxItems":20,"description":"The list of unique IDs of the medias assigned to this classroom. These attachments will be sent by email to registered learners.","example":["507f1f77bcf86cd799439011"],"type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}},"message":{"type":"string","description":"Complementary information about the classroom. This information will be sent by email to registered learners.","example":"Be sure to have read all the attachments before the conference."},"modifiedAt":{"format":"date-time","type":"string","description":"The date at which the classroom was last modified, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"trainingObjective":{"type":"string","description":"The training objective of the classroom.","example":"Learn the security rules of the company."}},"required":["groupId","_id","name","mediaIds"]},"DisabledSelfRegistrationDTO":{"title":"Disabled Self Registration","type":"object","properties":{"enabled":{"type":"boolean","description":"True if self-registration enabled for this classroom slot, false otherwise."},"cutoffDate":{"format":"date-time","type":"string","description":"The cutoff date for self-registrations (only if `selfRegistration.enabled: true`), in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."}},"required":["enabled"]},"EnabledSelfRegistrationDTO":{"title":"Enabled Self Registration","type":"object","properties":{"enabled":{"type":"boolean","description":"True if self-registration enabled for this classroom slot, false otherwise."},"cutoffDate":{"format":"date-time","type":"string","description":"The cutoff date for self-registrations (only if `selfRegistration.enabled: true`), in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."}},"required":["enabled","cutoffDate"]},"PathContextDTO":{"title":"Path Context","type":"object","properties":{"_id":{"type":"string","description":"The unique identifier of the entity the classroom slot was created in. For instance the path session ID.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"type":{"type":"string","enum":["path"]}},"required":["_id","type"]},"InputClassroomSlotDTO":{"title":"Input Classroom Slot","type":"object","properties":{"startDate":{"format":"date-time","type":"string","description":"The date and time when the classroom slot starts (must be before `endDate`), in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"endDate":{"format":"date-time","type":"string","description":"The date and time when the classroom slot ends (must be after `startDate`), in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"reportedDuration":{"type":"number","description":"The reported duration of the slot, in hours.","example":1},"selfRegistration":{"oneOf":[{"$ref":"#/components/schemas/DisabledSelfRegistrationDTO"},{"$ref":"#/components/schemas/EnabledSelfRegistrationDTO"}],"description":"The self registration settings of the classroom slots."},"virtual":{"type":"boolean","description":"True when the slot is a virtual classroom, false otherwise."},"maxCapacity":{"type":"number","description":"The maximum number of registrations allowed in the slot. Learners won't be able to self-enroll on this slot if this number is reached.","example":10},"name":{"type":"string","description":"The title of the classroom slot.","example":"My awesome classroom slot","minLength":1},"context":{"description":"The path session context of the classroom slot.","allOf":[{"$ref":"#/components/schemas/PathContextDTO"}]},"location":{"type":"string","description":"The location of the classroom slot, being either a URL or a physical address.","example":"https://meet.google.com/kdf-zkfz-hje","minLength":1},"trainerIds":{"maxItems":20,"description":"The list of unique user IDs of trainers in charge of the slot (users must exist in the company).","example":["507f1f77bcf86cd799439011"],"type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}},"mediaIds":{"maxItems":20,"description":"The list of medias unique identifiers linked to the classroom slot.","example":["507f1f77bcf86cd799439011"],"type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}},"timezone":{"type":"string","description":"The timezone of the slot in the format `Continent[/Country]/City` defined by [TZ database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones).","example":"Europe/Paris","minLength":1},"authorId":{"type":"string","description":"The unique ID of the user who authored the slot (must exist in the company).","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"withWaitlist":{"type":"boolean","description":"Activate or deactivate the waitlist for the slot."}},"required":["startDate","endDate","reportedDuration","selfRegistration","virtual","name","context","location"]},"PathClassroomSlotDTO":{"title":"Path Classroom Slot","type":"object","properties":{"startDate":{"format":"date-time","type":"string","description":"The date and time when the classroom slot starts (must be before `endDate`), in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"endDate":{"format":"date-time","type":"string","description":"The date and time when the classroom slot ends (must be after `startDate`), in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"reportedDuration":{"type":"number","description":"The reported duration of the slot, in hours.","example":1},"selfRegistration":{"oneOf":[{"$ref":"#/components/schemas/DisabledSelfRegistrationDTO"},{"$ref":"#/components/schemas/EnabledSelfRegistrationDTO"}],"description":"The self registration settings of the classroom slots."},"virtual":{"type":"boolean","description":"True when the slot is a virtual classroom, false otherwise."},"maxCapacity":{"type":"number","description":"The maximum number of registrations allowed in the slot. Learners won't be able to self-enroll on this slot if this number is reached.","example":10},"_id":{"type":"string","description":"The unique ID of the classroom slot.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"classroomId":{"type":"string","description":"The unique ID of the classroom the slot is linked to.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"createdAt":{"format":"date-time","type":"string","description":"The date and time when the classroom slot has been created, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"name":{"type":"string","description":"The title of the classroom slot.","example":"My awesome classroom slot"},"location":{"type":"string","description":"The location of the classroom slot, being either a URL or a physical address.","example":"https://meet.google.com/kdf-zkfz-hje"},"trainerIds":{"description":"The list of unique user IDs of trainers in charge of the slot (users must exist in the company).","example":["507f1f77bcf86cd799439011"],"type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}},"mediaIds":{"description":"The list of medias unique identifiers linked to the classroom slot.","example":["507f1f77bcf86cd799439011"],"type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}},"modifiedAt":{"format":"date-time","type":"string","description":"The date and time when the classroom slot has been updated, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"timezone":{"type":"string","description":"The timezone of the slot in the format `Continent[/Country]/City` defined by [TZ database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones).","example":"Europe/Paris"},"webinarProvider":{"type":"string","description":"If the classroom is setup through a webinar integration, contains the name of the integration.","example":"Microsoft Teams"},"context":{"description":"The path session context of the classroom slot.","allOf":[{"$ref":"#/components/schemas/PathContextDTO"}]}},"required":["startDate","endDate","reportedDuration","selfRegistration","virtual","_id","classroomId","name","location","trainerIds","mediaIds","context"]},"RsvpDTO":{"title":"Rsvp","type":"object","properties":{"going":{"type":"boolean","description":"The rsvp response for this registration."},"lastUpdatedAt":{"format":"date-time","type":"string","description":"The date of rsvp last update for this registration, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."}},"required":["going","lastUpdatedAt"]},"SlotRegistrationWithClassroomAndSlotIdDTO":{"title":"Slot Registration With Classroom And Slot Id","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the classroom slot registration.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"archivedAt":{"format":"date-time","type":"string","description":"The date and time when the slot registration was archived from the path session, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"userId":{"type":"string","description":"The unique ID of the registered user.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"attendanceDuration":{"type":"number","description":"If the classroom is setup through a webinar integration, contains the reported duration of the attendance in milliseconds.","example":60},"createdAt":{"format":"date-time","type":"string","description":"The date and time when the slot registration has been created, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"hasAttended":{"type":"boolean","description":"The attendance status of the registration."},"modifiedAt":{"format":"date-time","type":"string","description":"The date and time when the slot registration has been modified, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"pathId":{"type":"string","description":"The ID of the path in which this registration was made (if any).","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"rsvp":{"description":"The rsvp for this registration.","allOf":[{"$ref":"#/components/schemas/RsvpDTO"}]},"status":{"type":"string","enum":["archived","published"],"description":"The status of the slot registration."},"classroomSlotId":{"type":"string","description":"The unique ID of the classroom slot.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"classroomId":{"type":"string","description":"The unique ID of the classroom.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"}},"required":["_id","userId","status","classroomSlotId","classroomId"]},"SlotRegistrationWithClassroomSlotIdDTO":{"title":"Slot Registration With Classroom Slot Id","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the classroom slot registration.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"archivedAt":{"format":"date-time","type":"string","description":"The date and time when the slot registration was archived from the path session, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"userId":{"type":"string","description":"The unique ID of the registered user.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"attendanceDuration":{"type":"number","description":"If the classroom is setup through a webinar integration, contains the reported duration of the attendance in milliseconds.","example":60},"createdAt":{"format":"date-time","type":"string","description":"The date and time when the slot registration has been created, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"hasAttended":{"type":"boolean","description":"The attendance status of the registration."},"modifiedAt":{"format":"date-time","type":"string","description":"The date and time when the slot registration has been modified, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"pathId":{"type":"string","description":"The ID of the path in which this registration was made (if any).","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"rsvp":{"description":"The rsvp for this registration.","allOf":[{"$ref":"#/components/schemas/RsvpDTO"}]},"status":{"type":"string","enum":["archived","published"],"description":"The status of the slot registration."},"classroomSlotId":{"type":"string","description":"The unique ID of the classroom slot.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"}},"required":["_id","userId","status","classroomSlotId"]},"ProgramContextDTO":{"title":"Program Context","type":"object","properties":{"_id":{"type":"string","description":"The unique identifier of the entity the classroom slot was created in. For instance the path session ID.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"type":{"type":"string","enum":["program"]}},"required":["_id","type"]},"StandaloneContextDTO":{"title":"Standalone Context","type":"object","properties":{"_id":{"type":"string","description":"The unique identifier of the entity the classroom slot was created in. For instance the path session ID.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"type":{"type":"string","enum":["standalone"]}},"required":["_id","type"]},"ClassroomSlotDTO":{"title":"Classroom Slot","type":"object","properties":{"startDate":{"format":"date-time","type":"string","description":"The date and time when the classroom slot starts (must be before `endDate`), in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"endDate":{"format":"date-time","type":"string","description":"The date and time when the classroom slot ends (must be after `startDate`), in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"reportedDuration":{"type":"number","description":"The reported duration of the slot, in hours.","example":1},"selfRegistration":{"oneOf":[{"$ref":"#/components/schemas/DisabledSelfRegistrationDTO"},{"$ref":"#/components/schemas/EnabledSelfRegistrationDTO"}],"description":"The self registration settings of the classroom slots."},"virtual":{"type":"boolean","description":"True when the slot is a virtual classroom, false otherwise."},"maxCapacity":{"type":"number","description":"The maximum number of registrations allowed in the slot. Learners won't be able to self-enroll on this slot if this number is reached.","example":10},"_id":{"type":"string","description":"The unique ID of the classroom slot.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"classroomId":{"type":"string","description":"The unique ID of the classroom the slot is linked to.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"createdAt":{"format":"date-time","type":"string","description":"The date and time when the classroom slot has been created, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"name":{"type":"string","description":"The title of the classroom slot.","example":"My awesome classroom slot"},"location":{"type":"string","description":"The location of the classroom slot, being either a URL or a physical address.","example":"https://meet.google.com/kdf-zkfz-hje"},"trainerIds":{"description":"The list of unique user IDs of trainers in charge of the slot (users must exist in the company).","example":["507f1f77bcf86cd799439011"],"type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}},"mediaIds":{"description":"The list of medias unique identifiers linked to the classroom slot.","example":["507f1f77bcf86cd799439011"],"type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}},"modifiedAt":{"format":"date-time","type":"string","description":"The date and time when the classroom slot has been updated, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"timezone":{"type":"string","description":"The timezone of the slot in the format `Continent[/Country]/City` defined by [TZ database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones).","example":"Europe/Paris"},"webinarProvider":{"type":"string","description":"If the classroom is setup through a webinar integration, contains the name of the integration.","example":"Microsoft Teams"},"context":{"oneOf":[{"$ref":"#/components/schemas/PathContextDTO"},{"$ref":"#/components/schemas/ProgramContextDTO"},{"$ref":"#/components/schemas/StandaloneContextDTO"}],"description":"The context of creation the classroom slot."}},"required":["startDate","endDate","reportedDuration","selfRegistration","virtual","_id","classroomId","name","location","trainerIds","mediaIds","context"]},"PatchClassroomDTO":{"title":"Patch Classroom","type":"object","properties":{"name":{"type":"string","description":"The title of the classroom.","example":"Security Conference","minLength":1},"mediaIds":{"maxItems":20,"description":"The list of unique IDs of the medias assigned to this classroom. These attachments will be sent by email to registered learners.","example":["507f1f77bcf86cd799439011"],"type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}},"message":{"type":"string","nullable":true,"description":"Complementary information about the classroom. This information will be sent by email to registered learners.","example":"Be sure to have read all the attachments before the conference.","minLength":1},"trainingObjective":{"type":"string","nullable":true,"description":"The training objective of the classroom.","example":"Learn the security rules of the company.","minLength":1}}},"NotificationDTO":{"title":"Notification","type":"object","properties":{"enabled":{"type":"boolean","description":"True to send an update notification by email to registered learners, false otherwise."},"message":{"type":"string","description":"The message to include in the notification email, has no effect if `notification.enabled:false`.","minLength":1}}},"PatchClassroomSlotDTO":{"title":"Patch Classroom Slot","type":"object","properties":{"name":{"type":"string","description":"The title of the classroom slot.","example":"My awesome classroom slot","minLength":1},"startDate":{"format":"date-time","type":"string","description":"The date and time when the classroom slot starts (must be before `endDate`), in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"endDate":{"format":"date-time","type":"string","description":"The date and time when the classroom slot ends (must be after `startDate`), in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"location":{"type":"string","description":"The location of the classroom slot, being either a URL or a physical address.","example":"https://meet.google.com/kdf-zkfz-hje","minLength":1},"maxCapacity":{"type":"number","description":"The maximum number of registrations allowed in the slot. Learners won't be able to self-enroll on this slot if this number is reached.","example":10},"notification":{"description":"The notification configuration.","allOf":[{"$ref":"#/components/schemas/NotificationDTO"}]},"reportedDuration":{"type":"number","description":"The reported duration of the slot, in hours.","example":1},"trainerIds":{"maxItems":20,"description":"The list of unique user IDs of trainers in charge of the slot (users must exist in the company).","example":["507f1f77bcf86cd799439011"],"type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}},"timezone":{"type":"string","description":"The timezone of the slot in the format `Continent[/Country]/City` defined by [TZ database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones).","example":"Europe/Paris","minLength":1},"virtual":{"type":"boolean","description":"True when the slot is a virtual classroom, false otherwise."},"withWaitlist":{"type":"boolean","description":"Activate or deactivate the waitlist for the slot."}}},"PersonalizedFields":{"title":"Personalized Fields","type":"object","properties":{"organizationName":{"type":"string","description":"The name of your organization.","example":"360Learning","minLength":1},"organizationLogoId":{"type":"string","description":"The unique id of the logo of your organization as a media of type image.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"}}},"ClosedAttendanceSheetDTO":{"title":"Closed Attendance Sheet","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the attendance sheet.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"name":{"type":"string","description":"The title of the attendance sheet.","example":"First day afternoon"},"personalizedFields":{"description":"Customization options for the attendance sheet.","allOf":[{"$ref":"#/components/schemas/PersonalizedFields"}]},"status":{"type":"string","enum":["closed","signed"],"description":"The status of the attendance sheet."},"checkInCode":{"type":"string","description":"The code to be used by learners to check in.","example":"1234"}},"required":["_id","name","status"]},"OpenedAttendanceSheetDTO":{"title":"Opened Attendance Sheet","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the attendance sheet.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"name":{"type":"string","description":"The title of the attendance sheet.","example":"First day afternoon"},"personalizedFields":{"description":"Customization options for the attendance sheet.","allOf":[{"$ref":"#/components/schemas/PersonalizedFields"}]},"status":{"type":"string","enum":["adjustment","open"],"description":"The status of the attendance sheet."},"checkInCode":{"type":"string","description":"The code to be used by learners to check in.","example":"1234"}},"required":["_id","name","status","checkInCode"]},"InputAttendanceSheetDTO":{"title":"Input Attendance Sheet","type":"object","properties":{"name":{"type":"string","description":"The title of the attendance sheet.","example":"First day afternoon","minLength":1}},"required":["name"]},"AttendanceDTO":{"title":"Attendance","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the attendance.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"userId":{"type":"string","description":"The unique ID of the user.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"firstName":{"type":"string","description":"The first name of the user on the attendance sheet.","example":"John"},"lastName":{"type":"string","description":"The last name of the user on the attendance sheet.","example":"Smith"},"status":{"type":"string","enum":["absent","attendancePending","present","signaturePending"],"description":"The status of the user attendance."}},"required":["_id","userId","firstName","lastName","status"]},"ClassroomSlotWaitlistRequestDTO":{"title":"Classroom Slot Waitlist Request","type":"object","properties":{"userId":{"type":"string","description":"The ID of the user who made the waitlist request.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"requestedAt":{"format":"date-time","type":"string","description":"The date and time when the addition to the waitlist was requested, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."}},"required":["userId","requestedAt"]},"SlotRegistrationDTO":{"title":"Slot Registration","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the classroom slot registration.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"archivedAt":{"format":"date-time","type":"string","description":"The date and time when the slot registration was archived from the path session, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"userId":{"type":"string","description":"The unique ID of the registered user.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"attendanceDuration":{"type":"number","description":"If the classroom is setup through a webinar integration, contains the reported duration of the attendance in milliseconds.","example":60},"createdAt":{"format":"date-time","type":"string","description":"The date and time when the slot registration has been created, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"hasAttended":{"type":"boolean","description":"The attendance status of the registration."},"modifiedAt":{"format":"date-time","type":"string","description":"The date and time when the slot registration has been modified, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"pathId":{"type":"string","description":"The ID of the path in which this registration was made (if any).","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"rsvp":{"description":"The rsvp for this registration.","allOf":[{"$ref":"#/components/schemas/RsvpDTO"}]},"status":{"type":"string","enum":["archived","published"],"description":"The status of the slot registration."}},"required":["_id","userId","status"]},"InputRsvpDTO":{"title":"Input Rsvp","type":"object","properties":{"going":{"type":"boolean","description":"The rsvp response for this registration."}},"required":["going"]},"PatchSlotRegistrationDTO":{"title":"Patch Slot Registration","type":"object","properties":{"rsvp":{"nullable":true,"description":"The rsvp for this registration.","allOf":[{"$ref":"#/components/schemas/InputRsvpDTO"}]}}},"ArchiveCourseBody":{"title":"Archive Course Body","type":"object","properties":{"archived":{"type":"boolean","description":"If true, archives the course. If false, restores the course."}},"required":["archived"]},"CourseTranslatedFields":{"title":"Course Translated Fields","type":"object","properties":{"name":{"type":"string","description":"The translation of the field `name` for this language.","example":"Accueil des employés"},"description":{"type":"string","description":"The translation of the field `description` for this language.","example":"Ce module vous apprend à intégrer un nouveau collaborateur !"}}},"CourseTranslationDTO":{"title":"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"},"published":{"type":"boolean","description":"True if the translation is available to users in this language; false otherwise."},"translatorIds":{"description":"The list of unique IDs of the translators assigned to this language.","example":["507f1f77bcf86cd799439011"],"type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}},"translatedFields":{"description":"The translations of the course fields for this language.","allOf":[{"$ref":"#/components/schemas/CourseTranslatedFields"}]}},"required":["lang","published","translatorIds","translatedFields"]},"CourseDTO":{"title":"Course","type":"object","properties":{"name":{"type":"string","description":"The title of the course.","example":"Employee Onboarding","minLength":1},"sourceLang":{"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 course is created."},"authorId":{"type":"string","description":"The unique ID of the author of the course.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"groupId":{"type":"string","description":"The unique ID of the group where the course was created.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"coAuthorIds":{"description":"The list of unique IDs of the co-authors of the course.","example":["507f1f77bcf86cd799439011"],"type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}},"description":{"type":"string","description":"The description of the course.","example":"This course will teach you how to onboard a new employee!"},"duration":{"type":"number","description":"An estimate of the time required to complete the course. The expected value is a number of minutes."},"_id":{"type":"string","description":"The unique ID of the course.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"createdAt":{"format":"date-time","type":"string","description":"The date and time when the course was created, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"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 in which the course is displayed when the learner’s profile language is not available."},"modifiedAt":{"format":"date-time","type":"string","description":"The date and time when the course was last updated, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC)). Note that when translations are updated or when the course is archived/restored, its modification date does not change."},"status":{"type":"string","enum":["archived","deleted","published"],"description":"The status of the course."},"translations":{"description":"The different translations available for the course.","type":"array","items":{"$ref":"#/components/schemas/CourseTranslationDTO"}},"type":{"type":"string","enum":["elearning standard","external","native"],"description":"The type of the course."},"externalPlatform":{"type":"string","description":"The external platform where the course comes from. It is only set if the course has the `external` type.","example":"Udemy"},"currentVersionNumber":{"type":"integer","description":"The current version of the course (most recent release)."},"collaborativeLearning":{"type":"boolean","description":"A boolean indicating whether collaborative learning is enabled or not."}},"required":["name","sourceLang","authorId","groupId","coAuthorIds","_id","createdAt","defaultLang","modifiedAt","status","translations","type"]},"CreateELearningStandardCourseBody":{"title":"Create E Learning Standard Course Body","type":"object","properties":{"name":{"type":"string","description":"The title of the course.","example":"Employee Onboarding","minLength":1},"sourceLang":{"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 course is created."},"authorId":{"type":"string","description":"The unique ID of the author of the course.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"groupId":{"type":"string","description":"The unique ID of the group where the course was created.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"coAuthorIds":{"description":"The list of unique IDs of the co-authors of the course.","example":["507f1f77bcf86cd799439011"],"type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}},"description":{"type":"string","description":"The description of the course.","example":"This course will teach you how to onboard a new employee!"},"duration":{"type":"string","description":"An estimate of the time required to complete the course. The expected value is a number of minutes."},"estdFile":{"type":"string","format":"binary","description":"The eLearning standard package file to use as the course content. Supported media types: application/x-zip-compressed, application/zip."},"coverPicture":{"type":"string","format":"binary","description":"The picture file to be used as the course cover picture. Supported media types: image/bmp, image/gif, image/heic, image/jpeg, image/png, image/svg+xml, image/webp."}},"required":["name","sourceLang","authorId","groupId","estdFile"]},"GenerateFromPromptBody":{"title":"Generate From Prompt Body","type":"object","properties":{"prompt":{"type":"string","description":"The prompt to use for generating the course.","example":"Create a course on how to learn a new language effectively","minLength":1},"authorId":{"type":"string","description":"The unique ID of the author of the course.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"groupId":{"type":"string","description":"The unique ID of the group where the course will be created.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"}},"required":["prompt","authorId"]},"CourseStatDTO":{"title":"Course Stat","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the attempt.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"versionNumber":{"type":"integer","description":"The version number of the course the learner attempted."},"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 course the learner attempted."},"firstActivityAt":{"format":"date-time","type":"string","description":"The date and time of the first activity of the user on the course attempt, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"lastActivityAt":{"format":"date-time","type":"string","description":"The date and time of the last activity of the user on the course attempt, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"timeSpent":{"type":"number","description":"The time spent by the user in the course attempt in milliseconds."},"progress":{"type":"integer","description":"The completion rate of the user as a percentage.","minimum":0,"maximum":100},"score":{"type":"integer","description":"The score obtained by the user as a percentage.","minimum":0,"maximum":100},"completedAt":{"format":"date-time","type":"string","description":"The date and time when the attempt was completed, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"pathId":{"type":"string","description":"The unique ID of the path if the course is played in the path context.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"pathSessionId":{"type":"string","description":"The unique ID of the path session if the course is played in the path context.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"courseId":{"type":"string","description":"The unique ID of the course.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"userId":{"type":"string","description":"The unique ID of the user having performed this attempt.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"}},"required":["_id","lang","timeSpent","progress","courseId","userId"]},"CustomFieldValueDTO":{"title":"Custom Field Value","type":"object","properties":{"customFieldId":{"type":"string","description":"The unique ID of the custom field.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"type":{"type":"string","enum":["string","date"],"description":"The type of the custom field."},"value":{"oneOf":[{"type":"string","title":"string type","description":"The custom field string value.","minLength":1,"example":"US"},{"type":"string","title":"date type","format":"date-time","description":"The custom field date value is in the `YYYY-MM-DD` (ISO 8601 in Coordinated Universal Time (UTC)).","minLength":1,"example":"2025-01-27"}],"description":"The value assigned to the target for this custom field."}},"required":["customFieldId","type","value"]},"TagIdWithSource":{"title":"Tag Id With Source","type":"object","properties":{"tagId":{"type":"string","description":"The unique ID of the tag.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"source":{"type":"string","enum":["native","integration"],"description":"The source of the tag.\n- `native`: The tag has been manually added by an admin or created through the API.\n- `integration`: The tag has been synced from an external source."}},"required":["tagId","source"]},"UpdateCourseCustomFieldValuesBody":{"title":"Update Course Custom Field Values Body","type":"object","properties":{"customValues":{"maxItems":300,"description":"The list of custom field values to replace the existing ones.","type":"array","items":{"$ref":"#/components/schemas/CustomFieldValueDTO"}}},"required":["customValues"]},"UpdateCourseTagsBody":{"title":"Update Course Tags Body","type":"object","properties":{"tagIds":{"maxItems":100,"description":"The new tag IDs linked to the given course.","example":["507f1f77bcf86cd799439011"],"type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}}},"required":["tagIds"]},"UpdateELearningStandardCourseBody":{"title":"Update E Learning Standard Course Body","type":"object","properties":{"name":{"type":"string","description":"The title of the course.","example":"Employee Onboarding","minLength":1},"sourceLang":{"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 course is created."},"authorId":{"type":"string","description":"The unique ID of the author of the course.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"groupId":{"type":"string","description":"The unique ID of the group that will own the course.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"coAuthorIds":{"description":"The list of unique IDs of the co-authors of the course.","example":["507f1f77bcf86cd799439011"],"type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}},"description":{"type":"string","description":"The description of the course.","example":"This course will teach you how to onboard a new employee!"},"duration":{"type":"string","description":"An estimate of the time required to complete the course. The expected value is a number of minutes."},"estdFile":{"type":"string","format":"binary","description":"The eLearning standard package file to use as the course content. Supported media types: application/x-zip-compressed, application/zip."},"coverPicture":{"type":"string","format":"binary","description":"The picture file to be used as the course cover picture. Supported media types: image/bmp, image/gif, image/heic, image/jpeg, image/png, image/svg+xml, image/webp."}}},"InputCustomFieldDTO":{"title":"Input Custom Field","type":"object","properties":{"name":{"type":"string","description":"The name of the custom field.","example":"Department"},"targetType":{"type":"string","enum":["users","contents"],"description":"The resource type to which the custom field is linked."},"type":{"type":"string","enum":["string","date"],"description":"The type of the custom field. Options are:\n- `string`: the field holds a text value.\n- `date`: the field holds an ISO 8601 date value."}},"required":["name","targetType","type"]},"CustomFieldDTO":{"title":"Custom Field","type":"object","properties":{"name":{"type":"string","description":"The name of the custom field.","example":"Department"},"targetType":{"type":"string","enum":["users","contents"],"description":"The resource type to which the custom field is linked."},"type":{"type":"string","enum":["string","date"],"description":"The type of the custom field. Options are:\n- `string`: the field holds a text value.\n- `date`: the field holds an ISO 8601 date value."},"_id":{"type":"string","description":"The unique ID of the custom field.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"}},"required":["name","targetType","type","_id"]},"ReplaceAuthorizedValuesDTO":{"title":"Replace Authorized Values","type":"object","properties":{"authorizedValues":{"oneOf":[{"type":"array","title":"date type","items":{"type":"string","format":"date","example":"2024-06-30"},"description":"Use date values if the given custom field has a date type. The expected format is `YYYY-MM-DD` (ISO 8601 in Coordinated Universal Time (UTC))."},{"type":"array","title":"string type","items":{"type":"string","example":"Marketing"},"description":"Use string values if the given custom field has a string type."}],"maxItems":300,"description":"The new authorized values for the given custom fields. A custom field can have at most 300 authorized values."}},"required":["authorizedValues"]},"UpdateCustomFieldBody":{"title":"Update Custom Field Body","type":"object","properties":{"name":{"type":"string","description":"The name of the custom field.","example":"Department"}},"required":["name"]},"InputCustomLinkDTO":{"title":"Input Custom Link","type":"object","properties":{"name":{"type":"string","description":"The title displayed on the custom link.","example":"Portal managers"},"order":{"type":"integer","minimum":0,"description":"The numeric display order (ascending). Links are arranged horizontally from left to right and wrap to the next line as needed.","example":3},"type":{"type":"string","description":"The unique identifier associated to your custom link. This information is not displayed to learners on the platform.","example":"Manager Link FR"},"iconName":{"type":"string","enum":["agenda","absence","certificate","convention","default","inbox","survey"],"description":"The type of icon used on the custom link. By default, the link icon will be used.","example":"inbox"}},"required":["name","order","type"]},"CustomLinkDTO":{"title":"Custom Link","type":"object","properties":{"name":{"type":"string","description":"The title displayed on the custom link.","example":"Portal managers"},"order":{"type":"integer","minimum":0,"description":"The numeric display order (ascending). Links are arranged horizontally from left to right and wrap to the next line as needed.","example":3},"type":{"type":"string","description":"The unique identifier associated to your custom link. This information is not displayed to learners on the platform.","example":"Manager Link FR"},"iconName":{"type":"string","enum":["agenda","absence","certificate","convention","default","inbox","survey"],"description":"The type of icon used on the custom link. By default, the link icon will be used.","example":"inbox"},"_id":{"type":"string","description":"The ID of the custom link.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"}},"required":["name","order","type","_id"]},"InputExternalIdDTO":{"title":"Input External Id","type":"object","properties":{"platform":{"type":"string","description":"The name of the platform where the external ID comes from.","example":"external catalog","minLength":1},"targetId":{"type":"string","description":"The resource ID to which the external ID is linked.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"targetType":{"type":"string","enum":["attempt","classroom","classroomAttendance","classroomAttendanceSheet","classroomSlot","classroomSlotRegistration","course","group","learningNeed","path","pathEnrollment","pathSession","pathTracking","registrationRequest","user"],"description":"The resource type to which the external ID is linked.","example":"course"},"value":{"type":"string","description":"The value of the external ID.","example":"945628-01","minLength":1}},"required":["platform","targetId","targetType","value"]},"ExternalIdDTO":{"title":"External Id","type":"object","properties":{"platform":{"type":"string","description":"The name of the platform where the external ID comes from.","example":"external catalog","minLength":1},"targetId":{"type":"string","description":"The resource ID to which the external ID is linked.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"targetType":{"type":"string","enum":["attempt","classroom","classroomAttendance","classroomAttendanceSheet","classroomSlot","classroomSlotRegistration","course","group","learningNeed","path","pathEnrollment","pathSession","pathTracking","registrationRequest","user"],"description":"The resource type to which the external ID is linked.","example":"course"},"value":{"type":"string","description":"The value of the external ID.","example":"945628-01","minLength":1},"_id":{"type":"string","description":"The unique ID that identifies the resources mapping.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"}},"required":["platform","targetId","targetType","value","_id"]},"PolicyDTO":{"title":"Policy","type":"object","properties":{"url":{"type":"string","description":"The URL of the policy document.","example":"https://example.com/policy","minLength":1},"explicitConsent":{"type":"boolean","description":"When true, user must provide explicit consent at first login. Ignored for imprint. Default is false."}},"required":["url"]},"InputGroupDTO":{"title":"Input Group","type":"object","properties":{"privacyPolicy":{"description":"The privacy policy of the group.","allOf":[{"$ref":"#/components/schemas/PolicyDTO"}]},"moderationCharter":{"description":"The moderation charter of the group.","allOf":[{"$ref":"#/components/schemas/PolicyDTO"}]},"termsOfUse":{"description":"The terms of use of the group.","allOf":[{"$ref":"#/components/schemas/PolicyDTO"}]},"imprint":{"description":"The imprint of the group.","allOf":[{"$ref":"#/components/schemas/PolicyDTO"}]},"bannerImageId":{"type":"string","description":"The banner image of the group. Ensure that given media is an image with the proper size (at least 980px wide and 370px high).","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"backgroundImageId":{"type":"string","description":"The background image of the group. Ensure that given media is an image with the proper size (at least 760px wide and 880px high).","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"faviconImageId":{"type":"string","description":"The favicon image of the group. Ensure that given media is an image with the proper size (less than 500px wide and 500px high and more than 16px wide and 16px high).","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"logoImageId":{"type":"string","description":"The logo image of the group.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"subdomain":{"type":"string","minLength":3,"maxLength":255,"pattern":"^[a-z0-9][a-z0-9-]*$","description":"The subdomain of the group.","example":"company-subdomain"},"url":{"type":"string","description":"The custom url of the group. The given URL must resolve on the same address as 360learning.com.","example":"company-domain.com"},"name":{"type":"string","description":"The name of the group.","example":"Engineering Team","minLength":1},"custom":{"type":"string","description":"A custom field to store information available only in the **General settings** of the group, the CSV exports, and the API. This information is not displayed to learners on the platform.","example":"Unit 101","minLength":1},"public":{"type":"boolean","description":"True if the group is public; false if the group is private."},"parentId":{"type":"string","description":"The unique ID of the parent group.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"}},"required":["name","public","parentId"]},"GroupDTO":{"title":"Group","type":"object","properties":{"privacyPolicy":{"description":"The privacy policy of the group.","allOf":[{"$ref":"#/components/schemas/PolicyDTO"}]},"moderationCharter":{"description":"The moderation charter of the group.","allOf":[{"$ref":"#/components/schemas/PolicyDTO"}]},"termsOfUse":{"description":"The terms of use of the group.","allOf":[{"$ref":"#/components/schemas/PolicyDTO"}]},"imprint":{"description":"The imprint of the group.","allOf":[{"$ref":"#/components/schemas/PolicyDTO"}]},"bannerImageId":{"type":"string","description":"The banner image of the group. Ensure that given media is an image with the proper size (at least 980px wide and 370px high).","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"backgroundImageId":{"type":"string","description":"The background image of the group. Ensure that given media is an image with the proper size (at least 760px wide and 880px high).","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"faviconImageId":{"type":"string","description":"The favicon image of the group. Ensure that given media is an image with the proper size (less than 500px wide and 500px high and more than 16px wide and 16px high).","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"logoImageId":{"type":"string","description":"The logo image of the group.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"subdomain":{"type":"string","minLength":3,"maxLength":255,"pattern":"^[a-z0-9][a-z0-9-]*$","description":"The subdomain of the group.","example":"company-subdomain"},"url":{"type":"string","description":"The custom url of the group. The given URL must resolve on the same address as 360learning.com.","example":"company-domain.com"},"_id":{"type":"string","description":"The unique ID of the group.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"name":{"type":"string","description":"The name of the group.","example":"Engineering Team"},"custom":{"type":"string","description":"A custom field to store information available only in the **General settings** of the group, the CSV exports, and the API. This information is not displayed to learners on the platform.","example":"Unit 101"},"public":{"type":"boolean","description":"True if the group is public; false if the group is private."},"parentId":{"type":"string","description":"The unique ID of the parent group. Not defined for the root group.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"}},"required":["_id","name","public"]},"UserRole":{"title":"User Role","type":"object","properties":{"userId":{"type":"string","description":"The unique ID of the user.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"role":{"type":"string","enum":["admin","analyst","editor","coach","contributor","learner","owner","userAdmin"],"description":"The role of the group member."}},"required":["userId","role"]},"PatchGroupDTO":{"title":"Patch Group","type":"object","properties":{"custom":{"type":"string","nullable":true,"description":"A custom field to store information available only in the **General settings** of the group, the CSV exports, and the API. This information is not displayed to learners on the platform.","example":"Unit 102","minLength":1},"name":{"type":"string","description":"The name of the group.","example":"Marketing Team","minLength":1},"public":{"type":"boolean","description":"True if the group is public; false if the group is private."},"parentId":{"type":"string","description":"The unique ID of the parent group. It must not be the updated group or one of its descendants.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"bannerImageId":{"type":"string","nullable":true,"description":"The banner image of the group. Ensure that given media is an image with the proper size (at least 980px wide and 370px high).","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"backgroundImageId":{"type":"string","nullable":true,"description":"The background image of the group. Ensure that given media is an image with the proper size (at least 760px wide and 880px high).","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"faviconImageId":{"type":"string","nullable":true,"description":"The favicon image of the group. Ensure that given media is an image with the proper size (less than 500px wide and 500px high and more than 16px wide and 16px high).","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"logoImageId":{"type":"string","nullable":true,"description":"The logo image of the group.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"subdomain":{"type":"string","nullable":true,"minLength":3,"maxLength":255,"pattern":"^[a-z0-9][a-z0-9-]*$","description":"The subdomain of the group."},"url":{"type":"string","nullable":true,"description":"The custom url of the group."},"privacyPolicy":{"nullable":true,"description":"The privacy policy of the group.","allOf":[{"$ref":"#/components/schemas/PolicyDTO"}]},"moderationCharter":{"nullable":true,"description":"The moderation charter of the group.","allOf":[{"$ref":"#/components/schemas/PolicyDTO"}]},"termsOfUse":{"nullable":true,"description":"The terms of use of the group.","allOf":[{"$ref":"#/components/schemas/PolicyDTO"}]},"imprint":{"nullable":true,"description":"The imprint of the group.","allOf":[{"$ref":"#/components/schemas/PolicyDTO"}]}}},"UploadGroupMediaBodyDTO":{"title":"Upload Group Media Body","type":"object","properties":{"authorId":{"type":"string","description":"The unique ID of the user performing the upload. Must be a non-deleted user in the company.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"banner":{"type":"string","format":"binary","description":"The banner image file. Supported media types: image/bmp, image/gif, image/heic, image/jpeg, image/png, image/svg+xml, image/webp."},"background":{"type":"string","format":"binary","description":"The background image file. Supported media types: image/bmp, image/gif, image/heic, image/jpeg, image/png, image/svg+xml, image/webp."},"favicon":{"type":"string","format":"binary","description":"The favicon image file. Supported media types: image/bmp, image/gif, image/heic, image/jpeg, image/png, image/svg+xml, image/webp, image/x-icon, image/vnd.microsoft.icon."},"logo":{"type":"string","format":"binary","description":"The logo image file. Supported media types: image/bmp, image/gif, image/heic, image/jpeg, image/png, image/svg+xml, image/webp."}},"required":["authorId"]},"PatchBrandCustomizationColorsDTO":{"title":"Patch Brand Customization Colors","type":"object","properties":{"primary":{"type":"string","nullable":true,"description":"The Main color used for buttons, links, navigation highlights, etc. (on the platform and emails), in hexadecimal format. Default: #0a47c2.","example":"#0a1b2c"},"menuBackground":{"type":"string","nullable":true,"description":"The color used for the platform background, in hexadecimal format. Default: #ffffff.","example":"#0a1b2c"},"myWorkBackground":{"type":"string","nullable":true,"description":"The color used for my work background, in hexadecimal format. Default: #f7f4ee.","example":"#0a1b2c"},"platformBackground":{"type":"string","nullable":true,"description":"The color used for the left bar background, in hexadecimal format. Default: #ffffff.","example":"#0a1b2c"}}},"PatchBrandCustomizationDTO":{"title":"Patch Brand Customization","type":"object","properties":{"colors":{"nullable":true,"description":"The branding colors of the group.","allOf":[{"$ref":"#/components/schemas/PatchBrandCustomizationColorsDTO"}]}}},"BrandCustomizationColorsDTO":{"title":"Brand Customization Colors","type":"object","properties":{"primary":{"type":"string","description":"The Main color used for buttons, links, navigation highlights, etc. (on the platform and emails), in hexadecimal format. Default: #0a47c2.","example":"#0a1b2c"},"menuBackground":{"type":"string","description":"The color used for the platform background, in hexadecimal format. Default: #ffffff.","example":"#0a1b2c"},"myWorkBackground":{"type":"string","description":"The color used for my work background, in hexadecimal format. Default: #f7f4ee.","example":"#0a1b2c"},"platformBackground":{"type":"string","description":"The color used for the left bar background, in hexadecimal format. Default: #ffffff.","example":"#0a1b2c"}}},"BrandCustomizationDTO":{"title":"Brand Customization","type":"object","properties":{"colors":{"description":"The updated colors of the group.","allOf":[{"$ref":"#/components/schemas/BrandCustomizationColorsDTO"}]}}},"BaseIntegrationDTO":{"title":"Base Integration","type":"object","properties":{"defaultCompletion":{"type":"boolean","description":"True if the content is auto-completed at launch; false otherwise."},"defaultProgress":{"type":"integer","description":"The completion rate at launch as a percentage.","minimum":0,"maximum":100},"noGroupPropagation":{"type":"boolean","description":"If true, the content is visible only within the integration group and is not propagated to subgroups. If false, the content is propagated to all subgroups."},"externalPlatformLogoUrl":{"type":"string","description":"The URL of the logo of the external platform this integration is created for. The URL must be a valid HTTPS URL pointing to a logo with transparent background."},"externalPlatformUnicolorLogoUrl":{"type":"string","description":"The URL of the unicolor logo of the external platform this integration is created for. The URL must be a valid HTTPS URL pointing to a logo with transparent background. If none is provided, the externalPlatformLogoUrl logo will be used."},"externalPlatform":{"type":"string","description":"The identifier of the external platform this integration is created for.","example":"My Platform","minLength":1},"authorId":{"type":"string","description":"The unique ID of the author of the imported content.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"groupId":{"type":"string","description":"The unique ID of the group to which the content is imported.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"}},"required":["externalPlatform","authorId","groupId"]},"IntegrationDTO":{"title":"Integration","type":"object","properties":{"defaultCompletion":{"type":"boolean","description":"True if the content is auto-completed at launch; false otherwise."},"defaultProgress":{"type":"integer","description":"The completion rate at launch as a percentage.","minimum":0,"maximum":100},"noGroupPropagation":{"type":"boolean","description":"If true, the content is visible only within the integration group and is not propagated to subgroups. If false, the content is propagated to all subgroups."},"externalPlatformLogoUrl":{"type":"string","description":"The URL of the logo of the external platform this integration is created for. The URL must be a valid HTTPS URL pointing to a logo with transparent background."},"externalPlatformUnicolorLogoUrl":{"type":"string","description":"The URL of the unicolor logo of the external platform this integration is created for. The URL must be a valid HTTPS URL pointing to a logo with transparent background. If none is provided, the externalPlatformLogoUrl logo will be used."},"externalPlatform":{"type":"string","description":"The identifier of the external platform this integration is created for.","example":"My Platform","minLength":1},"authorId":{"type":"string","description":"The unique ID of the author of the imported content.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"groupId":{"type":"string","description":"The unique ID of the group to which the content is imported.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"_id":{"type":"string","description":"The unique ID of the integration.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"}},"required":["externalPlatform","authorId","groupId","_id"]},"PatchIntegrationDTO":{"title":"Patch Integration","type":"object","properties":{"defaultCompletion":{"type":"boolean","description":"True if the content is auto-completed at launch; false otherwise."},"defaultProgress":{"type":"integer","description":"The completion rate at launch as a percentage.","minimum":0,"maximum":100},"noGroupPropagation":{"type":"boolean","description":"If true, the content is visible only within the integration group and is not propagated to subgroups. If false, the content is propagated to all subgroups."},"externalPlatformLogoUrl":{"type":"string","description":"The URL of the logo of the external platform this integration is created for. The URL must be a valid HTTPS URL pointing to a logo with transparent background."},"externalPlatformUnicolorLogoUrl":{"type":"string","description":"The URL of the unicolor logo of the external platform this integration is created for. The URL must be a valid HTTPS URL pointing to a logo with transparent background. If none is provided, the externalPlatformLogoUrl logo will be used."},"externalPlatform":{"type":"string","description":"The identifier of the external platform this integration is created for.","example":"My Platform","minLength":1},"authorId":{"type":"string","description":"The unique ID of the author of the imported content.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"groupId":{"type":"string","description":"The unique ID of the group to which the content is imported.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"}}},"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"]},"ExternalCourseResponseDTO":{"title":"External Course Response","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.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"courseId":{"type":"string","description":"The unique ID of the course created from this external course.","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","authorId","courseId","translations"]},"Question":{"title":"Question","type":"object","properties":{"title":{"type":"string","description":"The title of the question.","example":"What is the problem that creating this training would solve?"},"answer":{"type":"string","description":"The answer to the question.","example":"It would strengthen the ties between the US and French Staff."}},"required":["title"]},"LearningNeedDTO":{"title":"Learning Need","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the learning need.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"groupId":{"type":"string","description":"The unique ID of the group the learning need belongs to.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"name":{"type":"string","description":"The name of the learning need.","example":"Cross-Cultural Communication"},"status":{"type":"string","enum":["new","exploring","onHold","projectOngoing","done","alreadyExists","discarded"],"description":"The status of the learning need."},"createdAt":{"format":"date-time","type":"string","description":"The date when the learning need was created."},"authorId":{"type":"string","description":"The unique ID of the user who declared the learning need.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"questions":{"description":"The questions associated with the learning need.","type":"array","items":{"$ref":"#/components/schemas/Question"}},"suggestedExpertIds":{"description":"The unique IDs of the suggested experts for the learning need.","example":["507f1f77bcf86cd799439011"],"type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}},"volunteerIds":{"description":"The unique IDs of the users that volunteered for this learning need.","example":["507f1f77bcf86cd799439011"],"type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}}},"required":["_id","groupId","name","status","createdAt","authorId","questions","suggestedExpertIds","volunteerIds"]},"GenerateTokenBody":{"title":"Generate Token Body","type":"object","properties":{"grant_type":{"type":"string","enum":["client_credentials"],"description":"The method to request the OAuth access token. The only supported grant type is `client_credentials`."},"client_id":{"type":"string","description":"The client ID generated in the API v2 admin panel of your platform.","example":"00918d22e6cd4dd0bf751241853ec641"},"client_secret":{"type":"string","description":"The client secret associated with your client ID.","example":"de831d67bd4245bc950867ca49b5ebc2"},"user_id":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"The unique ID of a user. This ID is mandatory for user authorized endpoints.","example":"624c5526204fc7207e603123"},"company_id":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$","description":"The unique ID of a company. This ID is mandatory for service authorized endpoints."}},"required":["grant_type","client_id","client_secret"]},"GenerateTokenResponse":{"title":"Generate Token Response","type":"object","properties":{"token_type":{"type":"string","enum":["Bearer"],"description":"The type of the access token."},"access_token":{"type":"string","description":"The access token that authorizes access to API resources. Include the access token in the `Authorization` header of every request as `Bearer`.","example":"eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJBaU1qdVNjLW9pelVYWHBZVnZWbDZrSklsb2FNWDNWYzZSdWp4QnlPX05FIn0"},"expires_in":{"type":"number","description":"The lifetime of the access token in seconds.","example":"3600"}},"required":["token_type","access_token","expires_in"]},"CertificationExpiryDateAutomaticReenrollmentDTO":{"title":"Certification Expiry Date Automatic Reenrollment","type":"object","properties":{"type":{"type":"string","enum":["certificationExpiryDate"],"description":"The type of automatic reenrollment set for this path session."},"delayDays":{"type":"number","description":"The number of days to enroll the learner prior to the next due date.","example":90}},"required":["type","delayDays"]},"PathCompletionDateAutomaticReenrollmentDTO":{"title":"Path Completion Date Automatic Reenrollment","type":"object","properties":{"type":{"type":"string","enum":["pathCompletionDate"],"description":"The type of automatic reenrollment set for this path session."},"delayDays":{"type":"number","description":"The number of days to enroll the learner prior to the next due date.","example":90},"recurrenceMonths":{"type":"number","description":"Only available when `automaticReenrollment.type` is `pathCompletionDate`. The number of months from the last completion of the path that the learner should have completed the path again by.","example":3}},"required":["type","delayDays","recurrenceMonths"]},"IPFilteringDTO":{"title":"IP Filtering","type":"object","properties":{"active":{"type":"boolean","description":"True if the IP filtering is active. False otherwise."},"authorizedAddresses":{"maxItems":1000,"description":"The list of authorized IP addresses.","example":"'141.25.186.74', '56.231.*.85', '96.127.36.47/28', etc","type":"array","items":{"type":"string"}}},"required":["active","authorizedAddresses"]},"PathSessionRegistrationRequestSettingDTO":{"title":"Path Session Registration Request Setting","type":"object","properties":{"enrollmentRequestEnabled":{"type":"boolean","description":"Whether learners must submit a request, validated by the assessors, to enroll in the session."},"unenrollmentRequestEnabled":{"type":"boolean","description":"Whether learners must submit a request, validated by the assessors, to unenroll from the session."},"assessors":{"type":"string","enum":["instructors","managers","adminsAndManagers","adminsCoachesInstructorsManagers"],"description":"The roles that validate both enrollment and unenrollment requests. Options are:\n- `instructors`: The instructors validate the registration request.\n- `managers`: The managers validate the registration request.\n- `adminsAndManagers`: The managers and group admin validate the registration request.\n- `adminsCoachesInstructorsManagers`: Managers, instructors, group admins and coaches validate the registration request."}},"required":["enrollmentRequestEnabled","unenrollmentRequestEnabled"]},"PathSessionWithoutTranslationsDTO":{"title":"Path Session Without Translations","type":"object","properties":{"mainInstructorId":{"type":"string","description":"The unique ID of the main instructor of the path session.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"startDate":{"format":"date-time","type":"string","description":"The date and time when the path session starts, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"endDate":{"format":"date-time","type":"string","description":"The date and time when the path session ends, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"userLimit":{"type":"integer","minimum":1,"description":"The maximum number of learners that can self enroll in the path session."},"automaticReenrollment":{"oneOf":[{"$ref":"#/components/schemas/CertificationExpiryDateAutomaticReenrollmentDTO"},{"$ref":"#/components/schemas/PathCompletionDateAutomaticReenrollmentDTO"}],"description":"The automatic reenrollment settings if enabled for the path session."},"ipFiltering":{"description":"The IP filtering configuration of the path session.","allOf":[{"$ref":"#/components/schemas/IPFilteringDTO"}]},"_id":{"type":"string","description":"The unique ID of the path session.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"createdAt":{"format":"date-time","type":"string","description":"The date and time when the path session was created, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"groupId":{"type":"string","description":"The unique ID of the path session owner group.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"instructorIds":{"description":"The list of unique IDs of the co-instructors of the path session.","example":["507f1f77bcf86cd799439011"],"type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}},"isAudienceBuilder":{"type":"boolean","description":"True if the path session is an audience builder session; false otherwise."},"modifiedAt":{"format":"date-time","type":"string","description":"The date and time when the path session was last updated, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"name":{"type":"string","description":"The title of the path session.","example":"Employee Onboarding October Session."},"pathId":{"type":"string","description":"The unique ID of the path the session belongs to.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"registrationRequestValidation":{"type":"string","deprecated":true,"enum":["disabled","instructors","managers","adminsAndManagers","adminsCoachesInstructorsManagers"],"description":"DEPRECATED — Use `registrationRequestSetting` instead. Only applies to enrollment requests. The registration request validation options for open access registrations. Options are:\n- `disabled`: There is no validation for registration.\n- `instructors`: The instructors validate the registration request.\n- `managers`: The managers validate the registration request.\n- `adminsAndManagers`: The managers and group admin validate the registration request.\n- `adminsCoachesInstructorsManagers`:Managers, instructors, group admins and coaches validate the registration request."},"registrationRequestSetting":{"description":"The registration request settings of the session, configuring both enrollment and unenrollment requests.","allOf":[{"$ref":"#/components/schemas/PathSessionRegistrationRequestSettingDTO"}]},"additionalInformation":{"type":"string","description":"The additional information of the path session.","example":"A0015221"},"rootSessionId":{"type":"string","description":"The unique ID of the root session.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"}},"required":["mainInstructorId","startDate","_id","createdAt","groupId","instructorIds","isAudienceBuilder","modifiedAt","name","pathId","registrationRequestValidation","registrationRequestSetting"]},"AwaitingCorrectionStatus":{"title":"Awaiting Correction Status","type":"object","properties":{"type":{"type":"string","enum":["awaitingCorrection"],"description":"The learner reached an assessment step that the assessor has not validated yet."}},"required":["type"]},"LateStatus":{"title":"Late Status","type":"object","properties":{"type":{"type":"string","enum":["late"],"description":"The path session is ongoing, and the learner meets all the following conditions:\n- They have started the path.\n- They have not completed at least one mandatory step with a past due date."}},"required":["type"]},"NotYetStartedStatus":{"title":"Not Yet Started Status","type":"object","properties":{"type":{"type":"string","enum":["notYetStarted"],"description":"The learner is enrolled in an ongoing path session, but they have not started the path yet."}},"required":["type"]},"OnTimeStatus":{"title":"On Time Status","type":"object","properties":{"type":{"type":"string","enum":["onTime"],"description":"The path session is ongoing, and the learner meets all the following conditions:\n- They have started the path.\n- They have completed all mandatory steps with past due dates.\n- They have not yet completed all mandatory steps without a due date or with a future due date."}},"required":["type"]},"SessionNotOpenedStatus":{"title":"Session Not Opened Status","type":"object","properties":{"type":{"type":"string","enum":["sessionNotOpened"],"description":"The learner is enrolled in a path session that has not started yet."}},"required":["type"]},"SuccessfulStatus":{"title":"Successful Status","type":"object","properties":{"type":{"type":"string","enum":["successful"],"description":"The learner meets all the following conditions:\n- They have reached the minimum score in all the mandatory courses that require it.\n- They have completed all mandatory steps in the path within the time limits.\n\nIf the path has the mandatory replay option activated, they must have completed all mandatory steps within the path session, even if they has previously completed the courses elsewhere."}},"required":["type"]},"ToRetakeStatus":{"title":"To Retake Status","type":"object","properties":{"type":{"type":"string","enum":["toRetake"],"description":"The path session is ongoing, the learner has started the path, and they meet at least one of the following conditions:\n- They have not reached the minimum score for at least one mandatory course, and they have not reached the maximum number of authorized attempts.\n- They have not completed the path within the time limits and they have not reached the maximum number of attempts for mandatory courses.\n- They completed at least one step outside the path context in a path that has the mandatory replay option activated."},"reason":{"type":"string","enum":["mandatoryReplay"],"description":"The learner has not re-completed some mandatory steps previously completed outside the path."}},"required":["type"]},"UnsuccessfulStatus":{"title":"Unsuccessful Status","type":"object","properties":{"type":{"type":"string","enum":["unsuccessful"],"description":"The path session ended with a status of **Not yet started**, **Late**, **On time**, or **To retake**, or the learner meets at least one of the following conditions:\n- They have not reached the minimum score for at least one mandatory step and they reached the maximum number of attempts.\n- They have not completed the path within the time limits, and they reached the maximum number of attempts for the mandatory steps."},"reason":{"type":"string","enum":["sessionEnded"],"description":"The learner status was either **Not yet started**, **Late**, **On time**, or **To retake**."}},"required":["type"]},"PathSessionUserStatDTO":{"title":"Path Session User Stat","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the user enrollment.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"progress":{"type":"integer","description":"The completion rate of the user as a percentage.","minimum":0,"maximum":100},"status":{"oneOf":[{"$ref":"#/components/schemas/AwaitingCorrectionStatus"},{"$ref":"#/components/schemas/LateStatus"},{"$ref":"#/components/schemas/NotYetStartedStatus"},{"$ref":"#/components/schemas/OnTimeStatus"},{"$ref":"#/components/schemas/SessionNotOpenedStatus"},{"$ref":"#/components/schemas/SuccessfulStatus"},{"$ref":"#/components/schemas/ToRetakeStatus"},{"$ref":"#/components/schemas/UnsuccessfulStatus"}],"description":"The status of the user in the path session."},"timeSpent":{"type":"number","description":"The number of milliseconds spent by the user on the session."},"userId":{"type":"string","description":"The unique ID of the user.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"completedAt":{"format":"date-time","type":"string","description":"The date and time of completion of the session, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"score":{"type":"integer","description":"The score obtained by the user as a percentage.","minimum":0,"maximum":100},"enrolledAt":{"format":"date-time","type":"string","description":"The date and time the user was enrolled, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"unenrolledAt":{"format":"date-time","type":"string","description":"The date and time the user was unenrolled, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"certificateId":{"type":"string","description":"The ID of the certificate obtained by the user in the session.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"selfEnrolled":{"type":"boolean","description":"True if the user self-enrolled in the given path session; false otherwise."},"startedAt":{"format":"date-time","type":"string","description":"The date and time the user started working in the session, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"dueDate":{"format":"date-time","type":"string","description":"The date and time when the session is due, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"lockedAt":{"format":"date-time","type":"string","description":"The date and time the statistics of the user were locked, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC)). Locked statistics no longer evolve when the path or its steps are updated. The statistics of a user are locked only if the **Lock learner statistics** option is activated on the path, and either the user has completed the path (**Successful** or **Unsuccessful** status) or the path session has ended. This field is absent if the statistics of the user are not locked."},"pathId":{"type":"string","description":"The unique ID of the path.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"sessionId":{"type":"string","description":"The unique ID of the path session.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"}},"required":["_id","progress","status","timeSpent","userId","enrolledAt","selfEnrolled","pathId","sessionId"]},"AddTokensBody":{"title":"Add Tokens Body","type":"object","properties":{"authorId":{"type":"string","description":"The unique ID of the user adding the tokens.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"groupId":{"type":"string","description":"The unique ID of the group to which tokens are being added.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"numberTokensBought":{"type":"integer","minimum":1,"description":"The number of tokens being added."},"pathId":{"type":"string","description":"The unique ID of the path associated with the tokens.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"}},"required":["authorId","groupId","numberTokensBought","pathId"]},"ArchivePathBody":{"title":"Archive Path Body","type":"object","properties":{"archived":{"type":"boolean","description":"If true, archives the path. If false, restores the path."}},"required":["archived"]},"EstimatedWeeklyCommitment":{"title":"Estimated Weekly Commitment","type":"object","properties":{"min":{"type":"number","description":"The minimum number of hours the learners should spend on the path each week."},"max":{"type":"number","description":"The maximum number of hours the learners should spend on the path each week."}},"required":["min","max"]},"InputOptions":{"title":"Input Options","type":"object","properties":{"linearProgression":{"type":"boolean","description":"True if learners must follow the steps in the defined order (top to bottom) as set in the **Build your training** section of the path editor; false otherwise."},"mandatoryReplay":{"type":"boolean","description":"True if learners must complete the steps within the path session, even if they have already completed the steps elsewhere; false otherwise."},"displayForum":{"type":"boolean","description":"True if learners can see the path forum and reactions; false otherwise."},"displayClassroomMessages":{"type":"boolean","description":"True if learners can see the classroom slot message on the path homepage, even if they aren’t registered for the classroom slot; false otherwise."},"automatedReminders":{"type":"boolean","description":"True if an automated reminder is sent to enrolled learners who have been inactive for 2 days and then for 7 days; false otherwise."},"notificationOnStepCreation":{"type":"boolean","description":"True if an email notification is sent to all learners when a new step is added, updating their path status to **On time** and moving the path back to the **Ongoing** tab on their homepage; false otherwise."}}},"InputPathDTO":{"title":"Input Path","type":"object","properties":{"authorId":{"type":"string","description":"The unique ID of the main author of the path.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"certificateId":{"type":"string","description":"The unique ID of the certificate outline from which certificates are issued upon path completion.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"groupId":{"type":"string","description":"The unique ID of the owner group of the path.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"name":{"type":"string","description":"The title of the path.","example":"Employee Onboarding","minLength":1},"coAuthorIds":{"description":"The list of co-author IDs in an array. No co-authors are added if empty.","example":["507f1f77bcf86cd799439011"],"type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}},"description":{"type":"string","description":"The description of the path.","example":"This path will teach you how to onboard a new employee!","minLength":1},"additionalInformation":{"type":"string","description":"A custom field to store information available only in the **Advanced settings** of the path editor, the CSV exports, and the API. This information is not displayed to learners on the platform.","example":"Training content 203","minLength":1},"coverPicture":{"oneOf":[{"type":"string","format":"binary","title":"File","description":"The cover picture of the path. The maximum file size is 10 MB. Supported media types: image/bmp, image/gif, image/heic, image/jpeg, image/png, image/svg+xml, image/webp."},{"type":"string","format":"ObjectId","title":"Media","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$","description":"The unique ID of the cover picture of the path."}],"format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"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","vm","zh","am_ET","bn","bs","ca","cy","en_CA","en_GB","es_AR","es_MX","et","fr_CA","gr","gu","he_IL","hy","in","kk","km","lo","lv","mi","mn_MN","mr","ms","my_MM","nn_NO","or","pa","pt_BR","pt_MZ","rn_BI","rs","sa","si","ta","tc","te","tl_PH","ur","uz","yo_NG","zh_tw"],"description":"The language in which the path is displayed when the learner’s profile language is not available."},"estimatedWeeklyCommitment":{"description":"An estimated weekly time commitment in hours for learners on the path. This value is set in the field **Estimated weekly commitment** in the path settings and displayed to learners on the path homepage.","allOf":[{"$ref":"#/components/schemas/EstimatedWeeklyCommitment"}]},"options":{"description":"A set of options to customize the behavior of the path.","allOf":[{"$ref":"#/components/schemas/InputOptions"}]}},"required":["authorId","groupId","name"]},"AssessmentStepOptionsDTO":{"title":"Assessment Step Options","type":"object","properties":{"isExamination":{"type":"boolean","description":"True if learners must pass the assessment to receive a certificate; false otherwise. A certificate must be included in the path to activate this option."},"minScore":{"type":"number","minimum":0,"maximum":100,"description":"The minimum score required to pass the assessment, expressed as a percentage. If set, the assessor will validate progress based on this score rather than using a fail/pass validation. If not set, the assessor will use a fail/pass validation."}},"required":["isExamination"]},"AssessmentStepDTO":{"title":"Assessment Step","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the step resource.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"type":{"type":"string","enum":["assessment"],"description":"The type of the step."},"options":{"description":"The options for this step.","allOf":[{"$ref":"#/components/schemas/AssessmentStepOptionsDTO"}]}},"required":["_id","type","options"]},"RelativeDateOptionDTO":{"title":"Relative Date Option","type":"object","properties":{"unit":{"type":"string","enum":["day","month","week"],"description":"The unit of measurement for the duration."},"value":{"type":"number","minimum":0.01,"maximum":1000,"description":"The numerical estimate of the duration.","example":0.01}},"required":["unit","value"]},"SelfRegistrationOptionDTO":{"title":"Self Registration Option","type":"object","properties":{"enabled":{"type":"boolean","description":"True if learners can self-register for any available classroom slots until the event begins; false otherwise."},"delay":{"description":"A period before the event begins during which learners cannot make any registration changes.","allOf":[{"$ref":"#/components/schemas/RelativeDateOptionDTO"}]}},"required":["enabled"]},"AttendanceSheetsOptionDTO":{"title":"Attendance Sheets Option","type":"object","properties":{"unit":{"type":"string","enum":["day","slot"],"description":"The frequency at which attendance sheets are generated for each classroom slot. Options are:\n- `slot`: Generates the specified number of attendance sheet per classroom slot.\n- `day`: Generates the specified number of attendance sheets per day within the classroom slot."},"number":{"type":"number","description":"The number of attendance sheets per `day` or `slot`."}},"required":["unit","number"]},"ClassroomStepOptionsDTO":{"title":"Classroom Step Options","type":"object","properties":{"optional":{"type":"boolean","description":"True if the step is optional to complete the path; false otherwise."},"relativeDate":{"description":"A soft deadline to encourage learners to complete the step on time, calculated from their enrollment date. Learners can still play the step after the relative due date.","allOf":[{"$ref":"#/components/schemas/RelativeDateOptionDTO"}]},"autoRegistration":{"type":"boolean","description":"True if newly enrolled learners should be automatically registered in the next open classroom slot; false otherwise."},"selfRegistration":{"description":"The options for learners self-registration.","allOf":[{"$ref":"#/components/schemas/SelfRegistrationOptionDTO"}]},"attendanceSheets":{"description":"The options for multiple attendance sheets in each classroom slot. For example:\n- If `unit` is set to `slot` and number is `2`, 2 attendance sheets will be generated for each classroom slot, regardless of the number of days in the slot.\n- If `unit` is set to `day` and number is `2` in a classroom slot lasting 3 days, 6 attendance sheets will be generated for the slot (2 sheets per day x 3 days).","allOf":[{"$ref":"#/components/schemas/AttendanceSheetsOptionDTO"}]}},"required":["optional","autoRegistration","selfRegistration"]},"ClassroomStepDTO":{"title":"Classroom Step","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the step resource.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"type":{"type":"string","enum":["classroom"],"description":"The type of the step."},"options":{"description":"The options for this step.","allOf":[{"$ref":"#/components/schemas/ClassroomStepOptionsDTO"}]}},"required":["_id","type","options"]},"TimeLimitOptionDTO":{"title":"Time Limit Option","type":"object","properties":{"mode":{"type":"string","enum":["maxTime","minTime"],"description":"The time constraint option. Options are:\n- `maxTime`: Setting a maximum time limit will lock the course in its current state at the end of the defined time, and allow the learner to proceed to the next step. They cannot access the remaining activities.\n `minTime`: Setting a minimum time limit will prevent the learner from going to the next step until the end of the defined time, even if they've finished the course."},"value":{"type":"number","minimum":0,"description":"The time limit in seconds."}},"required":["mode","value"]},"AvailabilityOptionDTO":{"title":"Availability Option","type":"object","properties":{"mode":{"type":"string","enum":["afterEnrollmentDate","afterSessionStartDate"],"description":"The event that triggers the start of the availability period."},"relativeDate":{"description":"The period of availability.","allOf":[{"$ref":"#/components/schemas/RelativeDateOptionDTO"}]}},"required":["mode","relativeDate"]},"RegularCourseStepOptionsDTO":{"title":"Regular Course Step Options","type":"object","properties":{"optional":{"type":"boolean","description":"True if the step is optional to complete the path; false otherwise."},"relativeDate":{"description":"A soft deadline to encourage learners to complete the step on time, calculated from their enrollment date. Learners can still play the step after the relative due date.","allOf":[{"$ref":"#/components/schemas/RelativeDateOptionDTO"}]},"showCorrection":{"type":"string","enum":["never","onAnswer","onCompletion","onSuccess"],"description":"When answers to questions will be displayed. Options are:\n- `never`: Answers will not be displayed at any time.\n- `onAnswer`: Answers will be displayed immediately after the learner provides their response.\n- `onCompletion`: Answers will be displayed only after the learner has completed the course.\n- `onSuccess`: Answers will be displayed only after the learner completes the course and meets the success criteria."},"showForum":{"type":"string","enum":["never","onAnswer","onCompletion","onSuccess"],"description":"When the forum will be displayed. Options are:\n- `never`: The forum will not be displayed at any time.\n- `onAnswer`: The forum will be displayed immediately after the learner provides their response.\n- `onCompletion`: The forum will be displayed only after the learner has completed the course.\n- `onSuccess`: The forum will be displayed only after the learner completes the course and meets the success criteria."},"timeLimit":{"description":"The time required for learners to complete the step. Note that this parameter does not apply if the course is a SCORM module.","allOf":[{"$ref":"#/components/schemas/TimeLimitOptionDTO"}]},"minScore":{"type":"number","minimum":0,"maximum":100,"description":"The minimum score required to successfully complete the step. The score ranges from 0 to 100."},"attemptsLimit":{"type":"number","minimum":1,"description":"The maximum number of attempts allowed for the step. The learner cannot retry the step once this limit is reached.","example":1},"availability":{"description":"The period during which the step is available to learners.","allOf":[{"$ref":"#/components/schemas/AvailabilityOptionDTO"}]}},"required":["optional","showCorrection","showForum"]},"ThresholdDTO":{"title":"Threshold","type":"object","properties":{"thresholdValue":{"type":"number","minimum":0,"maximum":100,"description":"The minimum score needed to reach the threshold."},"waivedStepIds":{"maxItems":250,"description":"Array of step IDs waived when this threshold is reached.","example":["507f1f77bcf86cd799439011"],"type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}}},"required":["thresholdValue","waivedStepIds"]},"PositioningQuizCourseStepOptionsDTO":{"title":"Positioning Quiz Course Step Options","type":"object","properties":{"optional":{"type":"boolean","description":"True if the step is optional to complete the path; false otherwise."},"relativeDate":{"description":"A soft deadline to encourage learners to complete the step on time, calculated from their enrollment date. Learners can still play the step after the relative due date.","allOf":[{"$ref":"#/components/schemas/RelativeDateOptionDTO"}]},"showCorrection":{"type":"string","enum":["never","onAnswer","onCompletion","onSuccess"],"description":"When answers to questions will be displayed. Options are:\n- `never`: Answers will not be displayed at any time.\n- `onAnswer`: Answers will be displayed immediately after the learner provides their response.\n- `onCompletion`: Answers will be displayed only after the learner has completed the course.\n- `onSuccess`: Answers will be displayed only after the learner completes the course and meets the success criteria."},"showForum":{"type":"string","enum":["never","onAnswer","onCompletion","onSuccess"],"description":"When the forum will be displayed. Options are:\n- `never`: The forum will not be displayed at any time.\n- `onAnswer`: The forum will be displayed immediately after the learner provides their response.\n- `onCompletion`: The forum will be displayed only after the learner has completed the course.\n- `onSuccess`: The forum will be displayed only after the learner completes the course and meets the success criteria."},"timeLimit":{"description":"The time required for learners to complete the step. Note that this parameter does not apply if the course is a SCORM module.","allOf":[{"$ref":"#/components/schemas/TimeLimitOptionDTO"}]},"attemptsLimit":{"type":"number","description":"Must be 1 for a positioning quiz step.","example":1},"thresholds":{"description":"The thresholds defined for this positioning quiz step.","type":"array","items":{"$ref":"#/components/schemas/ThresholdDTO"}}},"required":["optional","showCorrection","showForum","attemptsLimit","thresholds"]},"CourseStepDTO":{"title":"Course Step","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the step resource.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"type":{"type":"string","enum":["course"],"description":"The type of the step."},"options":{"oneOf":[{"$ref":"#/components/schemas/RegularCourseStepOptionsDTO"},{"$ref":"#/components/schemas/PositioningQuizCourseStepOptionsDTO"}],"description":"The options for this step."},"subtype":{"type":"string","enum":["quiz"],"description":"The subtype of the step."}},"required":["_id","type","options"]},"SchedulingOptionDTO":{"title":"Scheduling Option","type":"object","properties":{"relativeTo":{"type":"string","enum":["afterEnrollmentDate","afterSessionStartDate","beforeSessionStartDate"],"description":"The event triggering the message scheduling. Options are:\n- `afterEnrollmentDate`: The message will be sent a specific number of days after the enrollment date.\n- `afterSessionStartDate`: The message will be sent a specific number of days after the session start date.\n- `beforeSessionStartDate`: The message will be sent a specific number of days before the session start date."},"relativity":{"type":"number","minimum":1,"maximum":2000,"description":"The number of days from the triggering event to send the message.","example":1},"condition":{"type":"string","enum":["completed","notCompleted","notSuccessful","successful"],"description":"The path result required to trigger the message. Note that this parameter only applies to the following triggering events: `afterEnrollmentDate` and `afterSessionStartDate`. Path results options are:\n- `completed`: The learner completed all steps in the path.\n- `notCompleted`: The learner has at least one uncompleted step in the path.\n- `notSuccessful`: The learner has at least one uncompleted step in the path, or has not reached the minimum score for at least one mandatory step.\n- `successful`: The learner has completed all mandatory steps in the path, reached the minimum score in all mandatory courses that have one, and completed them in less than the maximum time limit, or more than the minimum time limit."},"conditionOnDetailedStatus":{"type":"array","description":"The detailed path statuses required to trigger the message. Note that this parameter only applies to the following triggering events: `afterEnrollmentDate` and `afterSessionStartDate`. Detailed status options include:\n- `awaitingCorrection`: The learner is awaiting correction of at least one step in the path.\n- `late`: The learner is late on the path based on the relative date deadline.\n- `notYetStarted`: The learner has not yet started the path.\n- `onTime`: The learner is progressing through the path on time.\n- `successful`: The learner has successfully completed all mandatory steps in the path.\n- `toRetake`: The learner needs to retake one or more steps in the path.\n- `unsuccessful`: The learner has not successfully completed at least one of the required steps in the path.","items":{"type":"string","enum":["awaitingCorrection","late","notYetStarted","onTime","successful","toRetake","unsuccessful"]}}},"required":["relativeTo","relativity"]},"EmailStepOptionsDTO":{"title":"Email Step Options","type":"object","properties":{"recipientType":{"type":"string","enum":["learner","manager"],"description":"The role of users that will receive the message."},"scheduling":{"description":"Additional options for message scheduling. If not set, the message is sent right after the previous step.","allOf":[{"$ref":"#/components/schemas/SchedulingOptionDTO"}]}},"required":["recipientType"]},"EmailStepDTO":{"title":"Email Step","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the step resource.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"type":{"type":"string","enum":["email"],"description":"The type of the step."},"options":{"description":"The options for this step.","allOf":[{"$ref":"#/components/schemas/EmailStepOptionsDTO"}]}},"required":["_id","type","options"]},"PathStepOptionsDTO":{"title":"Path Step Options","type":"object","properties":{"optional":{"type":"boolean","description":"True if the step is optional to complete the path; false otherwise."},"relativeDate":{"description":"A soft deadline to encourage learners to complete the step on time, calculated from their enrollment date. Learners can still play the step after the relative due date.","allOf":[{"$ref":"#/components/schemas/RelativeDateOptionDTO"}]}},"required":["optional"]},"PathStepDTO":{"title":"Path Step","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the step resource.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"type":{"type":"string","enum":["path"],"description":"The type of the step."},"options":{"description":"The options for this step.","allOf":[{"$ref":"#/components/schemas/PathStepOptionsDTO"}]}},"required":["_id","type","options"]},"ProgramStepOptionsDTO":{"title":"Program Step Options","type":"object","properties":{"optional":{"type":"boolean","description":"True if the step is optional to complete the path; false otherwise."},"relativeDate":{"description":"A soft deadline to encourage learners to complete the step on time, calculated from their enrollment date. Learners can still play the step after the relative due date.","allOf":[{"$ref":"#/components/schemas/RelativeDateOptionDTO"}]}},"required":["optional"]},"ProgramStepDTO":{"title":"Program Step","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the step resource.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"type":{"type":"string","enum":["program"],"description":"The type of the step."},"options":{"description":"The options for this step.","allOf":[{"$ref":"#/components/schemas/ProgramStepOptionsDTO"}]}},"required":["_id","type","options"]},"MessageStepOptionsDTO":{"title":"Message Step Options","type":"object","properties":{"recipientType":{"type":"string","enum":["learner"],"description":"The role of users that will receive the message."},"scheduling":{"description":"Additional options for message scheduling. If not set, the message is sent right after the previous step.","allOf":[{"$ref":"#/components/schemas/SchedulingOptionDTO"}]}},"required":["recipientType"]},"SlackMessageStepDTO":{"title":"Slack Message Step","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the step resource.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"type":{"type":"string","enum":["slackMessage"],"description":"The type of the step."},"options":{"description":"The options for this step.","allOf":[{"$ref":"#/components/schemas/MessageStepOptionsDTO"}]}},"required":["_id","type","options"]},"TeamsMessageStepDTO":{"title":"Teams Message Step","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the step resource.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"type":{"type":"string","enum":["teamsMessage"],"description":"The type of the step."},"options":{"description":"The options for this step.","allOf":[{"$ref":"#/components/schemas/MessageStepOptionsDTO"}]}},"required":["_id","type","options"]},"Options":{"title":"Options","type":"object","properties":{"linearProgression":{"type":"boolean","description":"True if learners must follow the steps in the defined order (top to bottom) as set in the **Build your training** section of the path editor; false otherwise."},"mandatoryReplay":{"type":"boolean","description":"True if learners must complete the steps within the path session, even if they have already completed the steps elsewhere; false otherwise."},"displayForum":{"type":"boolean","description":"True if learners can see the path forum and reactions; false otherwise."},"displayClassroomMessages":{"type":"boolean","description":"True if learners can see the classroom slot message on the path homepage, even if they aren’t registered for the classroom slot; false otherwise."},"automatedReminders":{"type":"boolean","description":"True if an automated reminder is sent to enrolled learners who have been inactive for 2 days and then for 7 days; false otherwise."},"notificationOnStepCreation":{"type":"boolean","description":"True if an email notification is sent to all learners when a new step is added, updating their path status to **On time** and moving the path back to the **Ongoing** tab on their homepage; false otherwise."}},"required":["linearProgression","mandatoryReplay","displayForum","displayClassroomMessages","automatedReminders","notificationOnStepCreation"]},"PathTranslatedFields":{"title":"Path Translated Fields","type":"object","properties":{"name":{"type":"string","description":"The translation of the field `name` for this language.","example":"Accueil des employés","minLength":1},"description":{"type":"string","description":"The translation of the field `description` for this language.","example":"Ce chemin vous apprend à intégrer un nouveau collaborateur !","minLength":1}}},"PathTranslationDTO":{"title":"Path 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"},"published":{"type":"boolean","description":"True if the translation is available to users in this language; false otherwise."},"translatorIds":{"description":"The list of unique IDs of the translators assigned to this language.","example":["507f1f77bcf86cd799439011"],"type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}},"translatedFields":{"description":"The translations of the path fields for this language.","allOf":[{"$ref":"#/components/schemas/PathTranslatedFields"}]}},"required":["lang","published","translatorIds","translatedFields"]},"EstimatedDuration":{"title":"Estimated Duration","type":"object","properties":{"unit":{"type":"string","enum":["day","hour","minute","month","week"],"description":"The unit of measurement for the estimated duration, as specified in the path settings under Estimated duration."},"value":{"type":"number","description":"The numerical estimate of the duration, as specified in the path settings under Estimated duration."}},"required":["unit","value"]},"PathDTO":{"title":"Path","type":"object","properties":{"authorId":{"type":"string","description":"The unique ID of the main author of the path.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"certificateId":{"type":"string","description":"The unique ID of the certificate outline from which certificates are issued upon path completion.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"groupId":{"type":"string","description":"The unique ID of the owner group of the path.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"_id":{"type":"string","description":"The unique ID of the path.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"coAuthorIds":{"description":"The list of co-author IDs in an array.","example":["507f1f77bcf86cd799439011"],"type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}},"createdAt":{"format":"date-time","type":"string","description":"The date and time when the path was created, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"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 in which the path is displayed when the learner’s profile language is not available."},"modifiedAt":{"format":"date-time","type":"string","description":"The date and time when the path was last updated, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"name":{"type":"string","description":"The title of the path.","example":"Employee Onboarding"},"options":{"description":"A set of options to customize the behavior of the path.","allOf":[{"$ref":"#/components/schemas/Options"}]},"sourceLang":{"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 path is created."},"status":{"type":"string","enum":["archived","published"],"description":"The status of the path."},"steps":{"maxItems":300,"description":"The ordered list of steps of the path.","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/AssessmentStepDTO"},{"$ref":"#/components/schemas/ClassroomStepDTO"},{"$ref":"#/components/schemas/CourseStepDTO"},{"$ref":"#/components/schemas/EmailStepDTO"},{"$ref":"#/components/schemas/PathStepDTO"},{"$ref":"#/components/schemas/ProgramStepDTO"},{"$ref":"#/components/schemas/SlackMessageStepDTO"},{"$ref":"#/components/schemas/TeamsMessageStepDTO"}]}},"translations":{"description":"The different translations available for the path.","type":"array","items":{"$ref":"#/components/schemas/PathTranslationDTO"}},"additionalInformation":{"type":"string","description":"A custom field to store information available only in the **Advanced settings** of the path editor, the CSV exports, and the API. This information is not displayed to learners on the platform.","example":"Training content 203"},"coverPicture":{"type":"string","description":"The unique ID of the cover picture of the path.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"description":{"type":"string","description":"The description of the path.","example":"This path will teach you how to onboard a new employee!"},"estimatedDuration":{"description":"An estimate of the time required to complete the path.","allOf":[{"$ref":"#/components/schemas/EstimatedDuration"}]},"estimatedWeeklyCommitment":{"description":"An estimated weekly time commitment in hours for learners on the path. This value is set in the field **Estimated weekly commitment** in the path settings and displayed to learners on the path homepage.","allOf":[{"$ref":"#/components/schemas/EstimatedWeeklyCommitment"}]}},"required":["authorId","groupId","_id","coAuthorIds","createdAt","defaultLang","modifiedAt","name","options","sourceLang","status","steps","translations"]},"InputPathSessionDTO":{"title":"Input Path Session","type":"object","properties":{"mainInstructorId":{"type":"string","description":"The unique ID of the main instructor of the path session.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"startDate":{"format":"date-time","type":"string","description":"The date and time when the path session starts, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"endDate":{"format":"date-time","type":"string","description":"The date and time when the path session ends, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"userLimit":{"type":"integer","minimum":1,"description":"The maximum number of learners that can self enroll in the path session."},"automaticReenrollment":{"oneOf":[{"$ref":"#/components/schemas/CertificationExpiryDateAutomaticReenrollmentDTO"},{"$ref":"#/components/schemas/PathCompletionDateAutomaticReenrollmentDTO"}],"description":"The automatic reenrollment settings if enabled for the path session."},"ipFiltering":{"description":"The IP filtering configuration of the path session.","allOf":[{"$ref":"#/components/schemas/IPFilteringDTO"}]},"registrationRequestValidation":{"type":"string","deprecated":true,"enum":["disabled","instructors","managers","adminsAndManagers","adminsCoachesInstructorsManagers"],"description":"DEPRECATED — Use `registrationRequestSetting` instead. Ignored when `registrationRequestSetting` is provided. Only applies to enrollment requests. The registration request validation options for open access registrations. Options are:\n- `disabled`: There is no validation for registration.\n- `instructors`: The instructors validate the registration request.\n- `managers`: The managers validate the registration request.\n- `adminsAndManagers`: The managers and group admin validate the registration request.\n- `adminsCoachesInstructorsManagers`:Managers, instructors, group admins and coaches validate the registration request."},"registrationRequestSetting":{"description":"The registration request settings of the session, configuring both enrollment and unenrollment requests. Takes precedence over `registrationRequestValidation` when both are provided.","allOf":[{"$ref":"#/components/schemas/PathSessionRegistrationRequestSettingDTO"}]},"name":{"type":"string","description":"The title of the path session.","example":"Employee Onboarding October Session.","minLength":1},"additionalInformation":{"type":"string","description":"The additional information of the path session.","example":"A0015221","minLength":1},"instructorIds":{"maxItems":100,"description":"The list of unique IDs of the co-instructors of the path session.","example":["507f1f77bcf86cd799439011"],"type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}}},"required":["mainInstructorId","startDate","name"]},"PathSessionTranslatedFields":{"title":"Path Session Translated Fields","type":"object","properties":{"name":{"type":"string","description":"The translation of the field `name` for this language.","example":"Accueil des employés Session d'Octobre","minLength":1}}},"PathSessionTranslationDTO":{"title":"Path Session 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"},"published":{"type":"boolean","description":"True if the translation is available to users in this language; false otherwise."},"translatorIds":{"description":"The list of unique IDs of the translators assigned to this language.","example":["507f1f77bcf86cd799439011"],"type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}},"translatedFields":{"description":"The translations of the path session fields for this language.","allOf":[{"$ref":"#/components/schemas/PathSessionTranslatedFields"}]}},"required":["lang","published","translatorIds","translatedFields"]},"PathSessionDTO":{"title":"Path Session","type":"object","properties":{"mainInstructorId":{"type":"string","description":"The unique ID of the main instructor of the path session.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"startDate":{"format":"date-time","type":"string","description":"The date and time when the path session starts, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"endDate":{"format":"date-time","type":"string","description":"The date and time when the path session ends, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"userLimit":{"type":"integer","minimum":1,"description":"The maximum number of learners that can self enroll in the path session."},"automaticReenrollment":{"oneOf":[{"$ref":"#/components/schemas/CertificationExpiryDateAutomaticReenrollmentDTO"},{"$ref":"#/components/schemas/PathCompletionDateAutomaticReenrollmentDTO"}],"description":"The automatic reenrollment settings if enabled for the path session."},"ipFiltering":{"description":"The IP filtering configuration of the path session.","allOf":[{"$ref":"#/components/schemas/IPFilteringDTO"}]},"_id":{"type":"string","description":"The unique ID of the path session.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"createdAt":{"format":"date-time","type":"string","description":"The date and time when the path session was created, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"groupId":{"type":"string","description":"The unique ID of the path session owner group.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"instructorIds":{"description":"The list of unique IDs of the co-instructors of the path session.","example":["507f1f77bcf86cd799439011"],"type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}},"isAudienceBuilder":{"type":"boolean","description":"True if the path session is an audience builder session; false otherwise."},"modifiedAt":{"format":"date-time","type":"string","description":"The date and time when the path session was last updated, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"name":{"type":"string","description":"The title of the path session.","example":"Employee Onboarding October Session."},"pathId":{"type":"string","description":"The unique ID of the path the session belongs to.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"registrationRequestValidation":{"type":"string","deprecated":true,"enum":["disabled","instructors","managers","adminsAndManagers","adminsCoachesInstructorsManagers"],"description":"DEPRECATED — Use `registrationRequestSetting` instead. Only applies to enrollment requests. The registration request validation options for open access registrations. Options are:\n- `disabled`: There is no validation for registration.\n- `instructors`: The instructors validate the registration request.\n- `managers`: The managers validate the registration request.\n- `adminsAndManagers`: The managers and group admin validate the registration request.\n- `adminsCoachesInstructorsManagers`:Managers, instructors, group admins and coaches validate the registration request."},"registrationRequestSetting":{"description":"The registration request settings of the session, configuring both enrollment and unenrollment requests.","allOf":[{"$ref":"#/components/schemas/PathSessionRegistrationRequestSettingDTO"}]},"additionalInformation":{"type":"string","description":"The additional information of the path session.","example":"A0015221"},"rootSessionId":{"type":"string","description":"The unique ID of the root session.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"translations":{"description":"The different translations available for the path session.","type":"array","items":{"$ref":"#/components/schemas/PathSessionTranslationDTO"}}},"required":["mainInstructorId","startDate","_id","createdAt","groupId","instructorIds","isAudienceBuilder","modifiedAt","name","pathId","registrationRequestValidation","registrationRequestSetting","translations"]},"PathEnrollmentDTO":{"title":"Path Enrollment","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the user enrollment.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"archivedAt":{"format":"date-time","type":"string","description":"The date and time when the enrollment was archived from the path session, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"createdAt":{"format":"date-time","type":"string","description":"The date and time when the learner enrolled to the path session, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"isSelfEnrolled":{"type":"boolean","description":"True if the user self-enrolled in the given path session; false otherwise."},"modifiedAt":{"format":"date-time","type":"string","description":"The date and time when the learner enrollment has been updated, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"sessionId":{"type":"string","description":"The unique ID of the path session.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"status":{"type":"string","enum":["archived","published"],"description":"The status of the enrollment."},"userId":{"type":"string","description":"The unique ID of the user.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"}},"required":["_id","createdAt","isSelfEnrolled","sessionId","status","userId"]},"SessionUsersAudienceFilterDTO":{"title":"Session Users Audience Filter","type":"object","properties":{"type":{"type":"string","enum":["users"],"description":"The type of the session audience filter."},"ids":{"example":["507f1f77bcf86cd799439011"],"maxItems":20000,"description":"The list of unique IDs in the the audience filter.","type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}}},"required":["type","ids"]},"SessionGroupsAudienceFilterDTO":{"title":"Session Groups Audience Filter","type":"object","properties":{"type":{"type":"string","enum":["groups"],"description":"The type of the session audience filter."},"ids":{"example":["507f1f77bcf86cd799439011"],"maxItems":5000,"description":"The list of unique IDs in the the audience filter.","type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}}},"required":["type","ids"]},"SessionExcludedLearnersAudienceFilterDTO":{"title":"Session Excluded Learners Audience Filter","type":"object","properties":{"type":{"type":"string","enum":["excludedLearners"],"description":"The type of the session audience filter."},"ids":{"example":["507f1f77bcf86cd799439011"],"maxItems":20000,"description":"The list of unique IDs in the the audience filter.","type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}}},"required":["type","ids"]},"SessionAudienceDTO":{"title":"Session Audience","type":"object","properties":{"filters":{"description":"The list of filters in the audience.","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/SessionUsersAudienceFilterDTO"},{"$ref":"#/components/schemas/SessionGroupsAudienceFilterDTO"},{"$ref":"#/components/schemas/SessionExcludedLearnersAudienceFilterDTO"}]}},"mode":{"type":"string","enum":["dynamic","dynamicEnrollment","dynamicUnenrollment","manual"],"description":"The audience builder update mode. Options are:\n- `dynamic`: Learners are dynamically enrolled and unenrolled.\n- `dynamicEnrollment`: Learners are dynamically enrolled.\n- `dynamicUnenrollment`: Learners are dynamically unenrolled.\n- `manual`: The audience is manually updated."}},"required":["filters","mode"]},"UsersCountByStatusDTO":{"title":"Users Count By Status","type":"object","properties":{"awaitingCorrection":{"type":"integer","minimum":0,"description":"Number of users awaiting correction for this path session."},"late":{"type":"integer","minimum":0,"description":"Number of users that are late for this path session."},"notYetStarted":{"type":"integer","minimum":0,"description":"Number of users not having started this path session."},"onTime":{"type":"integer","minimum":0,"description":"Number of users on time in this path session."},"sessionNotOpened":{"type":"integer","minimum":0,"description":"Number of users for which this path session is not opened yet."},"successful":{"type":"integer","minimum":0,"description":"Number of users having succeeded this path session."},"toRetake":{"type":"integer","minimum":0,"description":"Number of users having to retake this path session."},"unsuccessful":{"type":"integer","minimum":0,"description":"Number of users having failed this path session."}},"required":["awaitingCorrection","late","notYetStarted","onTime","sessionNotOpened","successful","toRetake","unsuccessful"]},"AggregatedSessionStatDTO":{"title":"Aggregated Session Stat","type":"object","properties":{"certificates":{"type":"integer","minimum":0,"description":"Number of certificates obtained within the session."},"usersCountByStatus":{"description":"Number of users per detailed path status. Possible status are: awaitingCorrection, late, notYetStarted, onTime, sessionNotOpened, successful, toRetake, unsuccessful.","allOf":[{"$ref":"#/components/schemas/UsersCountByStatusDTO"}]}},"required":["certificates","usersCountByStatus"]},"SessionUserStatDTO":{"title":"Session User Stat","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the user enrollment.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"progress":{"type":"integer","description":"The completion rate of the user as a percentage.","minimum":0,"maximum":100},"status":{"oneOf":[{"$ref":"#/components/schemas/AwaitingCorrectionStatus"},{"$ref":"#/components/schemas/LateStatus"},{"$ref":"#/components/schemas/NotYetStartedStatus"},{"$ref":"#/components/schemas/OnTimeStatus"},{"$ref":"#/components/schemas/SessionNotOpenedStatus"},{"$ref":"#/components/schemas/SuccessfulStatus"},{"$ref":"#/components/schemas/ToRetakeStatus"},{"$ref":"#/components/schemas/UnsuccessfulStatus"}],"description":"The status of the user in the path session."},"timeSpent":{"type":"number","description":"The number of milliseconds spent by the user on the session."},"userId":{"type":"string","description":"The unique ID of the user.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"completedAt":{"format":"date-time","type":"string","description":"The date and time of completion of the session, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"score":{"type":"integer","description":"The score obtained by the user as a percentage.","minimum":0,"maximum":100},"enrolledAt":{"format":"date-time","type":"string","description":"The date and time the user was enrolled, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"unenrolledAt":{"format":"date-time","type":"string","description":"The date and time the user was unenrolled, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"certificateId":{"type":"string","description":"The ID of the certificate obtained by the user in the session.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"selfEnrolled":{"type":"boolean","description":"True if the user self-enrolled in the given path session; false otherwise."},"startedAt":{"format":"date-time","type":"string","description":"The date and time the user started working in the session, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"dueDate":{"format":"date-time","type":"string","description":"The date and time when the session is due, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"lockedAt":{"format":"date-time","type":"string","description":"The date and time the statistics of the user were locked, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC)). Locked statistics no longer evolve when the path or its steps are updated. The statistics of a user are locked only if the **Lock learner statistics** option is activated on the path, and either the user has completed the path (**Successful** or **Unsuccessful** status) or the path session has ended. This field is absent if the statistics of the user are not locked."}},"required":["_id","progress","status","timeSpent","userId","enrolledAt","selfEnrolled"]},"PatchChildPathSessionDTO":{"title":"Patch Child Path Session","type":"object","properties":{"additionalInformation":{"type":"string","nullable":true,"description":"The additional information of the path session.","example":"A0015221","minLength":1},"mainInstructorId":{"type":"string","description":"The unique ID of the main instructor of the path session.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"instructorIds":{"maxItems":100,"description":"The list of unique IDs of the co-instructors of the path session.","example":["507f1f77bcf86cd799439011"],"type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}}}},"PatchPathSessionDTO":{"title":"Patch Path Session","type":"object","properties":{"additionalInformation":{"type":"string","nullable":true,"description":"The additional information of the path session.","example":"A0015221","minLength":1},"instructorIds":{"maxItems":100,"description":"The list of unique IDs of the co-instructors of the path session. The update of instructorIds modifies instructorIds in child path sessions.","example":["507f1f77bcf86cd799439011"],"type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}},"mainInstructorId":{"type":"string","description":"The unique ID of the main instructor of the path session. The update of mainInstructorId modifies mainInstructorId in child path sessions.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"name":{"type":"string","description":"The title of the path session.","example":"Employee Onboarding October Session.","minLength":1},"groupId":{"type":"string","description":"The unique ID of the path session owner group.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"registrationRequestValidation":{"type":"string","deprecated":true,"enum":["disabled","instructors","managers","adminsAndManagers","adminsCoachesInstructorsManagers"],"description":"DEPRECATED — Use `registrationRequestSetting` instead. Ignored when `registrationRequestSetting` is provided. Only applies to enrollment requests. The registration request validation options for open access registrations. Options are:\n- `disabled`: There is no validation for registration.\n- `instructors`: The instructors validate the registration request.\n- `managers`: The managers validate the registration request.\n- `adminsAndManagers`: The managers and group admin validate the registration request.\n- `adminsCoachesInstructorsManagers`:Managers, instructors, group admins and coaches validate the registration request."},"registrationRequestSetting":{"description":"The registration request settings of the session, configuring both enrollment and unenrollment requests. Takes precedence over `registrationRequestValidation` when both are provided.","allOf":[{"$ref":"#/components/schemas/PathSessionRegistrationRequestSettingDTO"}]},"startDate":{"format":"date-time","type":"string","description":"The date and time when the path session starts, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"endDate":{"format":"date-time","type":"string","nullable":true,"description":"The date and time when the path session ends, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"userLimit":{"type":"integer","nullable":true,"minimum":1,"description":"The maximum number of learners that can self enroll in the path session."},"automaticReenrollment":{"oneOf":[{"$ref":"#/components/schemas/CertificationExpiryDateAutomaticReenrollmentDTO"},{"$ref":"#/components/schemas/PathCompletionDateAutomaticReenrollmentDTO"}],"description":"The automatic reenrollment settings if enabled for the path session.","nullable":true},"ipFiltering":{"nullable":true,"description":"The IP filtering configuration of the path session.","allOf":[{"$ref":"#/components/schemas/IPFilteringDTO"}]}}},"ReplacePathTranslationsBody":{"title":"Replace Path Translations Body","type":"object","properties":{"translations":{"maxItems":80,"description":"The new or updated translations of the path.","type":"array","items":{"$ref":"#/components/schemas/PathTranslationDTO"}}},"required":["translations"]},"PatchPathDTO":{"title":"Patch Path","type":"object","properties":{"authorId":{"type":"string","description":"The unique ID of the main author of the path.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"certificateId":{"type":"string","description":"The unique ID of the certificate outline from which certificates are issued upon path completion.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"groupId":{"type":"string","description":"The unique ID of the owner group of the path.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"name":{"type":"string","description":"The title of the path.","example":"Employee Onboarding","minLength":1},"coAuthorIds":{"description":"The list of co-author IDs in an array. No co-authors are added if empty.","example":["507f1f77bcf86cd799439011"],"type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}},"description":{"type":"string","description":"The description of the path.","example":"This path will teach you how to onboard a new employee!","minLength":1},"additionalInformation":{"type":"string","description":"A custom field to store information available only in the **Advanced settings** of the path editor, the CSV exports, and the API. This information is not displayed to learners on the platform.","example":"Training content 203","minLength":1},"coverPicture":{"oneOf":[{"type":"string","format":"binary","title":"File","description":"The cover picture of the path. The maximum file size is 10 MB. Supported media types: image/bmp, image/gif, image/heic, image/jpeg, image/png, image/svg+xml, image/webp."},{"type":"string","format":"ObjectId","title":"Media","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$","description":"The unique ID of the cover picture of the path."}],"description":"The unique ID of the cover picture of the path.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"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","vm","zh","am_ET","bn","bs","ca","cy","en_CA","en_GB","es_AR","es_MX","et","fr_CA","gr","gu","he_IL","hy","in","kk","km","lo","lv","mi","mn_MN","mr","ms","my_MM","nn_NO","or","pa","pt_BR","pt_MZ","rn_BI","rs","sa","si","ta","tc","te","tl_PH","ur","uz","yo_NG","zh_tw"],"description":"The language in which the path is displayed when the learner’s profile language is not available."},"estimatedWeeklyCommitment":{"description":"An estimated weekly time commitment in hours for learners on the path. This value is set in the field **Estimated weekly commitment** in the path settings and displayed to learners on the path homepage.","allOf":[{"$ref":"#/components/schemas/EstimatedWeeklyCommitment"}]},"options":{"description":"A set of options to customize the behavior of the path.","allOf":[{"$ref":"#/components/schemas/InputOptions"}]}}},"UpdatePathSessionCustomFieldValuesBody":{"title":"Update Path Session Custom Field Values Body","type":"object","properties":{"customValues":{"maxItems":300,"description":"The list of custom field values to replace the existing ones.","type":"array","items":{"$ref":"#/components/schemas/CustomFieldValueDTO"}}},"required":["customValues"]},"PutSessionAudienceDTO":{"title":"Put Session Audience","type":"object","properties":{"filters":{"maxItems":3,"description":"The list of filters in the audience. The maximum filters array size is 3.","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/SessionUsersAudienceFilterDTO"},{"$ref":"#/components/schemas/SessionGroupsAudienceFilterDTO"},{"$ref":"#/components/schemas/SessionExcludedLearnersAudienceFilterDTO"}]}},"mode":{"type":"string","enum":["dynamic","dynamicEnrollment","dynamicUnenrollment","manual"],"description":"The audience builder update mode. Options are:\n- `dynamic`: Learners are dynamically enrolled and unenrolled.\n- `dynamicEnrollment`: Learners are dynamically enrolled.\n- `dynamicUnenrollment`: Learners are dynamically unenrolled.\n- `manual`: The audience is manually updated."}},"required":["filters","mode"]},"UpdateStepsBody":{"title":"Update Steps Body","type":"object","properties":{"steps":{"minItems":1,"maxItems":250,"description":"The ordered list of steps to replace the existing ones.","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/AssessmentStepDTO"},{"$ref":"#/components/schemas/ClassroomStepDTO"},{"$ref":"#/components/schemas/CourseStepDTO"},{"$ref":"#/components/schemas/EmailStepDTO"},{"$ref":"#/components/schemas/PathStepDTO"},{"$ref":"#/components/schemas/ProgramStepDTO"},{"$ref":"#/components/schemas/SlackMessageStepDTO"},{"$ref":"#/components/schemas/TeamsMessageStepDTO"}]}}},"required":["steps"]},"UpdatePathsTagsBody":{"title":"Update Paths Tags Body","type":"object","properties":{"tagIds":{"maxItems":100,"description":"The new tag IDs linked to the given path.","example":["507f1f77bcf86cd799439011"],"type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}}},"required":["tagIds"]},"ProjectDTO":{"title":"Project","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the project.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"name":{"type":"string","description":"The name of the project.","example":"Customer Onboarding"},"completed":{"type":"boolean","description":"True if the project is completed."},"groupId":{"type":"string","description":"The unique ID of the group the project belongs to.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"}},"required":["_id","name","completed","groupId"]},"SingleChoiceQualifierDTO":{"title":"Single Choice Qualifier","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the qualifier.","example":"SKQ1701914859202x53r"},"type":{"type":"string","enum":["singleChoice"],"description":"The type of the qualifier."},"currentValue":{"type":"string","description":"The current value of the qualifier.","example":"Intermediate"},"currentValueId":{"type":"string","description":"The unique ID of the current value of the qualifier.","example":"clgz9uqmm0001357bbgggvr1m"}},"required":["_id"]},"MultiChoiceQualifierDTO":{"title":"Multi Choice Qualifier","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the qualifier.","example":"SKQ1701914859202x53r"},"type":{"type":"string","enum":["multiChoice"],"description":"The type of the qualifier."},"currentValues":{"description":"The list of the current values of the qualifier.","example":["Intermediate","Advanced"],"type":"array","items":{"type":"string"}},"currentValueIds":{"description":"The list of current values unique IDs of the qualifier.","example":["clgz9uqmm0001357bbgggvr1m","clgz9uqmm0001357bbgggvr2p"],"type":"array","items":{"type":"string"}}},"required":["_id"]},"TextQualifierDTO":{"title":"Text Qualifier","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the qualifier.","example":"SKQ1701914859202x53r"},"type":{"type":"string","enum":["text"],"description":"The type of the qualifier."},"currentValue":{"type":"string","description":"The current value of the qualifier.","example":"The user still need to improve some aspects of the skill. "}},"required":["_id"]},"NumberQualifierDTO":{"title":"Number Qualifier","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the qualifier.","example":"SKQ1701914859202x53r"},"type":{"type":"string","enum":["number"],"description":"The type of the qualifier."},"currentValue":{"type":"number","description":"The current value of the qualifier.","example":10}},"required":["_id"]},"DateQualifierDTO":{"title":"Date Qualifier","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the qualifier.","example":"SKQ1701914859202x53r"},"type":{"type":"string","enum":["date"],"description":"The type of the qualifier."},"currentValue":{"format":"date-time","type":"string","description":"The current value of the qualifier, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC)).","example":"2024-09-30T16:56:39.911Z"}},"required":["_id"]},"PowerDTO":{"title":"Power","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the power.","example":"POW1710749206766wgc0"},"externalId":{"type":"string","description":"The unique external ID of the power.","example":"SKI17085916596770pzz"},"skillId":{"type":"string","description":"The unique ID of the skill.","example":"SKI17080760942940q3d"},"skillExternalId":{"type":"string","description":"The unique external ID of the skill.","example":"SKI17080760942940q3d"},"userId":{"type":"string","description":"The unique ID of the user.","example":"642edc18862a6c95d80d0ea1","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"},"createdAt":{"format":"date-time","type":"string","description":"The date and time when the power was created, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC)).","example":"2024-04-17T16:32:39.347Z"},"updatedAt":{"format":"date-time","type":"string","description":"The date and time when the power was last updated, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC)).","example":"2024-09-30T16:56:39.911Z"},"status":{"type":"string","enum":["toAssess","pendingValidation","validated"],"description":"The status of the power."},"qualifiers":{"description":"The list of qualifiers of the power.","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/SingleChoiceQualifierDTO"},{"$ref":"#/components/schemas/MultiChoiceQualifierDTO"},{"$ref":"#/components/schemas/TextQualifierDTO"},{"$ref":"#/components/schemas/NumberQualifierDTO"},{"$ref":"#/components/schemas/DateQualifierDTO"}]}}},"required":["_id","skillId","userId","status","qualifiers"]},"SkillParentDTO":{"title":"Skill Parent","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the parent.","example":"SKI9876543213456abcDE"},"externalId":{"type":"string","description":"The unique external ID of the parent.","example":"477e108e-60b5-4908-856e-aa123e133921"}},"required":["_id"]},"SkillTranslatedFieldsDTO":{"title":"Skill Translated Fields","type":"object","properties":{"name":{"type":"string","description":"The translation of the field `name` for this language.","example":"Sorties et déploiements"},"description":{"type":"string","description":"The translation of the field `description` for this language.","example":"L'utilisateur a-t-il déjà déployé le logiciel sur l'environnement de production ?"}}},"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"]},"SkillDTO":{"title":"Skill","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the skill.","example":"SKI1234567890123abcDE"},"name":{"type":"string","description":"The name of the skill.","example":"Releases and deployments"},"parents":{"description":"The parent skills and libraries.","type":"array","items":{"$ref":"#/components/schemas/SkillParentDTO"}},"status":{"type":"string","enum":["archived","published"],"description":"The status of the skill.","example":"published"},"translations":{"description":"The different translations available for the skill.","type":"array","items":{"$ref":"#/components/schemas/SkillTranslationDTO"}},"externalId":{"type":"string","description":"The unique external ID of the skill.","example":"5d9b7bf9-47bf-40ca-b670-2a2a80d992da"},"description":{"type":"string","description":"The description of the skill.","example":"Did the user already release the software on the production environment?"},"libraryId":{"type":"string","description":"The ID of the library that contains the skill.","example":"6b14f596-b5dd-40bf-af4c-a4270487a3c4"},"createdAt":{"format":"date-time","type":"string","description":"The creation date of the skill, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC)).","example":"2024-01-01T10:00:00.000Z"},"updatedAt":{"format":"date-time","type":"string","description":"The last update date of the skill, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC)).","example":"2024-01-02T08:00:00.000Z"}},"required":["_id","name","parents","status","translations"]},"ReplaceUserJobsBody":{"title":"Replace User Jobs Body","type":"object","properties":{"jobIds":{"description":"The list of unique IDs of the current jobs given to a user.","type":"array","items":{"type":"string"}}},"required":["jobIds"]},"TagUpdatableFields":{"title":"Tag Updatable Fields","type":"object","properties":{"isMain":{"type":"boolean","description":"True if the tag is to be set as a main tag; false otherwise."},"name":{"type":"string","description":"The name of the tag.","example":"Onboarding","minLength":1},"externalId":{"type":"string","description":"The external identifier of the tag if it is being synced from outer resources.","example":"1743_ab","minLength":1}},"required":["isMain","name"]},"TagDTO":{"title":"Tag","type":"object","properties":{"isMain":{"type":"boolean","description":"True if the tag is to be set as a main tag; false otherwise."},"_id":{"type":"string","description":"The unique ID of the tag.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"name":{"type":"string","description":"The name of the tag.","example":"Onboarding"},"externalId":{"type":"string","description":"The external identifier of the tag if it is being synced from outer resources.","example":"1743_ab"}},"required":["isMain","_id","name"]},"TagDTOWithSource":{"title":"Tag DTO With Source","type":"object","properties":{"isMain":{"type":"boolean","description":"True if the tag is to be set as a main tag; false otherwise."},"_id":{"type":"string","description":"The unique ID of the tag.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"name":{"type":"string","description":"The name of the tag.","example":"Onboarding"},"externalId":{"type":"string","description":"The external identifier of the tag if it is being synced from outer resources.","example":"1743_ab"},"source":{"type":"string","enum":["native","integration"],"description":"The source of the tag.\n- `native`: The tag has been manually added by an admin or created through the API.\n- `integration`: The tag has been synced from an external source."}},"required":["isMain","_id","name","source"]},"UserDTO":{"title":"User","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the user.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"mail":{"type":"string","description":"The email address of the user.","example":"john.smith@yopmail.com","minLength":1},"username":{"type":"string","description":"The username that can be used to log in if the company allows it.","example":"johnsmith","minLength":1},"status":{"type":"string","enum":["active","invited","deleted"],"description":"The status of the user."},"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","vi"],"description":"The default language of the user, in a bigram format (en, fr, de, etc.)."},"firstName":{"type":"string","description":"The first name of the user.","example":"John","minLength":1},"lastName":{"type":"string","description":"The last name of the user.","example":"Smith","minLength":1},"job":{"type":"string","description":"The role title of the user.","example":"Engineer","minLength":1},"organization":{"type":"string","description":"The organization that the user belongs to.","example":"360Learning","minLength":1},"phone":{"type":"string","description":"The phone number of the user.","example":"+33123456789","minLength":1},"custom":{"type":"string","description":"The value of the **Additional information** field in the user’s profile. This is not the value of the custom fields associated with the user.","example":"Half-time worker","minLength":1},"deletedAt":{"description":"The list of dates and times when the user’s profile was soft deleted, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC)).","type":"array","items":{"format":"date-time","type":"string"}},"primaryGroupId":{"type":"string","description":"The unique ID of the primary group of the user.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"reactivatedAt":{"description":"The list of dates and times when the user’s profile was reactivated, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC)).","type":"array","items":{"format":"date-time","type":"string"}},"lastLoginDate":{"format":"date-time","type":"string","description":"The date and time when the user last logged in, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"toBeDeactivatedAt":{"format":"date-time","type":"string","description":"The date and time when the user will be deactivated, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"profileImageId":{"type":"string","description":"The unique ID of the profile image of the user.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"}},"required":["_id","status","lang"]},"CreateCustomUserLinkRequestBody":{"title":"Create Custom User Link Request Body","type":"object","properties":{"customLinkId":{"type":"string","description":"The unique ID of the custom link.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"url":{"type":"string","description":"The URL of the custom user link.","example":"https://360learning.com"}},"required":["customLinkId","url"]},"MembershipDTO":{"title":"Membership","type":"object","properties":{"groupId":{"type":"string","description":"The unique ID of the group the user is a member of.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"role":{"type":"string","enum":["admin","analyst","editor","coach","contributor","learner","userAdmin"],"description":"The role of the user in the group."}},"required":["groupId","role"]},"InputUserDTO":{"title":"Input User","type":"object","properties":{"mail":{"type":"string","description":"The email address of the user. If not given, username must be given.","example":"john.smith@yopmail.com","minLength":1},"username":{"type":"string","description":"The username that can be used to log in if the company allows it. If not given, mail must be given.","example":"johnsmith","minLength":1},"membership":{"description":"The initial group membership of the user.","allOf":[{"$ref":"#/components/schemas/MembershipDTO"}]},"primaryGroupId":{"type":"string","description":"The unique ID of the primary group of the user.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"custom":{"type":"string","description":"The value of the **Additional information** field in the user’s profile. This is not the value of the custom fields associated with the user.","example":"Half-time worker","minLength":1},"firstName":{"type":"string","description":"The first name of the user.","example":"John","minLength":1},"lastName":{"type":"string","description":"The last name of the user.","example":"Smith","minLength":1},"job":{"type":"string","description":"The role title of the user.","example":"Boss","minLength":1},"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","vi"],"description":"The default language of the user, in a bigram format (en, fr, de, etc.). Default: `en`."},"organization":{"type":"string","description":"The organization that the user belongs to.","example":"360Learning","minLength":1},"phone":{"type":"string","description":"The phone number of the user.","example":"+33123456789","minLength":1},"toBeDeactivatedAt":{"format":"date-time","type":"string","description":"The date and time when the user will be deactivated, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."}},"required":["membership"]},"InputExternalCertificateDTO":{"title":"Input External Certificate","type":"object","properties":{"deliveryDate":{"format":"date-time","type":"string","description":"The delivery date of the certificate, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"expirationDate":{"format":"date-time","type":"string","description":"The expiration date of the certificate, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"title":{"type":"string","description":"The title of the certificate outline in the platform (internal name of the certificate).","example":"Certificate of Completion"},"certificateOutlineId":{"type":"string","description":"The unique ID of the outline of the certificate.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"file":{"type":"string","format":"binary","description":"The file to upload, in the `application/pdf` format."}},"required":["deliveryDate","title","file"]},"OutputUserExternalCertificateDTO":{"title":"Output User External Certificate","type":"object","properties":{"deliveryDate":{"format":"date-time","type":"string","description":"The delivery date of the certificate, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"expirationDate":{"format":"date-time","type":"string","description":"The expiration date of the certificate, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"title":{"type":"string","description":"The title of the certificate outline in the platform (internal name of the certificate).","example":"Certificate of Completion"},"_id":{"type":"string","description":"The unique ID of the user certificate.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"validityPeriod":{"type":"number","description":"The length of time, in months, for which the certificate is valid."},"certificateOutlineId":{"type":"string","description":"The unique ID of the outline of the certificate.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"type":{"type":"string","enum":["external"],"description":"The type of the certificate in the platform.","example":"external"}},"required":["deliveryDate","title","_id","type"]},"UserCustomLinkDTO":{"title":"User Custom Link","type":"object","properties":{"_id":{"type":"string","description":"The unique ID of the custom user link.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"customLinkId":{"type":"string","description":"The unique ID of the custom link.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"url":{"type":"string","description":"The url of the custom link.","example":"https://360learning.com"}},"required":["_id","customLinkId","url"]},"OutputUserPathCertificateDTO":{"title":"Output User Path Certificate","type":"object","properties":{"deliveryDate":{"format":"date-time","type":"string","description":"The delivery date of the certificate, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"expirationDate":{"format":"date-time","type":"string","description":"The expiration date of the certificate, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC))."},"title":{"type":"string","description":"The title of the certificate outline in the platform (internal name of the certificate).","example":"Certificate of Completion"},"_id":{"type":"string","description":"The unique ID of the user certificate.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"validityPeriod":{"type":"number","description":"The length of time, in months, for which the certificate is valid."},"certificateOutlineId":{"type":"string","description":"The unique ID of the outline of the received certificate.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"pathId":{"type":"string","description":"The unique ID of the path, in which the certificate was delivered.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"pathName":{"type":"string","description":"The name of the path, in which the certificate was delivered.","example":"Employees Onboarding"},"pathSessionId":{"type":"string","description":"The unique ID of the path session, in which the certificate was delivered.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"type":{"type":"string","enum":["path"],"description":"The type of the certificate in the platform.","example":"path"}},"required":["deliveryDate","title","_id","certificateOutlineId","pathId","pathSessionId","type"]},"Membership":{"title":"Membership","type":"object","properties":{"groupId":{"type":"string","description":"The unique ID of the group.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"role":{"type":"string","enum":["admin","analyst","editor","coach","contributor","learner","owner","userAdmin"],"description":"The role that the user has in the group."}},"required":["groupId","role"]},"ReplacePasswordBody":{"title":"Replace Password Body","type":"object","properties":{"password":{"type":"string","description":"The new password of the given user. The new password must be at least 8 characters long and it might be subject to company based rules. Example: 'password' : 'my_s3cret.PAssw0rd'."},"passwordMustBeChanged":{"type":"boolean","description":"True if the user must change their password when first logging into the platform; false otherwise."}},"required":["password","passwordMustBeChanged"]},"UpdateCustomUserLinkRequestBody":{"title":"Update Custom User Link Request Body","type":"object","properties":{"customLinkId":{"type":"string","description":"The unique ID of the custom link.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"url":{"type":"string","description":"The URL of the custom user link.","example":"https://360learning.com"}},"required":["customLinkId","url"]},"UpdateUserCertificatesPrivacyLevelBody":{"title":"Update User Certificates Privacy Level Body","type":"object","properties":{"certificateIds":{"description":"The unique IDs of the certificates.","example":["507f1f77bcf86cd799439011"],"type":"array","items":{"type":"string","format":"ObjectId","pattern":"^[a-fA-F0-9]{24}$"}},"isPublic":{"type":"boolean","description":"The privacy level value of the certificates."}},"required":["certificateIds","isPublic"]},"EmptyResponse":{"title":"Empty Response","type":"object","properties":{}},"UpdateUserDTO":{"title":"Update User","type":"object","properties":{"firstName":{"type":"string","nullable":true,"description":"The first name of the user.","example":"John","minLength":1},"lastName":{"type":"string","nullable":true,"description":"The last name of the user.","example":"Smith","minLength":1},"phone":{"type":"string","nullable":true,"description":"The phone number of the user.","example":"+33123456789","minLength":1},"job":{"type":"string","nullable":true,"description":"The role title of the user.","example":"Architect","minLength":1},"organization":{"type":"string","nullable":true,"description":"The organization that the user belongs to.","example":"360Learning","minLength":1},"custom":{"type":"string","nullable":true,"description":"The value of the **Additional information** field in the user’s profile. This is not the value of the custom fields associated with the user.","example":"Half-time worker","minLength":1},"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","vi"],"description":"The default language of the user, in a bigram format (en, fr, de, etc.)."},"toBeDeactivatedAt":{"format":"date-time","type":"string","nullable":true,"description":"The date and time when the user will be deactivated, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC)). Note that this parameter cannot be set on a user that is already deactivated.","example":"2024-09-10T23:00:00.000Z"},"mail":{"type":"string","nullable":true,"description":"The email address of the user. Must not correspond to an existing user in the company.","example":"john.smith@yopmail.com","minLength":1},"primaryGroupId":{"type":"string","nullable":true,"description":"The unique ID of the primary group of the user.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"},"username":{"type":"string","nullable":true,"description":"The username that can be used to log in if the company allows it. Options are: lowercase letters, numbers, and the following special characters: _ - . + # ! $ % & ' * / = ? ^ ` { | } ~.","example":"johnsmith","minLength":1},"profileImageId":{"type":"string","nullable":true,"description":"The unique ID of the media to use as the user's profile image. Set to null to remove the current image. Recommended size: 256px × 256px.","format":"ObjectId","example":"507f1f77bcf86cd799439011","pattern":"^[a-fA-F0-9]{24}$"}}},"UpdateUserCustomFieldValuesBody":{"title":"Update User Custom Field Values Body","type":"object","properties":{"customValues":{"maxItems":300,"description":"The list of customValues to replace the existing ones.","type":"array","items":{"$ref":"#/components/schemas/CustomFieldValueDTO"}}},"required":["customValues"]},"UploadUserMediaBodyDTO":{"title":"Upload User Media Body","type":"object","properties":{"profileImage":{"type":"string","format":"binary","description":"The user profile image file. Recommended size: 256px × 256px. Maximum file size: 10MB. Supported media types: image/bmp, image/gif, image/heic, image/jpeg, image/png, image/svg+xml, image/webp."}},"required":["profileImage"]}}},"webhooks":{}}