{"components":{"schemas":{"ActivityPerformanceGetSessionStatsResponseDTO":{"properties":{"averageScore":{"description":"Mean score across scored sessions (analysis DONE). Null when there is no scored session (never 0).","maximum":100,"minimum":0,"nullable":true,"type":"number"},"averageScoreImprovement":{"minimum":0,"type":"number"},"completedCount":{"description":"Number of completed sessions (score >= 70) in the period. Counts every completed session, so a mission completed more than once counts more than once.","maximum":9007199254740991,"minimum":0,"type":"integer"},"sessionsCompleted":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"tracksCompleted":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["sessionsCompleted","completedCount","tracksCompleted","averageScore","averageScoreImprovement"],"type":"object"},"AssignmentCreateRequestDTO":{"properties":{"dueDate":{"description":"Optional due date for the content assignment","format":"date-time","type":"string"},"reference":{"description":"Reference to the content being assigned","properties":{"id":{"description":"The unique identifier for the content reference","pattern":"^[0-9a-f]{24}$","type":"string"},"type":{"description":"The type of content reference","enum":["mission","track"],"type":"string"}},"required":["id","type"],"type":"object"},"userIds":{"description":"Array of user UUIDs to assign content to (min: 1, max: 10)","items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"maxItems":10,"minItems":1,"type":"array"}},"required":["userIds","reference"],"type":"object"},"AssignmentCreateResponseDTO":{"properties":{"assignedBy":{"description":"Who assigned this content to the user","properties":{"displayName":{"description":"Display name of the assigning user, only present when kind is \"user\"","type":"string"},"kind":{"description":"Origin of the assignment: \"user\" when a responsible user was resolved, \"system\" for system-generated allocations, \"unknown\" when the responsible user cannot be resolved","enum":["user","system","unknown"],"type":"string"},"userId":{"description":"Id of the assigning user, only present when kind is \"user\"","type":"string"}},"required":["kind"],"type":"object"},"certification":{"description":"Certification earned for the assigned track content","nullable":true,"properties":{"certificationDate":{"description":"The date when the certification was earned","format":"date-time","type":"string"},"id":{"description":"The unique identifier of the certification","type":"string"},"trackTitle":{"description":"The certified track title","type":"string"}},"required":["id","trackTitle","certificationDate"],"type":"object"},"completedMissionIds":{"description":"Array of completed mission IDs","items":{"type":"string"},"type":"array"},"contentTitle":{"description":"Resolved title of the referenced content","nullable":true,"type":"string"},"createdAt":{"description":"The creation date","format":"date-time","type":"string"},"dueDate":{"description":"The due date for completing the content","format":"date-time","nullable":true,"type":"string"},"id":{"description":"The unique identifier of the assigned content","type":"string"},"initiatingUserId":{"description":"ID of the user who initiated the assignment","nullable":true,"type":"string"},"lastUpdatedAt":{"description":"The last update date","format":"date-time","type":"string"},"reference":{"description":"Reference to the assigned content","properties":{"id":{"description":"The unique identifier of the content","type":"string"},"type":{"description":"The type of content reference","enum":["mission","track"],"type":"string"}},"required":["id","type"],"type":"object"},"sprintScheduleId":{"description":"ID of the associated sprint schedule","nullable":true,"type":"string"},"state":{"description":"The state of the content allocation","enum":["notStarted","started","completed"],"type":"string"},"totalMissions":{"description":"Total missions in the referenced track content","nullable":true,"type":"number"},"trackId":{"description":"Parent track id for mission-type allocations","type":"string"},"type":{"description":"The type of content allocation","enum":["autoTrackAllocation","track","managerAssigned","refresher","sprint","selfEnrolled"],"type":"string"},"userId":{"description":"The unique identifier of the user","type":"string"}},"required":["id","userId","reference","type","state","completedMissionIds","createdAt","lastUpdatedAt"],"type":"object"},"AssignmentDeleteResponseDTO":{"properties":{"success":{"description":"Whether the content allocation was successfully removed","type":"boolean"}},"required":["success"],"type":"object"},"AssignmentFindResponseDTO":{"properties":{"data":{"items":{"properties":{"assignedBy":{"description":"Who assigned this content to the user","properties":{"displayName":{"description":"Display name of the assigning user, only present when kind is \"user\"","type":"string"},"kind":{"description":"Origin of the assignment: \"user\" when a responsible user was resolved, \"system\" for system-generated allocations, \"unknown\" when the responsible user cannot be resolved","enum":["user","system","unknown"],"type":"string"},"userId":{"description":"Id of the assigning user, only present when kind is \"user\"","type":"string"}},"required":["kind"],"type":"object"},"certification":{"description":"Certification earned for the assigned track content","nullable":true,"properties":{"certificationDate":{"description":"The date when the certification was earned","format":"date-time","type":"string"},"id":{"description":"The unique identifier of the certification","type":"string"},"trackTitle":{"description":"The certified track title","type":"string"}},"required":["id","trackTitle","certificationDate"],"type":"object"},"completedMissionIds":{"description":"Array of completed mission IDs","items":{"type":"string"},"type":"array"},"contentTitle":{"description":"Resolved title of the referenced content","nullable":true,"type":"string"},"createdAt":{"description":"The creation date","format":"date-time","type":"string"},"dueDate":{"description":"The due date for completing the content","format":"date-time","nullable":true,"type":"string"},"id":{"description":"The unique identifier of the assigned content","type":"string"},"initiatingUserId":{"description":"ID of the user who initiated the assignment","nullable":true,"type":"string"},"lastUpdatedAt":{"description":"The last update date","format":"date-time","type":"string"},"reference":{"description":"Reference to the assigned content","properties":{"id":{"description":"The unique identifier of the content","type":"string"},"type":{"description":"The type of content reference","enum":["mission","track"],"type":"string"}},"required":["id","type"],"type":"object"},"sprintScheduleId":{"description":"ID of the associated sprint schedule","nullable":true,"type":"string"},"state":{"description":"The state of the content allocation","enum":["notStarted","started","completed"],"type":"string"},"totalMissions":{"description":"Total missions in the referenced track content","nullable":true,"type":"number"},"trackId":{"description":"Parent track id for mission-type allocations","type":"string"},"type":{"description":"The type of content allocation","enum":["autoTrackAllocation","track","managerAssigned","refresher","sprint","selfEnrolled"],"type":"string"},"userId":{"description":"The unique identifier of the user","type":"string"}},"required":["id","userId","reference","type","state","completedMissionIds","createdAt","lastUpdatedAt"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"AssignmentHistoryFindResponseDTO":{"properties":{"data":{"items":{"properties":{"completedAt":{"format":"date-time","type":"string"},"contentTitle":{"type":"string"},"contentType":{"enum":["mission","track"],"type":"string"},"id":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":{"enum":["autoTrackAllocation","track","managerAssigned","refresher","sprint","selfEnrolled"],"type":"string"},"userId":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["id","userId","completedAt","contentType","type"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"AssignmentsOverviewFindResponseDTO":{"properties":{"data":{"items":{"properties":{"completionPercentage":{"description":"Share of the assignment that is done: completed learners for a sprint, completed missions for a track assigned to one learner, and 0 or 100 for a single mission. Null when it cannot be derived, e.g. the track is no longer in the CMS.","nullable":true,"type":"number"},"contentReferenceId":{"type":"string"},"contentReferenceType":{"description":"Track or mission. Sprints are always tracks.","enum":["mission","track"],"type":"string"},"contentTitle":{"description":"Track or mission title, resolved from the CMS.","type":"string"},"dueDate":{"description":"The deadline (ISO 8601), when set. Always present on a sprint; a 1:1 assignment may have none.","format":"date-time","type":"string"},"id":{"description":"Sprint schedule id, or content allocation id.","type":"string"},"kind":{"description":"Whether the row is a team sprint or a 1:1 assignment.","enum":["sprint","individual"],"type":"string"},"learners":{"description":"A sample of the learners reached, enough to render an avatar group. Empty under enhanced privacy, and for a 1:1 assignment it holds the single learner.","items":{"properties":{"firstName":{"nullable":true,"type":"string"},"lastName":{"nullable":true,"type":"string"},"pictureUrl":{"nullable":true,"type":"string"},"userId":{"type":"string"}},"required":["userId"],"type":"object"},"type":"array"},"learnersCompleted":{"type":"number"},"learnersTotal":{"type":"number"},"startDate":{"description":"When the assignment was created (ISO 8601). Neither a sprint nor a 1:1 assignment records a separate start.","format":"date-time","type":"string"},"status":{"enum":["ACTIVE","CLOSED"],"type":"string"},"team":{"description":"Sprint rows only. A 1:1 assignment has no team of its own.","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"type":"object"}},"required":["id","kind","contentReferenceId","contentReferenceType","contentTitle","learners","learnersTotal","learnersCompleted","completionPercentage","startDate","status"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"AssistantChatRequestDTO":{"properties":{"approvalMessageId":{"description":"Assistant message id to continue in place (approval continuation)","type":"string"},"chatId":{"description":"Target chat id (also the Sentry conversation id)","minLength":1,"type":"string"},"clientMessages":{"description":"Full client history incl. approval outcomes (approval continuation)","items":{"additionalProperties":{},"properties":{"id":{"minLength":1,"type":"string"},"parts":{"items":{},"type":"array"},"role":{"type":"string"}},"required":["id","role","parts"],"type":"object"},"maxItems":200,"type":"array"},"isDemo":{"default":false,"description":"Demo mode runs with no tools and the demo system prompt","type":"boolean"},"message":{"description":"The incoming user UIMessage","properties":{"id":{"description":"Stable message id — the idempotency key","minLength":1,"type":"string"},"parts":{"description":"AI SDK message parts","items":{"anyOf":[{"properties":{"text":{"maxLength":10000,"minLength":1,"type":"string"},"type":{"enum":["text"],"type":"string"}},"required":["type","text"],"type":"object"},{"additionalProperties":{},"properties":{"type":{"type":"string"}},"required":["type"],"type":"object"}]},"type":"array"},"role":{"description":"Author role; always user for an incoming turn","enum":["user"],"type":"string"}},"required":["id","role","parts"],"type":"object"}},"required":["chatId","message"],"type":"object"},"AvatarsFindResponseDTO":{"properties":{"data":{"items":{"properties":{"age":{"exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0,"type":"integer"},"alt":{"nullable":true,"type":"string"},"createdAt":{"type":"string"},"filename":{"type":"string"},"filesize":{"type":"number"},"gender":{"enum":["male","female"],"type":"string"},"height":{"type":"number"},"id":{"type":"string"},"mimeType":{"type":"string"},"reusable":{"type":"boolean"},"sizes":{"properties":{"card":{"properties":{"url":{"nullable":true,"type":"string"}},"type":"object"},"thumbnail":{"properties":{"url":{"nullable":true,"type":"string"}},"type":"object"}},"type":"object"},"updatedAt":{"type":"string"},"url":{"type":"string"},"width":{"type":"number"}},"required":["id","filename","age","gender","reusable","height","width","filesize","mimeType","updatedAt","createdAt","url"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"AvatarsUploadRequestDTO":{"properties":{"age":{"description":"Persona approximate age","maximum":120,"minimum":1,"type":"integer"},"gender":{"description":"Persona gender","enum":["male","female"],"type":"string"},"sagaId":{"description":"Restrict this avatar to a specific saga. Leave empty to make it globally available.","type":"string"}},"required":["age","gender"],"type":"object"},"AvatarsUploadResponseDTO":{"properties":{"age":{"exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0,"type":"integer"},"alt":{"nullable":true,"type":"string"},"createdAt":{"type":"string"},"filename":{"type":"string"},"filesize":{"type":"number"},"gender":{"enum":["male","female"],"type":"string"},"height":{"type":"number"},"id":{"type":"string"},"mimeType":{"type":"string"},"reusable":{"type":"boolean"},"sizes":{"properties":{"card":{"properties":{"url":{"nullable":true,"type":"string"}},"type":"object"},"thumbnail":{"properties":{"url":{"nullable":true,"type":"string"}},"type":"object"}},"type":"object"},"updatedAt":{"type":"string"},"url":{"type":"string"},"width":{"type":"number"}},"required":["id","filename","age","gender","reusable","height","width","filesize","mimeType","updatedAt","createdAt","url"],"type":"object"},"CertificationAnalyticsFindResponseDTO":{"properties":{"data":{"items":{"properties":{"assignedDate":{"description":"Date the track was assigned to the learner, ISO 8601. Always present; null when no backing allocation is found.","format":"date-time","nullable":true,"type":"string"},"certificationDate":{"format":"date-time","type":"string"},"createdAt":{"format":"date-time","type":"string"},"firstName":{"nullable":true,"type":"string"},"id":{"type":"string"},"lastName":{"nullable":true,"type":"string"},"trackReferenceId":{"type":"string"},"trackTitle":{"type":"string"},"userId":{"type":"string"},"userPictureUrl":{"nullable":true,"type":"string"}},"required":["id","createdAt","userId","trackReferenceId","trackTitle","certificationDate","assignedDate"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"CertificationsFindOneResponseDTO":{"properties":{"certificationDate":{"description":"The date when the certification was earned.","format":"date-time","type":"string"},"id":{"description":"The unique identifier for the certification.","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"trackReferenceId":{"description":"The unique identifier for the track.","type":"string"},"trackTitle":{"description":"The title of the track.","type":"string"},"userId":{"description":"The unique identifier for the user who earned the certification.","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["id","userId","trackReferenceId","trackTitle","certificationDate"],"type":"object"},"CertificationsFindResponseDTO":{"properties":{"data":{"items":{"properties":{"certificationDate":{"description":"The date when the certification was earned.","format":"date-time","type":"string"},"id":{"description":"The unique identifier for the certification.","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"trackReferenceId":{"description":"The unique identifier for the track.","type":"string"},"trackTitle":{"description":"The title of the track.","type":"string"},"userId":{"description":"The unique identifier for the user who earned the certification.","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["id","userId","trackReferenceId","trackTitle","certificationDate"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"ChatDashboardContributionsResponseDTO":{"properties":{"data":{"items":{"properties":{"call_count":{"description":"Voice calls in the last 30 days","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"organization_id":{"description":"Organization id","type":"string"},"session_count":{"description":"Text sessions in the last 30 days","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"total_calls_and_sessions":{"description":"Combined total","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"total_tool_call_messages":{"description":"Tool-call messages","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"user":{"description":"The contributing user, null when the user no longer resolves","nullable":true,"properties":{"email":{"description":"User email","nullable":true,"type":"string"},"firstName":{"description":"First name","nullable":true,"type":"string"},"id":{"description":"User id","type":"string"},"lastName":{"description":"Last name","nullable":true,"type":"string"},"organizationId":{"description":"Organization id","nullable":true,"type":"string"},"pictureUrl":{"description":"Avatar URL","nullable":true,"type":"string"}},"required":["id"],"type":"object"},"user_id":{"description":"Contributing user id","type":"string"}},"required":["organization_id","user_id","call_count","session_count","total_calls_and_sessions","total_tool_call_messages","user"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"ChatDashboardOwnerDashboardResponseDTO":{"properties":{"activityTrends":{"description":"Weekly trends","properties":{"organization_id":{"description":"Organization id","type":"string"},"weeks":{"description":"Last 5 weeks","items":{"properties":{"calendar_week":{"description":"ISO calendar week","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"call_count":{"description":"Calls this week","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"iso_week":{"description":"ISO week, e.g. 2025-W45","type":"string"},"organization_id":{"description":"Organization id","type":"string"},"session_count":{"description":"Sessions this week","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"total_calls_and_sessions":{"description":"Combined this week","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"total_tool_call_messages":{"description":"Tool-call messages","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"week_end":{"description":"Week end (Sunday)","format":"date-time","type":"string"},"week_start":{"description":"Week start (Monday)","format":"date-time","type":"string"},"weeks_ago":{"description":"0 = current week … 4","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"year":{"description":"Year of the week","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["week_start","week_end","weeks_ago","calendar_week","year","iso_week","organization_id","call_count","session_count","total_calls_and_sessions","total_tool_call_messages"],"type":"object"},"type":"array"}},"required":["organization_id","weeks"],"type":"object"},"teamActivity":{"description":"Team-wide 30-day totals","properties":{"organization_id":{"description":"Organization id","type":"string"},"total_calls_and_sessions":{"description":"Combined 30-day total","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"total_messages":{"description":"All messages","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"total_tool_call_messages":{"description":"Tool-call messages","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["organization_id","total_calls_and_sessions","total_tool_call_messages","total_messages"],"type":"object"}},"required":["teamActivity","activityTrends"],"type":"object"},"ChatListResponseDTO":{"properties":{"chats":{"description":"The current user's chats","items":{"properties":{"assistantActions":{"description":"Tool actions performed by the assistant","items":{"properties":{"content":{"description":"Arbitrary tool result payload"},"externalMessageReferenceId":{"description":"Provider message id the action is attached to","type":"string"},"externalToolCallReferenceId":{"description":"Provider tool-call id that produced the action","type":"string"},"hyperLink":{"description":"Optional link surfaced to the user for this action","type":"string"},"toolName":{"description":"Name of the tool the assistant invoked","type":"string"}},"required":["externalMessageReferenceId","externalToolCallReferenceId","toolName"],"type":"object"},"nullable":true,"type":"array"},"callId":{"description":"Provider call id, for voice chats","nullable":true,"type":"string"},"createdAt":{"description":"Creation timestamp","format":"date-time","type":"string"},"externalSessionId":{"description":"The originating provider's conversation id, when the chat has one","nullable":true,"type":"string"},"feedbackRating":{"description":"User thumbs up/down","nullable":true,"type":"boolean"},"feedbackText":{"description":"User free-text feedback","nullable":true,"type":"string"},"id":{"description":"Chat id","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"lastUpdatedAt":{"description":"Last update timestamp","format":"date-time","type":"string"},"organizationId":{"description":"Organization id","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"source":{"description":"System that produced the chat","enum":["ai-sdk","elevenlabs","whatsapp"],"type":"string"},"status":{"description":"Chat lifecycle status","enum":["pending","active","completed","connected"],"type":"string"},"title":{"description":"Chat title","nullable":true,"type":"string"},"type":{"description":"Chat channel type","enum":["web_call","text_chat","phone_call","whatsapp"],"type":"string"},"userId":{"description":"Owning user id","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["id","userId","organizationId","title","type","status","source","assistantActions","callId","externalSessionId","feedbackRating","feedbackText","createdAt","lastUpdatedAt"],"type":"object"},"type":"array"}},"required":["chats"],"type":"object"},"ChatReviewChatsResponseDTO":{"properties":{"data":{"items":{"properties":{"assistantActions":{"description":"Tool actions performed by the assistant","items":{"properties":{"content":{"description":"Arbitrary tool result payload"},"externalMessageReferenceId":{"description":"Provider message id the action is attached to","type":"string"},"externalToolCallReferenceId":{"description":"Provider tool-call id that produced the action","type":"string"},"hyperLink":{"description":"Optional link surfaced to the user for this action","type":"string"},"toolName":{"description":"Name of the tool the assistant invoked","type":"string"}},"required":["externalMessageReferenceId","externalToolCallReferenceId","toolName"],"type":"object"},"nullable":true,"type":"array"},"callId":{"description":"Provider call id, for voice chats","nullable":true,"type":"string"},"createdAt":{"description":"Creation timestamp","format":"date-time","type":"string"},"externalSessionId":{"description":"The originating provider's conversation id, when the chat has one","nullable":true,"type":"string"},"feedbackRating":{"description":"User thumbs up/down","nullable":true,"type":"boolean"},"feedbackText":{"description":"User free-text feedback","nullable":true,"type":"string"},"id":{"description":"Chat id","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"lastUpdatedAt":{"description":"Last update timestamp","format":"date-time","type":"string"},"organizationId":{"description":"Organization id","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"source":{"description":"System that produced the chat","enum":["ai-sdk","elevenlabs","whatsapp"],"type":"string"},"status":{"description":"Chat lifecycle status","enum":["pending","active","completed","connected"],"type":"string"},"title":{"description":"Chat title","nullable":true,"type":"string"},"type":{"description":"Chat channel type","enum":["web_call","text_chat","phone_call","whatsapp"],"type":"string"},"userId":{"description":"Owning user id","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["id","userId","organizationId","title","type","status","source","assistantActions","callId","externalSessionId","feedbackRating","feedbackText","createdAt","lastUpdatedAt"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"ChatReviewResolveResponseDTO":{"properties":{"canReview":{"description":"Whether the caller may review conversations in this org","type":"boolean"},"chatId":{"description":"Chat id","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"isOwnChat":{"description":"Whether the chat belongs to the calling user","type":"boolean"},"userId":{"description":"Id of the user the chat belongs to","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["chatId","userId","isOwnChat","canReview"],"type":"object"},"ChatReviewTenantResponseDTO":{"properties":{"chatId":{"description":"The chat's own id, when the lookup was keyed on a conversation","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"organizationId":{"description":"Organization the reviewer must act for","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"userId":{"description":"Id of the user the sessions belong to","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["organizationId","userId"],"type":"object"},"ChatSupportRequestDTO":{"properties":{"context":{"properties":{"currentRoute":{"properties":{"args":{"maxLength":2000,"type":"string"},"path":{"maxLength":2000,"type":"string"}},"required":["path","args"],"type":"object"},"routes":{"maxLength":100000,"type":"string"},"userLanguage":{"maxLength":16,"minLength":1,"type":"string"}},"required":["routes","currentRoute","userLanguage"],"type":"object"},"conversationId":{"maxLength":128,"minLength":1,"type":"string"},"messages":{"items":{"additionalProperties":{},"properties":{"id":{"type":"string"},"role":{"type":"string"}},"required":["id","role"],"type":"object"},"maxItems":200,"type":"array"}},"required":["messages"],"type":"object"},"ChatTurnRequestDTO":{"properties":{"chatUpdate":{"description":"Extra chat fields written alongside the turn","properties":{"callId":{"description":"Provider call id, for voice chats","nullable":true,"type":"string"},"externalSessionId":{"description":"The originating provider's conversation id, when the chat has one","nullable":true,"type":"string"},"feedbackRating":{"description":"User thumbs up/down","nullable":true,"type":"boolean"},"feedbackText":{"description":"User free-text feedback","nullable":true,"type":"string"},"status":{"description":"Chat lifecycle status","enum":["pending","active","completed","connected"],"type":"string"}},"type":"object"},"messages":{"description":"The turn's messages, reconciled by `uiMessage.id`","items":{"properties":{"role":{"description":"Author role of the message","enum":["user","assistant","system"],"type":"string"},"text":{"description":"Plain-text projection of the message","type":"string"},"timestamp":{"description":"Message time; defaults to now when omitted","format":"date-time","type":"string"},"type":{"description":"Channel type of the message","enum":["web_call","text_chat","phone_call","whatsapp",null],"nullable":true,"type":"string"},"uiMessage":{"additionalProperties":{},"description":"Canonical AI SDK message; `id` is the idempotency key","properties":{"id":{"description":"Stable message id — the idempotency key","minLength":1,"type":"string"}},"required":["id"],"type":"object"}},"required":["role","uiMessage","text"],"type":"object"},"type":"array"},"source":{"description":"System that produced the chat","enum":["ai-sdk","elevenlabs","whatsapp"],"type":"string"},"titleFallback":{"description":"Fallback title when generation yields nothing","type":"string"},"type":{"description":"Type used when self-healing a missing chat","enum":["web_call","text_chat","phone_call","whatsapp"],"type":"string"}},"required":["source","messages"],"type":"object"},"ChatUpdateRequestDTO":{"properties":{"feedbackRating":{"description":"User thumbs up/down","nullable":true,"type":"boolean"},"feedbackText":{"description":"User free-text feedback","nullable":true,"type":"string"}},"type":"object"},"ChatUpdateResponseDTO":{"properties":{"assistantActions":{"description":"Tool actions performed by the assistant","items":{"properties":{"content":{"description":"Arbitrary tool result payload"},"externalMessageReferenceId":{"description":"Provider message id the action is attached to","type":"string"},"externalToolCallReferenceId":{"description":"Provider tool-call id that produced the action","type":"string"},"hyperLink":{"description":"Optional link surfaced to the user for this action","type":"string"},"toolName":{"description":"Name of the tool the assistant invoked","type":"string"}},"required":["externalMessageReferenceId","externalToolCallReferenceId","toolName"],"type":"object"},"nullable":true,"type":"array"},"callId":{"description":"Provider call id, for voice chats","nullable":true,"type":"string"},"createdAt":{"description":"Creation timestamp","format":"date-time","type":"string"},"externalSessionId":{"description":"The originating provider's conversation id, when the chat has one","nullable":true,"type":"string"},"feedbackRating":{"description":"User thumbs up/down","nullable":true,"type":"boolean"},"feedbackText":{"description":"User free-text feedback","nullable":true,"type":"string"},"id":{"description":"Chat id","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"lastUpdatedAt":{"description":"Last update timestamp","format":"date-time","type":"string"},"organizationId":{"description":"Organization id","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"source":{"description":"System that produced the chat","enum":["ai-sdk","elevenlabs","whatsapp"],"type":"string"},"status":{"description":"Chat lifecycle status","enum":["pending","active","completed","connected"],"type":"string"},"title":{"description":"Chat title","nullable":true,"type":"string"},"type":{"description":"Chat channel type","enum":["web_call","text_chat","phone_call","whatsapp"],"type":"string"},"userId":{"description":"Owning user id","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["id","userId","organizationId","title","type","status","source","assistantActions","callId","externalSessionId","feedbackRating","feedbackText","createdAt","lastUpdatedAt"],"type":"object"},"ChatWithMessagesResponseDTO":{"properties":{"chat":{"description":"The chat","properties":{"assistantActions":{"description":"Tool actions performed by the assistant","items":{"properties":{"content":{"description":"Arbitrary tool result payload"},"externalMessageReferenceId":{"description":"Provider message id the action is attached to","type":"string"},"externalToolCallReferenceId":{"description":"Provider tool-call id that produced the action","type":"string"},"hyperLink":{"description":"Optional link surfaced to the user for this action","type":"string"},"toolName":{"description":"Name of the tool the assistant invoked","type":"string"}},"required":["externalMessageReferenceId","externalToolCallReferenceId","toolName"],"type":"object"},"nullable":true,"type":"array"},"callId":{"description":"Provider call id, for voice chats","nullable":true,"type":"string"},"createdAt":{"description":"Creation timestamp","format":"date-time","type":"string"},"externalSessionId":{"description":"The originating provider's conversation id, when the chat has one","nullable":true,"type":"string"},"feedbackRating":{"description":"User thumbs up/down","nullable":true,"type":"boolean"},"feedbackText":{"description":"User free-text feedback","nullable":true,"type":"string"},"id":{"description":"Chat id","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"lastUpdatedAt":{"description":"Last update timestamp","format":"date-time","type":"string"},"organizationId":{"description":"Organization id","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"source":{"description":"System that produced the chat","enum":["ai-sdk","elevenlabs","whatsapp"],"type":"string"},"status":{"description":"Chat lifecycle status","enum":["pending","active","completed","connected"],"type":"string"},"title":{"description":"Chat title","nullable":true,"type":"string"},"type":{"description":"Chat channel type","enum":["web_call","text_chat","phone_call","whatsapp"],"type":"string"},"userId":{"description":"Owning user id","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["id","userId","organizationId","title","type","status","source","assistantActions","callId","externalSessionId","feedbackRating","feedbackText","createdAt","lastUpdatedAt"],"type":"object"},"messages":{"description":"Messages in chronological order","items":{"properties":{"chatId":{"description":"Parent chat id","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"createdAt":{"description":"Creation timestamp","format":"date-time","type":"string"},"id":{"description":"Chat message id","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"lastUpdatedAt":{"description":"Last update timestamp","format":"date-time","type":"string"},"role":{"description":"Author role","enum":["user","assistant","system"],"type":"string"},"text":{"description":"Derived plain-text of the message","type":"string"},"timestamp":{"description":"Message timestamp","format":"date-time","type":"string"},"type":{"description":"Channel type of the message","enum":["web_call","text_chat","phone_call","whatsapp",null],"nullable":true,"type":"string"},"uiMessage":{"additionalProperties":{},"description":"Canonical AI SDK UIMessage (jsonb)","type":"object"},"userId":{"description":"Owning user id","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["id","chatId","userId","role","type","uiMessage","text","timestamp","createdAt","lastUpdatedAt"],"type":"object"},"type":"array"}},"required":["chat","messages"],"type":"object"},"CommentCreateRequestDTO":{"properties":{"content":{"description":"Free form comment content","type":"string"},"reference":{"description":"Reference to the entity being commented on","properties":{"id":{"description":"Reference id for the entity being commented on","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":{"description":"Type of entity being commented on","enum":["SESSION"],"type":"string"}},"required":["type","id"],"type":"object"}},"required":["content","reference"],"type":"object"},"CommentCreateResponseDTO":{"properties":{"content":{"description":"Free form comment content","type":"string"},"createdAt":{"description":"Date when the comment was created","format":"date-time","type":"string"},"deletedAt":{"description":"Date when the comment was deleted (null if not deleted)","format":"date-time","nullable":true,"type":"string"},"id":{"description":"Unique identifier of the comment","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"lastUpdatedAt":{"description":"Date when the comment was last updated","format":"date-time","type":"string"},"reference":{"description":"Reference to the entity being commented on","properties":{"id":{"description":"Reference id for the entity being commented on","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":{"description":"Type of entity being commented on","enum":["SESSION"],"type":"string"}},"required":["type","id"],"type":"object"},"userId":{"description":"ID of the user who created the comment","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["id","createdAt","lastUpdatedAt","userId","content","reference"],"type":"object"},"CommentDeleteResponseDTO":{"properties":{"content":{"description":"Free form comment content","type":"string"},"createdAt":{"description":"Date when the comment was created","format":"date-time","type":"string"},"deletedAt":{"description":"Date when the comment was deleted (null if not deleted)","format":"date-time","nullable":true,"type":"string"},"id":{"description":"Unique identifier of the comment","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"lastUpdatedAt":{"description":"Date when the comment was last updated","format":"date-time","type":"string"},"reference":{"description":"Reference to the entity being commented on","properties":{"id":{"description":"Reference id for the entity being commented on","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":{"description":"Type of entity being commented on","enum":["SESSION"],"type":"string"}},"required":["type","id"],"type":"object"},"userId":{"description":"ID of the user who created the comment","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["id","createdAt","lastUpdatedAt","userId","content","reference"],"type":"object"},"CommentFindResponseDTO":{"properties":{"data":{"items":{"properties":{"content":{"description":"Free form comment content","type":"string"},"createdAt":{"description":"Date when the comment was created","format":"date-time","type":"string"},"deletedAt":{"description":"Date when the comment was deleted (null if not deleted)","format":"date-time","nullable":true,"type":"string"},"id":{"description":"Unique identifier of the comment","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"lastUpdatedAt":{"description":"Date when the comment was last updated","format":"date-time","type":"string"},"reference":{"description":"Reference to the entity being commented on","properties":{"id":{"description":"Reference id for the entity being commented on","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":{"description":"Type of entity being commented on","enum":["SESSION"],"type":"string"}},"required":["type","id"],"type":"object"},"userId":{"description":"ID of the user who created the comment","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["id","createdAt","lastUpdatedAt","userId","content","reference"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"CommentGetResponseDTO":{"properties":{"content":{"description":"Free form comment content","type":"string"},"createdAt":{"description":"Date when the comment was created","format":"date-time","type":"string"},"deletedAt":{"description":"Date when the comment was deleted (null if not deleted)","format":"date-time","nullable":true,"type":"string"},"id":{"description":"Unique identifier of the comment","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"lastUpdatedAt":{"description":"Date when the comment was last updated","format":"date-time","type":"string"},"reference":{"description":"Reference to the entity being commented on","properties":{"id":{"description":"Reference id for the entity being commented on","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":{"description":"Type of entity being commented on","enum":["SESSION"],"type":"string"}},"required":["type","id"],"type":"object"},"userId":{"description":"ID of the user who created the comment","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["id","createdAt","lastUpdatedAt","userId","content","reference"],"type":"object"},"CommentUpdateRequestDTO":{"properties":{"content":{"description":"Free form comment content","type":"string"}},"required":["content"],"type":"object"},"CommentUpdateResponseDTO":{"properties":{"content":{"description":"Free form comment content","type":"string"},"createdAt":{"description":"Date when the comment was created","format":"date-time","type":"string"},"deletedAt":{"description":"Date when the comment was deleted (null if not deleted)","format":"date-time","nullable":true,"type":"string"},"id":{"description":"Unique identifier of the comment","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"lastUpdatedAt":{"description":"Date when the comment was last updated","format":"date-time","type":"string"},"reference":{"description":"Reference to the entity being commented on","properties":{"id":{"description":"Reference id for the entity being commented on","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":{"description":"Type of entity being commented on","enum":["SESSION"],"type":"string"}},"required":["type","id"],"type":"object"},"userId":{"description":"ID of the user who created the comment","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["id","createdAt","lastUpdatedAt","userId","content","reference"],"type":"object"},"ConnectedToolsListResponseDTO":{"description":"The current user's connected MCP providers and their tools.","properties":{"connectedProviders":{"description":"Every provider the current user has connected, with its status.","items":{"properties":{"name":{"description":"The connected provider identifier (e.g. \"hubspot\").","type":"string"},"status":{"description":"\"ok\" when the provider connected and tools were fetched, else \"error\".","enum":["ok","error"],"type":"string"},"tools":{"description":"The provider's available tools; empty when the provider errored.","items":{"properties":{"action":{"description":"Coarse CRUD classification of the tool.","enum":["read","create","update","delete"],"type":"string"},"description":{"description":"Short one-line tool description.","type":"string"},"name":{"description":"The unique MCP tool name (e.g. \"hubspot-create-deal\").","type":"string"},"title":{"description":"Human-friendly tool title, empty when unknown.","type":"string"}},"required":["name","title","description","action"],"type":"object"},"type":"array"}},"required":["name","status","tools"],"type":"object"},"type":"array"}},"required":["connectedProviders"],"type":"object"},"ContentAccessResponseDTO":{"properties":{"readOnlySagaIds":{"description":"All sagaIds the organization has read-only access to, derived from its active organization_saga_access grants","items":{"type":"string"},"type":"array"},"readWriteSagaIds":{"description":"All sagaIds the organization has write access to, derived from its active organization_saga_access grants","items":{"type":"string"},"type":"array"}},"required":["readOnlySagaIds","readWriteSagaIds"],"type":"object"},"ContentAccessUpdateRequestDTO":{"properties":{"readOnlySagaIds":{"description":"All sagaIds defined by the CMS that the organization has read-only access to. Replaces the existing read-only grants, i.e. an empty list revokes all read-only access. Omit the field to leave the level untouched.","items":{"type":"string"},"type":"array"},"readWriteSagaIds":{"description":"All sagaIds defined by the CMS that the organization has write access to. Replaces the existing read-write grants, i.e. an empty list revokes all write access. Omit the field to leave the level untouched.","items":{"type":"string"},"type":"array"}},"type":"object"},"ContentDraftPreviewResponseDTO":{"properties":{"difficulty":{"description":"Difficulty level of the mission: easy, medium or hard","type":"string"},"draftId":{"description":"The unique identifier for the draft","type":"string"},"hide_examples":{"type":"boolean"},"hide_scorecard":{"type":"boolean"},"language":{"description":"Language the draft is authored in","type":"string"},"persona":{"description":"Persona the learner will speak to","properties":{"avatar_file":{"description":"The persona's avatar image","properties":{"sizes":{"description":"Available size variants for the avatar","properties":{"card":{"description":"Card size preview URL","properties":{"url":{"description":"Preview URL for the image","type":"string"}},"type":"object"},"thumbnail":{"description":"Thumbnail size preview URL","properties":{"url":{"description":"Preview URL for the image","type":"string"}},"type":"object"}},"type":"object"},"url":{"description":"Public URL to access the avatar","type":"string"}},"type":"object"},"description":{"description":"Optional description of the persona","nullable":true,"type":"string"},"name":{"description":"Full name of the persona","type":"string"},"role":{"description":"The role the persona plays in the conversation. For B2B sales conversations, use their job title or function. If there is no workplace, use their relationship to the conversation, such as \"Prospective buyer,\" \"Existing customer,\" or \"Private customer.\" For role-plays about manager skills, use their relationship to the learner, such as \"Team member.\" This is shown to the learner and used to instruct the AI during the role-play.","type":"string"},"workplace_description":{"description":"Optional description of the workplace","type":"string"},"workplace_name":{"description":"Name of the workplace where the persona works. Empty when no workplace is relevant.","type":"string"}},"type":"object"},"scenario":{"description":"Scenario details shown before the call","properties":{"description":{"description":"Detailed description of the scenario","type":"string"},"duration":{"description":"Expected duration in minutes","type":"number"},"goal":{"description":"Primary goal or objective of the scenario","type":"string"}},"type":"object"},"scorecard":{"description":"The scorecard, shown to the learner as \"Your tasks\"","properties":{"items":{"items":{"properties":{"desired_behaviours":{"description":"Array of desired behaviors for this item","items":{"properties":{"behaviour":{"description":"Description of the desired behavior","type":"string"},"examples":{"description":"List of examples demonstrating the behavior","nullable":true,"type":"string"}},"required":["behaviour"],"type":"object"},"nullable":true,"type":"array"},"desired_outcome":{"description":"Goal or objective for this specific item","nullable":true,"type":"string"},"item_title":{"description":"Optional title for the scorecard item","type":"string"}},"type":"object"},"type":"array"}},"required":["items"],"type":"object"},"title":{"description":"Title of the mission being authored","type":"string"},"updatedAt":{"description":"When the draft last changed","type":"string"},"version":{"description":"Incremented by the store on every change. The preview polls and re-renders when this moves.","type":"number"}},"required":["draftId","version","updatedAt","hide_scorecard","hide_examples","persona","scenario","scorecard"],"type":"object"},"ContentGenerationChatRequestDTO":{"properties":{"conversationId":{"maxLength":128,"minLength":1,"type":"string"},"documentIds":{"items":{"type":"string"},"type":"array"},"draft":{},"messages":{"items":{"additionalProperties":{},"properties":{"id":{"type":"string"},"role":{"type":"string"}},"required":["id","role"],"type":"object"},"maxItems":200,"type":"array"},"missionId":{"type":"string"},"orgDescription":{"type":"string"},"orgName":{"type":"string"},"uiLanguage":{"description":"UI language of the requesting user","enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"}},"required":["uiLanguage","messages"],"type":"object"},"ConversationCreateMakerSessionResponseDTO":{"properties":{"agentId":{"description":"The ID of the temporary ElevenLabs agent.","type":"string"},"connectionType":{"description":"Transport the credential authenticates.","enum":["webrtc","websocket"],"type":"string"},"credential":{"description":"Short-lived ElevenLabs connection credential: a conversation token when connectionType is webrtc, a signed URL when it is websocket.","type":"string"}},"required":["credential","connectionType","agentId"],"type":"object"},"ConversationMissionInputDTO":{"properties":{"id":{"type":"string"},"keywords":{"default":[],"items":{"type":"string"},"type":"array"},"language":{"enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"},"persona":{"properties":{"ai_instruction":{"type":"string"},"description":{"type":"string"},"gender":{"enum":["male","female"],"type":"string"},"name":{"type":"string"},"role":{"type":"string"},"voice":{"properties":{"id":{"type":"string"},"voice_id":{"type":"string"}},"required":["id","voice_id"],"type":"object"},"workplace_name":{"nullable":true,"type":"string"}},"required":["voice","name","role","gender","ai_instruction","description"],"type":"object"},"saga":{"properties":{"id":{"description":"Unique identifier for the saga","type":"string"},"name":{"description":"Name of the saga","type":"string"}},"required":["id","name"],"type":"object"},"scenario":{"properties":{"conversation_items":{"items":{"properties":{"conversation_step_instructions":{"nullable":true,"type":"string"},"conversation_step_title":{"type":"string"}},"required":["conversation_step_title"],"type":"object"},"type":"array"},"description_for_ai":{"type":"string"},"firstMessage":{"nullable":true,"type":"string"},"firstMessageMode":{"enum":["assistant-speaks-first","assistant-waits-for-user","assistant-speaks-first-with-model-generated-message"],"type":"string"}},"required":["description_for_ai","firstMessageMode","conversation_items"],"type":"object"},"toolIds":{"items":{"type":"string"},"nullable":true,"type":"array"}},"required":["id","language","saga","persona","scenario"],"type":"object"},"CreateIssueReportDTO":{"additionalProperties":false,"properties":{"requestFieldValues":{"properties":{"description":{"type":"string"},"summary":{"type":"string"}},"required":["summary","description"],"type":"object"},"requestTypeId":{"enum":["6","9"],"type":"string"},"serviceDeskId":{"enum":["1"],"type":"string"}},"required":["requestFieldValues","requestTypeId","serviceDeskId"],"type":"object"},"CreateOrganizationRequestDTO":{"properties":{"description":{"description":"A brief description of the organization","maxLength":25000,"type":"string"},"name":{"description":"The name of the organization","maxLength":50,"minLength":1,"pattern":"^[a-zA-Z0-9_ ]+$","type":"string"}},"required":["name"],"type":"object"},"CredentialAuthorizationUrlResponseDTO":{"properties":{"url":{"description":"Provider authorization URL to redirect the user to","type":"string"}},"required":["url"],"type":"object"},"CredentialConnectedProvidersResponseDTO":{"properties":{"providers":{"description":"Providers the user currently has credentials for","items":{"enum":["hubspot","salesforce","salesforce_sandbox"],"type":"string"},"type":"array"}},"required":["providers"],"type":"object"},"CredentialStatusResponseDTO":{"properties":{"success":{"description":"Whether the operation succeeded","type":"boolean"}},"required":["success"],"type":"object"},"DataExportFindMissionAssignmentsResponseDTO":{"properties":{"data":{"items":{"properties":{"assignedByUserId":{"description":"The unique identifier for the user who assigned the mission, if applicable","format":"uuid","nullable":true,"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"completedAt":{"description":"The date and time when the mission assignment was completed, if applicable","format":"date-time","nullable":true,"pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"createdAt":{"description":"The date and time when the mission assignment was created","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"dueDate":{"description":"The due date of the mission assignment, if applicable","format":"date-time","nullable":true,"pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"id":{"description":"The unique identifier for the mission assignment","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"lastUpdatedAt":{"description":"The date and time when the mission assignment was last updated","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"learnerUserId":{"description":"The unique identifier for the learner user","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"missionId":{"description":"The unique identifier for the mission","pattern":"^[0-9a-f]{24}$","type":"string"},"sprintId":{"description":"The unique identifier for the sprint, if applicable","format":"uuid","nullable":true,"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"startDate":{"description":"The start date of the mission assignment","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"status":{"description":"The status of the mission assignment","enum":["completed","open"],"type":"string"}},"required":["id","createdAt","lastUpdatedAt","learnerUserId","missionId","startDate","dueDate","status","completedAt","assignedByUserId","sprintId"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"DataExportFindMissionsResponseDTO":{"properties":{"data":{"items":{"properties":{"id":{"description":"The unique identifier for the mission","pattern":"^[0-9a-f]{24}$","type":"string"},"language":{"description":"The language of the mission","enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"},"title":{"description":"The title of the mission","type":"string"}},"required":["id","title","language"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"DataExportFindScorecardsResponseDTO":{"properties":{"data":{"items":{"properties":{"id":{"description":"The unique identifier for the scorecard","pattern":"^[0-9a-f]{24}$","type":"string"},"language":{"description":"The language of the scorecard","enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"},"title":{"description":"The title of the scorecard","type":"string"}},"required":["id","title","language"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"DataExportFindSessionsResponseDTO":{"properties":{"data":{"items":{"properties":{"analysis":{"properties":{"items":{"items":{"properties":{"explanation":{"description":"The explanation of the analysis item","nullable":true,"type":"string"},"itemScore":{"description":"The score of the analysis item","type":"number"},"name":{"description":"The name of the analysis item","nullable":true,"type":"string"},"solved":{"description":"The status of the analysis item","enum":["notSolved","partlySolved","solved"],"type":"string"},"suggestion":{"description":"The suggestion for the analysis item","nullable":true,"type":"string"}},"required":["name","solved","explanation","suggestion","itemScore"],"type":"object"},"type":"array"},"score":{"description":"The overall score of the session","type":"number"}},"required":["score","items"],"type":"object"},"completed":{"description":"Whether the session is completed","type":"boolean"},"createdAt":{"description":"The date and time when the session was created","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"id":{"description":"The unique identifier for the session","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"language":{"description":"The language of the session","enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"},"lastUpdatedAt":{"description":"The date and time when the session was last updated","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"learnerUserId":{"description":"The unique identifier for the learner user","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"missionId":{"description":"The unique identifier for the mission","nullable":true,"pattern":"^[0-9a-f]{24}$","type":"string"},"participantUserIds":{"description":"User IDs of all attributed speakers in the call, including the scored rep (learnerUserId). Only set on real-call sessions; empty array when the transcript carries no speaker attribution.","items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":"array"},"transcript":{"description":"The transcript of the session, if available","nullable":true,"type":"string"}},"required":["id","createdAt","lastUpdatedAt","learnerUserId","transcript","analysis","language","completed"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"DataExportFindSprintsResponseDTO":{"properties":{"data":{"items":{"properties":{"assignedTeamId":{"description":"The unique identifier for the team assigned to the sprint","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"createdAt":{"description":"The date and time when the sprint was created","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"dueDate":{"description":"The due date of the sprint","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"id":{"description":"The unique identifier for the sprint","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"lastUpdatedAt":{"description":"The date and time when the sprint was last updated","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"title":{"description":"The title of the sprint","type":"string"},"userId":{"description":"The unique identifier for the user who created the sprint","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["id","title","createdAt","lastUpdatedAt","userId","dueDate","assignedTeamId"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"DataExportFindTeamsResponseDTO":{"properties":{"data":{"items":{"properties":{"id":{"description":"The unique identifier for the team","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"name":{"description":"The name of the team","type":"string"}},"required":["id","name"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"DataExportFindTrackAssignmentsResponseDTO":{"properties":{"data":{"items":{"properties":{"assignedByUserId":{"description":"The unique identifier for the user who assigned the track, if applicable","format":"uuid","nullable":true,"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"completedAt":{"description":"The date and time when the track assignment was completed, if applicable","format":"date-time","nullable":true,"pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"completedMissionIds":{"description":"The list of completed mission IDs for the track assignment","items":{"pattern":"^[0-9a-f]{24}$","type":"string"},"type":"array"},"createdAt":{"description":"The date and time when the track assignment was created","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"dueDate":{"description":"The due date of the track assignment, if applicable","format":"date-time","nullable":true,"pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"id":{"description":"The unique identifier for the track assignment","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"lastUpdatedAt":{"description":"The date and time when the track assignment was last updated","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"learnerUserId":{"description":"The unique identifier for the learner user","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"sprintId":{"description":"The unique identifier for the sprint, if applicable","format":"uuid","nullable":true,"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"startDate":{"description":"The start date of the track assignment","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"status":{"description":"The status of the track assignment","enum":["completed","open"],"type":"string"},"trackId":{"description":"The unique identifier for the track","pattern":"^[0-9a-f]{24}$","type":"string"}},"required":["id","createdAt","lastUpdatedAt","learnerUserId","trackId","startDate","dueDate","status","completedAt","completedMissionIds","assignedByUserId","sprintId"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"DataExportFindTracksResponseDTO":{"properties":{"data":{"items":{"properties":{"description":{"description":"The description of the track","type":"string"},"id":{"description":"The unique identifier for the track","pattern":"^[0-9a-f]{24}$","type":"string"},"missionIds":{"description":"The list of mission IDs in this track","items":{"pattern":"^[0-9a-f]{24}$","type":"string"},"type":"array"},"title":{"description":"The title of the track","type":"string"}},"required":["id","title","description","missionIds"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"DataExportFindUsersResponseDTO":{"properties":{"data":{"items":{"properties":{"createdAt":{"description":"The date and time when the user was created","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"email":{"description":"The email address of the user","format":"email","nullable":true,"pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","type":"string"},"firstName":{"description":"The first name of the user","nullable":true,"type":"string"},"id":{"description":"The unique identifier for the user","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"lastName":{"description":"The last name of the user","nullable":true,"type":"string"},"teamIds":{"description":"The list of teams the user belongs to","items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":"array"}},"required":["id","email","firstName","lastName","teamIds","createdAt"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"DetailedUserActivityGetCompletionsResponseDTO":{"properties":{"beforeLastWeek":{"description":"Completion statistics from before last week","properties":{"averageScore":{"description":"Average score across scored activities (analysis DONE). Null when nothing has been scored (never 0).","nullable":true,"type":"number"},"averageScoreImprovement":{"description":"Average score improvement across all activities","type":"number"},"missionsCompleted":{"description":"Total number of missions completed","type":"number"},"sessionsCompleted":{"description":"Total number of sessions completed","type":"number"},"tracksCompleted":{"description":"Total number of tracks completed","type":"number"}},"required":["missionsCompleted","tracksCompleted","sessionsCompleted","averageScore","averageScoreImprovement"],"type":"object"},"overall":{"description":"Overall completion statistics","properties":{"averageScore":{"description":"Average score across scored activities (analysis DONE). Null when nothing has been scored (never 0).","nullable":true,"type":"number"},"averageScoreImprovement":{"description":"Average score improvement across all activities","type":"number"},"missionsCompleted":{"description":"Total number of missions completed","type":"number"},"sessionsCompleted":{"description":"Total number of sessions completed","type":"number"},"tracksCompleted":{"description":"Total number of tracks completed","type":"number"}},"required":["missionsCompleted","tracksCompleted","sessionsCompleted","averageScore","averageScoreImprovement"],"type":"object"},"trends":{"description":"Trend changes in completion statistics","properties":{"averageScore":{"description":"Average score across scored activities (analysis DONE). Null when nothing has been scored (never 0).","nullable":true,"type":"number"},"averageScoreImprovement":{"description":"Average score improvement across all activities","type":"number"},"missionsCompleted":{"description":"Total number of missions completed","type":"number"},"sessionsCompleted":{"description":"Total number of sessions completed","type":"number"},"tracksCompleted":{"description":"Total number of tracks completed","type":"number"}},"required":["missionsCompleted","tracksCompleted","sessionsCompleted","averageScore","averageScoreImprovement"],"type":"object"}},"required":["overall","trends","beforeLastWeek"],"type":"object"},"DetailedUserActivityGetKeyMissionsForImprovementResponseDTO":{"items":{"properties":{"averageRecentScore":{"description":"Average score across last 3 sessions","maximum":100,"minimum":0,"type":"integer"},"dates":{"description":"ISO dates of the last 3 sessions","items":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"type":"array"},"missionReferenceId":{"description":"Mission reference id","type":"string"},"priorityScore":{"description":"Priority score of the last 3 sessions for this mission","type":"number"},"scores":{"description":"Scores of the last 3 sessions","items":{"maximum":100,"minimum":0,"type":"integer"},"type":"array"},"sessionIds":{"description":"Session IDs of the last 3 sessions","items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":"array"},"targetScore":{"description":"Target score for this key improvement mission","maximum":100,"minimum":0,"type":"integer"}},"required":["priorityScore","missionReferenceId","scores","dates","averageRecentScore","targetScore","sessionIds"],"type":"object"},"type":"array"},"DetailedUserActivityGetOverviewResponseDTO":{"properties":{"lastSessionDate":{"description":"Date of the user's last session activity","format":"date-time","type":"string"},"name":{"description":"Display name of the user","type":"string"},"pictureUrl":{"description":"URL of the user's profile picture","type":"string"},"registeredSince":{"description":"Date when the user was registered","format":"date-time","type":"string"},"status":{"description":"Current activity status of the user","enum":["ACTIVE_LAST_WEEK","INACTIVE_LAST_WEEK","DISABLED"],"type":"string"}},"required":["name","status","registeredSince"],"type":"object"},"DetailedUserActivityGetPerformanceByTrackMissionsResponseDTO":{"properties":{"data":{"items":{"properties":{"attempted":{"description":"Whether the learner attempted this mission: 1 if they have >= 1 analysis-completed session, else 0 (single-learner population).","type":"number"},"averageScore":{"description":"The learner's latest DONE scored session score for this mission (any scored session, including sub-70 / not completed). Null when the learner has no scored session (never 0).","nullable":true,"type":"number"},"completedCount":{"description":"Whether the learner completed this mission: 1 if completed, else 0 (single-learner population).","type":"number"},"improvementDelta":{"description":"The learner's (best − first session) score for this mission. Null unless the learner has >= 2 scored sessions on it.","nullable":true,"type":"number"},"missionId":{"description":"Unique identifier for the mission","type":"string"},"missionName":{"description":"Name of the mission","type":"string"},"personaImage":{"description":"URL of the persona image","type":"string"},"personaName":{"description":"Name of the persona used in the mission","type":"string"},"populationCount":{"description":"Always 1 for the individual view (the single learner).","type":"number"},"trackName":{"description":"Name of the parent track","type":"string"}},"required":["missionId","missionName","trackName","personaName","personaImage","averageScore","completedCount","attempted","populationCount","improvementDelta"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"DetailedUserActivityGetPerformanceByTrackResponseDTO":{"properties":{"data":{"items":{"properties":{"averageScore":{"description":"The learner's mean of the latest DONE scored session per mission (any scored session, including sub-70 / not completed). Null when the learner has no scored session (never 0).","nullable":true,"type":"number"},"completedMissionCount":{"description":"Number of missions in the track the learner has completed (score >= 70). The \"X\" in \"X of Y missions\".","type":"number"},"improvementDelta":{"description":"Mean of (best − first session) across the track's missions for the learner. Only missions with >= 2 scored sessions contribute, so this can be null even when attempts exist (e.g. every mission has a single scored session).","nullable":true,"type":"number"},"totalMissionCount":{"description":"Number of missions in the track (the \"Y\" in \"X of Y\").","type":"number"},"trackId":{"description":"Unique identifier for the track","type":"string"},"trackName":{"description":"Name of the track","type":"string"}},"required":["trackId","trackName","averageScore","completedMissionCount","totalMissionCount","improvementDelta"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"DetailedUserActivityGetRealCallsResponseDTO":{"properties":{"data":{"items":{"properties":{"avatarUrl":{"description":"URL of the user's avatar","type":"string"},"avgScore":{"description":"Average score across scored real-call sessions. Null when no session has been scored yet.","nullable":true,"type":"number"},"lastCallDate":{"description":"Date of the most recent real-call session","format":"date-time","nullable":true,"type":"string"},"name":{"description":"Full display name of the user","type":"string"},"totalCalls":{"description":"Total number of real-call sessions","type":"number"},"trend":{"description":"Score trend in [-1, 1]. Positive = improving, negative = declining, 0 = insufficient data.","maximum":1,"minimum":-1,"type":"number"},"userId":{"description":"Unique identifier for the user","type":"string"}},"required":["userId","name","avatarUrl","totalCalls","avgScore","trend"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"DetailedUserActivityGetUserPerformanceResponseDTO":{"properties":{"data":{"items":{"properties":{"averageScore":{"description":"Average score across the scored rounds (analysis DONE). Null when no round has been scored (never 0).","nullable":true,"type":"number"},"completions":{"description":"Number of times mission was completed","type":"number"},"missionId":{"description":"Unique identifier for the mission","type":"string"},"missionName":{"description":"Name of the mission","type":"string"},"numberOfRoundsToComplete":{"description":"number of rounds to complete mission","type":"number"},"personaImage":{"description":"URL of the persona image","type":"string"},"personaName":{"description":"Name of the persona/character","type":"string"},"roundsPlayed":{"description":"Total number of rounds played","type":"number"},"trackName":{"description":"Name of the learning track","type":"string"}},"required":["missionId","missionName","personaName","personaImage","trackName","roundsPlayed","completions","averageScore","numberOfRoundsToComplete"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"DetailedUserActivityGetWeeklyActivityResponseDTO":{"additionalProperties":{"description":"Number of role-play rounds attempted in this week","type":"number"},"description":"Role-play rounds attempted by the user per ISO week","type":"object"},"DocumentDownloadUrlResponseDTO":{"properties":{"downloadUrl":{"description":"Presigned URL the client can use to download the document","format":"uri","type":"string"}},"required":["downloadUrl"],"type":"object"},"DocumentResponseDTO":{"properties":{"contentSize":{"description":"The size of the document content in bytes","maximum":9007199254740991,"minimum":0,"type":"integer"},"createdAt":{"description":"The date and time the document was created","format":"date-time","type":"string"},"documentRole":{"description":"Whether the document is an attachment or a consent document","enum":["attachment","consent"],"type":"string"},"fileName":{"description":"The name of the document file","type":"string"},"fileType":{"description":"The type of the document file","enum":["pdf","pptx","txt"],"type":"string"},"id":{"description":"The unique identifier of the document","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"lastUpdatedAt":{"description":"The date and time the document was last updated","format":"date-time","type":"string"},"organizationId":{"description":"The unique identifier of the organization that owns the document","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"uploadedBy":{"description":"The user ID who uploaded the document","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"version":{"description":"Monotonic version number; only set for consent documents","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0,"nullable":true,"type":"integer"}},"required":["id","organizationId","fileName","contentSize","fileType","uploadedBy","createdAt","lastUpdatedAt","documentRole"],"type":"object"},"DocumentUpdateRequestDTO":{"properties":{"fileName":{"description":"The new name for the document file","maxLength":255,"minLength":1,"type":"string"}},"type":"object"},"DocumentUploadRequestDTO":{"properties":{"documentRole":{"description":"Optional document role; defaults to attachment. Use \"consent\" for consent PDFs.","enum":["attachment","consent"],"type":"string"},"fileName":{"description":"The name of the document file","maxLength":255,"minLength":1,"type":"string"},"fileType":{"description":"The type of the document file","enum":["pdf","pptx","txt"],"type":"string"}},"required":["fileName","fileType"],"type":"object"},"DocumentsListResponseDTO":{"properties":{"data":{"items":{"properties":{"contentSize":{"description":"The size of the document content in bytes","maximum":9007199254740991,"minimum":0,"type":"integer"},"createdAt":{"description":"The date and time the document was created","format":"date-time","type":"string"},"documentRole":{"description":"Whether the document is an attachment or a consent document","enum":["attachment","consent"],"type":"string"},"fileName":{"description":"The name of the document file","type":"string"},"fileType":{"description":"The type of the document file","enum":["pdf","pptx","txt"],"type":"string"},"id":{"description":"The unique identifier of the document","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"lastUpdatedAt":{"description":"The date and time the document was last updated","format":"date-time","type":"string"},"organizationId":{"description":"The unique identifier of the organization that owns the document","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"uploadedBy":{"description":"The user ID who uploaded the document","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"version":{"description":"Monotonic version number; only set for consent documents","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0,"nullable":true,"type":"integer"}},"required":["id","organizationId","fileName","contentSize","fileType","uploadedBy","createdAt","lastUpdatedAt","documentRole"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"ExperienceGetTotalExperienceResponseDTO":{"properties":{"total":{"description":"Total experience points for the current user.","type":"number"}},"required":["total"],"type":"object"},"FeedbackBuildPromptRequestDTO":{"properties":{"item":{"description":"The feedback item to generate a prompt for","properties":{"description":{"type":"string"},"desired_behaviours":{"items":{"properties":{"behaviour":{"type":"string"},"examples":{"nullable":true,"type":"string"},"id":{"type":"string"}},"required":["id","behaviour"],"type":"object"},"nullable":true,"type":"array"},"desired_outcome":{"nullable":true,"type":"string"},"id":{"type":"string"},"item_title":{"type":"string"}},"required":["id","description","item_title"],"type":"object"},"playedLanguage":{"description":"The language the conversation was played in. Defaults to the scorecard language when omitted.","enum":["en","de","fr","es","it","nl","pl","zh","ja","id","tr","pt","el","ko","vi","hi","ms","th","hr","ro","bg","sv","no","yue"],"type":"string"},"scorecard":{"description":"The scorecard containing the evaluation criteria","properties":{"createdAt":{"type":"string"},"id":{"type":"string"},"items":{"items":{"properties":{"description":{"type":"string"},"desired_behaviours":{"items":{"properties":{"behaviour":{"type":"string"},"examples":{"nullable":true,"type":"string"},"id":{"type":"string"}},"required":["id","behaviour"],"type":"object"},"nullable":true,"type":"array"},"desired_outcome":{"nullable":true,"type":"string"},"id":{"type":"string"},"item_title":{"type":"string"}},"required":["id","description","item_title"],"type":"object"},"type":"array"},"language":{"enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"},"saga":{"properties":{"createdAt":{"description":"Creation timestamp","type":"string"},"description":{"description":"Description of the saga","type":"string"},"id":{"description":"Unique identifier for the saga","type":"string"},"name":{"description":"Name of the saga","type":"string"},"type":{"default":"under_construction","description":"Type of the saga","enum":["under_construction","generic","client_specific"],"type":"string"},"updatedAt":{"description":"Last update timestamp","type":"string"}},"required":["id","name","description","updatedAt","createdAt"],"type":"object"},"tag":{"type":"string"},"title":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","tag","title","language","saga","items","updatedAt","createdAt"],"type":"object"}},"required":["item","scorecard"],"type":"object"},"FeedbackBuildPromptResponseDTO":{"properties":{"prompt":{"description":"The generated feedback prompt","type":"string"}},"required":["prompt"],"type":"object"},"FeedbackProcessTranscriptRequestDTO":{"properties":{"messages":{"description":"Array of transcript messages to be analyzed for feedback","items":{"properties":{"content":{"type":"string"},"id":{"type":"string"},"role":{"enum":["prospect","sales-agent"],"type":"string"},"speakerUserId":{"description":"The Jam user who spoke this turn; null/absent = not a resolved Jam user (prospect, persona, unlabeled speaker)","nullable":true,"type":"string"}},"required":["id","role","content"],"type":"object"},"type":"array"},"playedLanguage":{"description":"The language the conversation was played in. Defaults to the scorecard language when omitted.","enum":["en","de","fr","es","it","nl","pl","zh","ja","id","tr","pt","el","ko","vi","hi","ms","th","hr","ro","bg","sv","no","yue"],"type":"string"},"scorecard":{"description":"The scorecard containing the evaluation criteria for analyzing the transcript","properties":{"createdAt":{"type":"string"},"id":{"type":"string"},"items":{"items":{"properties":{"description":{"type":"string"},"desired_behaviours":{"items":{"properties":{"behaviour":{"type":"string"},"examples":{"nullable":true,"type":"string"},"id":{"type":"string"}},"required":["id","behaviour"],"type":"object"},"nullable":true,"type":"array"},"desired_outcome":{"nullable":true,"type":"string"},"id":{"type":"string"},"item_title":{"type":"string"}},"required":["id","description","item_title"],"type":"object"},"type":"array"},"language":{"enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"},"saga":{"properties":{"createdAt":{"description":"Creation timestamp","type":"string"},"description":{"description":"Description of the saga","type":"string"},"id":{"description":"Unique identifier for the saga","type":"string"},"name":{"description":"Name of the saga","type":"string"},"type":{"default":"under_construction","description":"Type of the saga","enum":["under_construction","generic","client_specific"],"type":"string"},"updatedAt":{"description":"Last update timestamp","type":"string"}},"required":["id","name","description","updatedAt","createdAt"],"type":"object"},"tag":{"type":"string"},"title":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","tag","title","language","saga","items","updatedAt","createdAt"],"type":"object"}},"required":["scorecard","messages"],"type":"object"},"FeedbackProcessTranscriptResponseDTO":{"properties":{"items":{"description":"Array of analysis items","items":{"properties":{"behaviours":{"default":[],"description":"Array of behaviours assessed for this item","items":{"properties":{"evidence":{"description":"Evidence supporting the behaviour assessment","items":{"type":"string"},"type":"array"},"score":{"description":"The numerical score for this behaviour","type":"number"},"verdict":{"description":"The verdict of the behaviour evaluation","type":"string"}},"required":["evidence","verdict","score"],"type":"object"},"type":"array"},"conversationItemReferenceId":{"description":"Reference ID to the conversation item","nullable":true,"type":"string"},"explanation":{"description":"Explanation of the analysis result","nullable":true,"type":"string"},"feedbackItemReferenceId":{"description":"The ID of the feedback item","type":"string"},"name":{"description":"The name of the analysis item","nullable":true,"type":"string"},"score":{"description":"The numerical score for this analysis item","type":"number"},"solved":{"description":"The solving status of the item","enum":["undetected","notSolved","partlySolved","solved",null],"nullable":true,"type":"string"},"state":{"description":"The current state of the analysis item","enum":["PROCESSING","DONE","ERROR"],"type":"string"},"suggestion":{"description":"Suggestions for improvement","nullable":true,"type":"string"}},"required":["feedbackItemReferenceId","state","score"],"type":"object"},"type":"array"}},"required":["items"],"type":"object"},"GeneratorCreateMissionFromDraftRequestDTO":{"properties":{"draft":{"properties":{"additional_material":{"description":"Array of additional materials (e.g. links, documents) provided for the mission.","items":{"properties":{"relationTo":{"enum":["client-documents","external-links"],"type":"string"},"value":{"type":"string"}},"required":["relationTo","value"],"type":"object"},"type":"array"},"conversation_topic":{"items":{"enum":["cold_call","discovery_call","identification","warm_call","pitching","presenting_demonstrating","handling_objections","persuasion","negotiation","problem_solving","closing","active_listening","building_trust_rapport","storytelling","upselling_cross_selling","conflict_resolution"],"type":"string"},"type":"array"},"difficulty":{"enum":["easy","medium","hard"],"type":"string"},"hide_examples":{"default":false,"description":"Whether learners should not see desired behaviour examples for this mission.","type":"boolean"},"hide_scorecard":{"default":false,"description":"Whether learners should not see the mission scorecard.","type":"boolean"},"keywords":{"items":{"type":"string"},"type":"array"},"language":{"description":"The language of the mission","enum":["de","en","fr","es","it","nl","zh-Hans"],"type":"string"},"persona":{"properties":{"age":{"default":30,"minimum":0,"type":"number"},"ai_instruction":{"description":"[Third Person Singular][Description of Persona][Only for Persona]: Private background and behavioral instructions shown only to the Persona during the roleplay. Include attitudes, motivations, needs, challenges, objections, decision criteria, communication style, personal background, and observable quirks needed to play the role authentically.","type":"string"},"avatar_file":{"properties":{"age":{"exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0,"type":"integer"},"alt":{"nullable":true,"type":"string"},"createdAt":{"type":"string"},"filename":{"type":"string"},"filesize":{"type":"number"},"gender":{"enum":["male","female"],"type":"string"},"height":{"type":"number"},"id":{"type":"string"},"mimeType":{"type":"string"},"reusable":{"type":"boolean"},"sizes":{"default":{},"properties":{"card":{"properties":{"url":{"nullable":true,"type":"string"}},"type":"object"},"thumbnail":{"properties":{"url":{"nullable":true,"type":"string"}},"type":"object"}},"type":"object"},"updatedAt":{"type":"string"},"url":{"type":"string"},"width":{"type":"number"}},"required":["id","filename","age","gender","reusable","height","width","filesize","mimeType","updatedAt","createdAt","url"],"type":"object"},"description":{"description":"[Third Person Form] Description of the Persona, shown to the Learner. Use specific and vivid descriptions that include the Persona's full name, role, and relevant public background. Only use information the Learner would realistically know from previous interactions or public sources and that is relevant to the scenario and goal.\n**Avoid omniscient details**: Do not include motives, goals, personality, needs, objections, or background information the Learner would not realistically know.\n**Keep it concise**: Trim unnecessary details from the persona description.\n✅ Good example: \"Martin Weber, is the managing director of **Weber Carpentry**. His LinkedIn shows he has been recruiting a lot of new staff recently.\".\n🚫 Bad example: \"Martin Weber is the managing director of a medium-sized craft business in Franconia, seeking new staff. In his weekends, he likes to play golf and spend time with his grandchildren.\"","type":"string"},"gender":{"description":"enum - The gender of the persona ('female', 'male'). (e.g., 'female')","enum":["male","female"],"type":"string"},"language":{"description":"The language of the persona","enum":["de","en","fr","es","it","nl","zh-Hans"],"type":"string"},"name":{"description":"The name of the Persona. (e.g., Amy Johnson)","type":"string"},"role":{"description":"[Conversation Role] The role the persona plays in the conversation. For B2B sales conversations, use their job title or function. If there is no workplace, use their relationship to the conversation, such as \"Prospective buyer,\" \"Existing customer,\" or \"Private customer.\" For role-plays about manager skills, use their relationship to the learner, such as \"Team member.\" This is shown to the learner and used to instruct the AI during the role-play.","type":"string"},"voice":{"properties":{"id":{"type":"string"},"voice_id":{"type":"string"}},"required":["id","voice_id"],"type":"object"},"workplace_description":{"description":"[Third Person Singular/Plural] Description of the company where the persona works, shown to the learner (e.g., Brisbane Cruises is a premier company offering scenic boat tours in Brisbane, Australia. The company specializes in providing unique experiences on the water, showcasing the beauty of Brisbane's rivers and waterways.) Leave empty when a workplace is not relevant, including private-customer and manager-skills role-plays.","nullable":true,"type":"string"},"workplace_name":{"description":"[Proper Noun or Descriptive Label] The name or type of the workplace/company where the persona currently works, shown to the learner. (e.g., Brisbane Cruises) Leave empty when a workplace is not relevant, including private-customer and manager-skills role-plays. Never invent a workplace just to populate this field.","nullable":true,"type":"string"}},"required":["language","name","role","description","ai_instruction","gender","avatar_file","voice"],"type":"object"},"scenario":{"properties":{"conversation_items":{"description":"array - A list of conversation items, using conversationItems.","items":{"properties":{"conversation_step_instructions":{"description":"[You][Address Persona][Imperative][Use Conditional IF THEN for Instructions][Only for Persona] Instructions, including reactions to observable events, for the Persona. Adjust the conversation flow and the Persona's reactions based on the Learner's behavior. Shown only to the Persona. The first item should instruct the Persona how to begin. The decision step should establish the outcome without ending the conversation, and the final step should explicitly end it.","type":"string"},"conversation_step_title":{"description":"[Noun Phrase] OR [Address AI Persona][You][Imperative][Only for Persona]: A conversation step the Persona should follow. Formulate it as an instruction to the Persona. Only shown to the Persona. (e.g. \"Answer the phone warmly\", \"Decide whether you agree with the learner\", \"Let the learner continue\", \"End the conversation\")","type":"string"}},"required":["conversation_step_title"],"type":"object"},"type":"array"},"description":{"description":"[Address Learner][You][Imperative][Only for Learner] In no more than 3 short sentences, describe the conversation type, why it is happening, and any previous interaction with the Persona. Include only facts the Learner would realistically know at the start. Do not repeat the goal or reveal private Persona information. Shown to the Learner.","type":"string"},"description_for_ai":{"description":"[Address Persona][You][Only for Persona] Set the scene as a director would brief an actor immediately before the interaction. Include the current mood, preceding events, whether the interaction is planned, and relevant prior contact. Focus on what is happening, not who the Persona is. Shown only to the Persona.","type":"string"},"duration":{"type":"number"},"firstMessage":{"type":"string"},"firstMessageMode":{"enum":["assistant-speaks-first","assistant-waits-for-user","assistant-speaks-first-with-model-generated-message"],"type":"string"},"goal":{"description":"[Address Learner][You][Imperative][Infinitive] The goal the Learner should achieve in the scenario. Use one specific, measurable sentence beginning with an action verb, no more than 96 characters including spaces, and ending with a period. Shown to the Learner.","type":"string"},"language":{"description":"The language of the scenario","enum":["de","en","fr","es","it","nl","zh-Hans"],"type":"string"},"tag":{"type":"string"}},"required":["language","tag","goal","description","duration","conversation_items","description_for_ai"],"type":"object"},"scorecard":{"properties":{"items":{"description":"array - A list of scorecard items used to evaluate the Learner. Each item applies either to a specific step or to the whole conversation. This information tells the Learner what the coach evaluates and coaches.","items":{"properties":{"description":{"description":"[Address Coach][Imperative][You] but [Use Third Person for Learner/Persona][Indicative][Only for Coach] Concise, evidence-focused scoring instructions. State the shared context, where in the conversation to look for evidence, what happened immediately beforehand when relevant, and how strict or lenient to be. Do not repeat the Desired Behaviors.","type":"string"},"desired_behaviours":{"default":[],"items":{"properties":{"behaviour":{"description":"[Information for Coach and Learner][Use Third Person for Persona/Learner][Indicative][Descriptive] One discrete verbal behavior the Learner needs to demonstrate to master this scorecard item. Shown to the coach and the Learner. Start with the descriptor for the Learner role. (e.g. \"The seller asks the customer about their experience with the product.\" | \"The manager summarizes the team member’s concern.\")","type":"string"},"examples":{"description":"array - [Direct Quotes] Exactly 3 example utterances that demonstrate the desired Learner behavior, shown to the coach and the Learner. The examples should differ in wording and tone.","type":"string"}},"required":["behaviour"],"type":"object"},"type":"array"},"desired_outcome":{"description":"[Third Person][Persona][Indicative] The observable outcome the Learner is expected to achieve, expressed as a behavior shown by the Persona. Use the form \"The [Persona descriptor] [does an observable action].\" (e.g. \"The customer agrees to a follow-up.\" | \"The team member confirms their concern was understood.\")","type":"string"},"item_title":{"description":"[Noun Phrase] OR [Address Learner][You][Imperative]: A short, descriptive title for the scorecard item, shown to the coach and Learner. Use the Learner’s role descriptor when relevant.","type":"string"}},"required":["item_title","description"],"type":"object"},"type":"array"},"language":{"description":"The language of the scorecard","enum":["de","en","fr","es","it","nl","zh-Hans"],"type":"string"},"tag":{"type":"string"},"title":{"description":"[Proper Noun] A short, descriptive title for the scorecard, shown to the coach.","type":"string"}},"required":["language","items","title","tag"],"type":"object"},"title":{"description":"[Proper Noun] A short, descriptive title for the roleplay mission.","minLength":1,"type":"string"},"toolIds":{"default":[],"items":{"type":"string"},"type":"array"}},"required":["language","title","difficulty","persona","scorecard","scenario"],"type":"object"},"missionId":{"description":"The ID of the mission to create from draft","pattern":"^[0-9a-f]{24}$","type":"string"}},"required":["missionId","draft"],"type":"object"},"GeneratorGetMissionDraftResponseDTO":{"properties":{"additional_material":{"description":"Array of additional materials (e.g. links, documents) provided for the mission.","items":{"properties":{"relationTo":{"enum":["client-documents","external-links"],"type":"string"},"value":{"type":"string"}},"required":["relationTo","value"],"type":"object"},"type":"array"},"conversation_topic":{"items":{"enum":["cold_call","discovery_call","identification","warm_call","pitching","presenting_demonstrating","handling_objections","persuasion","negotiation","problem_solving","closing","active_listening","building_trust_rapport","storytelling","upselling_cross_selling","conflict_resolution"],"type":"string"},"type":"array"},"difficulty":{"enum":["easy","medium","hard"],"type":"string"},"hide_examples":{"default":false,"description":"Whether learners should not see desired behaviour examples for this mission.","type":"boolean"},"hide_scorecard":{"default":false,"description":"Whether learners should not see the mission scorecard.","type":"boolean"},"keywords":{"items":{"type":"string"},"type":"array"},"language":{"description":"The language of the mission","enum":["de","en","fr","es","it","nl","zh-Hans"],"type":"string"},"persona":{"properties":{"age":{"default":30,"minimum":0,"type":"number"},"ai_instruction":{"description":"[Third Person Singular][Description of Persona][Only for Persona]: Private background and behavioral instructions shown only to the Persona during the roleplay. Include attitudes, motivations, needs, challenges, objections, decision criteria, communication style, personal background, and observable quirks needed to play the role authentically.","type":"string"},"avatar_file":{"properties":{"age":{"exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0,"type":"integer"},"alt":{"nullable":true,"type":"string"},"createdAt":{"type":"string"},"filename":{"type":"string"},"filesize":{"type":"number"},"gender":{"enum":["male","female"],"type":"string"},"height":{"type":"number"},"id":{"type":"string"},"mimeType":{"type":"string"},"reusable":{"type":"boolean"},"sizes":{"default":{},"properties":{"card":{"properties":{"url":{"nullable":true,"type":"string"}},"type":"object"},"thumbnail":{"properties":{"url":{"nullable":true,"type":"string"}},"type":"object"}},"type":"object"},"updatedAt":{"type":"string"},"url":{"type":"string"},"width":{"type":"number"}},"required":["id","filename","age","gender","reusable","height","width","filesize","mimeType","updatedAt","createdAt","url"],"type":"object"},"description":{"description":"[Third Person Form] Description of the Persona, shown to the Learner. Use specific and vivid descriptions that include the Persona's full name, role, and relevant public background. Only use information the Learner would realistically know from previous interactions or public sources and that is relevant to the scenario and goal.\n**Avoid omniscient details**: Do not include motives, goals, personality, needs, objections, or background information the Learner would not realistically know.\n**Keep it concise**: Trim unnecessary details from the persona description.\n✅ Good example: \"Martin Weber, is the managing director of **Weber Carpentry**. His LinkedIn shows he has been recruiting a lot of new staff recently.\".\n🚫 Bad example: \"Martin Weber is the managing director of a medium-sized craft business in Franconia, seeking new staff. In his weekends, he likes to play golf and spend time with his grandchildren.\"","type":"string"},"gender":{"description":"enum - The gender of the persona ('female', 'male'). (e.g., 'female')","enum":["male","female"],"type":"string"},"language":{"description":"The language of the persona","enum":["de","en","fr","es","it","nl","zh-Hans"],"type":"string"},"name":{"description":"The name of the Persona. (e.g., Amy Johnson)","type":"string"},"role":{"description":"[Conversation Role] The role the persona plays in the conversation. For B2B sales conversations, use their job title or function. If there is no workplace, use their relationship to the conversation, such as \"Prospective buyer,\" \"Existing customer,\" or \"Private customer.\" For role-plays about manager skills, use their relationship to the learner, such as \"Team member.\" This is shown to the learner and used to instruct the AI during the role-play.","type":"string"},"voice":{"properties":{"id":{"type":"string"},"voice_id":{"type":"string"}},"required":["id","voice_id"],"type":"object"},"workplace_description":{"description":"[Third Person Singular/Plural] Description of the company where the persona works, shown to the learner (e.g., Brisbane Cruises is a premier company offering scenic boat tours in Brisbane, Australia. The company specializes in providing unique experiences on the water, showcasing the beauty of Brisbane's rivers and waterways.) Leave empty when a workplace is not relevant, including private-customer and manager-skills role-plays.","nullable":true,"type":"string"},"workplace_name":{"description":"[Proper Noun or Descriptive Label] The name or type of the workplace/company where the persona currently works, shown to the learner. (e.g., Brisbane Cruises) Leave empty when a workplace is not relevant, including private-customer and manager-skills role-plays. Never invent a workplace just to populate this field.","nullable":true,"type":"string"}},"required":["language","name","role","description","ai_instruction","gender","avatar_file","voice"],"type":"object"},"scenario":{"properties":{"conversation_items":{"description":"array - A list of conversation items, using conversationItems.","items":{"properties":{"conversation_step_instructions":{"description":"[You][Address Persona][Imperative][Use Conditional IF THEN for Instructions][Only for Persona] Instructions, including reactions to observable events, for the Persona. Adjust the conversation flow and the Persona's reactions based on the Learner's behavior. Shown only to the Persona. The first item should instruct the Persona how to begin. The decision step should establish the outcome without ending the conversation, and the final step should explicitly end it.","type":"string"},"conversation_step_title":{"description":"[Noun Phrase] OR [Address AI Persona][You][Imperative][Only for Persona]: A conversation step the Persona should follow. Formulate it as an instruction to the Persona. Only shown to the Persona. (e.g. \"Answer the phone warmly\", \"Decide whether you agree with the learner\", \"Let the learner continue\", \"End the conversation\")","type":"string"}},"required":["conversation_step_title"],"type":"object"},"type":"array"},"description":{"description":"[Address Learner][You][Imperative][Only for Learner] In no more than 3 short sentences, describe the conversation type, why it is happening, and any previous interaction with the Persona. Include only facts the Learner would realistically know at the start. Do not repeat the goal or reveal private Persona information. Shown to the Learner.","type":"string"},"description_for_ai":{"description":"[Address Persona][You][Only for Persona] Set the scene as a director would brief an actor immediately before the interaction. Include the current mood, preceding events, whether the interaction is planned, and relevant prior contact. Focus on what is happening, not who the Persona is. Shown only to the Persona.","type":"string"},"duration":{"type":"number"},"firstMessage":{"type":"string"},"firstMessageMode":{"enum":["assistant-speaks-first","assistant-waits-for-user","assistant-speaks-first-with-model-generated-message"],"type":"string"},"goal":{"description":"[Address Learner][You][Imperative][Infinitive] The goal the Learner should achieve in the scenario. Use one specific, measurable sentence beginning with an action verb, no more than 96 characters including spaces, and ending with a period. Shown to the Learner.","type":"string"},"language":{"description":"The language of the scenario","enum":["de","en","fr","es","it","nl","zh-Hans"],"type":"string"},"tag":{"type":"string"}},"required":["language","tag","goal","description","duration","conversation_items","description_for_ai"],"type":"object"},"scorecard":{"properties":{"items":{"description":"array - A list of scorecard items used to evaluate the Learner. Each item applies either to a specific step or to the whole conversation. This information tells the Learner what the coach evaluates and coaches.","items":{"properties":{"description":{"description":"[Address Coach][Imperative][You] but [Use Third Person for Learner/Persona][Indicative][Only for Coach] Concise, evidence-focused scoring instructions. State the shared context, where in the conversation to look for evidence, what happened immediately beforehand when relevant, and how strict or lenient to be. Do not repeat the Desired Behaviors.","type":"string"},"desired_behaviours":{"default":[],"items":{"properties":{"behaviour":{"description":"[Information for Coach and Learner][Use Third Person for Persona/Learner][Indicative][Descriptive] One discrete verbal behavior the Learner needs to demonstrate to master this scorecard item. Shown to the coach and the Learner. Start with the descriptor for the Learner role. (e.g. \"The seller asks the customer about their experience with the product.\" | \"The manager summarizes the team member’s concern.\")","type":"string"},"examples":{"description":"array - [Direct Quotes] Exactly 3 example utterances that demonstrate the desired Learner behavior, shown to the coach and the Learner. The examples should differ in wording and tone.","type":"string"}},"required":["behaviour"],"type":"object"},"type":"array"},"desired_outcome":{"description":"[Third Person][Persona][Indicative] The observable outcome the Learner is expected to achieve, expressed as a behavior shown by the Persona. Use the form \"The [Persona descriptor] [does an observable action].\" (e.g. \"The customer agrees to a follow-up.\" | \"The team member confirms their concern was understood.\")","type":"string"},"item_title":{"description":"[Noun Phrase] OR [Address Learner][You][Imperative]: A short, descriptive title for the scorecard item, shown to the coach and Learner. Use the Learner’s role descriptor when relevant.","type":"string"}},"required":["item_title","description"],"type":"object"},"type":"array"},"language":{"description":"The language of the scorecard","enum":["de","en","fr","es","it","nl","zh-Hans"],"type":"string"},"tag":{"type":"string"},"title":{"description":"[Proper Noun] A short, descriptive title for the scorecard, shown to the coach.","type":"string"}},"required":["language","items","title","tag"],"type":"object"},"title":{"description":"[Proper Noun] A short, descriptive title for the roleplay mission.","minLength":1,"type":"string"},"toolIds":{"default":[],"items":{"type":"string"},"type":"array"}},"required":["language","title","difficulty","persona","scorecard","scenario"],"type":"object"},"GeneratorUpdateMissionWithDraftRequestDTO":{"properties":{"additional_material":{"description":"Array of additional materials (e.g. links, documents) provided for the mission.","items":{"properties":{"relationTo":{"enum":["client-documents","external-links"],"type":"string"},"value":{"type":"string"}},"required":["relationTo","value"],"type":"object"},"type":"array"},"conversation_topic":{"items":{"enum":["cold_call","discovery_call","identification","warm_call","pitching","presenting_demonstrating","handling_objections","persuasion","negotiation","problem_solving","closing","active_listening","building_trust_rapport","storytelling","upselling_cross_selling","conflict_resolution"],"type":"string"},"type":"array"},"difficulty":{"enum":["easy","medium","hard"],"type":"string"},"hide_examples":{"default":false,"description":"Whether learners should not see desired behaviour examples for this mission.","type":"boolean"},"hide_scorecard":{"default":false,"description":"Whether learners should not see the mission scorecard.","type":"boolean"},"keywords":{"items":{"type":"string"},"type":"array"},"language":{"description":"The language of the mission","enum":["de","en","fr","es","it","nl","zh-Hans"],"type":"string"},"persona":{"properties":{"age":{"default":30,"minimum":0,"type":"number"},"ai_instruction":{"description":"[Third Person Singular][Description of Persona][Only for Persona]: Private background and behavioral instructions shown only to the Persona during the roleplay. Include attitudes, motivations, needs, challenges, objections, decision criteria, communication style, personal background, and observable quirks needed to play the role authentically.","type":"string"},"avatar_file":{"properties":{"age":{"exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0,"type":"integer"},"alt":{"nullable":true,"type":"string"},"createdAt":{"type":"string"},"filename":{"type":"string"},"filesize":{"type":"number"},"gender":{"enum":["male","female"],"type":"string"},"height":{"type":"number"},"id":{"type":"string"},"mimeType":{"type":"string"},"reusable":{"type":"boolean"},"sizes":{"default":{},"properties":{"card":{"properties":{"url":{"nullable":true,"type":"string"}},"type":"object"},"thumbnail":{"properties":{"url":{"nullable":true,"type":"string"}},"type":"object"}},"type":"object"},"updatedAt":{"type":"string"},"url":{"type":"string"},"width":{"type":"number"}},"required":["id","filename","age","gender","reusable","height","width","filesize","mimeType","updatedAt","createdAt","url"],"type":"object"},"description":{"description":"[Third Person Form] Description of the Persona, shown to the Learner. Use specific and vivid descriptions that include the Persona's full name, role, and relevant public background. Only use information the Learner would realistically know from previous interactions or public sources and that is relevant to the scenario and goal.\n**Avoid omniscient details**: Do not include motives, goals, personality, needs, objections, or background information the Learner would not realistically know.\n**Keep it concise**: Trim unnecessary details from the persona description.\n✅ Good example: \"Martin Weber, is the managing director of **Weber Carpentry**. His LinkedIn shows he has been recruiting a lot of new staff recently.\".\n🚫 Bad example: \"Martin Weber is the managing director of a medium-sized craft business in Franconia, seeking new staff. In his weekends, he likes to play golf and spend time with his grandchildren.\"","type":"string"},"gender":{"description":"enum - The gender of the persona ('female', 'male'). (e.g., 'female')","enum":["male","female"],"type":"string"},"language":{"description":"The language of the persona","enum":["de","en","fr","es","it","nl","zh-Hans"],"type":"string"},"name":{"description":"The name of the Persona. (e.g., Amy Johnson)","type":"string"},"role":{"description":"[Conversation Role] The role the persona plays in the conversation. For B2B sales conversations, use their job title or function. If there is no workplace, use their relationship to the conversation, such as \"Prospective buyer,\" \"Existing customer,\" or \"Private customer.\" For role-plays about manager skills, use their relationship to the learner, such as \"Team member.\" This is shown to the learner and used to instruct the AI during the role-play.","type":"string"},"voice":{"properties":{"id":{"type":"string"},"voice_id":{"type":"string"}},"required":["id","voice_id"],"type":"object"},"workplace_description":{"description":"[Third Person Singular/Plural] Description of the company where the persona works, shown to the learner (e.g., Brisbane Cruises is a premier company offering scenic boat tours in Brisbane, Australia. The company specializes in providing unique experiences on the water, showcasing the beauty of Brisbane's rivers and waterways.) Leave empty when a workplace is not relevant, including private-customer and manager-skills role-plays.","nullable":true,"type":"string"},"workplace_name":{"description":"[Proper Noun or Descriptive Label] The name or type of the workplace/company where the persona currently works, shown to the learner. (e.g., Brisbane Cruises) Leave empty when a workplace is not relevant, including private-customer and manager-skills role-plays. Never invent a workplace just to populate this field.","nullable":true,"type":"string"}},"required":["language","name","role","description","ai_instruction","gender","avatar_file","voice"],"type":"object"},"scenario":{"properties":{"conversation_items":{"description":"array - A list of conversation items, using conversationItems.","items":{"properties":{"conversation_step_instructions":{"description":"[You][Address Persona][Imperative][Use Conditional IF THEN for Instructions][Only for Persona] Instructions, including reactions to observable events, for the Persona. Adjust the conversation flow and the Persona's reactions based on the Learner's behavior. Shown only to the Persona. The first item should instruct the Persona how to begin. The decision step should establish the outcome without ending the conversation, and the final step should explicitly end it.","type":"string"},"conversation_step_title":{"description":"[Noun Phrase] OR [Address AI Persona][You][Imperative][Only for Persona]: A conversation step the Persona should follow. Formulate it as an instruction to the Persona. Only shown to the Persona. (e.g. \"Answer the phone warmly\", \"Decide whether you agree with the learner\", \"Let the learner continue\", \"End the conversation\")","type":"string"}},"required":["conversation_step_title"],"type":"object"},"type":"array"},"description":{"description":"[Address Learner][You][Imperative][Only for Learner] In no more than 3 short sentences, describe the conversation type, why it is happening, and any previous interaction with the Persona. Include only facts the Learner would realistically know at the start. Do not repeat the goal or reveal private Persona information. Shown to the Learner.","type":"string"},"description_for_ai":{"description":"[Address Persona][You][Only for Persona] Set the scene as a director would brief an actor immediately before the interaction. Include the current mood, preceding events, whether the interaction is planned, and relevant prior contact. Focus on what is happening, not who the Persona is. Shown only to the Persona.","type":"string"},"duration":{"type":"number"},"firstMessage":{"type":"string"},"firstMessageMode":{"enum":["assistant-speaks-first","assistant-waits-for-user","assistant-speaks-first-with-model-generated-message"],"type":"string"},"goal":{"description":"[Address Learner][You][Imperative][Infinitive] The goal the Learner should achieve in the scenario. Use one specific, measurable sentence beginning with an action verb, no more than 96 characters including spaces, and ending with a period. Shown to the Learner.","type":"string"},"language":{"description":"The language of the scenario","enum":["de","en","fr","es","it","nl","zh-Hans"],"type":"string"},"tag":{"type":"string"}},"required":["language","tag","goal","description","duration","conversation_items","description_for_ai"],"type":"object"},"scorecard":{"properties":{"items":{"description":"array - A list of scorecard items used to evaluate the Learner. Each item applies either to a specific step or to the whole conversation. This information tells the Learner what the coach evaluates and coaches.","items":{"properties":{"description":{"description":"[Address Coach][Imperative][You] but [Use Third Person for Learner/Persona][Indicative][Only for Coach] Concise, evidence-focused scoring instructions. State the shared context, where in the conversation to look for evidence, what happened immediately beforehand when relevant, and how strict or lenient to be. Do not repeat the Desired Behaviors.","type":"string"},"desired_behaviours":{"default":[],"items":{"properties":{"behaviour":{"description":"[Information for Coach and Learner][Use Third Person for Persona/Learner][Indicative][Descriptive] One discrete verbal behavior the Learner needs to demonstrate to master this scorecard item. Shown to the coach and the Learner. Start with the descriptor for the Learner role. (e.g. \"The seller asks the customer about their experience with the product.\" | \"The manager summarizes the team member’s concern.\")","type":"string"},"examples":{"description":"array - [Direct Quotes] Exactly 3 example utterances that demonstrate the desired Learner behavior, shown to the coach and the Learner. The examples should differ in wording and tone.","type":"string"}},"required":["behaviour"],"type":"object"},"type":"array"},"desired_outcome":{"description":"[Third Person][Persona][Indicative] The observable outcome the Learner is expected to achieve, expressed as a behavior shown by the Persona. Use the form \"The [Persona descriptor] [does an observable action].\" (e.g. \"The customer agrees to a follow-up.\" | \"The team member confirms their concern was understood.\")","type":"string"},"item_title":{"description":"[Noun Phrase] OR [Address Learner][You][Imperative]: A short, descriptive title for the scorecard item, shown to the coach and Learner. Use the Learner’s role descriptor when relevant.","type":"string"}},"required":["item_title","description"],"type":"object"},"type":"array"},"language":{"description":"The language of the scorecard","enum":["de","en","fr","es","it","nl","zh-Hans"],"type":"string"},"tag":{"type":"string"},"title":{"description":"[Proper Noun] A short, descriptive title for the scorecard, shown to the coach.","type":"string"}},"required":["language","items","title","tag"],"type":"object"},"title":{"description":"[Proper Noun] A short, descriptive title for the roleplay mission.","minLength":1,"type":"string"},"toolIds":{"default":[],"items":{"type":"string"},"type":"array"}},"required":["language","title","difficulty","persona","scorecard","scenario"],"type":"object"},"MemoryDeleteResponseDTO":{"properties":{"id":{"description":"Id of the deleted memory entry","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["id"],"type":"object"},"MemoryEntryResponseDTO":{"properties":{"content":{"description":"Full content of the memory entry","type":"string"},"description":{"description":"Short summary shown in the memory index","type":"string"},"id":{"description":"Unique identifier of the memory entry","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"label":{"description":"Slug label of the memory entry","minLength":1,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","type":"string"},"scope":{"description":"Whether the entry is org-shared or personal","enum":["user","org"],"type":"string"},"type":{"description":"Kind of memory","enum":["instruction","schema","skill","memory"],"type":"string"}},"required":["id","label","description","content","type","scope"],"type":"object"},"MemoryListResponseDTO":{"properties":{"memories":{"description":"Memories visible to the caller: org-shared plus own personal","items":{"properties":{"content":{"description":"Full content of the memory entry","type":"string"},"description":{"description":"Short summary shown in the memory index","type":"string"},"id":{"description":"Unique identifier of the memory entry","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"label":{"description":"Slug label of the memory entry","minLength":1,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","type":"string"},"scope":{"description":"Whether the entry is org-shared or personal","enum":["user","org"],"type":"string"},"type":{"description":"Kind of memory","enum":["instruction","schema","skill","memory"],"type":"string"}},"required":["id","label","description","content","type","scope"],"type":"object"},"type":"array"}},"required":["memories"],"type":"object"},"MemoryUpsertRequestDTO":{"properties":{"content":{"description":"Full content of the memory entry","type":"string"},"description":{"description":"Short summary shown in the memory index","type":"string"},"label":{"description":"Slug label, e.g. 'crm-field-schema'. Unique per (scope, type).","minLength":1,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","type":"string"},"scope":{"description":"Whether the entry is org-shared or personal","enum":["user","org"],"type":"string"},"type":{"description":"Kind of memory","enum":["instruction","schema","skill","memory"],"type":"string"}},"required":["scope","type","label","description","content"],"type":"object"},"MessageFindResponseDTO":{"properties":{"data":{"items":{"properties":{"callId":{"description":"The call ID associated with the message.","type":"string"},"content":{"description":"The content of the message.","type":"string"},"createdAt":{"description":"The creation date of the message.","format":"date-time","type":"string"},"endTime":{"description":"The end time of the message, if applicable.","nullable":true,"type":"string"},"id":{"description":"The unique identifier for the message.","type":"string"},"lastUpdatedAt":{"description":"The last update date of the message.","format":"date-time","type":"string"},"role":{"description":"The role of the message sender.","enum":["prospect","sales-agent"],"type":"string"},"secondsFromStart":{"description":"Seconds from the start of the transcript.","type":"number"},"speakerUserId":{"description":"The Jam user who spoke this turn, when the transcript carried speaker attribution. Null for unattributed turns (prospects, legacy transcripts without speaker labels).","format":"uuid","nullable":true,"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"time":{"description":"The time of the message in the transcript.","type":"string"},"userId":{"description":"The learner user ID.","type":"string"}},"required":["id","createdAt","lastUpdatedAt","userId","callId","role","content","time","secondsFromStart","speakerUserId"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"MissionFeedbacksCreateRequestDTO":{"properties":{"content":{"description":"Additional free-form feedback content from the learner about the mission.","type":"string"},"missionReferenceId":{"description":"The CMS mission identifier for referencing this feedback entry.","type":"string"},"rating":{"description":"Integer rating value between 1-5 to rate the overall mission experience.","maximum":5,"minimum":1,"type":"integer"}},"required":["missionReferenceId","rating"],"type":"object"},"MissionFeedbacksCreateResponseDTO":{"properties":{"content":{"nullable":true,"type":"string"},"createdAt":{"format":"date-time","type":"string"},"deletedAt":{"format":"date-time","nullable":true,"type":"string"},"id":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"lastUpdatedAt":{"format":"date-time","type":"string"},"missionReferenceId":{"description":"References a mission in the CMS domain.","type":"string"},"rating":{"maximum":5,"minimum":1,"type":"integer"},"userId":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["id","createdAt","lastUpdatedAt","userId","missionReferenceId","rating"],"type":"object"},"MissionFeedbacksFindResponseDTO":{"properties":{"data":{"items":{"properties":{"content":{"nullable":true,"type":"string"},"createdAt":{"format":"date-time","type":"string"},"deletedAt":{"format":"date-time","nullable":true,"type":"string"},"id":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"lastUpdatedAt":{"format":"date-time","type":"string"},"missionReferenceId":{"description":"References a mission in the CMS domain.","type":"string"},"rating":{"maximum":5,"minimum":1,"type":"integer"},"userId":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["id","createdAt","lastUpdatedAt","userId","missionReferenceId","rating"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"MissionItemFeedbacksCreateRequestDTO":{"properties":{"content":{"description":"Additional free-form feedback content from the learner about the mission item.","type":"string"},"learnerMissionItemPresets":{"description":"Array of preset feedback values selected by the learner.","items":{"enum":["NOT_FACTUALLY_CORRECT","DONT_UNDERSTAND","GRAMMAR_MISTAKE_OR_SPELLING_ERROR","TOO_COMPLICATED"],"type":"string"},"nullable":true,"type":"array"},"missionItemReferenceId":{"description":"The CMS mission item identifier for referencing this feedback entry.","type":"string"},"positive":{"description":"Indicates whether the feedback is positive (true) or negative (false).","type":"boolean"},"sessionId":{"description":"The session identifier for referencing this feedback entry.","type":"string"}},"required":["sessionId","missionItemReferenceId","positive"],"type":"object"},"MissionItemFeedbacksCreateResponseDTO":{"properties":{"content":{"nullable":true,"type":"string"},"createdAt":{"format":"date-time","type":"string"},"deletedAt":{"format":"date-time","nullable":true,"type":"string"},"id":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"lastUpdatedAt":{"format":"date-time","type":"string"},"learnerMissionItemPresets":{"items":{"enum":["NOT_FACTUALLY_CORRECT","DONT_UNDERSTAND","GRAMMAR_MISTAKE_OR_SPELLING_ERROR","TOO_COMPLICATED"],"type":"string"},"type":"array"},"missionItemReferenceId":{"description":"References items defined in scorecard in the CMS domain.","type":"string"},"positive":{"type":"boolean"},"sessionId":{"description":"References a session in the API domain.","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"userId":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["id","createdAt","lastUpdatedAt","userId","sessionId","missionItemReferenceId","positive","learnerMissionItemPresets"],"type":"object"},"MissionItemFeedbacksFindResponseDTO":{"properties":{"data":{"items":{"properties":{"content":{"nullable":true,"type":"string"},"createdAt":{"format":"date-time","type":"string"},"deletedAt":{"format":"date-time","nullable":true,"type":"string"},"id":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"lastUpdatedAt":{"format":"date-time","type":"string"},"learnerMissionItemPresets":{"items":{"enum":["NOT_FACTUALLY_CORRECT","DONT_UNDERSTAND","GRAMMAR_MISTAKE_OR_SPELLING_ERROR","TOO_COMPLICATED"],"type":"string"},"type":"array"},"missionItemReferenceId":{"description":"References items defined in scorecard in the CMS domain.","type":"string"},"positive":{"type":"boolean"},"sessionId":{"description":"References a session in the API domain.","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"userId":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["id","createdAt","lastUpdatedAt","userId","sessionId","missionItemReferenceId","positive","learnerMissionItemPresets"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"MissionPaginatedResponseDTO":{"properties":{"data":{"items":{"properties":{"additional_material":{"default":[],"description":"Additional materials attached to the mission","items":{"anyOf":[{"properties":{"relationTo":{"enum":["client-documents"],"type":"string"},"value":{"anyOf":[{"description":"Document ID","type":"string"},{"properties":{"createdAt":{"description":"Creation timestamp","type":"string"},"description":{"description":"Optional description of the document","nullable":true,"type":"string"},"filename":{"description":"Original filename of the document","nullable":true,"type":"string"},"filesize":{"description":"File size in bytes","nullable":true,"type":"number"},"height":{"description":"Image height in pixels (if applicable)","nullable":true,"type":"number"},"id":{"description":"Unique identifier for the client document","type":"string"},"mimeType":{"description":"MIME type of the document","nullable":true,"type":"string"},"signedUrl":{"description":"Signed URL for secure document access","nullable":true,"type":"string"},"title":{"description":"Title of the document","type":"string"},"updatedAt":{"description":"Last update timestamp","type":"string"},"url":{"description":"Public URL to access the document","nullable":true,"type":"string"},"width":{"description":"Image width in pixels (if applicable)","nullable":true,"type":"number"}},"required":["id","title","updatedAt","createdAt"],"type":"object"}]}},"required":["relationTo","value"],"type":"object"},{"properties":{"relationTo":{"enum":["external-links"],"type":"string"},"value":{"anyOf":[{"description":"External link ID","type":"string"},{"properties":{"createdAt":{"description":"Creation timestamp","type":"string"},"description":{"description":"Optional description of the external link","nullable":true,"type":"string"},"id":{"description":"Unique identifier for the external link","type":"string"},"title":{"description":"Title of the external link","type":"string"},"updatedAt":{"description":"Last update timestamp","type":"string"},"url":{"description":"URL of the external resource","type":"string"}},"required":["id","title","url","updatedAt","createdAt"],"type":"object"}]}},"required":["relationTo","value"],"type":"object"},{"properties":{"relationTo":{"enum":["text-snippets"],"type":"string"},"value":{"anyOf":[{"description":"Text snippet ID","type":"string"},{"properties":{"createdAt":{"description":"Creation timestamp","type":"string"},"description":{"description":"Content of the text snippet","type":"string"},"id":{"description":"Unique identifier for the text snippet","type":"string"},"language":{"description":"Language of the text snippet","enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"},"title":{"description":"Title of the text snippet","type":"string"},"updatedAt":{"description":"Last update timestamp","type":"string"}},"required":["id","language","title","description","updatedAt","createdAt"],"type":"object"}]}},"required":["relationTo","value"],"type":"object"}]},"nullable":true,"type":"array"},"createdAt":{"description":"Creation timestamp","type":"string"},"difficulty":{"description":"Difficulty level of the mission","type":"string"},"hide_examples":{"description":"Whether learners should not see desired behaviour examples for this mission.","nullable":true,"type":"boolean"},"hide_scorecard":{"description":"Whether learners should not see the mission scorecard.","nullable":true,"type":"boolean"},"id":{"description":"Unique identifier for the mission","type":"string"},"language":{"enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"},"persona":{"description":"Persona assigned to this mission","properties":{"avatar_file":{"description":"Avatar image for the persona","properties":{"createdAt":{"description":"Creation timestamp","type":"string"},"filename":{"description":"Original filename of the avatar","type":"string"},"filesize":{"description":"File size in bytes","type":"number"},"height":{"description":"Image height in pixels","type":"number"},"id":{"description":"Unique identifier for the avatar file","type":"string"},"mimeType":{"description":"MIME type of the avatar file","type":"string"},"sizes":{"description":"Available size variants for the avatar","properties":{"card":{"description":"Card size preview URL","properties":{"url":{"description":"Preview URL for the image","type":"string"}},"type":"object"},"thumbnail":{"description":"Thumbnail size preview URL","properties":{"url":{"description":"Preview URL for the image","type":"string"}},"type":"object"}},"type":"object"},"updatedAt":{"description":"Last update timestamp","type":"string"},"url":{"description":"Public URL to access the avatar","type":"string"},"width":{"description":"Image width in pixels","type":"number"}},"required":["id","filename","sizes","mimeType","filesize","width","height","createdAt","updatedAt","url"],"type":"object"},"createdAt":{"description":"Creation timestamp","type":"string"},"description":{"description":"Optional description of the persona","nullable":true,"type":"string"},"name":{"description":"Full name of the persona","type":"string"},"role":{"description":"The role the persona plays in the conversation. For B2B sales conversations, use their job title or function. If there is no workplace, use their relationship to the conversation, such as \"Prospective buyer,\" \"Existing customer,\" or \"Private customer.\" For role-plays about manager skills, use their relationship to the learner, such as \"Team member.\" This is shown to the learner and used to instruct the AI during the role-play.","type":"string"},"updatedAt":{"description":"Last update timestamp","type":"string"},"workplace_description":{"description":"Optional description of the workplace","type":"string"},"workplace_name":{"description":"Name of the workplace where the persona works. Empty when no workplace is relevant.","type":"string"}},"required":["avatar_file","name","role","createdAt","updatedAt"],"type":"object"},"saga":{"description":"Saga that contains this mission","properties":{"id":{"description":"Unique identifier for the saga","type":"string"},"name":{"description":"Name of the saga","type":"string"}},"required":["id","name"],"type":"object"},"scenario":{"description":"Scenario details for the mission","properties":{"description":{"description":"Detailed description of the scenario","type":"string"},"duration":{"description":"Expected duration in minutes","type":"number"},"goal":{"description":"Primary goal or objective of the scenario","type":"string"},"tag":{"description":"Optional tag for categorizing the scenario","type":"string"}},"required":["description","goal","duration"],"type":"object"},"scorecard":{"description":"Scorecard for evaluating the mission","properties":{"id":{"description":"Unique identifier for the scorecard","type":"string"},"items":{"description":"List of scorecard evaluation items","items":{"properties":{"desired_behaviours":{"description":"Array of desired behaviors for this item","items":{"properties":{"behaviour":{"description":"Description of the desired behavior","type":"string"},"examples":{"description":"List of examples demonstrating the behavior","nullable":true,"type":"string"}},"required":["behaviour"],"type":"object"},"nullable":true,"type":"array"},"desired_outcome":{"description":"Goal or objective for this specific item","nullable":true,"type":"string"},"id":{"description":"Unique identifier for the scorecard item","type":"string"},"item_title":{"description":"Optional title for the scorecard item","type":"string"}},"required":["id"],"type":"object"},"type":"array"},"title":{"description":"Title of the scorecard","type":"string"}},"required":["id","title","items"],"type":"object"},"title":{"description":"Title of the mission","type":"string"},"updatedAt":{"description":"Last update timestamp","type":"string"}},"required":["id","saga","title","persona","scenario","scorecard","language","difficulty","createdAt","updatedAt"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"MissionResponseDTO":{"properties":{"additional_material":{"default":[],"description":"Additional materials attached to the mission","items":{"anyOf":[{"properties":{"relationTo":{"enum":["client-documents"],"type":"string"},"value":{"anyOf":[{"description":"Document ID","type":"string"},{"properties":{"createdAt":{"description":"Creation timestamp","type":"string"},"description":{"description":"Optional description of the document","nullable":true,"type":"string"},"filename":{"description":"Original filename of the document","nullable":true,"type":"string"},"filesize":{"description":"File size in bytes","nullable":true,"type":"number"},"height":{"description":"Image height in pixels (if applicable)","nullable":true,"type":"number"},"id":{"description":"Unique identifier for the client document","type":"string"},"mimeType":{"description":"MIME type of the document","nullable":true,"type":"string"},"signedUrl":{"description":"Signed URL for secure document access","nullable":true,"type":"string"},"title":{"description":"Title of the document","type":"string"},"updatedAt":{"description":"Last update timestamp","type":"string"},"url":{"description":"Public URL to access the document","nullable":true,"type":"string"},"width":{"description":"Image width in pixels (if applicable)","nullable":true,"type":"number"}},"required":["id","title","updatedAt","createdAt"],"type":"object"}]}},"required":["relationTo","value"],"type":"object"},{"properties":{"relationTo":{"enum":["external-links"],"type":"string"},"value":{"anyOf":[{"description":"External link ID","type":"string"},{"properties":{"createdAt":{"description":"Creation timestamp","type":"string"},"description":{"description":"Optional description of the external link","nullable":true,"type":"string"},"id":{"description":"Unique identifier for the external link","type":"string"},"title":{"description":"Title of the external link","type":"string"},"updatedAt":{"description":"Last update timestamp","type":"string"},"url":{"description":"URL of the external resource","type":"string"}},"required":["id","title","url","updatedAt","createdAt"],"type":"object"}]}},"required":["relationTo","value"],"type":"object"},{"properties":{"relationTo":{"enum":["text-snippets"],"type":"string"},"value":{"anyOf":[{"description":"Text snippet ID","type":"string"},{"properties":{"createdAt":{"description":"Creation timestamp","type":"string"},"description":{"description":"Content of the text snippet","type":"string"},"id":{"description":"Unique identifier for the text snippet","type":"string"},"language":{"description":"Language of the text snippet","enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"},"title":{"description":"Title of the text snippet","type":"string"},"updatedAt":{"description":"Last update timestamp","type":"string"}},"required":["id","language","title","description","updatedAt","createdAt"],"type":"object"}]}},"required":["relationTo","value"],"type":"object"}]},"nullable":true,"type":"array"},"createdAt":{"description":"Creation timestamp","type":"string"},"difficulty":{"description":"Difficulty level of the mission","type":"string"},"hide_examples":{"description":"Whether learners should not see desired behaviour examples for this mission.","nullable":true,"type":"boolean"},"hide_scorecard":{"description":"Whether learners should not see the mission scorecard.","nullable":true,"type":"boolean"},"id":{"description":"Unique identifier for the mission","type":"string"},"language":{"enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"},"persona":{"description":"Persona assigned to this mission","properties":{"avatar_file":{"description":"Avatar image for the persona","properties":{"createdAt":{"description":"Creation timestamp","type":"string"},"filename":{"description":"Original filename of the avatar","type":"string"},"filesize":{"description":"File size in bytes","type":"number"},"height":{"description":"Image height in pixels","type":"number"},"id":{"description":"Unique identifier for the avatar file","type":"string"},"mimeType":{"description":"MIME type of the avatar file","type":"string"},"sizes":{"description":"Available size variants for the avatar","properties":{"card":{"description":"Card size preview URL","properties":{"url":{"description":"Preview URL for the image","type":"string"}},"type":"object"},"thumbnail":{"description":"Thumbnail size preview URL","properties":{"url":{"description":"Preview URL for the image","type":"string"}},"type":"object"}},"type":"object"},"updatedAt":{"description":"Last update timestamp","type":"string"},"url":{"description":"Public URL to access the avatar","type":"string"},"width":{"description":"Image width in pixels","type":"number"}},"required":["id","filename","sizes","mimeType","filesize","width","height","createdAt","updatedAt","url"],"type":"object"},"createdAt":{"description":"Creation timestamp","type":"string"},"description":{"description":"Optional description of the persona","nullable":true,"type":"string"},"name":{"description":"Full name of the persona","type":"string"},"role":{"description":"The role the persona plays in the conversation. For B2B sales conversations, use their job title or function. If there is no workplace, use their relationship to the conversation, such as \"Prospective buyer,\" \"Existing customer,\" or \"Private customer.\" For role-plays about manager skills, use their relationship to the learner, such as \"Team member.\" This is shown to the learner and used to instruct the AI during the role-play.","type":"string"},"updatedAt":{"description":"Last update timestamp","type":"string"},"workplace_description":{"description":"Optional description of the workplace","type":"string"},"workplace_name":{"description":"Name of the workplace where the persona works. Empty when no workplace is relevant.","type":"string"}},"required":["avatar_file","name","role","createdAt","updatedAt"],"type":"object"},"saga":{"description":"Saga that contains this mission","properties":{"id":{"description":"Unique identifier for the saga","type":"string"},"name":{"description":"Name of the saga","type":"string"}},"required":["id","name"],"type":"object"},"scenario":{"description":"Scenario details for the mission","properties":{"description":{"description":"Detailed description of the scenario","type":"string"},"duration":{"description":"Expected duration in minutes","type":"number"},"goal":{"description":"Primary goal or objective of the scenario","type":"string"},"tag":{"description":"Optional tag for categorizing the scenario","type":"string"}},"required":["description","goal","duration"],"type":"object"},"scorecard":{"description":"Scorecard for evaluating the mission","properties":{"id":{"description":"Unique identifier for the scorecard","type":"string"},"items":{"description":"List of scorecard evaluation items","items":{"properties":{"desired_behaviours":{"description":"Array of desired behaviors for this item","items":{"properties":{"behaviour":{"description":"Description of the desired behavior","type":"string"},"examples":{"description":"List of examples demonstrating the behavior","nullable":true,"type":"string"}},"required":["behaviour"],"type":"object"},"nullable":true,"type":"array"},"desired_outcome":{"description":"Goal or objective for this specific item","nullable":true,"type":"string"},"id":{"description":"Unique identifier for the scorecard item","type":"string"},"item_title":{"description":"Optional title for the scorecard item","type":"string"}},"required":["id"],"type":"object"},"type":"array"},"title":{"description":"Title of the scorecard","type":"string"}},"required":["id","title","items"],"type":"object"},"title":{"description":"Title of the mission","type":"string"},"updatedAt":{"description":"Last update timestamp","type":"string"}},"required":["id","saga","title","persona","scenario","scorecard","language","difficulty","createdAt","updatedAt"],"type":"object"},"NextAssignmentGetByUserResponseDTO":{"properties":{"completedMissionsCount":{"type":"number"},"contentAllocation":{"properties":{"completedMissionIds":{"items":{"type":"string"},"type":"array"},"dueDate":{"format":"date-time","nullable":true,"type":"string"},"reference":{"properties":{"id":{"type":"string"},"type":{"enum":["mission","track"],"type":"string"}},"required":["id","type"],"type":"object"},"state":{"enum":["notStarted","started","completed"],"type":"string"},"type":{"enum":["autoTrackAllocation","track","managerAssigned","refresher","sprint","selfEnrolled"],"type":"string"}},"required":["state","type","reference","completedMissionIds"],"type":"object"},"firstMission":{"nullable":true,"properties":{"avatar":{"description":"Avatar images for the mission persona","properties":{"cardUrl":{"description":"Card-sized version of the avatar","type":"string"},"thumbnailUrl":{"description":"Thumbnail version of the avatar","type":"string"},"url":{"description":"Primary avatar image URL","type":"string"}},"required":["url"],"type":"object"},"difficulty":{"description":"Difficulty level of the mission","type":"string"},"duration":{"description":"Expected duration of the mission in minutes","type":"number"},"id":{"description":"Unique identifier for the mission","type":"string"},"sagaId":{"description":"Identifier of the saga this mission belongs to","type":"string"},"scenario_description":{"description":"Situational context for the seller entering this roleplay","type":"string"},"taskCount":{"description":"Number of scorecard tasks (items) defined for this mission","maximum":9007199254740991,"minimum":0,"type":"integer"},"title":{"description":"Title of the mission","type":"string"},"trackId":{"description":"Identifier of the track this mission belongs to (if any)","type":"string"},"trackTitle":{"description":"Title of the track this mission belongs to (if any)","type":"string"}},"required":["id","sagaId","title","difficulty","avatar","duration","taskCount"],"type":"object"},"title":{"nullable":true,"type":"string"},"totalMissionsCount":{"type":"number"},"trackId":{"nullable":true,"type":"string"}},"required":["title","firstMission","trackId","completedMissionsCount","totalMissionsCount","contentAllocation"],"type":"object"},"NextMissionsGetByUserResponseDTO":{"items":{"properties":{"completed":{"type":"boolean"},"dueDate":{"format":"date-time","type":"string"},"missionReferenceId":{"type":"string"}},"required":["missionReferenceId","completed"],"type":"object"},"type":"array"},"OAuthMetadataGetAuthorizationServerMetadataResponseDTO":{"properties":{"authorization_endpoint":{"description":"URL of the authorization server's authorization endpoint. This is REQUIRED unless no grant types are supported that use the authorization endpoint","format":"uri","type":"string"},"code_challenge_methods_supported":{"description":"JSON array containing a list of Proof Key for Code Exchange (PKCE) code challenge methods supported by this authorization server","items":{"type":"string"},"type":"array"},"grant_types_supported":{"description":"JSON array containing a list of the OAuth 2.0 grant type values that this authorization server supports","items":{"type":"string"},"type":"array"},"introspection_endpoint":{"description":"URL of the authorization server's OAuth 2.0 introspection endpoint","format":"uri","type":"string"},"introspection_endpoint_auth_methods_supported":{"description":"JSON array containing a list of client authentication methods supported by this introspection endpoint","items":{"type":"string"},"type":"array"},"introspection_endpoint_auth_signing_alg_values_supported":{"description":"JSON array containing a list of the JWS signing algorithms supported by the introspection endpoint for the signature on the JWT used to authenticate the client","items":{"type":"string"},"type":"array"},"issuer":{"description":"The authorization server's issuer identifier, which is a URL that uses the \"https\" scheme and has no query or fragment components","format":"uri","type":"string"},"jwks_uri":{"description":"URL of the authorization server's JWK Set document. The referenced document contains the signing key(s) the client uses to validate signatures","format":"uri","type":"string"},"op_policy_uri":{"description":"URL that the authorization server provides to the person registering the client to read about the authorization server's requirements on how the client can use the data","format":"uri","type":"string"},"op_tos_uri":{"description":"URL that the authorization server provides to the person registering the client to read about the authorization server's terms of service","format":"uri","type":"string"},"registration_endpoint":{"description":"URL of the authorization server's OAuth 2.0 Dynamic Client Registration endpoint","format":"uri","type":"string"},"response_modes_supported":{"description":"JSON array containing a list of the OAuth 2.0 \"response_mode\" values that this authorization server supports","items":{"type":"string"},"type":"array"},"response_types_supported":{"description":"JSON array containing a list of the OAuth 2.0 \"response_type\" values that this authorization server supports","items":{"type":"string"},"type":"array"},"revocation_endpoint":{"description":"URL of the authorization server's OAuth 2.0 revocation endpoint","format":"uri","type":"string"},"revocation_endpoint_auth_methods_supported":{"description":"JSON array containing a list of client authentication methods supported by this revocation endpoint","items":{"type":"string"},"type":"array"},"revocation_endpoint_auth_signing_alg_values_supported":{"description":"JSON array containing a list of the JWS signing algorithms supported by the revocation endpoint for the signature on the JWT used to authenticate the client","items":{"type":"string"},"type":"array"},"scopes_supported":{"description":"JSON array containing a list of the OAuth 2.0 \"scope\" values that this authorization server supports","items":{"type":"string"},"type":"array"},"service_documentation":{"description":"URL of a page containing human-readable information that developers might want or need to know when using the authorization server","format":"uri","type":"string"},"signed_metadata":{"description":"Signed JWT containing metadata values about the authorization server as claims","type":"string"},"token_endpoint":{"description":"URL of the authorization server's token endpoint. This is REQUIRED unless only the implicit grant type is supported","format":"uri","type":"string"},"token_endpoint_auth_methods_supported":{"description":"JSON array containing a list of client authentication methods supported by this token endpoint","items":{"type":"string"},"type":"array"},"token_endpoint_auth_signing_alg_values_supported":{"description":"JSON array containing a list of the JWS signing algorithms (\"alg\" values) supported by the token endpoint for the signature on the JWT used to authenticate the client","items":{"type":"string"},"type":"array"},"ui_locales_supported":{"description":"Languages and scripts supported for the user interface, represented as a JSON array of language tag values from BCP 47","items":{"type":"string"},"type":"array"},"userinfo_endpoint":{"description":"URL of the authorization server's userinfo endpoint","format":"uri","type":"string"}},"required":["issuer","response_types_supported"],"type":"object"},"OAuthMetadataGetProtectedResourceMetadataResponseDTO":{"properties":{"authorization_details_types_supported":{"description":"Array containing authorization details type values supported by the resource server when the authorization_details request parameter is used","items":{"type":"string"},"type":"array"},"authorization_servers":{"description":"Array containing authorization server issuer identification URIs","items":{"format":"uri","type":"string"},"type":"array"},"bearer_methods_supported":{"description":"Array containing methods supported for presenting bearer tokens","items":{"type":"string"},"type":"array"},"dpop_bound_access_tokens_required":{"description":"Boolean value specifying whether the protected resource always requires the use of DPoP-bound access tokens","type":"boolean"},"dpop_signing_alg_values_supported":{"description":"Array containing JWS alg values supported by the resource server for validating DPoP proof JWTs","items":{"type":"string"},"type":"array"},"jwks_uri":{"description":"URL of the protected resource's JSON Web Key (JWK) Set document. This contains public keys belonging to the protected resource","format":"uri","type":"string"},"resource":{"description":"URL of the resource server","format":"uri","type":"string"},"resource_documentation":{"description":"URL for human-readable documentation for the resource server","format":"uri","type":"string"},"resource_name":{"description":"Human-readable name of the protected resource intended for display to the end user","type":"string"},"resource_policy_uri":{"description":"URL for the resource server's policy document","format":"uri","type":"string"},"resource_signing_alg_values_supported":{"description":"Array containing JWS signing algorithms supported by the protected resource for signing resource responses","items":{"type":"string"},"type":"array"},"resource_tos_uri":{"description":"URL for the resource server's terms of service","format":"uri","type":"string"},"scopes_supported":{"description":"Array containing OAuth 2.0 scope strings that the resource server can accept in access tokens","items":{"type":"string"},"type":"array"},"signed_metadata":{"description":"Signed JWT containing metadata parameters about the protected resource as claims","type":"string"},"tls_client_certificate_bound_access_tokens":{"description":"Boolean value indicating protected resource support for mutual-TLS client certificate-bound access tokens","type":"boolean"}},"required":["resource"],"type":"object"},"OrganizationsConfigureRequestDTO":{"properties":{"autoProvisionFromTranscripts":{"description":"Flag indicating if unknown emails in real-call transcripts matching the configured domains are automatically provisioned as Jam users. Can only be enabled while a valid primary domain is configured.","type":"boolean"},"description":{"description":"A brief description of the organization","maxLength":25000,"nullable":true,"type":"string"},"domain":{"description":"Primary email domain for the organization (e.g., example.com)","nullable":true,"pattern":"^([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z]{2,}$","type":"string"},"domainAutojoin":{"description":"Flag indicating if users with matching email domains can automatically join the organization","type":"boolean"},"extraDomains":{"description":"Additional email domains allowed for the organization (e.g., [\"subsidiary.com\", \"partner.com\"])","items":{"pattern":"^([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z]{2,}$","type":"string"},"nullable":true,"type":"array"},"isAudioPrivacy":{"description":"Flag indicating if the organization has audio privacy enabled (audio only visible to session owner)","type":"boolean"},"isEnhancedPrivacy":{"description":"Flag indicating if the organization has enhanced privacy settings enabled","type":"boolean"},"isOnboarded":{"description":"Flag indicating if the organization has completed onboarding","type":"boolean"},"logoFull":{"description":"URL to the organization full logo","format":"uri","nullable":true,"type":"string"},"logoIcon":{"description":"URL to the organization icon","format":"uri","nullable":true,"type":"string"},"name":{"description":"The name of the organization","maxLength":50,"minLength":1,"pattern":"^[a-zA-Z0-9_ ]+$","type":"string"},"requireUserConsent":{"description":"Whether members must accept the latest consent document before using the app","type":"boolean"},"websiteUrl":{"description":"Organization website URL","format":"uri","nullable":true,"type":"string"}},"type":"object"},"OrganizationsCreateResponseDTO":{"properties":{"autoProvisionFromTranscripts":{"default":false,"description":"Whether unknown emails in real-call transcripts matching the configured domains are automatically provisioned as Jam users (default false)","type":"boolean"},"createdAt":{"description":"Timestamp when the organization was created","format":"date-time","type":"string"},"currentUserCount":{"description":"Current number of users in the organization","maximum":9007199254740991,"minimum":0,"type":"integer"},"description":{"description":"A brief description of the organization","type":"string"},"domain":{"description":"Primary email domain for the organization","type":"string"},"domainAutojoin":{"description":"Whether users with matching email domains can automatically join the organization","type":"boolean"},"extraDomains":{"description":"Additional email domains allowed for the organization","items":{"type":"string"},"type":"array"},"id":{"description":"The unique identifier of the organization","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"isAssistantEnabled":{"default":false,"description":"Whether the Assistant capability is enabled for the organization (default false)","type":"boolean"},"isAudioPrivacy":{"description":"Whether the organization has audio privacy enabled (audio only visible to session owner)","type":"boolean"},"isEnhancedPrivacy":{"description":"Whether the organization has enhanced privacy features enabled","type":"boolean"},"isRealCallEnabled":{"default":true,"description":"Whether the Real Call capability is enabled for the organization (default true)","type":"boolean"},"isSamlConfigured":{"description":"Whether SAML SSO is configured for the organization","type":"boolean"},"isTrainingEnabled":{"default":true,"description":"Whether the Training capability is enabled for the organization (default true)","type":"boolean"},"isTrial":{"description":"Whether the organization is in trial mode","type":"boolean"},"legalNoticeUrl":{"description":"Read-only Impressum (legal notice) URL. Set by admins only; not editable via the standard org configuration endpoint.","format":"uri","type":"string"},"logoFull":{"description":"URL to the organization full logo","format":"uri","type":"string"},"logoIcon":{"description":"URL to the organization icon","format":"uri","type":"string"},"name":{"description":"The name of the organization","type":"string"},"readOnlySagaIds":{"description":"List of saga IDs associated with the organization","items":{"type":"string"},"type":"array"},"readWriteSagaIds":{"description":"List of saga IDs that the organization can write to","items":{"type":"string"},"type":"array"},"requireUserConsent":{"description":"Whether members must accept the latest consent document before using the app","type":"boolean"},"userLimit":{"description":"Maximum number of users allowed in the organization (0 or null means unlimited)","maximum":9007199254740991,"minimum":0,"type":"integer"},"voiceTransport":{"default":"webrtc","description":"Transport used for ElevenLabs voice conversations (default webrtc)","enum":["webrtc","websocket"],"type":"string"},"websiteUrl":{"description":"Organization website URL","format":"uri","type":"string"}},"required":["id","name","description","websiteUrl","legalNoticeUrl","logoIcon","logoFull","isTrial","userLimit","isEnhancedPrivacy","isAudioPrivacy","domain","extraDomains","domainAutojoin","autoProvisionFromTranscripts","isSamlConfigured","requireUserConsent","isTrainingEnabled","isRealCallEnabled","isAssistantEnabled","voiceTransport","createdAt","readOnlySagaIds","readWriteSagaIds"],"type":"object"},"OrganizationsFindResponseDTO":{"properties":{"data":{"items":{"properties":{"autoProvisionFromTranscripts":{"default":false,"description":"Whether unknown emails in real-call transcripts matching the configured domains are automatically provisioned as Jam users (default false)","type":"boolean"},"createdAt":{"description":"Timestamp when the organization was created","format":"date-time","type":"string"},"currentUserCount":{"description":"Current number of users in the organization","maximum":9007199254740991,"minimum":0,"type":"integer"},"description":{"description":"A brief description of the organization","type":"string"},"domain":{"description":"Primary email domain for the organization","type":"string"},"domainAutojoin":{"description":"Whether users with matching email domains can automatically join the organization","type":"boolean"},"extraDomains":{"description":"Additional email domains allowed for the organization","items":{"type":"string"},"type":"array"},"id":{"description":"The unique identifier of the organization","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"isAssistantEnabled":{"default":false,"description":"Whether the Assistant capability is enabled for the organization (default false)","type":"boolean"},"isAudioPrivacy":{"description":"Whether the organization has audio privacy enabled (audio only visible to session owner)","type":"boolean"},"isEnhancedPrivacy":{"description":"Whether the organization has enhanced privacy features enabled","type":"boolean"},"isRealCallEnabled":{"default":true,"description":"Whether the Real Call capability is enabled for the organization (default true)","type":"boolean"},"isSamlConfigured":{"description":"Whether SAML SSO is configured for the organization","type":"boolean"},"isTrainingEnabled":{"default":true,"description":"Whether the Training capability is enabled for the organization (default true)","type":"boolean"},"isTrial":{"description":"Whether the organization is in trial mode","type":"boolean"},"legalNoticeUrl":{"description":"Read-only Impressum (legal notice) URL. Set by admins only; not editable via the standard org configuration endpoint.","format":"uri","type":"string"},"logoFull":{"description":"URL to the organization full logo","format":"uri","type":"string"},"logoIcon":{"description":"URL to the organization icon","format":"uri","type":"string"},"name":{"description":"The name of the organization","type":"string"},"readOnlySagaIds":{"description":"List of saga IDs associated with the organization","items":{"type":"string"},"type":"array"},"readWriteSagaIds":{"description":"List of saga IDs that the organization can write to","items":{"type":"string"},"type":"array"},"requireUserConsent":{"description":"Whether members must accept the latest consent document before using the app","type":"boolean"},"userLimit":{"description":"Maximum number of users allowed in the organization (0 or null means unlimited)","maximum":9007199254740991,"minimum":0,"type":"integer"},"voiceTransport":{"default":"webrtc","description":"Transport used for ElevenLabs voice conversations (default webrtc)","enum":["webrtc","websocket"],"type":"string"},"websiteUrl":{"description":"Organization website URL","format":"uri","type":"string"}},"required":["id","name","description","websiteUrl","legalNoticeUrl","logoIcon","logoFull","isTrial","userLimit","isEnhancedPrivacy","isAudioPrivacy","domain","extraDomains","domainAutojoin","autoProvisionFromTranscripts","isSamlConfigured","requireUserConsent","isTrainingEnabled","isRealCallEnabled","isAssistantEnabled","voiceTransport","createdAt","readOnlySagaIds","readWriteSagaIds"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"OrganizationsGenerateDescriptionRequestDTO":{"properties":{"orgName":{"description":"The name of the organization to generate a description for","minLength":1,"type":"string"},"url":{"description":"Optional URL to help the LLM gather more context about the organization","format":"uri","type":"string"}},"required":["orgName"],"type":"object"},"OrganizationsGenerateDescriptionResponseDTO":{"properties":{"description":{"description":"The AI-generated organization description for sales role-plays","type":"string"}},"required":["description"],"type":"object"},"OrganizationsLicenseSummaryResponseDTO":{"properties":{"availableSeats":{"description":"Number of seats available (can be negative when over capacity, null when unlimited)","nullable":true,"type":"number"},"hasUnlimitedLicenses":{"description":"Whether the organization has unlimited licenses","type":"boolean"},"pendingInvites":{"description":"Number of pending invitations sent to potential users","maximum":9007199254740991,"minimum":0,"type":"integer"},"registeredUsers":{"description":"Number of users currently registered in the organization","maximum":9007199254740991,"minimum":0,"type":"integer"},"totalSeats":{"description":"Total number of seats/licenses allocated to the organization","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["totalSeats","registeredUsers","pendingInvites","availableSeats","hasUnlimitedLicenses"],"type":"object"},"OrganizationsRequestLicenseIncreaseRequestDTO":{"properties":{},"type":"object"},"OrganizationsRequestLicenseIncreaseResponseDTO":{"properties":{"success":{"description":"Whether the request was sent successfully","type":"boolean"}},"required":["success"],"type":"object"},"OrganizationsSsoStatusResponseDTO":{"properties":{"isSamlConfigured":{"description":"Whether SAML/OIDC single sign-on is configured for the organization, read live from the auth provider","type":"boolean"}},"required":["isSamlConfigured"],"type":"object"},"OrganizationsUpdateRequestDTO":{"properties":{"description":{"description":"A brief description of the organization","maxLength":25000,"nullable":true,"type":"string"},"isAssistantEnabled":{"description":"Whether the Assistant capability is enabled for the organization","type":"boolean"},"isAudioPrivacy":{"description":"Whether the organization has audio privacy enabled (audio only visible to session owner)","type":"boolean"},"isEnhancedPrivacy":{"description":"Whether the organization has enhanced privacy features enabled","type":"boolean"},"isRealCallEnabled":{"description":"Whether the Real Call capability is enabled for the organization","type":"boolean"},"isTrainingEnabled":{"description":"Whether the Training capability is enabled for the organization","type":"boolean"},"isTrial":{"description":"Whether the organization is in trial mode","type":"boolean"},"legalNoticeUrl":{"description":"Read-only Impressum (legal notice) URL shown in the app footer. Admin-only.","format":"uri","nullable":true,"type":"string"},"logoFull":{"description":"URL to the organization full logo","format":"uri","nullable":true,"type":"string"},"logoIcon":{"description":"URL to the organization icon","format":"uri","nullable":true,"type":"string"},"name":{"description":"The name of the organization","maxLength":50,"minLength":1,"pattern":"^[a-zA-Z0-9_ ]+$","type":"string"},"requireUserConsent":{"description":"Whether members must accept the latest consent document before using the app","type":"boolean"},"userLimit":{"description":"Maximum number of users allowed in the organization (0 or null means unlimited)","maximum":9007199254740991,"minimum":0,"nullable":true,"type":"integer"},"voiceTransport":{"description":"Transport used for ElevenLabs voice conversations. Use websocket for organizations whose network blocks WebRTC media traffic.","enum":["webrtc","websocket"],"type":"string"},"websiteUrl":{"description":"Organization website URL","format":"uri","nullable":true,"type":"string"}},"type":"object"},"OrganizationsUpdateResponseDTO":{"properties":{},"type":"object"},"PendingInvitesBulkInviteRequestDTO":{"properties":{"dueDate":{"description":"Due date for the initial track assignment","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"emails":{"description":"Email addresses of the users to invite","items":{"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","type":"string"},"maxItems":10,"minItems":1,"type":"array"},"roles":{"description":"Role to assign to the invited users","items":{"enum":["Owner","Manager","Editor","Member","Assistant User"],"type":"string"},"minItems":1,"type":"array"},"teamIds":{"description":"Team IDs to assign the users to after creation","items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":"array"},"trackIds":{"description":"Track IDs to assign the users to after creation (0-10 tracks)","items":{"type":"string"},"maxItems":10,"minItems":0,"type":"array"}},"required":["emails","roles"],"type":"object"},"PendingInvitesBulkInviteResponseDTO":{"properties":{"results":{"items":{"properties":{"email":{"type":"string"},"status":{"enum":["success","conflict","error"],"type":"string"}},"required":["email","status"],"type":"object"},"type":"array"}},"required":["results"],"type":"object"},"PendingInvitesInviteRequestDTO":{"properties":{"dueDate":{"description":"Due date for the initial track assignment","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"email":{"description":"Email address of the user to invite","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","type":"string"},"roles":{"description":"Roles to assign to the invited user","items":{"enum":["Owner","Manager","Editor","Member","Assistant User"],"type":"string"},"minItems":1,"type":"array"},"teamIds":{"description":"Team IDs to assign the user to after creation","items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":"array"},"trackIds":{"description":"Track IDs to assign the user to after creation (0-10 tracks)","items":{"type":"string"},"maxItems":10,"minItems":0,"type":"array"}},"required":["email","roles"],"type":"object"},"PendingInvitesLoadResponseDTO":{"properties":{"data":{"items":{"properties":{"createdAt":{"description":"Date when the invite was created","format":"date-time","type":"string"},"email":{"description":"Email address of the invited user","type":"string"},"id":{"description":"Unique identifier of the invite","type":"string"},"roles":{"description":"Roles assigned to the invited user","items":{"enum":["Owner","Manager","Editor","Member","Assistant User"],"type":"string"},"nullable":true,"type":"array"},"status":{"description":"Current status of the invite","enum":["pending","expired"],"type":"string"},"teams":{"description":"List of teams associated with the invite","items":{"properties":{"createdAt":{"format":"date-time","type":"string"},"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name","createdAt"],"type":"object"},"type":"array"}},"required":["id","email","status","createdAt"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"ProfileResponseDTO":{"properties":{"email":{"format":"email","nullable":true,"pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","type":"string"},"firstName":{"nullable":true,"type":"string"},"id":{"type":"string"},"isAdmin":{"default":false,"description":"Whether the user is a JAM Admin","type":"boolean"},"isOnboarded":{"type":"boolean"},"language":{"enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"},"lastName":{"nullable":true,"type":"string"},"pictureUrl":{"format":"uri","nullable":true,"type":"string"},"preferredRoleplayLanguage":{"enum":["en","de","fr","es","it","nl","pl","zh","ja","id","tr","pt","el","ko","vi","hi","ms","th","hr","ro","bg","sv","no","yue",null],"nullable":true,"type":"string"}},"required":["id","isOnboarded"],"type":"object"},"ProfilesChangeEmailRequestDTO":{"properties":{"newEmail":{"description":"New email address for the user","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","type":"string"}},"required":["newEmail"],"type":"object"},"ProfilesChangeLanguageRequestDTO":{"properties":{"language":{"description":"New language preference for the user","enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"}},"required":["language"],"type":"object"},"ProfilesChangeNameRequestDTO":{"properties":{"firstName":{"description":"First name of the user","type":"string"},"lastName":{"description":"Last name of the user","type":"string"}},"required":["firstName","lastName"],"type":"object"},"ProfilesChangePasswordRequestDTO":{"properties":{"password":{"description":"New password for the user","type":"string"}},"required":["password"],"type":"object"},"ProfilesChangeRoleplayLanguageRequestDTO":{"properties":{"language":{"description":"New roleplay language preference for the user","enum":["en","de","fr","es","it","nl","pl","zh","ja","id","tr","pt","el","ko","vi","hi","ms","th","hr","ro","bg","sv","no","yue"],"type":"string"}},"required":["language"],"type":"object"},"ProfilesOrganizationGetResponseDTO":{"properties":{"autoProvisionFromTranscripts":{"default":false,"description":"Whether unknown emails in real-call transcripts matching the configured domains are automatically provisioned as Jam users (default false)","type":"boolean"},"createdAt":{"description":"Timestamp when the organization was created","format":"date-time","type":"string"},"currentUserCount":{"description":"Current number of users in the organization","maximum":9007199254740991,"minimum":0,"type":"integer"},"defaultWriteSagaId":{"description":"The organization's single readWrite saga, or null when the organization has none or holds several (ambiguous).","nullable":true,"type":"string"},"description":{"description":"A brief description of the organization","type":"string"},"domain":{"description":"Primary email domain for the organization","type":"string"},"domainAutojoin":{"description":"Whether users with matching email domains can automatically join the organization","type":"boolean"},"extraDomains":{"description":"Additional email domains allowed for the organization","items":{"type":"string"},"type":"array"},"id":{"description":"The unique identifier of the organization","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"isAssistantEnabled":{"default":false,"description":"Whether the Assistant capability is enabled for the organization (default false)","type":"boolean"},"isAudioPrivacy":{"description":"Whether the organization has audio privacy enabled (audio only visible to session owner)","type":"boolean"},"isEnhancedPrivacy":{"description":"Whether the organization has enhanced privacy features enabled","type":"boolean"},"isRealCallEnabled":{"default":true,"description":"Whether the Real Call capability is enabled for the organization (default true)","type":"boolean"},"isTrainingEnabled":{"default":true,"description":"Whether the Training capability is enabled for the organization (default true)","type":"boolean"},"isTrial":{"description":"Whether the organization is in trial mode","type":"boolean"},"legalNoticeUrl":{"description":"Read-only Impressum (legal notice) URL. Set by admins only; not editable via the standard org configuration endpoint.","format":"uri","type":"string"},"logoFull":{"description":"URL to the organization full logo","format":"uri","type":"string"},"logoIcon":{"description":"URL to the organization icon","format":"uri","type":"string"},"manageableTeams":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"enum":["*"],"type":"string"}],"description":"List of team IDs the current user can manage, or \"*\" if the user can manage all teams in the organization."},"name":{"description":"The name of the organization","type":"string"},"readOnlySagaIds":{"description":"List of saga IDs associated with the organization","items":{"type":"string"},"type":"array"},"readWriteSagaIds":{"description":"List of saga IDs that the organization can write to","items":{"type":"string"},"type":"array"},"requireUserConsent":{"description":"Whether members must accept the latest consent document before using the app","type":"boolean"},"userLimit":{"description":"Maximum number of users allowed in the organization (0 or null means unlimited)","maximum":9007199254740991,"minimum":0,"type":"integer"},"voiceTransport":{"default":"webrtc","description":"Transport used for ElevenLabs voice conversations (default webrtc)","enum":["webrtc","websocket"],"type":"string"},"websiteUrl":{"description":"Organization website URL","format":"uri","type":"string"}},"required":["id","name","description","websiteUrl","legalNoticeUrl","logoIcon","logoFull","isTrial","userLimit","isEnhancedPrivacy","isAudioPrivacy","domain","extraDomains","domainAutojoin","autoProvisionFromTranscripts","requireUserConsent","isTrainingEnabled","isRealCallEnabled","isAssistantEnabled","voiceTransport","createdAt","readOnlySagaIds","readWriteSagaIds","manageableTeams","defaultWriteSagaId"],"type":"object"},"RealCallSessionCreateRequestDTO":{"properties":{"email":{"description":"The learner email associated with the transcript. Designates the scored rep (see userId). When no user with this email exists in the organization, a Member user is automatically provisioned and the session is attributed to them.","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","type":"string"},"meetingName":{"description":"The name of the meeting.","minLength":1,"type":"string"},"missionId":{"description":"The mission ID to be used for the scorecard.","pattern":"^[0-9a-f]{24}$","type":"string"},"scorecardId":{"description":"The scorecard ID to use for analysis. When omitted, the system will automatically classify the transcript and select the most appropriate scorecard.","pattern":"^[0-9a-f]{24}$","type":"string"},"transcript":{"description":"The transcript text to upload. Supports plain text, SRT, and speaker-labeled SRT where the first content line of a cue carries a \"label: message\" prefix: email labels attribute the turn to that Jam user and record them as a session participant; non-email labels (e.g. \"Client:\") are stripped without attribution. The transcript is rejected with 422 when it is speaker-labeled but the attributed rep (userId/email) never speaks in it.","maxLength":100000,"minLength":10,"type":"string"},"userId":{"description":"The learner user ID associated with the transcript. Designates the scored rep: scoring, KPIs and dashboards attribute exclusively to this user; other labeled speakers become participants only.","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["transcript","meetingName"],"type":"object"},"RealCallSessionCreateResponseDTO":{"properties":{"analysis":{"properties":{"createdAt":{"format":"date-time","type":"string"},"id":{"type":"string"},"items":{"items":{"properties":{"behaviours":{"default":[],"description":"Array of behaviours assessed for this item","items":{"properties":{"evidence":{"description":"Evidence supporting the behaviour assessment","items":{"type":"string"},"type":"array"},"score":{"description":"The numerical score for this behaviour","type":"number"},"verdict":{"description":"The verdict of the behaviour evaluation","type":"string"}},"required":["evidence","verdict","score"],"type":"object"},"type":"array"},"conversationItemReferenceId":{"description":"Reference ID to the conversation item","nullable":true,"type":"string"},"createdAt":{"description":"The date and time when the item was created","format":"date-time","type":"string"},"explanation":{"description":"Explanation of the analysis result","nullable":true,"type":"string"},"id":{"description":"The unique identifier for the analysis item","type":"string"},"lastUpdatedAt":{"description":"The date and time when the item was last updated","format":"date-time","type":"string"},"name":{"description":"The name of the analysis item","nullable":true,"type":"string"},"score":{"description":"The numerical score for this analysis item","type":"number"},"solved":{"description":"The solving status of the item","enum":["undetected","notSolved","partlySolved","solved",null],"nullable":true,"type":"string"},"state":{"description":"The current state of the analysis item","enum":["PROCESSING","DONE","ERROR"],"type":"string"},"suggestion":{"description":"Suggestions for improvement","nullable":true,"type":"string"}},"required":["id","createdAt","lastUpdatedAt","state","score"],"type":"object"},"type":"array"},"lastUpdatedAt":{"format":"date-time","type":"string"},"score":{"type":"number"},"state":{"enum":["PENDING","PROCESSING","DONE","SKIPPED"],"type":"string"}},"required":["id","createdAt","lastUpdatedAt","state","items","score"],"type":"object"},"call":{"properties":{"assistantReferenceId":{"description":"The reference ID for the assistant","type":"string"},"createdAt":{"description":"The date and time when the call was created","format":"date-time","type":"string"},"endedReason":{"description":"The reason why the call ended","nullable":true,"type":"string"},"id":{"description":"The unique identifier for the call","type":"string"},"lastUpdatedAt":{"description":"The date and time when the call was last updated","format":"date-time","type":"string"},"providerCallId":{"description":"The provider call identifier","nullable":true,"type":"string"},"state":{"description":"The current state of the call","enum":["PENDING","DONE","DATA-NOT-AVAILABLE","CAN-NOT-PROCESS-TRANSCRIPT"],"type":"string"},"summary":{"description":"A summary of the call","nullable":true,"type":"string"},"transcript":{"description":"The transcribed conversation text","nullable":true,"type":"string"}},"required":["id","createdAt","lastUpdatedAt","assistantReferenceId","state"],"type":"object"},"completed":{"type":"boolean"},"createdAt":{"format":"date-time","type":"string"},"id":{"type":"string"},"kpis":{"properties":{"createdAt":{"format":"date-time","type":"string"},"id":{"type":"string"},"lastUpdatedAt":{"format":"date-time","type":"string"},"listenRatio":{"nullable":true,"type":"number"},"longestMonologue":{"nullable":true,"type":"number"},"state":{"enum":["PENDING","PROCESSING","DONE","SKIPPED"],"type":"string"},"talkSpeed":{"nullable":true,"type":"number"}},"required":["id","createdAt","lastUpdatedAt","state"],"type":"object"},"language":{"enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"},"lastUpdatedAt":{"format":"date-time","type":"string"},"missionReferenceId":{"description":"Reference ID for the associated mission","nullable":true,"type":"string"},"missionTitle":{"nullable":true,"type":"string"},"participantUserIds":{"description":"User IDs of all attributed speakers in the call, including the scored rep. Not yet resolved at creation time — read it from the session GET once transcript processing has finished.","items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":"array"},"playedLanguage":{"enum":["en","de","fr","es","it","nl","pl","zh","ja","id","tr","pt","el","ko","vi","hi","ms","th","hr","ro","bg","sv","no","yue",null],"nullable":true,"type":"string"},"scorecardReferenceId":{"description":"Reference ID for the associated scorecard","nullable":true,"type":"string"},"scorecardTitle":{"description":"Title of the associated scorecard","nullable":true,"type":"string"},"state":{"enum":["PENDING","PROCESSING","DONE"],"type":"string"},"trackId":{"description":"Parent track id for mission-backed roleplay sessions","nullable":true,"type":"string"},"trackTitle":{"nullable":true,"type":"string"},"type":{"enum":["REAL_CALL"],"type":"string"},"userId":{"type":"string"}},"required":["id","createdAt","lastUpdatedAt","userId","call","analysis","kpis","language","state","completed","type"],"type":"object"},"RealCallSessionFindOneResponseDTO":{"properties":{"analysis":{"properties":{"createdAt":{"format":"date-time","type":"string"},"id":{"type":"string"},"items":{"items":{"properties":{"behaviours":{"default":[],"description":"Array of behaviours assessed for this item","items":{"properties":{"evidence":{"description":"Evidence supporting the behaviour assessment","items":{"type":"string"},"type":"array"},"score":{"description":"The numerical score for this behaviour","type":"number"},"verdict":{"description":"The verdict of the behaviour evaluation","type":"string"}},"required":["evidence","verdict","score"],"type":"object"},"type":"array"},"conversationItemReferenceId":{"description":"Reference ID to the conversation item","nullable":true,"type":"string"},"createdAt":{"description":"The date and time when the item was created","format":"date-time","type":"string"},"explanation":{"description":"Explanation of the analysis result","nullable":true,"type":"string"},"id":{"description":"The unique identifier for the analysis item","type":"string"},"lastUpdatedAt":{"description":"The date and time when the item was last updated","format":"date-time","type":"string"},"name":{"description":"The name of the analysis item","nullable":true,"type":"string"},"score":{"description":"The numerical score for this analysis item","type":"number"},"solved":{"description":"The solving status of the item","enum":["undetected","notSolved","partlySolved","solved",null],"nullable":true,"type":"string"},"state":{"description":"The current state of the analysis item","enum":["PROCESSING","DONE","ERROR"],"type":"string"},"suggestion":{"description":"Suggestions for improvement","nullable":true,"type":"string"}},"required":["id","createdAt","lastUpdatedAt","state","score"],"type":"object"},"type":"array"},"lastUpdatedAt":{"format":"date-time","type":"string"},"score":{"type":"number"},"state":{"enum":["PENDING","PROCESSING","DONE","SKIPPED"],"type":"string"}},"required":["id","createdAt","lastUpdatedAt","state","items","score"],"type":"object"},"call":{"properties":{"assistantReferenceId":{"description":"The reference ID for the assistant","type":"string"},"createdAt":{"description":"The date and time when the call was created","format":"date-time","type":"string"},"endedReason":{"description":"The reason why the call ended","nullable":true,"type":"string"},"id":{"description":"The unique identifier for the call","type":"string"},"lastUpdatedAt":{"description":"The date and time when the call was last updated","format":"date-time","type":"string"},"providerCallId":{"description":"The provider call identifier","nullable":true,"type":"string"},"state":{"description":"The current state of the call","enum":["PENDING","DONE","DATA-NOT-AVAILABLE","CAN-NOT-PROCESS-TRANSCRIPT"],"type":"string"},"summary":{"description":"A summary of the call","nullable":true,"type":"string"},"transcript":{"description":"The transcribed conversation text","nullable":true,"type":"string"}},"required":["id","createdAt","lastUpdatedAt","assistantReferenceId","state"],"type":"object"},"completed":{"type":"boolean"},"createdAt":{"format":"date-time","type":"string"},"id":{"type":"string"},"kpis":{"properties":{"createdAt":{"format":"date-time","type":"string"},"id":{"type":"string"},"lastUpdatedAt":{"format":"date-time","type":"string"},"listenRatio":{"nullable":true,"type":"number"},"longestMonologue":{"nullable":true,"type":"number"},"state":{"enum":["PENDING","PROCESSING","DONE","SKIPPED"],"type":"string"},"talkSpeed":{"nullable":true,"type":"number"}},"required":["id","createdAt","lastUpdatedAt","state"],"type":"object"},"language":{"enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"},"lastUpdatedAt":{"format":"date-time","type":"string"},"missionReferenceId":{"description":"Reference ID for the associated mission","nullable":true,"type":"string"},"missionTitle":{"nullable":true,"type":"string"},"participantUserIds":{"description":"User IDs of all attributed speakers in the call, including the scored rep. Empty array when the transcript carries no speaker attribution.","items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":"array"},"playedLanguage":{"enum":["en","de","fr","es","it","nl","pl","zh","ja","id","tr","pt","el","ko","vi","hi","ms","th","hr","ro","bg","sv","no","yue",null],"nullable":true,"type":"string"},"scorecardReferenceId":{"description":"Reference ID for the associated scorecard","nullable":true,"type":"string"},"scorecardTitle":{"description":"Title of the associated scorecard","nullable":true,"type":"string"},"state":{"enum":["PENDING","PROCESSING","DONE"],"type":"string"},"trackId":{"description":"Parent track id for mission-backed roleplay sessions","nullable":true,"type":"string"},"trackTitle":{"nullable":true,"type":"string"},"type":{"enum":["REAL_CALL"],"type":"string"},"userId":{"type":"string"}},"required":["id","createdAt","lastUpdatedAt","userId","call","analysis","kpis","language","state","completed","type"],"type":"object"},"RealCallSessionPatchRequestDTO":{"properties":{"scorecardId":{"description":"The scorecard ID to assign to the session.","pattern":"^[0-9a-f]{24}$","type":"string"}},"required":["scorecardId"],"type":"object"},"RealCallSessionPatchResponseDTO":{"properties":{"analysis":{"properties":{"createdAt":{"format":"date-time","type":"string"},"id":{"type":"string"},"items":{"items":{"properties":{"behaviours":{"default":[],"description":"Array of behaviours assessed for this item","items":{"properties":{"evidence":{"description":"Evidence supporting the behaviour assessment","items":{"type":"string"},"type":"array"},"score":{"description":"The numerical score for this behaviour","type":"number"},"verdict":{"description":"The verdict of the behaviour evaluation","type":"string"}},"required":["evidence","verdict","score"],"type":"object"},"type":"array"},"conversationItemReferenceId":{"description":"Reference ID to the conversation item","nullable":true,"type":"string"},"createdAt":{"description":"The date and time when the item was created","format":"date-time","type":"string"},"explanation":{"description":"Explanation of the analysis result","nullable":true,"type":"string"},"id":{"description":"The unique identifier for the analysis item","type":"string"},"lastUpdatedAt":{"description":"The date and time when the item was last updated","format":"date-time","type":"string"},"name":{"description":"The name of the analysis item","nullable":true,"type":"string"},"score":{"description":"The numerical score for this analysis item","type":"number"},"solved":{"description":"The solving status of the item","enum":["undetected","notSolved","partlySolved","solved",null],"nullable":true,"type":"string"},"state":{"description":"The current state of the analysis item","enum":["PROCESSING","DONE","ERROR"],"type":"string"},"suggestion":{"description":"Suggestions for improvement","nullable":true,"type":"string"}},"required":["id","createdAt","lastUpdatedAt","state","score"],"type":"object"},"type":"array"},"lastUpdatedAt":{"format":"date-time","type":"string"},"score":{"type":"number"},"state":{"enum":["PENDING","PROCESSING","DONE","SKIPPED"],"type":"string"}},"required":["id","createdAt","lastUpdatedAt","state","items","score"],"type":"object"},"call":{"properties":{"assistantReferenceId":{"description":"The reference ID for the assistant","type":"string"},"createdAt":{"description":"The date and time when the call was created","format":"date-time","type":"string"},"endedReason":{"description":"The reason why the call ended","nullable":true,"type":"string"},"id":{"description":"The unique identifier for the call","type":"string"},"lastUpdatedAt":{"description":"The date and time when the call was last updated","format":"date-time","type":"string"},"providerCallId":{"description":"The provider call identifier","nullable":true,"type":"string"},"state":{"description":"The current state of the call","enum":["PENDING","DONE","DATA-NOT-AVAILABLE","CAN-NOT-PROCESS-TRANSCRIPT"],"type":"string"},"summary":{"description":"A summary of the call","nullable":true,"type":"string"},"transcript":{"description":"The transcribed conversation text","nullable":true,"type":"string"}},"required":["id","createdAt","lastUpdatedAt","assistantReferenceId","state"],"type":"object"},"completed":{"type":"boolean"},"createdAt":{"format":"date-time","type":"string"},"id":{"type":"string"},"kpis":{"properties":{"createdAt":{"format":"date-time","type":"string"},"id":{"type":"string"},"lastUpdatedAt":{"format":"date-time","type":"string"},"listenRatio":{"nullable":true,"type":"number"},"longestMonologue":{"nullable":true,"type":"number"},"state":{"enum":["PENDING","PROCESSING","DONE","SKIPPED"],"type":"string"},"talkSpeed":{"nullable":true,"type":"number"}},"required":["id","createdAt","lastUpdatedAt","state"],"type":"object"},"language":{"enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"},"lastUpdatedAt":{"format":"date-time","type":"string"},"missionReferenceId":{"description":"Reference ID for the associated mission","nullable":true,"type":"string"},"missionTitle":{"nullable":true,"type":"string"},"participantUserIds":{"description":"User IDs of all attributed speakers in the call, including the scored rep. Empty array when the transcript carries no speaker attribution.","items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":"array"},"playedLanguage":{"enum":["en","de","fr","es","it","nl","pl","zh","ja","id","tr","pt","el","ko","vi","hi","ms","th","hr","ro","bg","sv","no","yue",null],"nullable":true,"type":"string"},"scorecardReferenceId":{"description":"Reference ID for the associated scorecard","nullable":true,"type":"string"},"scorecardTitle":{"description":"Title of the associated scorecard","nullable":true,"type":"string"},"state":{"enum":["PENDING","PROCESSING","DONE"],"type":"string"},"trackId":{"description":"Parent track id for mission-backed roleplay sessions","nullable":true,"type":"string"},"trackTitle":{"nullable":true,"type":"string"},"type":{"enum":["REAL_CALL"],"type":"string"},"userId":{"type":"string"}},"required":["id","createdAt","lastUpdatedAt","userId","call","analysis","kpis","language","state","completed","type","participantUserIds"],"type":"object"},"RolePlaySessionCreateRequestDTO":{"properties":{"missionId":{"description":"MissionId defined by CMS.","pattern":"^[0-9a-f]{24}$","type":"string"},"overrideLanguage":{"description":"Optional language override for the conversation. If not provided, defaults to the mission language.","enum":["en","de","fr","es","it","nl","pl","zh","ja","id","tr","pt","el","ko","vi","hi","ms","th","hr","ro","bg","sv","no","yue"],"type":"string"}},"required":["missionId"],"type":"object"},"RolePlaySessionCreateResponseDTO":{"properties":{"analysis":{"properties":{"createdAt":{"format":"date-time","type":"string"},"id":{"type":"string"},"items":{"items":{"properties":{"behaviours":{"default":[],"description":"Array of behaviours assessed for this item","items":{"properties":{"evidence":{"description":"Evidence supporting the behaviour assessment","items":{"type":"string"},"type":"array"},"score":{"description":"The numerical score for this behaviour","type":"number"},"verdict":{"description":"The verdict of the behaviour evaluation","type":"string"}},"required":["evidence","verdict","score"],"type":"object"},"type":"array"},"conversationItemReferenceId":{"description":"Reference ID to the conversation item","nullable":true,"type":"string"},"createdAt":{"description":"The date and time when the item was created","format":"date-time","type":"string"},"explanation":{"description":"Explanation of the analysis result","nullable":true,"type":"string"},"id":{"description":"The unique identifier for the analysis item","type":"string"},"lastUpdatedAt":{"description":"The date and time when the item was last updated","format":"date-time","type":"string"},"name":{"description":"The name of the analysis item","nullable":true,"type":"string"},"score":{"description":"The numerical score for this analysis item","type":"number"},"solved":{"description":"The solving status of the item","enum":["undetected","notSolved","partlySolved","solved",null],"nullable":true,"type":"string"},"state":{"description":"The current state of the analysis item","enum":["PROCESSING","DONE","ERROR"],"type":"string"},"suggestion":{"description":"Suggestions for improvement","nullable":true,"type":"string"}},"required":["id","createdAt","lastUpdatedAt","state","score"],"type":"object"},"type":"array"},"lastUpdatedAt":{"format":"date-time","type":"string"},"score":{"type":"number"},"state":{"enum":["PENDING","PROCESSING","DONE","SKIPPED"],"type":"string"}},"required":["id","createdAt","lastUpdatedAt","state","items","score"],"type":"object"},"call":{"properties":{"assistantReferenceId":{"description":"The reference ID for the assistant","type":"string"},"createdAt":{"description":"The date and time when the call was created","format":"date-time","type":"string"},"endedReason":{"description":"The reason why the call ended","nullable":true,"type":"string"},"id":{"description":"The unique identifier for the call","type":"string"},"lastUpdatedAt":{"description":"The date and time when the call was last updated","format":"date-time","type":"string"},"providerCallId":{"description":"The provider call identifier","nullable":true,"type":"string"},"state":{"description":"The current state of the call","enum":["PENDING","DONE","DATA-NOT-AVAILABLE","CAN-NOT-PROCESS-TRANSCRIPT"],"type":"string"},"summary":{"description":"A summary of the call","nullable":true,"type":"string"},"transcript":{"description":"The transcribed conversation text","nullable":true,"type":"string"}},"required":["id","createdAt","lastUpdatedAt","assistantReferenceId","state"],"type":"object"},"completed":{"type":"boolean"},"createdAt":{"format":"date-time","type":"string"},"id":{"type":"string"},"kpis":{"properties":{"createdAt":{"format":"date-time","type":"string"},"id":{"type":"string"},"lastUpdatedAt":{"format":"date-time","type":"string"},"listenRatio":{"nullable":true,"type":"number"},"longestMonologue":{"nullable":true,"type":"number"},"state":{"enum":["PENDING","PROCESSING","DONE","SKIPPED"],"type":"string"},"talkSpeed":{"nullable":true,"type":"number"}},"required":["id","createdAt","lastUpdatedAt","state"],"type":"object"},"language":{"enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"},"lastUpdatedAt":{"format":"date-time","type":"string"},"missionReferenceId":{"description":"Reference ID for the associated mission","nullable":true,"type":"string"},"missionTitle":{"nullable":true,"type":"string"},"playedLanguage":{"enum":["en","de","fr","es","it","nl","pl","zh","ja","id","tr","pt","el","ko","vi","hi","ms","th","hr","ro","bg","sv","no","yue",null],"nullable":true,"type":"string"},"scorecardReferenceId":{"description":"Reference ID for the associated scorecard","nullable":true,"type":"string"},"scorecardTitle":{"description":"Title of the associated scorecard","nullable":true,"type":"string"},"state":{"enum":["PENDING","PROCESSING","DONE"],"type":"string"},"trackId":{"description":"Parent track id for mission-backed roleplay sessions","nullable":true,"type":"string"},"trackTitle":{"nullable":true,"type":"string"},"type":{"enum":["ROLE_PLAY"],"type":"string"},"userId":{"type":"string"}},"required":["id","createdAt","lastUpdatedAt","userId","call","analysis","kpis","language","state","completed","type"],"type":"object"},"RolePlaySessionFindOneResponseDTO":{"properties":{"analysis":{"properties":{"createdAt":{"format":"date-time","type":"string"},"id":{"type":"string"},"items":{"items":{"properties":{"behaviours":{"default":[],"description":"Array of behaviours assessed for this item","items":{"properties":{"evidence":{"description":"Evidence supporting the behaviour assessment","items":{"type":"string"},"type":"array"},"score":{"description":"The numerical score for this behaviour","type":"number"},"verdict":{"description":"The verdict of the behaviour evaluation","type":"string"}},"required":["evidence","verdict","score"],"type":"object"},"type":"array"},"conversationItemReferenceId":{"description":"Reference ID to the conversation item","nullable":true,"type":"string"},"createdAt":{"description":"The date and time when the item was created","format":"date-time","type":"string"},"explanation":{"description":"Explanation of the analysis result","nullable":true,"type":"string"},"id":{"description":"The unique identifier for the analysis item","type":"string"},"lastUpdatedAt":{"description":"The date and time when the item was last updated","format":"date-time","type":"string"},"name":{"description":"The name of the analysis item","nullable":true,"type":"string"},"score":{"description":"The numerical score for this analysis item","type":"number"},"solved":{"description":"The solving status of the item","enum":["undetected","notSolved","partlySolved","solved",null],"nullable":true,"type":"string"},"state":{"description":"The current state of the analysis item","enum":["PROCESSING","DONE","ERROR"],"type":"string"},"suggestion":{"description":"Suggestions for improvement","nullable":true,"type":"string"}},"required":["id","createdAt","lastUpdatedAt","state","score"],"type":"object"},"type":"array"},"lastUpdatedAt":{"format":"date-time","type":"string"},"score":{"type":"number"},"state":{"enum":["PENDING","PROCESSING","DONE","SKIPPED"],"type":"string"}},"required":["id","createdAt","lastUpdatedAt","state","items","score"],"type":"object"},"call":{"properties":{"assistantReferenceId":{"description":"The reference ID for the assistant","type":"string"},"createdAt":{"description":"The date and time when the call was created","format":"date-time","type":"string"},"endedReason":{"description":"The reason why the call ended","nullable":true,"type":"string"},"id":{"description":"The unique identifier for the call","type":"string"},"lastUpdatedAt":{"description":"The date and time when the call was last updated","format":"date-time","type":"string"},"providerCallId":{"description":"The provider call identifier","nullable":true,"type":"string"},"state":{"description":"The current state of the call","enum":["PENDING","DONE","DATA-NOT-AVAILABLE","CAN-NOT-PROCESS-TRANSCRIPT"],"type":"string"},"summary":{"description":"A summary of the call","nullable":true,"type":"string"},"transcript":{"description":"The transcribed conversation text","nullable":true,"type":"string"}},"required":["id","createdAt","lastUpdatedAt","assistantReferenceId","state"],"type":"object"},"completed":{"type":"boolean"},"createdAt":{"format":"date-time","type":"string"},"id":{"type":"string"},"kpis":{"properties":{"createdAt":{"format":"date-time","type":"string"},"id":{"type":"string"},"lastUpdatedAt":{"format":"date-time","type":"string"},"listenRatio":{"nullable":true,"type":"number"},"longestMonologue":{"nullable":true,"type":"number"},"state":{"enum":["PENDING","PROCESSING","DONE","SKIPPED"],"type":"string"},"talkSpeed":{"nullable":true,"type":"number"}},"required":["id","createdAt","lastUpdatedAt","state"],"type":"object"},"language":{"enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"},"lastUpdatedAt":{"format":"date-time","type":"string"},"missionReferenceId":{"description":"Reference ID for the associated mission","nullable":true,"type":"string"},"missionTitle":{"nullable":true,"type":"string"},"playedLanguage":{"description":"The language in which the session was played","enum":["en","de","fr","es","it","nl","pl","zh","ja","id","tr","pt","el","ko","vi","hi","ms","th","hr","ro","bg","sv","no","yue",null],"nullable":true,"type":"string"},"scorecardReferenceId":{"description":"Reference ID for the associated scorecard","nullable":true,"type":"string"},"state":{"enum":["PENDING","PROCESSING","DONE"],"type":"string"},"trackTitle":{"nullable":true,"type":"string"},"type":{"enum":["ROLE_PLAY"],"type":"string"},"userId":{"type":"string"}},"required":["id","createdAt","lastUpdatedAt","userId","call","analysis","kpis","language","state","completed","type"],"type":"object"},"RolePlaySessionFindResponseDTO":{"properties":{"data":{"items":{"properties":{"analysis":{"properties":{"createdAt":{"format":"date-time","type":"string"},"id":{"type":"string"},"items":{"items":{"properties":{"behaviours":{"default":[],"description":"Array of behaviours assessed for this item","items":{"properties":{"evidence":{"description":"Evidence supporting the behaviour assessment","items":{"type":"string"},"type":"array"},"score":{"description":"The numerical score for this behaviour","type":"number"},"verdict":{"description":"The verdict of the behaviour evaluation","type":"string"}},"required":["evidence","verdict","score"],"type":"object"},"type":"array"},"conversationItemReferenceId":{"description":"Reference ID to the conversation item","nullable":true,"type":"string"},"createdAt":{"description":"The date and time when the item was created","format":"date-time","type":"string"},"explanation":{"description":"Explanation of the analysis result","nullable":true,"type":"string"},"id":{"description":"The unique identifier for the analysis item","type":"string"},"lastUpdatedAt":{"description":"The date and time when the item was last updated","format":"date-time","type":"string"},"name":{"description":"The name of the analysis item","nullable":true,"type":"string"},"score":{"description":"The numerical score for this analysis item","type":"number"},"solved":{"description":"The solving status of the item","enum":["undetected","notSolved","partlySolved","solved",null],"nullable":true,"type":"string"},"state":{"description":"The current state of the analysis item","enum":["PROCESSING","DONE","ERROR"],"type":"string"},"suggestion":{"description":"Suggestions for improvement","nullable":true,"type":"string"}},"required":["id","createdAt","lastUpdatedAt","state","score"],"type":"object"},"type":"array"},"lastUpdatedAt":{"format":"date-time","type":"string"},"score":{"type":"number"},"state":{"enum":["PENDING","PROCESSING","DONE","SKIPPED"],"type":"string"}},"required":["id","createdAt","lastUpdatedAt","state","items","score"],"type":"object"},"call":{"properties":{"assistantReferenceId":{"description":"The reference ID for the assistant","type":"string"},"createdAt":{"description":"The date and time when the call was created","format":"date-time","type":"string"},"endedReason":{"description":"The reason why the call ended","nullable":true,"type":"string"},"id":{"description":"The unique identifier for the call","type":"string"},"lastUpdatedAt":{"description":"The date and time when the call was last updated","format":"date-time","type":"string"},"providerCallId":{"description":"The provider call identifier","nullable":true,"type":"string"},"state":{"description":"The current state of the call","enum":["PENDING","DONE","DATA-NOT-AVAILABLE","CAN-NOT-PROCESS-TRANSCRIPT"],"type":"string"},"summary":{"description":"A summary of the call","nullable":true,"type":"string"},"transcript":{"description":"The transcribed conversation text","nullable":true,"type":"string"}},"required":["id","createdAt","lastUpdatedAt","assistantReferenceId","state"],"type":"object"},"completed":{"type":"boolean"},"createdAt":{"format":"date-time","type":"string"},"id":{"type":"string"},"kpis":{"properties":{"createdAt":{"format":"date-time","type":"string"},"id":{"type":"string"},"lastUpdatedAt":{"format":"date-time","type":"string"},"listenRatio":{"nullable":true,"type":"number"},"longestMonologue":{"nullable":true,"type":"number"},"state":{"enum":["PENDING","PROCESSING","DONE","SKIPPED"],"type":"string"},"talkSpeed":{"nullable":true,"type":"number"}},"required":["id","createdAt","lastUpdatedAt","state"],"type":"object"},"language":{"enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"},"lastUpdatedAt":{"format":"date-time","type":"string"},"missionReferenceId":{"description":"Reference ID for the associated mission","nullable":true,"type":"string"},"missionTitle":{"nullable":true,"type":"string"},"playedLanguage":{"enum":["en","de","fr","es","it","nl","pl","zh","ja","id","tr","pt","el","ko","vi","hi","ms","th","hr","ro","bg","sv","no","yue",null],"nullable":true,"type":"string"},"scorecardReferenceId":{"description":"Reference ID for the associated scorecard","nullable":true,"type":"string"},"scorecardTitle":{"description":"Title of the associated scorecard","nullable":true,"type":"string"},"state":{"enum":["PENDING","PROCESSING","DONE"],"type":"string"},"trackId":{"description":"Parent track id for mission-backed roleplay sessions","nullable":true,"type":"string"},"trackTitle":{"nullable":true,"type":"string"},"type":{"enum":["ROLE_PLAY"],"type":"string"},"userId":{"type":"string"}},"required":["id","createdAt","lastUpdatedAt","userId","call","analysis","kpis","language","state","completed","type"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"SagaResponseDTO":{"properties":{"data":{"items":{"properties":{"createdAt":{"description":"Creation timestamp","type":"string"},"description":{"description":"Description of the saga","type":"string"},"id":{"description":"Unique identifier for the saga","type":"string"},"name":{"description":"Name of the saga","type":"string"},"type":{"default":"under_construction","description":"Type of the saga","enum":["under_construction","generic","client_specific"],"type":"string"},"updatedAt":{"description":"Last update timestamp","type":"string"}},"required":["id","name","description","updatedAt","createdAt"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"SavedViewsCreateRequestDTO":{"properties":{"filters":{"additionalProperties":{},"description":"Opaque dashboard filter configuration owned by the frontend","type":"object"},"name":{"description":"User-provided view name","minLength":1,"type":"string"}},"required":["name","filters"],"type":"object"},"SavedViewsCreateResponseDTO":{"properties":{"createdAt":{"description":"Creation timestamp","format":"date-time","type":"string"},"filters":{"additionalProperties":{},"description":"Opaque dashboard filter configuration owned by the frontend","type":"object"},"id":{"description":"Saved view id","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"name":{"description":"User-provided view name","type":"string"},"updatedAt":{"description":"Last update timestamp","format":"date-time","type":"string"},"userId":{"description":"Owning user id","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["id","userId","name","filters","createdAt","updatedAt"],"type":"object"},"SavedViewsDeleteResponseDTO":{"properties":{"createdAt":{"description":"Creation timestamp","format":"date-time","type":"string"},"filters":{"additionalProperties":{},"description":"Opaque dashboard filter configuration owned by the frontend","type":"object"},"id":{"description":"Saved view id","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"name":{"description":"User-provided view name","type":"string"},"updatedAt":{"description":"Last update timestamp","format":"date-time","type":"string"},"userId":{"description":"Owning user id","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["id","userId","name","filters","createdAt","updatedAt"],"type":"object"},"SavedViewsListResponseDTO":{"properties":{"data":{"items":{"properties":{"createdAt":{"description":"Creation timestamp","format":"date-time","type":"string"},"filters":{"additionalProperties":{},"description":"Opaque dashboard filter configuration owned by the frontend","type":"object"},"id":{"description":"Saved view id","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"name":{"description":"User-provided view name","type":"string"},"updatedAt":{"description":"Last update timestamp","format":"date-time","type":"string"},"userId":{"description":"Owning user id","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["id","userId","name","filters","createdAt","updatedAt"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"SavedViewsUpdateRequestDTO":{"properties":{"filters":{"additionalProperties":{},"description":"Opaque dashboard filter configuration owned by the frontend","type":"object"},"name":{"description":"User-provided view name","minLength":1,"type":"string"}},"type":"object"},"SavedViewsUpdateResponseDTO":{"properties":{"createdAt":{"description":"Creation timestamp","format":"date-time","type":"string"},"filters":{"additionalProperties":{},"description":"Opaque dashboard filter configuration owned by the frontend","type":"object"},"id":{"description":"Saved view id","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"name":{"description":"User-provided view name","type":"string"},"updatedAt":{"description":"Last update timestamp","format":"date-time","type":"string"},"userId":{"description":"Owning user id","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["id","userId","name","filters","createdAt","updatedAt"],"type":"object"},"ScorecardClassifierClassifyRequestDTO":{"properties":{"transcript":{"description":"The call transcript to classify against available scorecards","type":"string"}},"required":["transcript"],"type":"object"},"ScorecardClassifierClassifyResponseDTO":{"properties":{"alternativeScorecards":{"description":"Up to 5 alternative scorecards with their confidence scores","items":{"properties":{"confidence":{"description":"Confidence score for this alternative","maximum":1,"minimum":0,"type":"number"},"scorecardId":{"description":"The ID of an alternative scorecard","type":"string"}},"required":["scorecardId","confidence"],"type":"object"},"type":"array"},"classificationReasoning":{"description":"Explanation of why this scorecard was selected","type":"string"},"confidence":{"description":"Confidence score between 0 and 1 for the selected scorecard","maximum":1,"minimum":0,"type":"number"},"selectedScorecardId":{"description":"The ID of the scorecard best matching the transcript","type":"string"}},"required":["selectedScorecardId","confidence","classificationReasoning","alternativeScorecards"],"type":"object"},"ScorecardListResponseDTO":{"properties":{"data":{"items":{"properties":{"id":{"type":"string"},"isActiveForRealCall":{"description":"Whether this scorecard is active for real-call analysis in this organization","type":"boolean"},"items":{"items":{"properties":{"description":{"type":"string"},"desired_behaviours":{"items":{"properties":{"behaviour":{"type":"string"},"examples":{"nullable":true,"type":"string"},"id":{"type":"string"}},"required":["id","behaviour"],"type":"object"},"nullable":true,"type":"array"},"desired_outcome":{"nullable":true,"type":"string"},"id":{"type":"string"},"item_title":{"type":"string"}},"required":["id","description","item_title"],"type":"object"},"type":"array"},"language":{"enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"},"tag":{"type":"string"},"title":{"type":"string"}},"required":["id","tag","title","language","items","isActiveForRealCall"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"ScorecardToggleRequestDTO":{"properties":{"isActiveForRealCall":{"description":"Whether this scorecard should be active for real-call analysis","type":"boolean"}},"required":["isActiveForRealCall"],"type":"object"},"ScorecardToggleResponseDTO":{"properties":{"id":{"description":"The CMS scorecard ID","type":"string"},"isActiveForRealCall":{"description":"The updated real-call active status for this scorecard","type":"boolean"}},"required":["id","isActiveForRealCall"],"type":"object"},"SelfEnrollmentEnrollRequestDTO":{"properties":{"reference":{"description":"Reference to the track to self-enroll in","properties":{"id":{"description":"The unique identifier for the track","pattern":"^[0-9a-f]{24}$","type":"string"},"type":{"description":"The type of content reference (only track supported)","enum":["track"],"type":"string"}},"required":["id","type"],"type":"object"}},"required":["reference"],"type":"object"},"SessionConversationConnectionRequestDTO":{"properties":{"assistantId":{"description":"The ElevenLabs agent ID for the conversation.","type":"string"}},"required":["assistantId"],"type":"object"},"SessionConversationConnectionResponseDTO":{"properties":{"connectionType":{"description":"Transport the credential authenticates, determined by the organization configuration.","enum":["webrtc","websocket"],"type":"string"},"credential":{"description":"Short-lived ElevenLabs connection credential: a conversation token when connectionType is webrtc, a signed URL when it is websocket.","type":"string"}},"required":["credential","connectionType"],"type":"object"},"SessionFeedbacksCreateRequestDTO":{"properties":{"content":{"description":"Additional free-form feedback content from the learner.","type":"string"},"learnerSessionFeedbackPresets":{"description":"Array of preset feedback types selected by the learner.","items":{"description":"Type of issue encountered by learner during the session.","enum":["bad_audio","interruptions","call_ended_early","other"],"type":"string"},"type":"array"},"sessionId":{"description":"The unique identifier for the session being reviewed.","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["sessionId","learnerSessionFeedbackPresets"],"type":"object"},"SessionFeedbacksCreateResponseDTO":{"properties":{"content":{"nullable":true,"type":"string"},"createdAt":{"format":"date-time","type":"string"},"deletedAt":{"format":"date-time","nullable":true,"type":"string"},"id":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"lastUpdatedAt":{"format":"date-time","type":"string"},"learnerSessionFeedbackPresets":{"items":{"enum":["bad_audio","interruptions","call_ended_early","other"],"type":"string"},"type":"array"},"sessionId":{"description":"References a session in the API domain.","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"userId":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["id","createdAt","lastUpdatedAt","userId","sessionId","learnerSessionFeedbackPresets"],"type":"object"},"SessionFeedbacksGetResponseDTO":{"properties":{"content":{"nullable":true,"type":"string"},"createdAt":{"format":"date-time","type":"string"},"deletedAt":{"format":"date-time","nullable":true,"type":"string"},"id":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"lastUpdatedAt":{"format":"date-time","type":"string"},"learnerSessionFeedbackPresets":{"items":{"enum":["bad_audio","interruptions","call_ended_early","other"],"type":"string"},"type":"array"},"sessionId":{"description":"References a session in the API domain.","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"userId":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["id","createdAt","lastUpdatedAt","userId","sessionId","learnerSessionFeedbackPresets"],"type":"object"},"SessionRecalculateFeedbackResponseDTO":{"properties":{"analysis":{"properties":{"createdAt":{"format":"date-time","type":"string"},"id":{"type":"string"},"items":{"items":{"properties":{"behaviours":{"default":[],"description":"Array of behaviours assessed for this item","items":{"properties":{"evidence":{"description":"Evidence supporting the behaviour assessment","items":{"type":"string"},"type":"array"},"score":{"description":"The numerical score for this behaviour","type":"number"},"verdict":{"description":"The verdict of the behaviour evaluation","type":"string"}},"required":["evidence","verdict","score"],"type":"object"},"type":"array"},"conversationItemReferenceId":{"description":"Reference ID to the conversation item","nullable":true,"type":"string"},"createdAt":{"description":"The date and time when the item was created","format":"date-time","type":"string"},"explanation":{"description":"Explanation of the analysis result","nullable":true,"type":"string"},"id":{"description":"The unique identifier for the analysis item","type":"string"},"lastUpdatedAt":{"description":"The date and time when the item was last updated","format":"date-time","type":"string"},"name":{"description":"The name of the analysis item","nullable":true,"type":"string"},"score":{"description":"The numerical score for this analysis item","type":"number"},"solved":{"description":"The solving status of the item","enum":["undetected","notSolved","partlySolved","solved",null],"nullable":true,"type":"string"},"state":{"description":"The current state of the analysis item","enum":["PROCESSING","DONE","ERROR"],"type":"string"},"suggestion":{"description":"Suggestions for improvement","nullable":true,"type":"string"}},"required":["id","createdAt","lastUpdatedAt","state","score"],"type":"object"},"type":"array"},"lastUpdatedAt":{"format":"date-time","type":"string"},"score":{"type":"number"},"state":{"enum":["PENDING","PROCESSING","DONE","SKIPPED"],"type":"string"}},"required":["id","createdAt","lastUpdatedAt","state","items","score"],"type":"object"},"call":{"properties":{"assistantReferenceId":{"description":"The reference ID for the assistant","type":"string"},"createdAt":{"description":"The date and time when the call was created","format":"date-time","type":"string"},"endedReason":{"description":"The reason why the call ended","nullable":true,"type":"string"},"id":{"description":"The unique identifier for the call","type":"string"},"lastUpdatedAt":{"description":"The date and time when the call was last updated","format":"date-time","type":"string"},"providerCallId":{"description":"The provider call identifier","nullable":true,"type":"string"},"state":{"description":"The current state of the call","enum":["PENDING","DONE","DATA-NOT-AVAILABLE","CAN-NOT-PROCESS-TRANSCRIPT"],"type":"string"},"summary":{"description":"A summary of the call","nullable":true,"type":"string"},"transcript":{"description":"The transcribed conversation text","nullable":true,"type":"string"}},"required":["id","createdAt","lastUpdatedAt","assistantReferenceId","state"],"type":"object"},"completed":{"type":"boolean"},"createdAt":{"format":"date-time","type":"string"},"id":{"type":"string"},"kpis":{"properties":{"createdAt":{"format":"date-time","type":"string"},"id":{"type":"string"},"lastUpdatedAt":{"format":"date-time","type":"string"},"listenRatio":{"nullable":true,"type":"number"},"longestMonologue":{"nullable":true,"type":"number"},"state":{"enum":["PENDING","PROCESSING","DONE","SKIPPED"],"type":"string"},"talkSpeed":{"nullable":true,"type":"number"}},"required":["id","createdAt","lastUpdatedAt","state"],"type":"object"},"language":{"enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"},"lastUpdatedAt":{"format":"date-time","type":"string"},"missionReferenceId":{"description":"Reference ID for the associated mission","nullable":true,"type":"string"},"missionTitle":{"nullable":true,"type":"string"},"scorecardReferenceId":{"description":"Reference ID for the associated scorecard","nullable":true,"type":"string"},"state":{"enum":["PENDING","PROCESSING","DONE"],"type":"string"},"trackTitle":{"nullable":true,"type":"string"},"type":{"enum":["ROLE_PLAY"],"type":"string"},"userId":{"type":"string"}},"required":["id","createdAt","lastUpdatedAt","userId","call","analysis","kpis","language","state","completed","type"],"type":"object"},"SessionRemoveResponseDTO":{"properties":{"analysis":{"properties":{"createdAt":{"format":"date-time","type":"string"},"id":{"type":"string"},"items":{"items":{"properties":{"behaviours":{"default":[],"description":"Array of behaviours assessed for this item","items":{"properties":{"evidence":{"description":"Evidence supporting the behaviour assessment","items":{"type":"string"},"type":"array"},"score":{"description":"The numerical score for this behaviour","type":"number"},"verdict":{"description":"The verdict of the behaviour evaluation","type":"string"}},"required":["evidence","verdict","score"],"type":"object"},"type":"array"},"conversationItemReferenceId":{"description":"Reference ID to the conversation item","nullable":true,"type":"string"},"createdAt":{"description":"The date and time when the item was created","format":"date-time","type":"string"},"explanation":{"description":"Explanation of the analysis result","nullable":true,"type":"string"},"id":{"description":"The unique identifier for the analysis item","type":"string"},"lastUpdatedAt":{"description":"The date and time when the item was last updated","format":"date-time","type":"string"},"name":{"description":"The name of the analysis item","nullable":true,"type":"string"},"score":{"description":"The numerical score for this analysis item","type":"number"},"solved":{"description":"The solving status of the item","enum":["undetected","notSolved","partlySolved","solved",null],"nullable":true,"type":"string"},"state":{"description":"The current state of the analysis item","enum":["PROCESSING","DONE","ERROR"],"type":"string"},"suggestion":{"description":"Suggestions for improvement","nullable":true,"type":"string"}},"required":["id","createdAt","lastUpdatedAt","state","score"],"type":"object"},"type":"array"},"lastUpdatedAt":{"format":"date-time","type":"string"},"score":{"type":"number"},"state":{"enum":["PENDING","PROCESSING","DONE","SKIPPED"],"type":"string"}},"required":["id","createdAt","lastUpdatedAt","state","items","score"],"type":"object"},"call":{"properties":{"assistantReferenceId":{"description":"The reference ID for the assistant","type":"string"},"createdAt":{"description":"The date and time when the call was created","format":"date-time","type":"string"},"endedReason":{"description":"The reason why the call ended","nullable":true,"type":"string"},"id":{"description":"The unique identifier for the call","type":"string"},"lastUpdatedAt":{"description":"The date and time when the call was last updated","format":"date-time","type":"string"},"providerCallId":{"description":"The provider call identifier","nullable":true,"type":"string"},"state":{"description":"The current state of the call","enum":["PENDING","DONE","DATA-NOT-AVAILABLE","CAN-NOT-PROCESS-TRANSCRIPT"],"type":"string"},"summary":{"description":"A summary of the call","nullable":true,"type":"string"},"transcript":{"description":"The transcribed conversation text","nullable":true,"type":"string"}},"required":["id","createdAt","lastUpdatedAt","assistantReferenceId","state"],"type":"object"},"completed":{"type":"boolean"},"createdAt":{"format":"date-time","type":"string"},"id":{"type":"string"},"kpis":{"properties":{"createdAt":{"format":"date-time","type":"string"},"id":{"type":"string"},"lastUpdatedAt":{"format":"date-time","type":"string"},"listenRatio":{"nullable":true,"type":"number"},"longestMonologue":{"nullable":true,"type":"number"},"state":{"enum":["PENDING","PROCESSING","DONE","SKIPPED"],"type":"string"},"talkSpeed":{"nullable":true,"type":"number"}},"required":["id","createdAt","lastUpdatedAt","state"],"type":"object"},"language":{"enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"},"lastUpdatedAt":{"format":"date-time","type":"string"},"missionReferenceId":{"description":"Reference ID for the associated mission","nullable":true,"type":"string"},"missionTitle":{"nullable":true,"type":"string"},"playedLanguage":{"enum":["en","de","fr","es","it","nl","pl","zh","ja","id","tr","pt","el","ko","vi","hi","ms","th","hr","ro","bg","sv","no","yue",null],"nullable":true,"type":"string"},"scorecardReferenceId":{"description":"Reference ID for the associated scorecard","nullable":true,"type":"string"},"scorecardTitle":{"description":"Title of the associated scorecard","nullable":true,"type":"string"},"state":{"enum":["PENDING","PROCESSING","DONE"],"type":"string"},"trackId":{"description":"Parent track id for mission-backed roleplay sessions","nullable":true,"type":"string"},"trackTitle":{"nullable":true,"type":"string"},"type":{"enum":["ROLE_PLAY"],"type":"string"},"userId":{"type":"string"}},"required":["id","createdAt","lastUpdatedAt","userId","call","analysis","kpis","language","state","completed","type"],"type":"object"},"ShortMissionPaginatedResponseDTO":{"properties":{"data":{"items":{"properties":{"avatar":{"description":"Avatar images for the mission persona","properties":{"cardUrl":{"description":"Card-sized version of the avatar","type":"string"},"thumbnailUrl":{"description":"Thumbnail version of the avatar","type":"string"},"url":{"description":"Primary avatar image URL","type":"string"}},"required":["url"],"type":"object"},"difficulty":{"description":"Difficulty level of the mission","type":"string"},"duration":{"description":"Expected duration of the mission in minutes","type":"number"},"id":{"description":"Unique identifier for the mission","type":"string"},"sagaId":{"description":"Identifier of the saga this mission belongs to","type":"string"},"scenario_description":{"description":"Situational context for the seller entering this roleplay","type":"string"},"taskCount":{"description":"Number of scorecard tasks (items) defined for this mission","maximum":9007199254740991,"minimum":0,"type":"integer"},"title":{"description":"Title of the mission","type":"string"},"trackId":{"description":"Identifier of the track this mission belongs to (if any)","type":"string"},"trackTitle":{"description":"Title of the track this mission belongs to (if any)","type":"string"}},"required":["id","sagaId","title","difficulty","avatar","duration","taskCount"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"ShortMissionResponseDTO":{"properties":{"avatar":{"description":"Avatar images for the mission persona","properties":{"cardUrl":{"description":"Card-sized version of the avatar","type":"string"},"thumbnailUrl":{"description":"Thumbnail version of the avatar","type":"string"},"url":{"description":"Primary avatar image URL","type":"string"}},"required":["url"],"type":"object"},"difficulty":{"description":"Difficulty level of the mission","type":"string"},"duration":{"description":"Expected duration of the mission in minutes","type":"number"},"id":{"description":"Unique identifier for the mission","type":"string"},"sagaId":{"description":"Identifier of the saga this mission belongs to","type":"string"},"scenario_description":{"description":"Situational context for the seller entering this roleplay","type":"string"},"taskCount":{"description":"Number of scorecard tasks (items) defined for this mission","maximum":9007199254740991,"minimum":0,"type":"integer"},"title":{"description":"Title of the mission","type":"string"},"trackId":{"description":"Identifier of the track this mission belongs to (if any)","type":"string"},"trackTitle":{"description":"Title of the track this mission belongs to (if any)","type":"string"}},"required":["id","sagaId","title","difficulty","avatar","duration","taskCount"],"type":"object"},"SimulateConversationCreateRequestDTO":{"properties":{"additional_material":{"default":[],"items":{"anyOf":[{"properties":{"relationTo":{"enum":["client-documents"],"type":"string"},"value":{"anyOf":[{"type":"string"},{"properties":{"createdAt":{"type":"string"},"description":{"nullable":true,"type":"string"},"filename":{"nullable":true,"type":"string"},"filesize":{"nullable":true,"type":"number"},"height":{"nullable":true,"type":"number"},"id":{"type":"string"},"mimeType":{"nullable":true,"type":"string"},"saga":{"properties":{"createdAt":{"description":"Creation timestamp","type":"string"},"description":{"description":"Description of the saga","type":"string"},"id":{"description":"Unique identifier for the saga","type":"string"},"name":{"description":"Name of the saga","type":"string"},"type":{"default":"under_construction","description":"Type of the saga","enum":["under_construction","generic","client_specific"],"type":"string"},"updatedAt":{"description":"Last update timestamp","type":"string"}},"required":["id","name","description","updatedAt","createdAt"],"type":"object"},"signedUrl":{"nullable":true,"type":"string"},"title":{"type":"string"},"updatedAt":{"type":"string"},"url":{"nullable":true,"type":"string"},"width":{"nullable":true,"type":"number"}},"required":["id","saga","title","updatedAt","createdAt"],"type":"object"}]}},"required":["relationTo","value"],"type":"object"},{"properties":{"relationTo":{"enum":["external-links"],"type":"string"},"value":{"anyOf":[{"type":"string"},{"properties":{"createdAt":{"type":"string"},"description":{"nullable":true,"type":"string"},"id":{"type":"string"},"saga":{"properties":{"createdAt":{"description":"Creation timestamp","type":"string"},"description":{"description":"Description of the saga","type":"string"},"id":{"description":"Unique identifier for the saga","type":"string"},"name":{"description":"Name of the saga","type":"string"},"type":{"default":"under_construction","description":"Type of the saga","enum":["under_construction","generic","client_specific"],"type":"string"},"updatedAt":{"description":"Last update timestamp","type":"string"}},"required":["id","name","description","updatedAt","createdAt"],"type":"object"},"title":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"}},"required":["id","saga","title","url","updatedAt","createdAt"],"type":"object"}]}},"required":["relationTo","value"],"type":"object"}]},"nullable":true,"type":"array"},"createdAt":{"type":"string"},"difficulty":{"enum":["easy","medium","hard"],"type":"string"},"hide_examples":{"nullable":true,"type":"boolean"},"hide_scorecard":{"nullable":true,"type":"boolean"},"id":{"type":"string"},"keywords":{"default":[],"items":{"type":"string"},"type":"array"},"language":{"enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"},"persona":{"properties":{"ai_instruction":{"type":"string"},"avatar_file":{"properties":{"age":{"exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0,"type":"integer"},"alt":{"nullable":true,"type":"string"},"createdAt":{"type":"string"},"filename":{"type":"string"},"filesize":{"type":"number"},"gender":{"enum":["male","female"],"type":"string"},"height":{"type":"number"},"id":{"type":"string"},"mimeType":{"type":"string"},"reusable":{"type":"boolean"},"sizes":{"properties":{"card":{"properties":{"url":{"nullable":true,"type":"string"}},"type":"object"},"thumbnail":{"properties":{"url":{"nullable":true,"type":"string"}},"type":"object"}},"type":"object"},"updatedAt":{"type":"string"},"url":{"type":"string"},"width":{"type":"number"}},"required":["id","filename","age","gender","reusable","height","width","filesize","mimeType","updatedAt","createdAt","url"],"type":"object"},"createdAt":{"type":"string"},"description":{"type":"string"},"gender":{"enum":["male","female"],"type":"string"},"id":{"type":"string"},"language":{"enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"},"name":{"type":"string"},"role":{"type":"string"},"saga":{"properties":{"createdAt":{"description":"Creation timestamp","type":"string"},"description":{"description":"Description of the saga","type":"string"},"id":{"description":"Unique identifier for the saga","type":"string"},"name":{"description":"Name of the saga","type":"string"},"type":{"default":"under_construction","description":"Type of the saga","enum":["under_construction","generic","client_specific"],"type":"string"},"updatedAt":{"description":"Last update timestamp","type":"string"}},"required":["id","name","description","updatedAt","createdAt"],"type":"object"},"tag":{"type":"string"},"updatedAt":{"type":"string"},"voice":{"properties":{"id":{"type":"string"},"voice_id":{"type":"string"}},"required":["id","voice_id"],"type":"object"},"workplace_description":{"nullable":true,"type":"string"},"workplace_name":{"nullable":true,"type":"string"}},"required":["id","saga","language","avatar_file","tag","name","description","role","voice","ai_instruction","gender","updatedAt","createdAt"],"type":"object"},"saga":{"properties":{"createdAt":{"description":"Creation timestamp","type":"string"},"description":{"description":"Description of the saga","type":"string"},"id":{"description":"Unique identifier for the saga","type":"string"},"name":{"description":"Name of the saga","type":"string"},"type":{"default":"under_construction","description":"Type of the saga","enum":["under_construction","generic","client_specific"],"type":"string"},"updatedAt":{"description":"Last update timestamp","type":"string"}},"required":["id","name","description","updatedAt","createdAt"],"type":"object"},"scenario":{"properties":{"conversation_items":{"items":{"properties":{"conversation_step_instructions":{"nullable":true,"type":"string"},"conversation_step_title":{"type":"string"},"id":{"type":"string"}},"required":["id","conversation_step_title"],"type":"object"},"type":"array"},"createdAt":{"type":"string"},"description":{"type":"string"},"description_for_ai":{"type":"string"},"duration":{"type":"number"},"firstMessage":{"nullable":true,"type":"string"},"firstMessageMode":{"enum":["assistant-speaks-first","assistant-waits-for-user","assistant-speaks-first-with-model-generated-message"],"type":"string"},"goal":{"type":"string"},"id":{"type":"string"},"language":{"enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"},"saga":{"properties":{"createdAt":{"description":"Creation timestamp","type":"string"},"description":{"description":"Description of the saga","type":"string"},"id":{"description":"Unique identifier for the saga","type":"string"},"name":{"description":"Name of the saga","type":"string"},"type":{"default":"under_construction","description":"Type of the saga","enum":["under_construction","generic","client_specific"],"type":"string"},"updatedAt":{"description":"Last update timestamp","type":"string"}},"required":["id","name","description","updatedAt","createdAt"],"type":"object"},"tag":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","saga","language","description","tag","goal","firstMessageMode","duration","conversation_items","description_for_ai","updatedAt","createdAt"],"type":"object"},"scorecard":{"properties":{"createdAt":{"type":"string"},"id":{"type":"string"},"items":{"items":{"properties":{"description":{"type":"string"},"desired_behaviours":{"items":{"properties":{"behaviour":{"type":"string"},"examples":{"nullable":true,"type":"string"},"id":{"type":"string"}},"required":["id","behaviour"],"type":"object"},"nullable":true,"type":"array"},"desired_outcome":{"nullable":true,"type":"string"},"id":{"type":"string"},"item_title":{"type":"string"}},"required":["id","description","item_title"],"type":"object"},"type":"array"},"language":{"enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"},"saga":{"properties":{"createdAt":{"description":"Creation timestamp","type":"string"},"description":{"description":"Description of the saga","type":"string"},"id":{"description":"Unique identifier for the saga","type":"string"},"name":{"description":"Name of the saga","type":"string"},"type":{"default":"under_construction","description":"Type of the saga","enum":["under_construction","generic","client_specific"],"type":"string"},"updatedAt":{"description":"Last update timestamp","type":"string"}},"required":["id","name","description","updatedAt","createdAt"],"type":"object"},"tag":{"type":"string"},"title":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","tag","title","language","saga","items","updatedAt","createdAt"],"type":"object"},"title":{"type":"string"},"toolIds":{"items":{"type":"string"},"nullable":true,"type":"array"},"trackId":{"type":"string"},"trackTitle":{"default":"-","type":"string"},"updatedAt":{"type":"string"}},"required":["id","saga","language","title","persona","scenario","scorecard","difficulty","updatedAt","createdAt"],"type":"object"},"SimulateConversationCreateResponseDTO":{"properties":{"message":{"description":"Confirmation message indicating the simulation has been accepted and started","type":"string"}},"required":["message"],"type":"object"},"SprintActivityFindLeaderboardResponseDTO":{"properties":{"firstName":{"description":"The first name of the user.","minLength":1,"type":"string"},"lastName":{"description":"The last name of the user.","minLength":1,"type":"string"},"total":{"description":"The total experience points earned by the user.","maximum":9007199254740991,"minimum":0,"type":"integer"},"userId":{"description":"The unique identifier for the user.","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["userId","total","firstName","lastName"],"type":"object"},"SprintActivityFindMissionStatsResponseDTO":{"properties":{"data":{"items":{"properties":{"averageRoundToCompletion":{"description":"Average number of rounds to complete the mission (rounded to 2 decimal places)","nullable":true,"type":"number"},"averageScore":{"description":"Average score achieved (rounded to 2 decimal places)","nullable":true,"type":"number"},"completionPercentage":{"description":"Percentage of mission completion","type":"number"},"missionId":{"description":"Unique identifier for the mission","type":"string"},"missionName":{"description":"Name of the mission","type":"string"},"personaImage":{"description":"URL of the persona image","type":"string"},"personaName":{"description":"Name of the persona used in the mission","type":"string"},"roundsPlayed":{"description":"Total number of rounds played for this mission","type":"number"},"trackName":{"description":"Name of the track containing the mission","type":"string"}},"required":["missionId","missionName","trackName","personaName","personaImage","roundsPlayed","completionPercentage"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"SprintActivityFindUserStatsResponseDTO":{"properties":{"data":{"items":{"properties":{"averageScore":{"description":"Average score (0-100) across the scored role-play rounds played by the user during the sprint. Null when none of their rounds have been scored (never 0).","maximum":100,"minimum":0,"nullable":true,"type":"number"},"completedMissions":{"description":"Number of unique missions the user has completed during the sprint","minimum":0,"type":"number"},"participatedMissions":{"description":"Number of unique missions the user has participated in during the sprint","minimum":0,"type":"number"},"totalMissionCount":{"description":"Total number of missions available in the sprint track","minimum":0,"type":"number"},"totalScore":{"description":"Total score achieved by the user during the sprint","minimum":0,"type":"number"},"userId":{"description":"ID of the user","type":"string"},"userName":{"description":"First name and last name of the user","type":"string"}},"required":["userId","userName","participatedMissions","completedMissions","averageScore","totalScore","totalMissionCount"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"SprintScheduleCreateRequestDTO":{"properties":{"assignedTeamId":{"description":"UUID of the team assigned to this sprint","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"assignedTrackId":{"description":"ObjectId of the track assigned to this sprint","pattern":"^[0-9a-fA-F]{24}$","type":"string"},"dueDate":{"description":"Due date of the sprint (will be transformed to end of day in UTC)","format":"date-time","type":"string"},"title":{"description":"Title of the sprint schedule","minLength":1,"type":"string"}},"required":["title","assignedTrackId","assignedTeamId","dueDate"],"type":"object"},"SprintScheduleCreateResponseDTO":{"properties":{"assignedTeamId":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"assignedTrackId":{"pattern":"^[0-9a-fA-F]{24}$","type":"string"},"createdAt":{"format":"date-time","type":"string"},"deletedAt":{"format":"date-time","nullable":true,"type":"string"},"dueDate":{"format":"date-time","type":"string"},"id":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"lastUpdatedAt":{"format":"date-time","type":"string"},"title":{"minLength":1,"type":"string"},"userId":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["id","createdAt","lastUpdatedAt","userId","dueDate","title","assignedTeamId","assignedTrackId"],"type":"object"},"SprintScheduleDeleteResponseDTO":{"properties":{"success":{"description":"Whether the sprint was successfully deleted","type":"boolean"}},"required":["success"],"type":"object"},"SprintScheduleGetResponseDTO":{"properties":{"allUsers":{"items":{"properties":{"firstName":{"type":"string"},"id":{"type":"string"},"pictureUrl":{"nullable":true,"type":"string"}},"required":["id","firstName"],"type":"object"},"type":"array"},"dueDate":{"format":"date-time","type":"string"},"id":{"minLength":1,"type":"string"},"missions":{"items":{"properties":{"difficulty":{"type":"string"},"id":{"type":"string"},"persona":{"properties":{"ai_instruction":{"type":"string"},"avatar_file":{"properties":{"age":{"exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0,"type":"integer"},"alt":{"nullable":true,"type":"string"},"createdAt":{"type":"string"},"filename":{"type":"string"},"filesize":{"type":"number"},"gender":{"enum":["male","female"],"type":"string"},"height":{"type":"number"},"id":{"type":"string"},"mimeType":{"type":"string"},"reusable":{"type":"boolean"},"sizes":{"properties":{"card":{"properties":{"url":{"nullable":true,"type":"string"}},"type":"object"},"thumbnail":{"properties":{"url":{"nullable":true,"type":"string"}},"type":"object"}},"type":"object"},"updatedAt":{"type":"string"},"url":{"type":"string"},"width":{"type":"number"}},"required":["id","filename","age","gender","reusable","height","width","filesize","mimeType","updatedAt","createdAt","url"],"type":"object"},"createdAt":{"type":"string"},"description":{"type":"string"},"gender":{"enum":["male","female"],"type":"string"},"id":{"type":"string"},"language":{"enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"},"name":{"type":"string"},"role":{"type":"string"},"saga":{"properties":{"createdAt":{"description":"Creation timestamp","type":"string"},"description":{"description":"Description of the saga","type":"string"},"id":{"description":"Unique identifier for the saga","type":"string"},"name":{"description":"Name of the saga","type":"string"},"type":{"default":"under_construction","description":"Type of the saga","enum":["under_construction","generic","client_specific"],"type":"string"},"updatedAt":{"description":"Last update timestamp","type":"string"}},"required":["id","name","description","updatedAt","createdAt"],"type":"object"},"tag":{"type":"string"},"updatedAt":{"type":"string"},"voice":{"properties":{"id":{"type":"string"},"voice_id":{"type":"string"}},"required":["id","voice_id"],"type":"object"},"workplace_description":{"nullable":true,"type":"string"},"workplace_name":{"nullable":true,"type":"string"}},"required":["id","saga","language","avatar_file","tag","name","description","role","voice","ai_instruction","gender","updatedAt","createdAt"],"type":"object"},"scenario":{"properties":{"conversation_items":{"items":{"properties":{"conversation_step_instructions":{"nullable":true,"type":"string"},"conversation_step_title":{"type":"string"},"id":{"type":"string"}},"required":["id","conversation_step_title"],"type":"object"},"type":"array"},"createdAt":{"type":"string"},"description":{"type":"string"},"description_for_ai":{"type":"string"},"duration":{"type":"number"},"firstMessage":{"nullable":true,"type":"string"},"firstMessageMode":{"enum":["assistant-speaks-first","assistant-waits-for-user","assistant-speaks-first-with-model-generated-message"],"type":"string"},"goal":{"type":"string"},"id":{"type":"string"},"language":{"enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"},"saga":{"properties":{"createdAt":{"description":"Creation timestamp","type":"string"},"description":{"description":"Description of the saga","type":"string"},"id":{"description":"Unique identifier for the saga","type":"string"},"name":{"description":"Name of the saga","type":"string"},"type":{"default":"under_construction","description":"Type of the saga","enum":["under_construction","generic","client_specific"],"type":"string"},"updatedAt":{"description":"Last update timestamp","type":"string"}},"required":["id","name","description","updatedAt","createdAt"],"type":"object"},"tag":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","saga","language","description","tag","goal","firstMessageMode","duration","conversation_items","description_for_ai","updatedAt","createdAt"],"type":"object"},"title":{"minLength":1,"type":"string"}},"required":["id","title"],"type":"object"},"type":"array"},"progress":{"properties":{"allMissionsCompletedUserIds":{"items":{"minLength":1,"type":"string"},"type":"array"},"allUserIds":{"items":{"minLength":1,"type":"string"},"type":"array"},"completedUserIds":{"items":{"minLength":1,"type":"string"},"type":"array"},"missionsProgress":{"additionalProperties":{"properties":{"averageScore":{"type":"number"},"completedUserIds":{"items":{"minLength":1,"type":"string"},"type":"array"},"mission":{"properties":{"difficulty":{"type":"string"},"id":{"type":"string"},"persona":{"properties":{"avatar_file":{"properties":{"age":{"exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0,"type":"integer"},"alt":{"nullable":true,"type":"string"},"createdAt":{"type":"string"},"filename":{"type":"string"},"filesize":{"type":"number"},"gender":{"enum":["male","female"],"type":"string"},"height":{"type":"number"},"id":{"type":"string"},"mimeType":{"type":"string"},"reusable":{"type":"boolean"},"sizes":{"properties":{"card":{"properties":{"url":{"nullable":true,"type":"string"}},"type":"object"},"thumbnail":{"properties":{"url":{"nullable":true,"type":"string"}},"type":"object"}},"type":"object"},"updatedAt":{"type":"string"},"url":{"type":"string"},"width":{"type":"number"}},"required":["id","filename","age","gender","reusable","height","width","filesize","mimeType","updatedAt","createdAt","url"],"type":"object"}},"required":["avatar_file"],"type":"object"},"scenario":{"properties":{"duration":{"type":"number"}},"type":"object"},"title":{"minLength":1,"type":"string"}},"required":["id","title","scenario","persona"],"type":"object"}},"required":["mission","averageScore","completedUserIds"],"type":"object"},"type":"object"},"notStartedUserIds":{"items":{"minLength":1,"type":"string"},"type":"array"},"startedUserIds":{"items":{"minLength":1,"type":"string"},"type":"array"}},"required":["notStartedUserIds","startedUserIds","completedUserIds","allMissionsCompletedUserIds","allUserIds","missionsProgress"],"type":"object"},"startDate":{"format":"date-time","type":"string"},"status":{"enum":["ACTIVE","CLOSED"],"type":"string"},"team":{"properties":{"id":{"type":"string"},"name":{"minLength":1,"type":"string"}},"required":["id","name"],"type":"object"},"title":{"minLength":1,"type":"string"},"track":{"properties":{"conversation_topic":{"items":{"minLength":1,"type":"string"},"type":"array"},"description":{"minLength":1,"type":"string"},"id":{"type":"string"},"name":{"minLength":1,"type":"string"}},"required":["id","name","description"],"type":"object"}},"required":["id","title","dueDate","startDate","track","team","allUsers","progress"],"type":"object"},"SprintScheduleUpdateRequestDTO":{"properties":{"dueDate":{"description":"Due date of the sprint (will be transformed to end of day in UTC). Must be between tomorrow and 30 days from now.","format":"date-time","type":"string"},"title":{"description":"The updated title for the sprint schedule","minLength":1,"type":"string"}},"type":"object"},"SprintScheduleUpdateResponseDTO":{"properties":{"assignedTeamId":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"assignedTrackId":{"pattern":"^[0-9a-fA-F]{24}$","type":"string"},"createdAt":{"format":"date-time","type":"string"},"deletedAt":{"format":"date-time","nullable":true,"type":"string"},"dueDate":{"format":"date-time","type":"string"},"id":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"lastUpdatedAt":{"format":"date-time","type":"string"},"title":{"minLength":1,"type":"string"},"userId":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["id","createdAt","lastUpdatedAt","userId","dueDate","title","assignedTeamId","assignedTrackId"],"type":"object"},"SyncRecalculateRequestDTO":{"properties":{"dateFrom":{"description":"Optional date in YYYY-MM-DD format. When provided, only content allocations created on or after this date will be synced.","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"}},"type":"object"},"TeamActivityFindRealCallSessionsResponseDTO":{"properties":{"data":{"items":{"properties":{"analysisState":{"description":"Current state of the analysis","enum":["PENDING","PROCESSING","DONE","SKIPPED"],"type":"string"},"createdAt":{"description":"Date and time when the session was created","format":"date-time","type":"string"},"missionReferenceId":{"description":"Reference identifier for the mission","nullable":true,"type":"string"},"missionTitle":{"description":"Title of the mission","nullable":true,"type":"string"},"participantUserIds":{"description":"User IDs of all attributed speakers in the call, including the scored rep. Empty array when the transcript carries no speaker attribution.","items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":"array"},"results":{"description":"Array of solved status results for each task","items":{"enum":["undetected","notSolved","partlySolved","solved"],"type":"string"},"type":"array"},"score":{"description":"Final score achieved in the session","type":"number"},"scorecardReferenceId":{"description":"Reference identifier for the scorecard","nullable":true,"type":"string"},"scorecardTitle":{"description":"Title of the scorecard","nullable":true,"type":"string"},"sessionId":{"description":"Unique identifier for the session","type":"string"},"state":{"description":"Current state of the session","enum":["PENDING","PROCESSING","DONE"],"type":"string"},"teamName":{"description":"Name of the team the user belongs to","type":"string"},"userId":{"description":"Unique identifier for the user","type":"string"},"userName":{"description":"Display name of the user","type":"string"},"userPictureUrl":{"description":"URL of the user's profile picture","type":"string"}},"required":["sessionId","userId","userName","createdAt","results","score","state","analysisState"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"TeamActivityFindRolePlaySessionsResponseDTO":{"properties":{"data":{"items":{"properties":{"createdAt":{"description":"Date and time when the session was created","format":"date-time","type":"string"},"missionReferenceId":{"description":"Reference identifier for the mission","nullable":true,"type":"string"},"missionTitle":{"description":"Title of the mission","nullable":true,"type":"string"},"results":{"description":"Array of solved status results for each task","items":{"enum":["undetected","notSolved","partlySolved","solved"],"type":"string"},"type":"array"},"score":{"description":"Final score achieved in the session","type":"number"},"sessionId":{"description":"Unique identifier for the session","type":"string"},"teamName":{"description":"Name of the team the user belongs to","type":"string"},"userId":{"description":"Unique identifier for the user","type":"string"},"userName":{"description":"Display name of the user","type":"string"},"userPictureUrl":{"description":"URL of the user's profile picture","type":"string"}},"required":["sessionId","userId","userName","createdAt","results","score"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"TeamActivityGetWeeklyActivityResponseDTO":{"properties":{"activeUsers":{"additionalProperties":{"properties":{"active":{"description":"Number of active users in this period","type":"number"},"inactive":{"description":"Number of inactive users in this period","type":"number"}},"required":["active","inactive"],"type":"object"},"description":"Active and inactive user counts per week","type":"object"},"completedSessions":{"additionalProperties":{"type":"number"},"description":"Number of completed sessions per week","type":"object"}},"required":["completedSessions","activeUsers"],"type":"object"},"TeamCreateRequestDTO":{"properties":{"name":{"description":"The name of the team (1-50 characters)","maxLength":50,"minLength":1,"type":"string"}},"required":["name"],"type":"object"},"TeamExperienceResponseDTO":{"properties":{"name":{"description":"The name of the team.","minLength":1,"type":"string"},"teamId":{"description":"The unique identifier for the team.","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"total":{"description":"The total experience points earned by the team.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["teamId","total","name"],"type":"object"},"TeamPerformanceGetAreasForImprovementResponseDTO":{"items":{"properties":{"averageRecentScore":{"description":"Average recent score across the struggling members","maximum":100,"minimum":0,"type":"integer"},"memberCount":{"description":"Number of members for whom this mission is a personal weak area","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"missionReferenceId":{"description":"Mission reference id","type":"string"},"targetScore":{"description":"Target score threshold for a weak area","maximum":100,"minimum":0,"type":"integer"}},"required":["missionReferenceId","memberCount","averageRecentScore","targetScore"],"type":"object"},"type":"array"},"TeamPerformanceGetLeaderboardResponseDTO":{"properties":{"data":{"items":{"properties":{"averageScore":{"description":"Average score achieved by the user (rounded to 2 decimal places)","nullable":true,"type":"number"},"lastSessionDate":{"description":"Date of the user last attempt","format":"date-time","nullable":true,"type":"string"},"teams":{"description":"Teams the learner belongs to","items":{"properties":{"id":{"description":"Team identifier","type":"string"},"name":{"description":"Team name","type":"string"}},"required":["id","name"],"type":"object"},"type":"array"},"userId":{"description":"Unique identifier for the user","type":"string"},"userName":{"description":"Display name of the user","type":"string"},"userPictureUrl":{"description":"URL of the user profile picture","nullable":true,"type":"string"}},"required":["userId","userName","teams"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"TeamPerformanceGetPerformanceByMemberResponseDTO":{"properties":{"data":{"items":{"properties":{"averageScore":{"description":"Average score achieved by the user (rounded to 2 decimal places)","nullable":true,"type":"number"},"lastSessionDate":{"description":"Date of the user last session","format":"date-time","nullable":true,"type":"string"},"missionsCompleted":{"description":"Total number of missions completed by the user","type":"number"},"roundsPlayed":{"description":"Total number of rounds played by the user","type":"number"},"totalScore":{"description":"Total score accumulated by the user","nullable":true,"type":"number"},"userId":{"description":"Unique identifier for the user","type":"string"},"userName":{"description":"Display name of the user","type":"string"},"userPictureUrl":{"description":"URL of the user profile picture","nullable":true,"type":"string"}},"required":["userId","userName","roundsPlayed","missionsCompleted"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"TeamPerformanceGetPerformanceByMissionResponseDTO":{"properties":{"data":{"items":{"properties":{"averageRoundToCompletion":{"description":"Average number of rounds to complete the mission (rounded to 2 decimal places)","nullable":true,"type":"number"},"averageScore":{"description":"Average score achieved (rounded to 2 decimal places)","nullable":true,"type":"number"},"missionId":{"description":"Unique identifier for the mission","type":"string"},"missionName":{"description":"Name of the mission","type":"string"},"personaImage":{"description":"URL of the persona image","type":"string"},"personaName":{"description":"Name of the persona used in the mission","type":"string"},"roundsPlayed":{"description":"Total number of rounds played for this mission","type":"number"},"trackName":{"description":"Name of the track containing the mission","type":"string"}},"required":["missionId","missionName","trackName","personaName","personaImage","roundsPlayed"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"TeamPerformanceGetPerformanceByScorecardItemResponseDTO":{"properties":{"averageScore":{"description":"Mean score (0-100) for this task across the filtered population; null when no scored sessions exist in range","maximum":100,"minimum":0,"nullable":true,"type":"number"},"taskId":{"description":"Scorecard task id (the analysis conversation item reference id)","type":"string"},"title":{"description":"Scorecard task title","type":"string"}},"required":["taskId","title","averageScore"],"type":"object"},"TeamPerformanceGetPerformanceByTrackMissionsResponseDTO":{"properties":{"data":{"items":{"properties":{"attempted":{"description":"Number of distinct reps who attempted this mission (>= 1 analysis-completed session)","type":"number"},"averageScore":{"description":"Per rep, the latest DONE scored session score for this mission (any scored session, including sub-70 / not completed); then meaned across reps. Null when no rep has a scored session (never 0).","nullable":true,"type":"number"},"completedCount":{"description":"Number of reps who completed this mission","type":"number"},"improvementDelta":{"description":"Mean, across reps, of each rep's (best − first session) score for this mission. Only reps with >= 2 scored sessions contribute, so this can be null even when attempts exist (e.g. every rep has a single scored session).","nullable":true,"type":"number"},"missionId":{"description":"Unique identifier for the mission","type":"string"},"missionName":{"description":"Name of the mission","type":"string"},"personaImage":{"description":"URL of the persona image","type":"string"},"personaName":{"description":"Name of the persona used in the mission","type":"string"},"populationCount":{"description":"Size of the selected population (the \"Y\" in \"X of Y\")","type":"number"},"trackName":{"description":"Name of the parent track","type":"string"}},"required":["missionId","missionName","trackName","personaName","personaImage","averageScore","completedCount","attempted","populationCount","improvementDelta"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"TeamPerformanceGetPerformanceByTrackResponseDTO":{"properties":{"data":{"items":{"properties":{"attempted":{"description":"Number of distinct reps who attempted the track (>= 1 analysis-completed session on any of its missions)","type":"number"},"averageScore":{"description":"Per rep, the mean of the latest DONE scored session per mission (any scored session, including sub-70 / not completed); then meaned across reps. Null when no rep has a scored session (never 0).","nullable":true,"type":"number"},"completedCount":{"description":"Number of reps who completed every mission in the track","type":"number"},"improvementDelta":{"description":"Mean of (best − first session) per mission across the track. Only reps with >= 2 scored sessions on a mission contribute, so this can be null even when attempts exist (e.g. every rep has a single scored session).","nullable":true,"type":"number"},"populationCount":{"description":"Size of the selected population (the \"Y\" in \"X of Y\")","type":"number"},"trackId":{"description":"Unique identifier for the track","type":"string"},"trackName":{"description":"Name of the track","type":"string"}},"required":["trackId","trackName","averageScore","completedCount","attempted","populationCount","improvementDelta"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"TeamPerformanceGetTrackBreakdownByMemberResponseDTO":{"properties":{"data":{"items":{"properties":{"averageScore":{"description":"Member mean score across scored missions; null when they have no scored session (never 0)","nullable":true,"type":"number"},"completed":{"description":"Number of distinct missions the member completed (the \"n\" in \"n of m\")","type":"number"},"total":{"description":"Number of missions in the track (the \"m\")","type":"number"},"userId":{"description":"Unique identifier for the member","type":"string"},"userName":{"description":"Display name of the member","type":"string"},"userPictureUrl":{"description":"Member profile picture URL, empty string when unset","type":"string"}},"required":["userId","userName","userPictureUrl","completed","total","averageScore"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"TeamPerformanceGetTrackBreakdownByTeamResponseDTO":{"properties":{"data":{"items":{"properties":{"averageScore":{"description":"Team rep-mean-of-means score; null when no member has a scored session (never 0)","nullable":true,"type":"number"},"completed":{"description":"Number of the team's members who completed every mission in the track (the \"n\" in \"n of m\")","type":"number"},"teamId":{"description":"Unique identifier for the team","type":"string"},"teamName":{"description":"Name of the team","type":"string"},"total":{"description":"Number of in-scope members - the managed population after any user/team filters, not necessarily raw team size (the \"m\" in \"n of m\")","type":"number"}},"required":["teamId","teamName","completed","total","averageScore"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"TeamPerformanceGetUserPerformanceByRoundResponseDTO":{"additionalProperties":{"properties":{"date":{"description":"Date when the round was played","format":"date-time","nullable":true,"type":"string"},"durationSeconds":{"description":"Approximate attempt duration in seconds (call end minus start); null when call timestamps are unavailable","nullable":true,"type":"number"},"round":{"description":"Round number","type":"number"},"score":{"description":"Score achieved in this round","nullable":true,"type":"number"},"sessionId":{"description":"Session identifier for this round","nullable":true,"type":"string"},"tasksCompleted":{"description":"Number of tasks completed in this round","nullable":true,"type":"number"},"tasksTotal":{"description":"Total number of tasks in this round","nullable":true,"type":"number"},"userId":{"description":"User identifier for this round","nullable":true,"type":"string"}},"required":["round","score"],"type":"object"},"type":"object"},"TeamPerformancePlayedMissionResponseDTO":{"properties":{"data":{"items":{"properties":{"id":{"description":"Unique identifier for the mission","type":"string"},"title":{"description":"Title or name of the mission","type":"string"}},"required":["id","title"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"TeamsCreateTeamResponseDTO":{"properties":{"createdAt":{"description":"The date and time the team was created","format":"date-time","type":"string"},"id":{"description":"The unique identifier of the team","type":"string"},"name":{"description":"The name of the team","type":"string"},"organizationId":{"description":"The unique identifier of the organization this team belongs to","type":"string"},"users":{"description":"The users that belong to this team","items":{"properties":{"createdAt":{"description":"The date when the user was created","format":"date-time","type":"string"},"email":{"description":"The email address of the user","nullable":true,"type":"string"},"enabled":{"description":"Whether the user account is enabled","type":"boolean"},"firstName":{"description":"The first name of the user","nullable":true,"type":"string"},"id":{"description":"The unique identifier of the user","type":"string"},"lastLoginDate":{"description":"The date when the user last logged in. Omitted from the response when the user has never logged in.","format":"date-time","nullable":true,"type":"string"},"lastName":{"description":"The last name of the user","nullable":true,"type":"string"},"pictureUrl":{"description":"The profile picture URL of the user","nullable":true,"type":"string"},"roles":{"description":"The roles of the user in the organization","items":{"enum":["Owner","Manager","Editor","Member","Assistant User"],"type":"string"},"nullable":true,"type":"array"},"teams":{"default":[],"description":"The teams the user belongs to","items":{"properties":{"id":{"description":"The unique identifier of the team","type":"string"},"name":{"description":"The name of the team","type":"string"}},"required":["id","name"],"type":"object"},"type":"array"}},"required":["id","enabled","createdAt"],"type":"object"},"nullable":true,"type":"array"}},"required":["id","name","organizationId","createdAt"],"type":"object"},"TeamsGetTeamResponseDTO":{"properties":{"createdAt":{"description":"The date and time the team was created","format":"date-time","type":"string"},"id":{"description":"The unique identifier of the team","type":"string"},"name":{"description":"The name of the team","type":"string"},"organizationId":{"description":"The unique identifier of the organization this team belongs to","type":"string"},"users":{"description":"The users that belong to this team","items":{"properties":{"createdAt":{"description":"The date when the user was created","format":"date-time","type":"string"},"email":{"description":"The email address of the user","nullable":true,"type":"string"},"enabled":{"description":"Whether the user account is enabled","type":"boolean"},"firstName":{"description":"The first name of the user","nullable":true,"type":"string"},"id":{"description":"The unique identifier of the user","type":"string"},"lastLoginDate":{"description":"The date when the user last logged in. Omitted from the response when the user has never logged in.","format":"date-time","nullable":true,"type":"string"},"lastName":{"description":"The last name of the user","nullable":true,"type":"string"},"pictureUrl":{"description":"The profile picture URL of the user","nullable":true,"type":"string"},"roles":{"description":"The roles of the user in the organization","items":{"enum":["Owner","Manager","Editor","Member","Assistant User"],"type":"string"},"nullable":true,"type":"array"},"teams":{"default":[],"description":"The teams the user belongs to","items":{"properties":{"id":{"description":"The unique identifier of the team","type":"string"},"name":{"description":"The name of the team","type":"string"}},"required":["id","name"],"type":"object"},"type":"array"}},"required":["id","enabled","createdAt"],"type":"object"},"nullable":true,"type":"array"}},"required":["id","name","organizationId","createdAt"],"type":"object"},"TeamsGetTeamsPaginatedResponseDTO":{"properties":{"data":{"items":{"properties":{"createdAt":{"description":"The date and time the team was created","format":"date-time","type":"string"},"id":{"description":"The unique identifier of the team","type":"string"},"name":{"description":"The name of the team","type":"string"},"organizationId":{"description":"The unique identifier of the organization this team belongs to","type":"string"},"users":{"description":"The users that belong to this team","items":{"properties":{"createdAt":{"description":"The date when the user was created","format":"date-time","type":"string"},"email":{"description":"The email address of the user","nullable":true,"type":"string"},"enabled":{"description":"Whether the user account is enabled","type":"boolean"},"firstName":{"description":"The first name of the user","nullable":true,"type":"string"},"id":{"description":"The unique identifier of the user","type":"string"},"lastLoginDate":{"description":"The date when the user last logged in. Omitted from the response when the user has never logged in.","format":"date-time","nullable":true,"type":"string"},"lastName":{"description":"The last name of the user","nullable":true,"type":"string"},"pictureUrl":{"description":"The profile picture URL of the user","nullable":true,"type":"string"},"roles":{"description":"The roles of the user in the organization","items":{"enum":["Owner","Manager","Editor","Member","Assistant User"],"type":"string"},"nullable":true,"type":"array"},"teams":{"default":[],"description":"The teams the user belongs to","items":{"properties":{"id":{"description":"The unique identifier of the team","type":"string"},"name":{"description":"The name of the team","type":"string"}},"required":["id","name"],"type":"object"},"type":"array"}},"required":["id","enabled","createdAt"],"type":"object"},"nullable":true,"type":"array"}},"required":["id","name","organizationId","createdAt"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"TeamsUpdateTeamResponseDTO":{"properties":{"createdAt":{"description":"The date and time the team was created","format":"date-time","type":"string"},"id":{"description":"The unique identifier of the team","type":"string"},"name":{"description":"The name of the team","type":"string"},"organizationId":{"description":"The unique identifier of the organization this team belongs to","type":"string"},"users":{"description":"The users that belong to this team","items":{"properties":{"createdAt":{"description":"The date when the user was created","format":"date-time","type":"string"},"email":{"description":"The email address of the user","nullable":true,"type":"string"},"enabled":{"description":"Whether the user account is enabled","type":"boolean"},"firstName":{"description":"The first name of the user","nullable":true,"type":"string"},"id":{"description":"The unique identifier of the user","type":"string"},"lastLoginDate":{"description":"The date when the user last logged in. Omitted from the response when the user has never logged in.","format":"date-time","nullable":true,"type":"string"},"lastName":{"description":"The last name of the user","nullable":true,"type":"string"},"pictureUrl":{"description":"The profile picture URL of the user","nullable":true,"type":"string"},"roles":{"description":"The roles of the user in the organization","items":{"enum":["Owner","Manager","Editor","Member","Assistant User"],"type":"string"},"nullable":true,"type":"array"},"teams":{"default":[],"description":"The teams the user belongs to","items":{"properties":{"id":{"description":"The unique identifier of the team","type":"string"},"name":{"description":"The name of the team","type":"string"}},"required":["id","name"],"type":"object"},"type":"array"}},"required":["id","enabled","createdAt"],"type":"object"},"nullable":true,"type":"array"}},"required":["id","name","organizationId","createdAt"],"type":"object"},"TrackCompletionResponseDTO":{"properties":{"data":{"items":{"properties":{"completionStats":{"properties":{"completed":{"description":"Number of users who have completed the track","type":"number"},"notStarted":{"description":"Number of users who have not started the track","type":"number"},"started":{"description":"Number of users who have started the track","type":"number"},"totalAssigned":{"description":"Total number of users assigned to this track","type":"number"}},"required":["totalAssigned","notStarted","started","completed"],"type":"object"},"conversation_topic":{"description":"Topics for conversation in the track.","items":{"type":"string"},"type":"array"},"description":{"description":"A description of the track.","type":"string"},"id":{"description":"The unique identifier for the track.","type":"string"},"language":{"enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"},"learning_outcome":{"description":"The overall learning outcome for the whole track — the concrete behaviors or skills a seller will be able to do after completing it.","type":"string"},"missions":{"description":"A list of short missions included in the track.","items":{"properties":{"avatar":{"description":"Avatar images for the mission persona","properties":{"cardUrl":{"description":"Card-sized version of the avatar","type":"string"},"thumbnailUrl":{"description":"Thumbnail version of the avatar","type":"string"},"url":{"description":"Primary avatar image URL","type":"string"}},"required":["url"],"type":"object"},"difficulty":{"description":"Difficulty level of the mission","type":"string"},"duration":{"description":"Expected duration of the mission in minutes","type":"number"},"id":{"description":"Unique identifier for the mission","type":"string"},"sagaId":{"description":"Identifier of the saga this mission belongs to","type":"string"},"scenario_description":{"description":"Situational context for the seller entering this roleplay","type":"string"},"taskCount":{"description":"Number of scorecard tasks (items) defined for this mission","maximum":9007199254740991,"minimum":0,"type":"integer"},"title":{"description":"Title of the mission","type":"string"},"trackId":{"description":"Identifier of the track this mission belongs to (if any)","type":"string"},"trackTitle":{"description":"Title of the track this mission belongs to (if any)","type":"string"}},"required":["id","sagaId","title","difficulty","avatar","duration","taskCount"],"type":"object"},"type":"array"},"sagaId":{"description":"The ID of the saga this track belongs to.","type":"string"},"sagaType":{"description":"The type of the saga this track belongs to.","enum":["under_construction","generic","client_specific"],"type":"string"},"status":{"description":"The publication status of the track.","enum":["published","draft","processing","processing_error"],"type":"string"},"title":{"description":"The title of the track.","type":"string"},"visibilityTeamIds":{"description":"Team ids this track is visible to (populated on track reads/lists). Empty means visible to everyone in the organization; resolve team names client-side.","items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":"array"}},"required":["id","title","status","description","learning_outcome","missions","conversation_topic","sagaId","sagaType","language","completionStats"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"TrackContextualizationCallbackDTO":{"properties":{"trackId":{"description":"The CMS ID of the processed track.","type":"string"},"trackName":{"description":"The name of the processed track.","type":"string"},"userId":{"description":"The PropelAuth ID of the user who triggered the processing.","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["userId","trackId","trackName"],"type":"object"},"TrackDuplicateRequestDTO":{"properties":{"contextualize":{"description":"Whether to contextualize the track after duplication","type":"boolean"},"contextualizeOptions":{"description":"Options for contextualization, required if contextualize is true","properties":{"customInstructions":{"description":"Additional custom instructions","type":"string"},"documentIds":{"description":"Optional list of document IDs to use as context","items":{"type":"string"},"type":"array"},"orgDescription":{"description":"Organization description","type":"string"},"orgName":{"description":"Organization name","type":"string"},"personaInstructions":{"description":"Custom persona instructions","type":"string"},"targetAudience":{"description":"Target audience for the track","type":"string"}},"required":["orgName"],"type":"object"},"language":{"description":"Optional language of the track to be duplicated","enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"}},"type":"object"},"TrackDuplicateResponseDTO":{"properties":{"id":{"description":"The unique identifier of the duplicated track.","type":"string"}},"required":["id"],"type":"object"},"TrackFindResponseDTO":{"description":"Paginated response for tracks.","properties":{"data":{"items":{"properties":{"conversation_topic":{"description":"Topics for conversation in the track.","items":{"type":"string"},"type":"array"},"description":{"description":"A description of the track.","type":"string"},"id":{"description":"The unique identifier for the track.","type":"string"},"language":{"enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"},"learning_outcome":{"description":"The overall learning outcome for the whole track — the concrete behaviors or skills a seller will be able to do after completing it.","type":"string"},"missions":{"description":"A list of short missions included in the track.","items":{"properties":{"avatar":{"description":"Avatar images for the mission persona","properties":{"cardUrl":{"description":"Card-sized version of the avatar","type":"string"},"thumbnailUrl":{"description":"Thumbnail version of the avatar","type":"string"},"url":{"description":"Primary avatar image URL","type":"string"}},"required":["url"],"type":"object"},"difficulty":{"description":"Difficulty level of the mission","type":"string"},"duration":{"description":"Expected duration of the mission in minutes","type":"number"},"id":{"description":"Unique identifier for the mission","type":"string"},"sagaId":{"description":"Identifier of the saga this mission belongs to","type":"string"},"scenario_description":{"description":"Situational context for the seller entering this roleplay","type":"string"},"taskCount":{"description":"Number of scorecard tasks (items) defined for this mission","maximum":9007199254740991,"minimum":0,"type":"integer"},"title":{"description":"Title of the mission","type":"string"},"trackId":{"description":"Identifier of the track this mission belongs to (if any)","type":"string"},"trackTitle":{"description":"Title of the track this mission belongs to (if any)","type":"string"}},"required":["id","sagaId","title","difficulty","avatar","duration","taskCount"],"type":"object"},"type":"array"},"sagaId":{"description":"The ID of the saga this track belongs to.","type":"string"},"sagaType":{"description":"The type of the saga this track belongs to.","enum":["under_construction","generic","client_specific"],"type":"string"},"status":{"description":"The publication status of the track.","enum":["published","draft","processing","processing_error"],"type":"string"},"title":{"description":"The title of the track.","type":"string"},"visibilityTeamIds":{"description":"Team ids this track is visible to (populated on track reads/lists). Empty means visible to everyone in the organization; resolve team names client-side.","items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":"array"}},"required":["id","title","status","description","learning_outcome","missions","conversation_topic","sagaId","sagaType","language"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"TrackMoveMissionRequestDTO":{"properties":{"missionId":{"description":"The unique identifier of the mission to move","pattern":"^[0-9a-f]{24}$","type":"string"},"position":{"description":"The position to move the mission relative to the target mission","enum":["before","after"],"type":"string"},"targetMissionId":{"description":"The unique identifier of the target mission to move relative to","pattern":"^[0-9a-f]{24}$","type":"string"}},"required":["missionId","targetMissionId","position"],"type":"object"},"TrackMoveRequestDTO":{"properties":{"position":{"description":"The position to move the track relative to the target track","enum":["before","after"],"type":"string"},"targetTrackId":{"description":"The unique identifier of the target track to move relative to","pattern":"^[0-9a-f]{24}$","type":"string"}},"required":["targetTrackId","position"],"type":"object"},"TrackRemoveMissionRequestDTO":{"properties":{"missionId":{"description":"The unique identifier of the mission to remove from the track","pattern":"^[0-9a-f]{24}$","type":"string"}},"required":["missionId"],"type":"object"},"TrackResponseDTO":{"properties":{"conversation_topic":{"description":"Topics for conversation in the track.","items":{"type":"string"},"type":"array"},"description":{"description":"A description of the track.","type":"string"},"id":{"description":"The unique identifier for the track.","type":"string"},"language":{"enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"},"learning_outcome":{"description":"The overall learning outcome for the whole track — the concrete behaviors or skills a seller will be able to do after completing it.","type":"string"},"missions":{"description":"A list of short missions included in the track.","items":{"properties":{"avatar":{"description":"Avatar images for the mission persona","properties":{"cardUrl":{"description":"Card-sized version of the avatar","type":"string"},"thumbnailUrl":{"description":"Thumbnail version of the avatar","type":"string"},"url":{"description":"Primary avatar image URL","type":"string"}},"required":["url"],"type":"object"},"difficulty":{"description":"Difficulty level of the mission","type":"string"},"duration":{"description":"Expected duration of the mission in minutes","type":"number"},"id":{"description":"Unique identifier for the mission","type":"string"},"sagaId":{"description":"Identifier of the saga this mission belongs to","type":"string"},"scenario_description":{"description":"Situational context for the seller entering this roleplay","type":"string"},"taskCount":{"description":"Number of scorecard tasks (items) defined for this mission","maximum":9007199254740991,"minimum":0,"type":"integer"},"title":{"description":"Title of the mission","type":"string"},"trackId":{"description":"Identifier of the track this mission belongs to (if any)","type":"string"},"trackTitle":{"description":"Title of the track this mission belongs to (if any)","type":"string"}},"required":["id","sagaId","title","difficulty","avatar","duration","taskCount"],"type":"object"},"type":"array"},"sagaId":{"description":"The ID of the saga this track belongs to.","type":"string"},"sagaType":{"description":"The type of the saga this track belongs to.","enum":["under_construction","generic","client_specific"],"type":"string"},"status":{"description":"The publication status of the track.","enum":["published","draft","processing","processing_error"],"type":"string"},"title":{"description":"The title of the track.","type":"string"},"visibilityTeamIds":{"description":"Team ids this track is visible to (populated on track reads/lists). Empty means visible to everyone in the organization; resolve team names client-side.","items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":"array"}},"required":["id","title","status","description","learning_outcome","missions","conversation_topic","sagaId","sagaType","language"],"type":"object"},"TrackUpdateRequestDTO":{"properties":{"conversation_topic":{"description":"Optional conversation topics of the track to be updated","items":{"enum":["prospecting_and_outreach","discovery_and_qualification","pitching_and_presenting","objection_handling","negotiation","customer_retention","expansion","essential_conversational_skills","sales_leadership","customer_support"],"type":"string"},"type":"array"},"description":{"description":"Optional description of the track to be updated","type":"string"},"learning_outcome":{"description":"Optional learning outcome of the track to be updated","type":"string"},"status":{"description":"Optional status of the track to be updated","enum":["published","draft","processing","processing_error"],"type":"string"},"title":{"description":"Optional title of the track to be updated","minLength":1,"type":"string"}},"type":"object"},"TrackVisibilityPreflightRequestDTO":{"properties":{"teamIds":{"description":"The prospective team audience to evaluate. Learners outside these teams would lose access; an empty array means the track stays visible to everyone, so nobody loses access.","items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":"array"}},"required":["teamIds"],"type":"object"},"TrackVisibilityPreflightResponseDTO":{"properties":{"affectedAssignmentCount":{"description":"Number of active (incomplete) assignments held by learners who would lose access if the prospective audience were applied - matches what the restriction revocation flow removes.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["affectedAssignmentCount"],"type":"object"},"TrackVisibilityResponseDTO":{"properties":{"teamIds":{"description":"Team ids that may currently see this track. Empty means the track is visible to everyone in the organization. Resolve team names client-side.","items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":"array"}},"required":["teamIds"],"type":"object"},"TrackVisibilityUpdateRequestDTO":{"properties":{"teamIds":{"description":"Team ids that may see this track. Replaces the existing audience; an empty array makes the track visible to everyone in the organization.","items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":"array"}},"required":["teamIds"],"type":"object"},"UserActivationStatusGetResponseDTO":{"description":"A key-value map of activation checklist items where keys represent activation steps (e.g., \"roleplayCompleted\", \"trackCreated\") and values indicate completion status.","properties":{"catalogVisited":{"type":"boolean"},"gettingStarted.courseCatalogCarouselDismissed":{"type":"boolean"},"gettingStarted.jamStudioCarouselDismissed":{"type":"boolean"},"gettingStarted.teamsCarouselDismissed":{"type":"boolean"},"jamStudio.customizeTrack":{"type":"boolean"},"jamStudio.editMission":{"type":"boolean"},"jamStudio.publishTrack":{"type":"boolean"},"jamStudioOnboarded":{"type":"boolean"},"journeySkipped":{"type":"boolean"},"onboarding.callFeedbackPage":{"type":"boolean"},"onboarding.callMission":{"type":"boolean"},"onboarding.callPage":{"type":"boolean"},"onboarding.callPassCriteria":{"type":"boolean"},"onboarding.courseCatalogPage":{"type":"boolean"},"onboarding.courseCatalogRoleplay":{"type":"boolean"},"onboarding.gettingStartedPage":{"type":"boolean"},"onboarding.homePage":{"type":"boolean"},"onboarding.progressPage":{"type":"boolean"},"onboarding.studioCreateTrack":{"type":"boolean"},"onboarding.studioPage":{"type":"boolean"},"onboarding.teamsInvite":{"type":"boolean"},"onboarding.teamsPage":{"type":"boolean"},"roleplayCompleted":{"type":"boolean"},"sprintCreated":{"type":"boolean"},"teamVisited":{"type":"boolean"},"trackCreated":{"type":"boolean"},"userInvited":{"type":"boolean"}},"type":"object"},"UserActivationStatusPatchRequestDTO":{"properties":{"key":{"description":"The activation checklist item key (e.g., \"roleplayCompleted\", \"trackCreated\", \"userInvited\").","enum":["roleplayCompleted","trackCreated","userInvited","jamStudioOnboarded","jamStudio.customizeTrack","jamStudio.editMission","jamStudio.publishTrack","catalogVisited","teamVisited","sprintCreated","journeySkipped","gettingStarted.courseCatalogCarouselDismissed","gettingStarted.teamsCarouselDismissed","gettingStarted.jamStudioCarouselDismissed","onboarding.homePage","onboarding.callPage","onboarding.progressPage","onboarding.callFeedbackPage","onboarding.callPassCriteria","onboarding.studioPage","onboarding.courseCatalogPage","onboarding.teamsPage","onboarding.courseCatalogRoleplay","onboarding.studioCreateTrack","onboarding.teamsInvite","onboarding.callMission","onboarding.gettingStartedPage"],"type":"string"},"value":{"description":"The completion status for the activation checklist item.","type":"boolean"}},"required":["key","value"],"type":"object"},"UserConsentAcceptRequestDTO":{"properties":{"documentId":{"description":"The id of the consent document being accepted","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"documentVersion":{"description":"The version of the consent document being accepted","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["documentId","documentVersion"],"type":"object"},"UserConsentAdminHistoryResponseDTO":{"properties":{"data":{"items":{"properties":{"acceptedCount":{"description":"Number of live acceptances of this version","maximum":9007199254740991,"minimum":0,"type":"integer"},"documentId":{"description":"The id of the consent document","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"fileName":{"description":"The display name of the document","type":"string"},"isCurrent":{"description":"True iff this row is the current latest consent doc for the org","type":"boolean"},"pendingCount":{"description":"Active org users without a live acceptance of the current version. Only populated for the current row.","maximum":9007199254740991,"minimum":0,"nullable":true,"type":"integer"},"revokedCount":{"description":"Users who revoked this version and have not since accepted the current version","maximum":9007199254740991,"minimum":0,"type":"integer"},"sizeBytes":{"description":"The byte size of the uploaded document","maximum":9007199254740991,"minimum":0,"type":"integer"},"totalUsers":{"description":"Total active org users at query time","maximum":9007199254740991,"minimum":0,"type":"integer"},"uploadedAt":{"description":"When the document was uploaded","format":"date-time","type":"string"},"uploadedBy":{"description":"The user id who uploaded the document","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"version":{"description":"The document version","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["documentId","version","fileName","uploadedAt","uploadedBy","sizeBytes","isCurrent","totalUsers","acceptedCount","revokedCount","pendingCount"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"UserConsentDocumentResponseDTO":{"properties":{"contentSize":{"description":"The size of the consent document content in bytes","maximum":9007199254740991,"minimum":0,"type":"integer"},"createdAt":{"description":"The date and time the consent document was created","format":"date-time","type":"string"},"fileName":{"description":"The name of the consent document file","type":"string"},"id":{"description":"The unique identifier of the consent document","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"lastUpdatedAt":{"description":"The date and time the consent document was last updated","format":"date-time","type":"string"},"organizationId":{"description":"The unique identifier of the owning organization","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"uploadedBy":{"description":"The user ID who uploaded the consent document","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"version":{"description":"Monotonic version number assigned to the consent document","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["id","organizationId","fileName","contentSize","uploadedBy","createdAt","lastUpdatedAt","version"],"type":"object"},"UserConsentHistoryResponseDTO":{"properties":{"data":{"items":{"properties":{"acceptedAt":{"description":"When the user accepted this version","format":"date-time","type":"string"},"documentId":{"description":"The id of the document","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"fileName":{"description":"The display name of the document","type":"string"},"status":{"description":"'active' if it matches the current document and is not revoked; 'revoked' if the user later revoked it; 'superseded' otherwise","enum":["active","superseded","revoked"],"type":"string"},"version":{"description":"The document version","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["documentId","version","fileName","acceptedAt","status"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"UserConsentStatusResponseDTO":{"properties":{"document":{"description":"The current consent document for the org, or null if none is configured","nullable":true,"properties":{"fileName":{"description":"The display name of the document","type":"string"},"id":{"description":"The id of the consent document","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"version":{"description":"The version of the document","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["id","version","fileName"],"type":"object"},"lastAcceptedAt":{"description":"When the caller last accepted a consent document, if ever","format":"date-time","nullable":true,"type":"string"},"lastAcceptedVersion":{"description":"The version of the last consent the caller accepted, if any","exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0,"nullable":true,"type":"integer"},"requiresAcceptance":{"description":"True iff the org requires consent and the caller has not accepted the latest version","type":"boolean"}},"required":["requiresAcceptance","document","lastAcceptedVersion","lastAcceptedAt"],"type":"object"},"UserConsentUploadRequestDTO":{"properties":{"fileName":{"description":"The name of the consent document file","maxLength":255,"minLength":1,"type":"string"}},"required":["fileName"],"type":"object"},"UserExperienceResponseDTO":{"properties":{"firstName":{"description":"The first name of the user.","minLength":1,"type":"string"},"lastName":{"description":"The last name of the user.","minLength":1,"type":"string"},"total":{"description":"The total experience points earned by the user.","maximum":9007199254740991,"minimum":0,"type":"integer"},"userId":{"description":"The unique identifier for the user.","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["userId","total","firstName","lastName"],"type":"object"},"UsersChangeRoleRequestDTO":{"properties":{"roles":{"description":"New roles to assign to the user","items":{"enum":["Owner","Manager","Editor","Member","Assistant User"],"type":"string"},"minItems":1,"type":"array"},"userId":{"description":"User ID to change role in organization","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["userId","roles"],"type":"object"},"UsersFindAllUsersResponseDTO":{"properties":{"data":{"items":{"properties":{"createdAt":{"description":"The date when the user was created","format":"date-time","type":"string"},"email":{"description":"The email address of the user","nullable":true,"type":"string"},"enabled":{"description":"Whether the user account is enabled","type":"boolean"},"firstName":{"description":"The first name of the user","nullable":true,"type":"string"},"id":{"description":"The unique identifier of the user","type":"string"},"lastLoginDate":{"description":"The date when the user last logged in. Omitted from the response when the user has never logged in.","format":"date-time","nullable":true,"type":"string"},"lastName":{"description":"The last name of the user","nullable":true,"type":"string"},"pictureUrl":{"description":"The profile picture URL of the user","nullable":true,"type":"string"},"roles":{"description":"The roles of the user in the organization","items":{"enum":["Owner","Manager","Editor","Member","Assistant User"],"type":"string"},"nullable":true,"type":"array"},"teams":{"default":[],"description":"The teams the user belongs to","items":{"properties":{"id":{"description":"The unique identifier of the team","type":"string"},"name":{"description":"The name of the team","type":"string"}},"required":["id","name"],"type":"object"},"type":"array"}},"required":["id","enabled","createdAt"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"UsersGetUserResponseDTO":{"properties":{"createdAt":{"description":"The date when the user was created","format":"date-time","type":"string"},"email":{"description":"The email address of the user","nullable":true,"type":"string"},"enabled":{"description":"Whether the user account is enabled","type":"boolean"},"firstName":{"description":"The first name of the user","nullable":true,"type":"string"},"id":{"description":"The unique identifier of the user","type":"string"},"lastLoginDate":{"description":"The date when the user last logged in. Omitted from the response when the user has never logged in.","format":"date-time","nullable":true,"type":"string"},"lastName":{"description":"The last name of the user","nullable":true,"type":"string"},"pictureUrl":{"description":"The profile picture URL of the user","nullable":true,"type":"string"},"roles":{"description":"The roles of the user in the organization","items":{"enum":["Owner","Manager","Editor","Member","Assistant User"],"type":"string"},"nullable":true,"type":"array"},"teams":{"default":[],"description":"The teams the user belongs to","items":{"properties":{"id":{"description":"The unique identifier of the team","type":"string"},"name":{"description":"The name of the team","type":"string"}},"required":["id","name"],"type":"object"},"type":"array"}},"required":["id","enabled","createdAt"],"type":"object"},"VoiceAgentIssueSttTokenResponseDTO":{"properties":{"expiresIn":{"description":"Token time-to-live in seconds","type":"number"},"token":{"description":"Single-use ElevenLabs realtime STT token","type":"string"}},"required":["token","expiresIn"],"type":"object"},"VoiceAgentRefreshWebrtcTokenRequestDTO":{"properties":{"agentId":{"description":"The provisioned ElevenLabs agent id","minLength":1,"type":"string"}},"required":["agentId"],"type":"object"},"VoiceAgentRefreshWebrtcTokenResponseDTO":{"properties":{"conversationToken":{"description":"WebRTC token the client uses to join the ElevenLabs session","type":"string"}},"required":["conversationToken"],"type":"object"},"VoiceAgentRequestDTO":{"properties":{"conversationId":{"description":"Chat id the voice session belongs to (tagged on the agent)","minLength":1,"type":"string"},"isDemo":{"default":false,"description":"Demo mode provisions an agent with no connected tools","type":"boolean"}},"required":["conversationId"],"type":"object"},"VoiceAgentResponseDTO":{"properties":{"agentId":{"description":"The provisioned ElevenLabs agent id","type":"string"},"conversationToken":{"description":"WebRTC token the client uses to join the ElevenLabs session","type":"string"}},"required":["conversationToken","agentId"],"type":"object"},"VoicesFindResponseDTO":{"properties":{"data":{"items":{"properties":{"age":{"type":"number"},"gender":{"enum":["male","female"],"type":"string"},"id":{"type":"string"},"language":{"enum":["en","de","fr","es","it","nl","pl","zh","ja","id","tr","pt","el","ko","vi","hi","ms","th","hr","ro","bg","sv","no","yue"],"type":"string"},"preview_url":{"description":"ElevenLabs voice preview URL","type":"string"},"tag":{"nullable":true,"type":"string"},"voice_id":{"type":"string"}},"required":["id","voice_id","age","gender","language"],"type":"object"},"type":"array"},"meta":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"number"},"page":{"type":"number"},"total":{"type":"number"}},"required":["total","page","limit","hasNext"],"type":"object"}},"required":["data","meta"],"type":"object"},"VoicesSampleResponseDTO":{"properties":{"age":{"type":"number"},"gender":{"enum":["male","female"],"type":"string"},"id":{"type":"string"},"language":{"enum":["en","de","fr","es","it","nl","pl","zh","ja","id","tr","pt","el","ko","vi","hi","ms","th","hr","ro","bg","sv","no","yue"],"type":"string"},"tag":{"nullable":true,"type":"string"},"voice_id":{"type":"string"}},"required":["id","voice_id","age","gender","language"],"type":"object"},"WebhookConnectionTestResponseDTO":{"properties":{"httpStatus":{"description":"HTTP status returned by the remote target.","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"latencyMs":{"description":"Round-trip latency in milliseconds (request → response).","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["httpStatus","latencyMs"],"type":"object"},"WebhookPublisherCreateRequestDTO":{"oneOf":[{"properties":{"active":{"default":true,"description":"When false, no events are emitted through this publisher. The configuration is preserved.","type":"boolean"},"clientType":{"enum":["xapi"],"type":"string"},"config":{"properties":{"actorIfiMode":{"description":"Actor IFI mode: \"mbox\" sends learner emails to the LRS; \"mbox_sha1sum\" sends a hex SHA-1 of mailto:<email>.","enum":["mbox","mbox_sha1sum"],"type":"string"},"authBasicKey":{"default":"","description":"HTTP Basic Auth key (LRS-issued). Basic auth mode only.","type":"string"},"authBasicSecret":{"default":"","description":"HTTP Basic Auth secret (LRS-issued). Basic auth mode only.","type":"string"},"authMode":{"default":"basic","description":"How to authenticate against the LRS: HTTP Basic, or an OAuth 2.0 client-credentials bearer token.","enum":["basic","oauth2_client_credentials"],"type":"string"},"lrsEndpointUrl":{"description":"Customer LRS xAPI endpoint, e.g. https://lrs.customer.com/xapi/","format":"uri","type":"string"},"oauthClientId":{"default":"","description":"OAuth 2.0 client id issued by the LRS provider.","type":"string"},"oauthClientSecret":{"default":"","description":"OAuth 2.0 client secret issued by the LRS provider.","type":"string"},"oauthScope":{"default":"","description":"Optional OAuth 2.0 scope. The scope parameter is always sent; an empty string sends it blank.","type":"string"},"oauthTokenUrl":{"default":"","description":"OAuth 2.0 token endpoint issuing the client-credentials bearer token.","type":"string"}},"required":["lrsEndpointUrl","actorIfiMode"],"type":"object"},"name":{"description":"Admin-supplied label for this publisher.","maxLength":255,"minLength":1,"type":"string"}},"required":["clientType","name","config"],"type":"object"}]},"WebhookPublisherResponseDTO":{"oneOf":[{"properties":{"active":{"type":"boolean"},"clientType":{"enum":["xapi"],"type":"string"},"config":{"properties":{"actorIfiMode":{"enum":["mbox","mbox_sha1sum"],"type":"string"},"authMode":{"enum":["basic","oauth2_client_credentials"],"type":"string"},"lrsEndpointUrl":{"format":"uri","type":"string"},"oauthScope":{"type":"string"},"oauthTokenUrl":{"type":"string"}},"required":["authMode","lrsEndpointUrl","oauthTokenUrl","oauthScope","actorIfiMode"],"type":"object"},"createdAt":{"format":"date-time","type":"string"},"id":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"lastSuccessfulDeliveryAt":{"format":"date-time","nullable":true,"type":"string"},"lastUpdatedAt":{"format":"date-time","type":"string"},"name":{"type":"string"},"organizationId":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"pausedReason":{"nullable":true,"type":"string"}},"required":["id","organizationId","name","active","pausedReason","lastSuccessfulDeliveryAt","createdAt","lastUpdatedAt","clientType","config"],"type":"object"}]},"WebhookPublisherUpdateRequestDTO":{"oneOf":[{"properties":{"active":{"description":"When false, no events are emitted through this publisher. The configuration is preserved.","type":"boolean"},"clientType":{"enum":["xapi"],"type":"string"},"config":{"description":"Partial config patch — fields are merged onto the stored config before re-validation. Omit fields you do not want to change.","properties":{"actorIfiMode":{"description":"Actor IFI mode: \"mbox\" sends learner emails to the LRS; \"mbox_sha1sum\" sends a hex SHA-1 of mailto:<email>.","enum":["mbox","mbox_sha1sum"],"type":"string"},"authBasicKey":{"description":"HTTP Basic Auth key (LRS-issued). Empty string = keep the stored credential.","type":"string"},"authBasicSecret":{"description":"HTTP Basic Auth secret (LRS-issued). Empty string = keep the stored credential.","type":"string"},"authMode":{"description":"How to authenticate against the LRS: HTTP Basic, or an OAuth 2.0 client-credentials bearer token.","enum":["basic","oauth2_client_credentials"],"type":"string"},"lrsEndpointUrl":{"description":"Customer LRS xAPI endpoint, e.g. https://lrs.customer.com/xapi/","format":"uri","type":"string"},"oauthClientId":{"description":"OAuth 2.0 client id. Empty string = keep the stored credential.","type":"string"},"oauthClientSecret":{"description":"OAuth 2.0 client secret. Empty string = keep the stored credential.","type":"string"},"oauthScope":{"description":"Optional OAuth 2.0 scope. The scope parameter is always sent; an empty string sends it blank.","type":"string"},"oauthTokenUrl":{"description":"OAuth 2.0 token endpoint issuing the client-credentials bearer token. Empty string when the publisher is not in OAuth mode; the merged config is re-validated, so the URL rules apply there.","type":"string"}},"type":"object"},"name":{"description":"Admin-supplied label for this publisher.","maxLength":255,"minLength":1,"type":"string"}},"required":["clientType"],"type":"object"}]},"WhoAmIResponseDTO":{"properties":{"email":{"nullable":true,"type":"string"},"firstName":{"nullable":true,"type":"string"},"id":{"type":"string"},"lastName":{"nullable":true,"type":"string"},"orgId":{"type":"string"},"pictureUrl":{"nullable":true,"type":"string"}},"required":["id","orgId"],"type":"object"}},"securitySchemes":{"X-API-KEY":{"in":"header","name":"X-API-KEY","type":"apiKey"},"bearer":{"bearerFormat":"JWT","description":"Enter your Bearer token","scheme":"bearer","type":"http"}}},"info":{"contact":{},"description":"API description","title":"JAM","version":"0.0.1"},"openapi":"3.0.0","paths":{"/.well-known/oauth-authorization-server":{"get":{"description":"Proxies the OAuth 2.1 authorization server metadata from PropelAuth, including the dynamic client registration endpoint required by MCP clients.","operationId":"OAuthMetadataController_getAuthorizationServerMetadata","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthMetadataGetAuthorizationServerMetadataResponseDTO"}}},"description":"Authorization Server Metadata"}},"summary":"Get Authorization Server Metadata","tags":["oauth2","metadata"]}},"/.well-known/oauth-protected-resource":{"get":{"description":"Returns metadata about this OAuth 2.0 protected resource as defined in RFC 9728. This endpoint provides information about supported scopes, authorization servers, and other resource capabilities.","operationId":"OAuthMetadataController_getProtectedResourceMetadata","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthMetadataGetProtectedResourceMetadataResponseDTO"}}},"description":"OAuth 2.0 Protected Resource Metadata"}},"summary":"Get OAuth 2.0 Protected Resource Metadata","tags":["oauth2","metadata"]}},"/.well-known/oauth-protected-resource/mcp":{"get":{"description":"RFC 9728 path-aware discovery for the /mcp resource. Returns the same metadata as the root well-known endpoint.","operationId":"OAuthMetadataController_getMcpSuffixProtectedResourceMetadata","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthMetadataGetProtectedResourceMetadataResponseDTO"}}},"description":"OAuth 2.0 Protected Resource Metadata"}},"summary":"Get OAuth 2.0 Protected Resource Metadata (MCP path-suffix)","tags":["oauth2","metadata"]}},"/api/v1/activity-performance/session-stats":{"get":{"operationId":"ActivityPerformanceController_getSessionStats_v1","parameters":[{"description":"Optional. Restrict stats to members of this team. Omit to include all manageable teams.","in":"query","name":"teamId","required":false,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"description":"Optional. Restrict stats to members of these teams. Omit to include all manageable teams.","in":"query","name":"teamIds","required":false,"schema":{"items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":"array"}},{"description":"Optional. Restrict stats to specific learner UUIDs. Omit to include all manageable learners.","in":"query","name":"userIds","required":false,"schema":{"items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":"array"}},{"description":"Optional. Restrict stats to sessions on missions belonging to these tracks (resolved server-side). Blank/whitespace entries are dropped; an all-empty list is treated as no filter. Omit to include all tracks.","in":"query","name":"trackIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Optional. Restrict stats to sessions on these missions directly. Takes precedence over trackIds when provided (no server-side track resolution). Blank/whitespace entries are dropped; an all-empty list is treated as no filter. Omit to derive missions from trackIds, or to include all missions.","in":"query","name":"missionIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Optional. Inclusive lower bound (>=) on the session create date, ISO 8601. Omit for no lower bound.","in":"query","name":"fromDate","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Optional. Inclusive upper bound (<=) on the session create date, ISO 8601. Omit for no upper bound.","in":"query","name":"toDate","required":false,"schema":{"format":"date-time","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityPerformanceGetSessionStatsResponseDTO"}}},"description":""}},"summary":"Get session statistics for activity performance","tags":["dashboard","bff"]}},"/api/v1/assignment-history":{"get":{"operationId":"AssignmentHistoryController_find_v1","parameters":[{"description":"Array of IDs to filter results. To skip this filter, omit the key entirely from your JSON. Never write the bare word `undefined` (that is invalid JSON). Empty arrays and null are also treated as omission.","in":"query","name":"ids","required":false,"schema":{"items":{"type":"string"},"nullable":true,"type":"array"}},{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"description":"Optional. Filter assignments to specific learner UUIDs. Omit to include all learners.","in":"query","name":"userIds","required":false,"schema":{"items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":"array"}},{"description":"Optional. Filter by allocation type (e.g. track vs mission). Omit to include all types.","in":"query","name":"type","required":false,"schema":{"enum":["autoTrackAllocation","track","managerAssigned","refresher","sprint","selfEnrolled"],"type":"string"}},{"description":"Optional. Restrict to allocations of these tracks or their missions.","in":"query","name":"trackIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Optional. Inclusive lower bound (>=) on the assignment due date, as an ISO 8601 date-time string. Assignments due on/after this instant are included. Omit for no lower bound.","in":"query","name":"dueDateAfter","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Optional. Exclusive upper bound (<) on the assignment due date, as an ISO 8601 date-time string. Assignments due strictly before this instant are included. Omit for no upper bound.","in":"query","name":"dueDateBefore","required":false,"schema":{"format":"date-time","type":"string"}},{"in":"query","name":"order","required":false,"schema":{"properties":{"createdAt":{"enum":["ASC","DESC"],"type":"string"},"dueDate":{"enum":["ASC","DESC"],"type":"string"},"lastUpdatedAt":{"enum":["ASC","DESC"],"type":"string"}},"type":"object"},"style":"deepObject"}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignmentHistoryFindResponseDTO"}}},"description":""}},"summary":"List assignment history with pagination","tags":["content-allocation"]}},"/api/v1/assignments":{"get":{"operationId":"AssignmentController_find_v1","parameters":[{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"description":"Optional. Filter assignments to specific learner UUIDs. Omit to include all learners.","in":"query","name":"userIds","required":false,"schema":{"items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":"array"}},{"description":"Optional. Filter by allocation type (e.g. track vs mission). Omit to include all types.","in":"query","name":"type","required":false,"schema":{"enum":["autoTrackAllocation","track","managerAssigned","refresher","sprint","selfEnrolled"],"type":"string"}},{"description":"Optional. Filter by allocation state(s). Omit to include all states.","in":"query","name":"state","required":false,"schema":{"items":{"enum":["notStarted","started","completed"],"type":"string"},"type":"array"}},{"description":"Optional. Filter by referenced content (track or mission). Omit to include all references.","in":"query","name":"reference","required":false,"schema":{"properties":{"id":{"type":"string"},"type":{"enum":["mission","track"],"type":"string"}},"type":"object"},"style":"deepObject"},{"description":"Optional. Restrict to allocations of these tracks or their missions.","in":"query","name":"trackIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Optional. Inclusive lower bound (>=) on the assignment due date, as an ISO 8601 date-time string. Assignments due on/after this instant are included. Omit for no lower bound.","in":"query","name":"dueDateAfter","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Optional. Exclusive upper bound (<) on the assignment due date, as an ISO 8601 date-time string. Assignments due strictly before this instant are included. Omit for no upper bound.","in":"query","name":"dueDateBefore","required":false,"schema":{"format":"date-time","type":"string"}},{"in":"query","name":"order","required":false,"schema":{"properties":{"createdAt":{"enum":["ASC","DESC"],"type":"string"},"dueDate":{"enum":["ASC","DESC"],"type":"string"},"lastUpdatedAt":{"enum":["ASC","DESC"],"type":"string"}},"type":"object"},"style":"deepObject"}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignmentFindResponseDTO"}}},"description":""}},"summary":"List content assignments with pagination","tags":["content-allocation"]},"post":{"operationId":"AssignmentController_create_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignmentCreateRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AssignmentCreateResponseDTO"},"type":"array"}}},"description":""}},"summary":"Assign content to users","tags":["content-allocation"]}},"/api/v1/assignments-overview":{"get":{"operationId":"AssignmentsOverviewController_find_v1","parameters":[{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"description":"Optional. Restrict to one team. Reaches a sprint through the team it was assigned to, and a 1:1 assignment through the learners of that team. Omit for every team the caller manages.","in":"query","name":"teamId","required":false,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"description":"Optional. Keep only assignments reaching at least one of these learners. Omit to include all learners.","in":"query","name":"memberIds","required":false,"schema":{"items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":"array"}},{"description":"Optional. Restrict to these tracks, including mission assignments whose parent track is one of them. Omit to include all content.","in":"query","name":"trackIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Optional. Inclusive lower bound (>=) on the deadline, as an ISO 8601 date-time string. Omit for no lower bound.","in":"query","name":"dueDateAfter","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Optional. Inclusive upper bound (<=) on the deadline, as an ISO 8601 date-time string. An assignment due exactly on the bound is inside the range. Omit for no upper bound.","in":"query","name":"dueDateBefore","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Optional. Sort configuration. Content title and completion are not sortable: titles live in the CMS, and completion needs a CMS mission count on 1:1 rows, so neither can be ordered in SQL. Defaults to the newest deadline first, with deadline-less assignments last.","in":"query","name":"order","required":false,"schema":{"properties":{"dueDate":{"enum":["ASC","DESC"],"type":"string"},"referenceType":{"enum":["ASC","DESC"],"type":"string"},"startDate":{"enum":["ASC","DESC"],"type":"string"},"status":{"enum":["ASC","DESC"],"type":"string"}},"type":"object"},"style":"deepObject"}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignmentsOverviewFindResponseDTO"}}},"description":""}},"summary":"List team sprints and 1:1 assignments as one paginated list","tags":["dashboard","bff"]}},"/api/v1/assignments/skip/{contentAllocationId}":{"patch":{"operationId":"AssignmentController_skipRefresher_v1","parameters":[{"description":"The unique identifier for the content allocation","in":"path","name":"contentAllocationId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"description":""}},"summary":"Skip a refresher for a content allocation","tags":["content-allocation"]}},"/api/v1/assignments/{contentAllocationId}":{"delete":{"operationId":"AssignmentController_remove_v1","parameters":[{"description":"The unique identifier for the content allocation","in":"path","name":"contentAllocationId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignmentDeleteResponseDTO"}}},"description":""}},"summary":"Remove an open content assignment","tags":["content-allocation"]}},"/api/v1/assistant/chat":{"post":{"operationId":"AssistantController_chat_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssistantChatRequestDTO"}}},"required":true},"responses":{"201":{"description":""}},"summary":"Stream an AI-assistant chat turn","tags":["Assistant"]}},"/api/v1/assistant/voice/agent":{"post":{"operationId":"VoiceAgentController_createAgent_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceAgentRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceAgentResponseDTO"}}},"description":""}},"summary":"Provision a voice agent and return a WebRTC token","tags":["assistant"]}},"/api/v1/assistant/voice/stt-token":{"post":{"operationId":"VoiceAgentController_issueSttToken_v1","parameters":[],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceAgentIssueSttTokenResponseDTO"}}},"description":""}},"summary":"Issue a single-use ElevenLabs realtime STT token","tags":["assistant"]}},"/api/v1/assistant/voice/webrtc-token":{"post":{"operationId":"VoiceAgentController_refreshWebrtcToken_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceAgentRefreshWebrtcTokenRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceAgentRefreshWebrtcTokenResponseDTO"}}},"description":""}},"summary":"Refresh the WebRTC token for an existing voice agent","tags":["assistant"]}},"/api/v1/avatars":{"get":{"operationId":"AvatarsController_findAvatars_v1","parameters":[{"description":"Array of IDs to filter results. To skip this filter, omit the key entirely from your JSON. Never write the bare word `undefined` (that is invalid JSON). Empty arrays and null are also treated as omission.","in":"query","name":"ids","required":false,"schema":{"items":{"type":"string"},"nullable":true,"type":"array"}},{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"description":"Order configuration as a key-value object where keys are field names and values are \"ASC\" or \"DESC\".","in":"query","name":"order","required":false,"schema":{"additionalProperties":{"enum":["ASC","DESC"],"type":"string"},"type":"object"},"style":"deepObject"},{"description":"Filter avatars by gender","in":"query","name":"gender","required":false,"schema":{"enum":["male","female"],"type":"string"}},{"description":"Filter avatars by age bracket","in":"query","name":"age","required":false,"schema":{"enum":["young","middle-aged","senior"],"type":"string"}},{"description":"Filter avatars by reusability for AI-generated personas","in":"query","name":"reusable","required":false,"schema":{"type":"boolean"}},{"description":"Filter avatars by saga — returns global avatars (no saga) plus avatars restricted to this saga","in":"query","name":"sagaId","required":false,"schema":{"type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AvatarsFindResponseDTO"}}},"description":""}},"summary":"List available avatars","tags":["cms"]}},"/api/v1/avatars/upload":{"post":{"operationId":"AvatarsController_uploadAvatar_v1","parameters":[],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/AvatarsUploadRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AvatarsUploadResponseDTO"}}},"description":""}},"summary":"Upload a new avatar image","tags":["cms"]}},"/api/v1/certification-analytics":{"get":{"operationId":"CertificationAnalyticsController_find_v1","parameters":[{"description":"Array of IDs to filter results. To skip this filter, omit the key entirely from your JSON. Never write the bare word `undefined` (that is invalid JSON). Empty arrays and null are also treated as omission.","in":"query","name":"ids","required":false,"schema":{"items":{"type":"string"},"nullable":true,"type":"array"}},{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"description":"Order configuration as a key-value object where keys are field names and values are \"ASC\" or \"DESC\".","in":"query","name":"order","required":false,"schema":{"additionalProperties":{"enum":["ASC","DESC"],"type":"string"},"type":"object"},"style":"deepObject"},{"in":"query","name":"userIds","required":false,"schema":{"items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":"array"}},{"in":"query","name":"teamId","required":false,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"in":"query","name":"trackReferenceIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"in":"query","name":"certificationDateFrom","required":false,"schema":{"format":"date-time","type":"string"}},{"in":"query","name":"certificationDateTo","required":false,"schema":{"format":"date-time","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CertificationAnalyticsFindResponseDTO"}}},"description":""}},"summary":"List certification analytics with pagination","tags":["dashboard","bff"]}},"/api/v1/certifications":{"get":{"operationId":"CertificationsController_find_v1","parameters":[{"description":"Array of IDs to filter results. To skip this filter, omit the key entirely from your JSON. Never write the bare word `undefined` (that is invalid JSON). Empty arrays and null are also treated as omission.","in":"query","name":"ids","required":false,"schema":{"items":{"type":"string"},"nullable":true,"type":"array"}},{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"description":"Order configuration as a key-value object where keys are field names and values are \"ASC\" or \"DESC\".","in":"query","name":"order","required":false,"schema":{"additionalProperties":{"enum":["ASC","DESC"],"type":"string"},"type":"object"},"style":"deepObject"},{"description":"Optional. Filter certifications to a single learner (UUID). Omit to include certifications from all learners.","in":"query","name":"userId","required":false,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"description":"Optional. Filter certifications to learners in a single team (UUID). Omit to include all teams.","in":"query","name":"teamId","required":false,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"description":"Optional. Filter certifications to specific tracks by their reference IDs. Omit to include certifications across all tracks.","in":"query","name":"trackReferenceIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"in":"query","name":"certificationDateFrom","required":false,"schema":{"format":"date-time","type":"string"}},{"in":"query","name":"certificationDateTo","required":false,"schema":{"format":"date-time","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CertificationsFindResponseDTO"}}},"description":""}},"summary":"List certifications with filters","tags":["certification"]}},"/api/v1/certifications/{certificationId}":{"get":{"operationId":"CertificationsController_findOne_v1","parameters":[{"description":"The unique identifier for the certification.","in":"path","name":"certificationId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CertificationsFindOneResponseDTO"}}},"description":""}},"summary":"Get a certification by ID","tags":["certification"]}},"/api/v1/chat-dashboard/contributions":{"get":{"operationId":"ChatDashboardController_contributions_v1","parameters":[{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"description":"Array of IDs to filter results. To skip this filter, omit the key entirely from your JSON. Never write the bare word `undefined` (that is invalid JSON). Empty arrays and null are also treated as omission.","in":"query","name":"ids","required":false,"schema":{"items":{"type":"string"},"nullable":true,"type":"array"}},{"description":"Optional. Restrict the ranking to this team (JAP-5701). Combined with `ids` as an intersection.","in":"query","name":"teamId","required":false,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"description":"Sort order for the activity table. Keys are column names (\"totalCallsAndSessions\", \"callCount\", \"sessionCount\", \"totalToolCallMessages\"), values are \"ASC\" or \"DESC\". `user` is not sortable.","in":"query","name":"order","required":false,"schema":{"properties":{"callCount":{"enum":["ASC","DESC"],"type":"string"},"sessionCount":{"enum":["ASC","DESC"],"type":"string"},"totalCallsAndSessions":{"enum":["ASC","DESC"],"type":"string"},"totalToolCallMessages":{"enum":["ASC","DESC"],"type":"string"}},"type":"object"},"style":"deepObject"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatDashboardContributionsResponseDTO"}}},"description":""}},"summary":"Per-user assistant activity, one page at a time","tags":["chat","dashboard"]}},"/api/v1/chat-dashboard/owner":{"get":{"operationId":"ChatDashboardController_ownerDashboard_v1","parameters":[{"description":"Optional. Restrict the aggregates to this team.","in":"query","name":"teamId","required":false,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatDashboardOwnerDashboardResponseDTO"}}},"description":""}},"summary":"Owner dashboard: team activity, contributions, trends","tags":["chat","dashboard"]}},"/api/v1/chat-review/chats":{"get":{"operationId":"ChatReviewController_findUserChats_v1","parameters":[{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"description":"The user whose chats should be reviewed","in":"query","name":"userId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatReviewChatsResponseDTO"}}},"description":""}},"summary":"Review one user's assistant sessions","tags":["chat"]}},"/api/v1/chat-review/chats/{id}":{"get":{"operationId":"ChatReviewController_getUserChat_v1","parameters":[{"description":"Chat id","in":"path","name":"id","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatWithMessagesResponseDTO"}}},"description":""}},"summary":"Review one of a user's sessions and its messages","tags":["chat"]}},"/api/v1/chat-review/resolve/{id}":{"get":{"operationId":"ChatReviewController_resolveChat_v1","parameters":[{"description":"Chat id, or the originating provider's conversation id","in":"path","name":"id","required":true,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatReviewResolveResponseDTO"}}},"description":""}},"summary":"Resolve a shared conversation link","tags":["chat"]}},"/api/v1/chat-review/tenant":{"get":{"operationId":"ChatReviewController_resolveReviewTenant_v1","parameters":[{"description":"The user whose sessions are to be reviewed","in":"query","name":"userId","required":false,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"description":"Chat id, or the originating provider's conversation id","in":"query","name":"chatId","required":false,"schema":{"maxLength":255,"minLength":1,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatReviewTenantResponseDTO"}}},"description":""}},"summary":"Resolve the organization to review within","tags":["chat"]}},"/api/v1/chat-support":{"post":{"operationId":"ChatsupportController_chat_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatSupportRequestDTO"}}},"required":true},"responses":{"201":{"description":""}},"summary":"Send a chat support message and stream response","tags":["chat-support"]}},"/api/v1/chats":{"get":{"operationId":"ChatController_listChats_v1","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatListResponseDTO"}}},"description":""}},"summary":"List the current user's chats","tags":["chat"]}},"/api/v1/chats/{id}":{"get":{"operationId":"ChatController_getChat_v1","parameters":[{"description":"Chat id","in":"path","name":"id","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatWithMessagesResponseDTO"}}},"description":""}},"summary":"Get a chat and its messages","tags":["chat"]},"patch":{"operationId":"ChatController_updateChat_v1","parameters":[{"description":"Chat id","in":"path","name":"id","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatUpdateRequestDTO"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatUpdateResponseDTO"}}},"description":""}},"summary":"Record feedback on a chat","tags":["chat"]}},"/api/v1/chats/{id}/turns":{"post":{"operationId":"ChatController_saveTurn_v1","parameters":[{"description":"Chat id","in":"path","name":"id","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatTurnRequestDTO"}}},"required":true},"responses":{"204":{"description":""}},"summary":"Persist a finished chat turn","tags":["chat"]}},"/api/v1/comments":{"get":{"operationId":"CommentController_find_v1","parameters":[{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"description":"Order configuration as a key-value object where keys are field names and values are \"ASC\" or \"DESC\".","in":"query","name":"order","required":false,"schema":{"additionalProperties":{"enum":["ASC","DESC"],"type":"string"},"type":"object"},"style":"deepObject"},{"description":"Filter comments by reference ID","in":"query","name":"referenceId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentFindResponseDTO"}}},"description":""}},"summary":"List comments with filters","tags":["comment"]},"post":{"operationId":"CommentController_create_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentCreateRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentCreateResponseDTO"}}},"description":""}},"summary":"Create a new comment","tags":["comment"]}},"/api/v1/comments/{id}":{"delete":{"operationId":"CommentController_delete_v1","parameters":[{"description":"Unique identifier of the comment","in":"path","name":"id","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentDeleteResponseDTO"}}},"description":""}},"summary":"Soft-delete a comment by ID","tags":["comment"]},"get":{"operationId":"CommentController_get_v1","parameters":[{"description":"Unique identifier of the comment","in":"path","name":"id","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentGetResponseDTO"}}},"description":""}},"summary":"Get a comment by ID","tags":["comment"]},"patch":{"operationId":"CommentController_update_v1","parameters":[{"description":"Unique identifier of the comment","in":"path","name":"id","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentUpdateRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentUpdateResponseDTO"}}},"description":""}},"summary":"Update a comment by ID","tags":["comment"]}},"/api/v1/connected-tools":{"get":{"operationId":"ConnectedToolsController_list_v1","parameters":[],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectedToolsListResponseDTO"}}},"description":""}},"summary":"List the current user's connected tools and their status","tags":["connected-tools"]}},"/api/v1/content-access/{organizationId}":{"get":{"operationId":"ContentAccessController_getContentAccess_v1","parameters":[{"description":"The unique identifier of the organization","in":"path","name":"organizationId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentAccessResponseDTO"}}},"description":""}},"summary":"Get an organization's saga content-access grants","tags":["cms"]},"put":{"operationId":"ContentAccessController_updateContentAccess_v1","parameters":[{"description":"The unique identifier of the organization","in":"path","name":"organizationId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentAccessUpdateRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentAccessResponseDTO"}}},"description":""}},"summary":"Replace an organization's saga content-access grants per level. An omitted level is left untouched; an empty list revokes the level.","tags":["cms"]}},"/api/v1/content-allocation/sync":{"post":{"operationId":"SyncController_assignContent_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncRecalculateRequestDTO"}}},"required":true},"responses":{"201":{"description":""}},"summary":"Recalculate and sync content allocation","tags":["content-allocation"]}},"/api/v1/content-generation":{"post":{"operationId":"ContentGenerationCopilotController_chat_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentGenerationChatRequestDTO"}}},"required":true},"responses":{"201":{"description":""}},"summary":"Stream a content generation copilot chat response","tags":["ContentGenerationCopilot"]}},"/api/v1/content-generation/drafts/{draftId}":{"get":{"operationId":"ContentDraftController_getDraftPreview_v1","parameters":[{"description":"The unique identifier for the draft","in":"path","name":"draftId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentDraftPreviewResponseDTO"}}},"description":""}},"summary":"Get a content draft rendered for preview","tags":["content-generation"]}},"/api/v1/contextualization/track-contextualization/failed":{"post":{"operationId":"TrackContextualizationCallbackController_trackContextualizationFailed_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackContextualizationCallbackDTO"}}},"required":true},"responses":{"204":{"description":""}},"summary":"Callback when track contextualization failed","tags":["contextualization"]}},"/api/v1/contextualization/track-contextualization/ready":{"post":{"operationId":"TrackContextualizationCallbackController_trackContextualizationReady_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackContextualizationCallbackDTO"}}},"required":true},"responses":{"204":{"description":""}},"summary":"Callback when track contextualization succeeded","tags":["contextualization"]}},"/api/v1/contextualization/track-translation/failed":{"post":{"operationId":"TrackContextualizationCallbackController_trackTranslationFailed_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackContextualizationCallbackDTO"}}},"required":true},"responses":{"204":{"description":""}},"summary":"Callback when track translation failed","tags":["contextualization"]}},"/api/v1/contextualization/track-translation/ready":{"post":{"operationId":"TrackContextualizationCallbackController_trackTranslationReady_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackContextualizationCallbackDTO"}}},"required":true},"responses":{"204":{"description":""}},"summary":"Callback when track translation succeeded","tags":["contextualization"]}},"/api/v1/conversation/elevenlabs-maker-session":{"post":{"operationId":"ConversationController_createMakerSession_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationMissionInputDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationCreateMakerSessionResponseDTO"}}},"description":""}},"summary":"Create an ElevenLabs maker conversation session","tags":["conversation"]}},"/api/v1/conversation/elevenlabs-maker-session/{agentId}":{"delete":{"operationId":"ConversationController_deleteAdHocMakerSession_v1","parameters":[{"description":"The ElevenLabs agent identifier to delete.","in":"path","name":"agentId","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":""}},"summary":"Delete an ad-hoc ElevenLabs maker session","tags":["conversation"]}},"/api/v1/credentials/providers":{"get":{"operationId":"CredentialController_getConnectedProviders_v1","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialConnectedProvidersResponseDTO"}}},"description":""}},"summary":"List providers the user has connected","tags":["credential"]}},"/api/v1/credentials/{provider}":{"delete":{"operationId":"CredentialController_deleteProvider_v1","parameters":[{"description":"Credential provider","in":"path","name":"provider","required":true,"schema":{"enum":["hubspot","salesforce","salesforce_sandbox"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialStatusResponseDTO"}}},"description":""}},"summary":"Delete stored credentials for a provider","tags":["credential"]}},"/api/v1/credentials/{provider}/authorization-url":{"get":{"operationId":"CredentialController_getAuthorizationUrl_v1","parameters":[{"description":"Credential provider","in":"path","name":"provider","required":true,"schema":{"enum":["hubspot","salesforce","salesforce_sandbox"],"type":"string"}},{"description":"Optional login URL override for the provider","in":"query","name":"loginUrl","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialAuthorizationUrlResponseDTO"}}},"description":""}},"summary":"Build the provider authorization URL to start OAuth","tags":["credential"]}},"/api/v1/data-exports/mission-assignments":{"get":{"operationId":"DataExportController_findMissionAssignments_v1","parameters":[{"description":"Page number starting from 1","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page. Maximum is 100","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataExportFindMissionAssignmentsResponseDTO"}}},"description":""}},"summary":"Export paginated mission assignments data","tags":["data-export"]}},"/api/v1/data-exports/missions":{"get":{"operationId":"DataExportController_findMissions_v1","parameters":[{"description":"Page number starting from 1","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page. Maximum is 100","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataExportFindMissionsResponseDTO"}}},"description":""}},"summary":"Export paginated missions data","tags":["data-export"]}},"/api/v1/data-exports/real-call-sessions":{"get":{"operationId":"DataExportController_findRealCallSessions_v1","parameters":[{"description":"Page number starting from 1","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page. Maximum is 100","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataExportFindSessionsResponseDTO"}}},"description":""}},"summary":"Export paginated real call sessions data","tags":["data-export"]}},"/api/v1/data-exports/scorecards":{"get":{"operationId":"DataExportController_findScorecards_v1","parameters":[{"description":"Page number starting from 1","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page. Maximum is 100","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataExportFindScorecardsResponseDTO"}}},"description":""}},"summary":"Export paginated scorecards data","tags":["data-export"]}},"/api/v1/data-exports/sessions":{"get":{"operationId":"DataExportController_findSessions_v1","parameters":[{"description":"Page number starting from 1","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page. Maximum is 100","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataExportFindSessionsResponseDTO"}}},"description":""}},"summary":"Export paginated sessions data","tags":["data-export"]}},"/api/v1/data-exports/sprints":{"get":{"operationId":"DataExportController_findSprints_v1","parameters":[{"description":"Page number starting from 1","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page. Maximum is 100","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataExportFindSprintsResponseDTO"}}},"description":""}},"summary":"Export paginated sprints data","tags":["data-export"]}},"/api/v1/data-exports/teams":{"get":{"operationId":"DataExportController_findTeams_v1","parameters":[{"description":"Page number starting from 1","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page. Maximum is 100","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataExportFindTeamsResponseDTO"}}},"description":""}},"summary":"Export paginated teams data","tags":["data-export"]}},"/api/v1/data-exports/track-assignments":{"get":{"operationId":"DataExportController_findTrackAssignments_v1","parameters":[{"description":"Page number starting from 1","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page. Maximum is 100","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataExportFindTrackAssignmentsResponseDTO"}}},"description":""}},"summary":"Export paginated track assignments data","tags":["data-export"]}},"/api/v1/data-exports/tracks":{"get":{"operationId":"DataExportController_findTracks_v1","parameters":[{"description":"Page number starting from 1","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page. Maximum is 100","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataExportFindTracksResponseDTO"}}},"description":""}},"summary":"Export paginated tracks data","tags":["data-export"]}},"/api/v1/data-exports/users":{"get":{"operationId":"DataExportController_findUsers_v1","parameters":[{"description":"Page number starting from 1","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page. Maximum is 100","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataExportFindUsersResponseDTO"}}},"description":""}},"summary":"Export paginated users data","tags":["data-export"]}},"/api/v1/detailed-user-activity/completions":{"get":{"operationId":"DetailedUserActivityController_getCompletions_v1","parameters":[{"description":"The unique identifier of the user to get completion data for","in":"query","name":"userId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"description":"Optional list of track ids to scope the completion data to","in":"query","name":"trackIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Inclusive lower bound of the session date window","in":"query","name":"createdAfter","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Inclusive upper bound of the session date window","in":"query","name":"createdBefore","required":false,"schema":{"format":"date-time","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DetailedUserActivityGetCompletionsResponseDTO"}}},"description":""}},"summary":"Get user completions with trend data","tags":["dashboard","bff"]}},"/api/v1/detailed-user-activity/key-missions":{"get":{"operationId":"DetailedUserActivityController_getKeyMissionsForImprovement_v1","parameters":[{"description":"The unique identifier of the user to get key missions for improvement","in":"query","name":"userId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DetailedUserActivityGetKeyMissionsForImprovementResponseDTO"}}},"description":""}},"summary":"Get key missions for user improvement","tags":["dashboard","bff"]}},"/api/v1/detailed-user-activity/overview":{"get":{"operationId":"DetailedUserActivityController_getUserOverview_v1","parameters":[{"description":"The unique identifier for the user to get overview for","in":"query","name":"userId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DetailedUserActivityGetOverviewResponseDTO"}}},"description":""}},"summary":"Get detailed user activity overview","tags":["dashboard","bff"]}},"/api/v1/detailed-user-activity/performance":{"get":{"operationId":"DetailedUserActivityController_getUserPerformance_v1","parameters":[{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"in":"query","name":"userId","required":true,"schema":{"type":"string"}},{"description":"Optional array of track IDs to filter performance by.","in":"query","name":"trackReferenceIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Optional array of mission IDs to filter performance by.","in":"query","name":"missionReferenceIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"in":"query","name":"order","required":false,"schema":{"properties":{"averageScore":{"enum":["ASC","DESC"],"type":"string"},"completions":{"enum":["ASC","DESC"],"type":"string"},"numberOfRoundsToComplete":{"enum":["ASC","DESC"],"type":"string"},"roundsPlayed":{"enum":["ASC","DESC"],"type":"string"}},"type":"object"},"style":"deepObject"}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DetailedUserActivityGetUserPerformanceResponseDTO"}}},"description":""}},"summary":"Get paginated user mission performance","tags":["dashboard","bff"]}},"/api/v1/detailed-user-activity/performance-by-track":{"get":{"operationId":"DetailedUserActivityController_getPerformanceByTrack_v1","parameters":[{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"description":"Optional. Only count missions in this language.","in":"query","name":"language","required":false,"schema":{"enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"}},{"description":"Inclusive lower bound of the session date window","in":"query","name":"createdAfter","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Exclusive upper bound of the session date window","in":"query","name":"createdBefore","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Required. The learner whose track performance to score.","in":"query","name":"userId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"description":"Optional. Restrict to these tracks.","in":"query","name":"trackIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DetailedUserActivityGetPerformanceByTrackResponseDTO"}}},"description":""}},"summary":"Get a learner performance broken down by track","tags":["dashboard","bff"]}},"/api/v1/detailed-user-activity/performance-by-track-missions":{"get":{"operationId":"DetailedUserActivityController_getPerformanceByTrackMissions_v1","parameters":[{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"description":"Optional. Only count missions in this language.","in":"query","name":"language","required":false,"schema":{"enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"}},{"description":"Inclusive lower bound of the session date window","in":"query","name":"createdAfter","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Exclusive upper bound of the session date window","in":"query","name":"createdBefore","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Required. The learner whose track performance to score.","in":"query","name":"userId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"description":"Required. The track whose missions to score.","in":"query","name":"trackId","required":true,"schema":{"type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DetailedUserActivityGetPerformanceByTrackMissionsResponseDTO"}}},"description":""}},"summary":"Get a learner mission-level performance for a track (nested child rows)","tags":["dashboard","bff"]}},"/api/v1/detailed-user-activity/real-calls":{"get":{"operationId":"DetailedUserActivityController_getRealCallsByMember_v1","parameters":[{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"in":"query","name":"teamId","required":false,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"in":"query","name":"name","required":false,"schema":{"type":"string"}},{"description":"Optional. Restrict to specific member UUIDs. Combined with teamId as an intersection. Omit to include all manageable members.","in":"query","name":"userIds","required":false,"schema":{"items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":"array"}},{"description":"Optional. Inclusive lower bound (>=) on each call’s create date, ISO 8601. Only calls on/after this instant feed the per-member aggregate. Omit for no lower bound.","in":"query","name":"createdAfter","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Optional. Inclusive upper bound (<=) on each call’s create date, ISO 8601. Only calls on/before this instant feed the per-member aggregate. Omit for no upper bound.","in":"query","name":"createdBefore","required":false,"schema":{"format":"date-time","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DetailedUserActivityGetRealCallsResponseDTO"}}},"description":""}},"summary":"Get paginated real calls by member","tags":["dashboard","bff"]}},"/api/v1/detailed-user-activity/weekly-activity":{"get":{"operationId":"DetailedUserActivityController_getWeeklyActivity_v1","parameters":[{"description":"The unique identifier of the user to get weekly activity for","in":"query","name":"userId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"description":"Optional list of track ids to scope the weekly activity to","in":"query","name":"trackIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Inclusive lower bound of the session date window","in":"query","name":"createdAfter","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Inclusive upper bound of the session date window","in":"query","name":"createdBefore","required":false,"schema":{"format":"date-time","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DetailedUserActivityGetWeeklyActivityResponseDTO"}}},"description":""}},"summary":"Get user weekly activity data","tags":["dashboard","bff"]}},"/api/v1/documents":{"get":{"operationId":"DocumentsController_listDocuments_v1","parameters":[{"description":"The page number for pagination","in":"query","name":"page","required":false,"schema":{"default":1,"exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0,"type":"integer"}},{"description":"The number of items per page","in":"query","name":"limit","required":false,"schema":{"default":10,"exclusiveMinimum":true,"maximum":100,"minimum":0,"type":"integer"}},{"description":"Optional search string to filter documents by file name","in":"query","name":"searchString","required":false,"schema":{"type":"string"}},{"description":"Filter documents by their role; defaults to \"attachment\" when omitted","in":"query","name":"documentRole","required":false,"schema":{"enum":["attachment","consent"],"type":"string"}},{"description":"Optional. Inclusive lower bound (>=) on document upload date, as an ISO 8601 date-time string. Documents uploaded on/after this instant are included. Omit for no lower bound.","in":"query","name":"createdAfter","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Optional. Exclusive upper bound (<) on document upload date, as an ISO 8601 date-time string. Documents uploaded strictly before this instant are included. Omit for no upper bound.","in":"query","name":"createdBefore","required":false,"schema":{"format":"date-time","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentsListResponseDTO"}}},"description":""}},"summary":"List documents with pagination and filters","tags":["documents"]}},"/api/v1/documents/upload":{"post":{"operationId":"DocumentsController_uploadDocument_v1","parameters":[],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/DocumentUploadRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentResponseDTO"}}},"description":""}},"summary":"Upload a new document file","tags":["documents"]}},"/api/v1/documents/{documentId}":{"delete":{"operationId":"DocumentsController_deleteDocument_v1","parameters":[{"description":"The unique identifier of the document","in":"path","name":"documentId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"204":{"description":""}},"summary":"Delete a document by ID","tags":["documents"]},"get":{"operationId":"DocumentsController_getDocument_v1","parameters":[{"description":"The unique identifier of the document","in":"path","name":"documentId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentResponseDTO"}}},"description":""}},"summary":"Get a document by ID","tags":["documents"]},"patch":{"operationId":"DocumentsController_updateDocument_v1","parameters":[{"description":"The unique identifier of the document","in":"path","name":"documentId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentUpdateRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentResponseDTO"}}},"description":""}},"summary":"Update a document file name","tags":["documents"]}},"/api/v1/documents/{documentId}/download-url":{"get":{"operationId":"DocumentsController_getDocumentDownloadUrl_v1","parameters":[{"description":"The unique identifier of the document","in":"path","name":"documentId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentDownloadUrlResponseDTO"}}},"description":""}},"summary":"Get a presigned download URL for a document","tags":["documents"]}},"/api/v1/documents/{documentId}/text":{"get":{"operationId":"DocumentsController_getDocumentText_v1","parameters":[{"description":"The unique identifier of the document","in":"path","name":"documentId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"description":""}},"summary":"Get the plain text content of a document","tags":["documents"]}},"/api/v1/experience/total":{"get":{"operationId":"ExperienceController_getTotalExperience_v1","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExperienceGetTotalExperienceResponseDTO"}}},"description":""}},"summary":"Get total experience points for the current user","tags":["session"]}},"/api/v1/feedback/process-transcript":{"post":{"operationId":"FeedbackController_processTranscript_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackProcessTranscriptRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackProcessTranscriptResponseDTO"}}},"description":""}},"summary":"Process a transcript and return feedback items","tags":["feedback"]}},"/api/v1/feedback/prompt":{"post":{"operationId":"FeedbackController_buildPrompt_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackBuildPromptRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackBuildPromptResponseDTO"}}},"description":""}},"summary":"Build a feedback prompt for a scorecard item","tags":["feedback"]}},"/api/v1/generator/missions/draft":{"post":{"operationId":"GeneratorController_createMissionFromDraft_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneratorCreateMissionFromDraftRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionResponseDTO"}}},"description":""}},"summary":"Create a mission from a draft","tags":["cms"]}},"/api/v1/generator/missions/draft/{missionId}":{"get":{"operationId":"GeneratorController_getMissionDraft_v1","parameters":[{"description":"The unique identifier for the mission","in":"path","name":"missionId","required":true,"schema":{"pattern":"^[0-9a-f]{24}$","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneratorGetMissionDraftResponseDTO"}}},"description":""}},"summary":"Get a mission draft by ID","tags":["cms"]},"patch":{"operationId":"GeneratorController_updateMissionWithDraft_v1","parameters":[{"description":"The unique identifier for the mission","in":"path","name":"missionId","required":true,"schema":{"pattern":"^[0-9a-f]{24}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneratorUpdateMissionWithDraftRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionResponseDTO"}}},"description":""}},"summary":"Update a mission with draft changes","tags":["cms"]}},"/api/v1/issue-report":{"post":{"operationId":"IssueReportingController_create_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateIssueReportDTO"}}},"required":true},"responses":{"201":{"description":""}},"summary":"Submit a new issue report","tags":["common"]}},"/api/v1/leaderboards/overall":{"get":{"operationId":"LeaderboardsController_getOverall_v1","parameters":[{"description":"Filter by team IDs","in":"query","name":"teamIdIn","required":true,"schema":{"items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":"array"}}],"responses":{"201":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/UserExperienceResponseDTO"},"type":"array"}}},"description":""}},"summary":"Get overall user experience leaderboard","tags":["leaderboard","bff"]}},"/api/v1/leaderboards/teams/overall":{"get":{"operationId":"LeaderboardsController_getOverallTeamLeaderboard_v1","parameters":[],"responses":{"201":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/TeamExperienceResponseDTO"},"type":"array"}}},"description":""}},"summary":"Get overall team experience leaderboard","tags":["leaderboard","bff"]}},"/api/v1/leaderboards/teams/weekly":{"get":{"operationId":"LeaderboardsController_getWeeklyTeamLeaderboard_v1","parameters":[],"responses":{"201":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/TeamExperienceResponseDTO"},"type":"array"}}},"description":""}},"summary":"Get weekly team experience leaderboard","tags":["leaderboard","bff"]}},"/api/v1/leaderboards/weekly":{"get":{"operationId":"LeaderboardsController_getActivityPerUser_v1","parameters":[{"description":"Filter by team IDs","in":"query","name":"teamIdIn","required":true,"schema":{"items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":"array"}}],"responses":{"201":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/UserExperienceResponseDTO"},"type":"array"}}},"description":""}},"summary":"Get weekly user experience leaderboard","tags":["leaderboard","bff"]}},"/api/v1/memories":{"get":{"operationId":"MemoryController_listMemories_v1","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemoryListResponseDTO"}}},"description":""}},"summary":"List memories visible to the caller (org-shared plus own personal)","tags":["memory"]},"put":{"operationId":"MemoryController_upsertMemory_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemoryUpsertRequestDTO"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemoryEntryResponseDTO"}}},"description":""}},"summary":"Create or update a memory entry (upsert by scope, type, label)","tags":["memory"]}},"/api/v1/memories/{id}":{"delete":{"operationId":"MemoryController_deleteMemory_v1","parameters":[{"description":"Memory entry id","in":"path","name":"id","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemoryDeleteResponseDTO"}}},"description":""}},"summary":"Delete a memory entry the caller can access","tags":["memory"]}},"/api/v1/mission-feedbacks":{"get":{"operationId":"MissionFeedbacksController_find_v1","parameters":[{"description":"Array of IDs to filter results. To skip this filter, omit the key entirely from your JSON. Never write the bare word `undefined` (that is invalid JSON). Empty arrays and null are also treated as omission.","in":"query","name":"ids","required":false,"schema":{"items":{"type":"string"},"nullable":true,"type":"array"}},{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"description":"Order configuration as a key-value object where keys are field names and values are \"ASC\" or \"DESC\".","in":"query","name":"order","required":false,"schema":{"additionalProperties":{"enum":["ASC","DESC"],"type":"string"},"type":"object"},"style":"deepObject"},{"description":"CMS mission identifier to filter feedback by.","in":"query","name":"missionReferenceId","required":false,"schema":{"type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionFeedbacksFindResponseDTO"}}},"description":""}},"summary":"List mission feedbacks for the current user","tags":["user-feedback"]},"post":{"operationId":"MissionFeedbacksController_create_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionFeedbacksCreateRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionFeedbacksCreateResponseDTO"}}},"description":""}},"summary":"Submit a learner mission feedback entry","tags":["user-feedback"]}},"/api/v1/mission-item-feedbacks":{"get":{"operationId":"MissionItemsFeedbacksController_find_v1","parameters":[{"description":"Array of IDs to filter results. To skip this filter, omit the key entirely from your JSON. Never write the bare word `undefined` (that is invalid JSON). Empty arrays and null are also treated as omission.","in":"query","name":"ids","required":false,"schema":{"items":{"type":"string"},"nullable":true,"type":"array"}},{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"description":"Order configuration as a key-value object where keys are field names and values are \"ASC\" or \"DESC\".","in":"query","name":"order","required":false,"schema":{"additionalProperties":{"enum":["ASC","DESC"],"type":"string"},"type":"object"},"style":"deepObject"},{"description":"Session identifier to filter mission item feedback by.","in":"query","name":"sessionId","required":false,"schema":{"type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionItemFeedbacksFindResponseDTO"}}},"description":""}},"summary":"List mission item feedbacks for current user","tags":["user-feedback"]},"post":{"operationId":"MissionItemsFeedbacksController_create_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionItemFeedbacksCreateRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionItemFeedbacksCreateResponseDTO"}}},"description":""}},"summary":"Submit feedback for a mission item","tags":["user-feedback"]}},"/api/v1/missions":{"get":{"operationId":"MissionController_find_v1","parameters":[{"description":"Array of IDs to filter results. To skip this filter, omit the key entirely from your JSON. Never write the bare word `undefined` (that is invalid JSON). Empty arrays and null are also treated as omission.","in":"query","name":"ids","required":false,"schema":{"items":{"type":"string"},"nullable":true,"type":"array"}},{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"in":"query","name":"order","required":false,"schema":{"properties":{"createdAt":{"enum":["ASC","DESC"],"type":"string"},"title":{"enum":["ASC","DESC"],"type":"string"}},"type":"object"},"style":"deepObject"},{"description":"Optional. Filter missions by title or content (substring match). Omit to return missions regardless of title/content.","in":"query","name":"searchString","required":false,"schema":{"type":"string"}},{"description":"Optional. Full-text search across the mission title via the CMS text index. When set, results are ranked by relevance unless an explicit `order` is provided. Can be combined with `searchString` (both filters apply).","in":"query","name":"search","required":false,"schema":{"type":"string"}},{"description":"Optional. Filter missions by language. Omit to return missions in any language.","in":"query","name":"language","required":false,"schema":{"enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionPaginatedResponseDTO"}}},"description":""}},"summary":"List missions with pagination","tags":["cms"]}},"/api/v1/missions/{missionId}":{"get":{"operationId":"MissionController_findById_v1","parameters":[{"description":"The unique identifier for the mission","in":"path","name":"missionId","required":true,"schema":{"pattern":"^[0-9a-f]{24}$","type":"string"}},{"description":"Optional language code to translate the mission content. If provided and different from the mission's native language, the mission will be translated to the requested language.","in":"query","name":"language","required":false,"schema":{"enum":["en","de","fr","es","it","nl","pl","zh","ja","id","tr","pt","el","ko","vi","hi","ms","th","hr","ro","bg","sv","no","yue"],"type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionResponseDTO"}}},"description":""}},"summary":"Get a mission by ID","tags":["cms"]}},"/api/v1/next-assignment/{userId}":{"get":{"operationId":"NextAssignmentController_getNextByUser_v1","parameters":[{"description":"The unique identifier of the user to get next missions for","in":"path","name":"userId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NextAssignmentGetByUserResponseDTO"}}},"description":""}},"summary":"Get the next assignment for a user","tags":["content-allocation"]}},"/api/v1/next-assignment/{userId}/subsequent":{"get":{"operationId":"NextAssignmentController_getSubsequentByUser_v1","parameters":[{"description":"The unique identifier of the user to get next missions for","in":"path","name":"userId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"description":"Optional. Filter assignments to specific learner UUIDs. Omit to include all learners.","in":"query","name":"userIds","required":false,"schema":{"items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":"array"}},{"description":"Optional. Filter by allocation type (e.g. track vs mission). Omit to include all types.","in":"query","name":"type","required":false,"schema":{"enum":["autoTrackAllocation","track","managerAssigned","refresher","sprint","selfEnrolled"],"type":"string"}},{"description":"Optional. Filter by allocation state(s). Omit to include all states.","in":"query","name":"state","required":false,"schema":{"items":{"enum":["notStarted","started","completed"],"type":"string"},"type":"array"}},{"description":"Optional. Filter by referenced content (track or mission). Omit to include all references.","in":"query","name":"reference","required":false,"schema":{"properties":{"id":{"type":"string"},"type":{"enum":["mission","track"],"type":"string"}},"type":"object"},"style":"deepObject"},{"description":"Optional. Restrict to allocations of these tracks or their missions.","in":"query","name":"trackIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Optional. Inclusive lower bound (>=) on the assignment due date, as an ISO 8601 date-time string. Assignments due on/after this instant are included. Omit for no lower bound.","in":"query","name":"dueDateAfter","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Optional. Exclusive upper bound (<) on the assignment due date, as an ISO 8601 date-time string. Assignments due strictly before this instant are included. Omit for no upper bound.","in":"query","name":"dueDateBefore","required":false,"schema":{"format":"date-time","type":"string"}},{"in":"query","name":"order","required":false,"schema":{"properties":{"createdAt":{"enum":["ASC","DESC"],"type":"string"},"dueDate":{"enum":["ASC","DESC"],"type":"string"},"lastUpdatedAt":{"enum":["ASC","DESC"],"type":"string"}},"type":"object"},"style":"deepObject"}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignmentFindResponseDTO"}}},"description":""}},"summary":"List subsequent assignments for a user","tags":["content-allocation"]}},"/api/v1/next-missions/{userId}":{"get":{"operationId":"NextMissionsController_getByUser_v1","parameters":[{"description":"The unique identifier of the user to get next missions for","in":"path","name":"userId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NextMissionsGetByUserResponseDTO"}}},"description":""}},"summary":"Get next missions allocated to a user","tags":["content-allocation"]}},"/api/v1/organizations":{"get":{"operationId":"OrganizationsController_find_v1","parameters":[{"description":"Array of IDs to filter results. To skip this filter, omit the key entirely from your JSON. Never write the bare word `undefined` (that is invalid JSON). Empty arrays and null are also treated as omission.","in":"query","name":"ids","required":false,"schema":{"items":{"type":"string"},"nullable":true,"type":"array"}},{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"description":"Order configuration as a key-value object where keys are field names and values are \"ASC\" or \"DESC\".","in":"query","name":"order","required":false,"schema":{"additionalProperties":{"enum":["ASC","DESC"],"type":"string"},"type":"object"},"style":"deepObject"},{"description":"Optional search term to filter organizations by name","in":"query","name":"organizationNameSearch","required":false,"schema":{"type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationsFindResponseDTO"}}},"description":""}},"summary":"List organizations with optional filters","tags":["crm"]},"post":{"operationId":"OrganizationsController_create_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationsCreateResponseDTO"}}},"description":""}},"summary":"Create a new organization","tags":["crm"]}},"/api/v1/organizations/generate-description":{"post":{"operationId":"OrganizationsController_generateDescription_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationsGenerateDescriptionRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationsGenerateDescriptionResponseDTO"}}},"description":""}},"summary":"Generate an AI description for an organization","tags":["crm"]}},"/api/v1/organizations/me":{"patch":{"operationId":"OrganizationsController_configure_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationsConfigureRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationsCreateResponseDTO"}}},"description":""},"400":{"description":"Automatic user provisioning from transcripts cannot be enabled (or kept enabled) without a valid primary email domain."}},"summary":"Configure the current organization","tags":["crm"]}},"/api/v1/organizations/me/sso-status":{"get":{"operationId":"OrganizationsController_getMySsoStatus_v1","parameters":[],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationsSsoStatusResponseDTO"}}},"description":""},"502":{"description":"The SSO configuration could not be read from the auth provider. Clients must render an unknown state rather than treating this as \"not configured\"."}},"summary":"Get the current organization's SSO configuration status","tags":["crm"]}},"/api/v1/organizations/{orgId}":{"patch":{"operationId":"OrganizationsController_update_v1","parameters":[{"description":"The unique identifier of the organization","in":"path","name":"orgId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationsUpdateRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationsUpdateResponseDTO"}}},"description":""},"502":{"description":"The auth provider rejected the organization metadata update; nothing was persisted."}},"summary":"Update an organization by ID","tags":["crm"]}},"/api/v1/organizations/{orgId}/license-summary":{"get":{"operationId":"OrganizationsController_getLicenseSummary_v1","parameters":[{"description":"The unique identifier of the organization","in":"path","name":"orgId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationsLicenseSummaryResponseDTO"}}},"description":""}},"summary":"Get license summary for an organization","tags":["crm"]}},"/api/v1/organizations/{orgId}/request-license-increase":{"post":{"operationId":"OrganizationsController_requestLicenseIncrease_v1","parameters":[{"description":"The unique identifier of the organization","in":"path","name":"orgId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationsRequestLicenseIncreaseRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationsRequestLicenseIncreaseResponseDTO"}}},"description":""}},"summary":"Request a license seat increase for an organization","tags":["crm"]}},"/api/v1/pending-invites":{"delete":{"operationId":"PendingInvitesController_revokePendingInvite_v1","parameters":[{"description":"Email address of the pending invite to revoke","in":"query","name":"email","required":true,"schema":{"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","type":"string"}}],"responses":{"200":{"description":""}},"summary":"Revoke a pending invite by email","tags":["crm"]},"get":{"operationId":"PendingInvitesController_loadPendingInvites_v1","parameters":[{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"in":"query","name":"order","required":false,"schema":{"properties":{"createdAt":{"enum":["ASC","DESC"],"type":"string"},"email":{"enum":["ASC","DESC"],"type":"string"},"roles":{"enum":["ASC","DESC"],"type":"string"}},"type":"object"},"style":"deepObject"},{"description":"Optional. Filter invites by email (substring match). Omit to return invites regardless of email.","in":"query","name":"searchString","required":false,"schema":{"type":"string"}},{"description":"Optional. Fuzzy search invites by email — tolerates typos and partial input (e.g. \"jhon\" finds \"john@…\"), ranked by similarity. Composable with searchString.","in":"query","name":"search","required":false,"schema":{"type":"string"}},{"description":"Optional. Filter invites to those assigned to a specific team (UUID). Omit to include invites for all teams.","in":"query","name":"teamId","required":false,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"description":"Optional. Set to \"true\" to only return invites the current user can manage. Omit for no manageability filter.","in":"query","name":"manageable","required":false,"schema":{"enum":["true"],"type":"string"}},{"description":"Optional. Inclusive lower bound (>=) on invite creation date, as an ISO 8601 date-time string. Invites created on/after this instant are included. Omit for no lower bound.","in":"query","name":"createdAfter","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Optional. Exclusive upper bound (<) on invite creation date, as an ISO 8601 date-time string. Invites created strictly before this instant are included. Omit for no upper bound.","in":"query","name":"createdBefore","required":false,"schema":{"format":"date-time","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PendingInvitesLoadResponseDTO"}}},"description":""}},"summary":"List pending invites with pagination","tags":["crm"]},"post":{"operationId":"PendingInvitesController_inviteUser_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PendingInvitesInviteRequestDTO"}}},"required":true},"responses":{"201":{"description":""}},"summary":"Invite a user to the organization","tags":["crm"]}},"/api/v1/pending-invites/bulk":{"post":{"operationId":"PendingInvitesController_bulkInviteUsers_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PendingInvitesBulkInviteRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PendingInvitesBulkInviteResponseDTO"}}},"description":""}},"summary":"Bulk invite multiple users to the organization","tags":["crm"]}},"/api/v1/profiles/change-email":{"patch":{"operationId":"ProfilesController_changeEmail_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfilesChangeEmailRequestDTO"}}},"required":true},"responses":{"200":{"description":""}},"summary":"Update the current user's email address","tags":["crm"]}},"/api/v1/profiles/change-language":{"patch":{"operationId":"ProfilesController_setLanguage_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfilesChangeLanguageRequestDTO"}}},"required":true},"responses":{"200":{"description":""}},"summary":"Update the current user's language","tags":["crm"]}},"/api/v1/profiles/change-name":{"patch":{"operationId":"ProfilesController_changeName_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfilesChangeNameRequestDTO"}}},"required":true},"responses":{"200":{"description":""}},"summary":"Update the current user's name","tags":["crm"]}},"/api/v1/profiles/change-password":{"patch":{"operationId":"ProfilesController_changePassword_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfilesChangePasswordRequestDTO"}}},"required":true},"responses":{"200":{"description":""}},"summary":"Update the current user's password","tags":["crm"]}},"/api/v1/profiles/change-roleplay-language":{"patch":{"operationId":"ProfilesController_setRoleplayLanguage_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfilesChangeRoleplayLanguageRequestDTO"}}},"required":true},"responses":{"200":{"description":""}},"summary":"Update the current user's roleplay language","tags":["crm"]}},"/api/v1/profiles/me":{"get":{"operationId":"ProfilesController_getProfile_v1","parameters":[],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileResponseDTO"}}},"description":""}},"summary":"Get the current user's profile","tags":["crm"]}},"/api/v1/profiles/organization":{"get":{"operationId":"ProfilesController_getOrganization_v1","parameters":[],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfilesOrganizationGetResponseDTO"}}},"description":""}},"summary":"Get the current user's organization","tags":["crm"]}},"/api/v1/profiles/profile-picture":{"delete":{"operationId":"ProfilesController_deleteProfilePicture_v1","parameters":[],"responses":{"204":{"description":""}},"summary":"Delete the current user's profile picture","tags":["crm"]}},"/api/v1/real-call-sessions":{"post":{"description":"Attributes the session to exactly one of userId or email. A known email resolves to the existing user. When the email does not match an existing user in the caller's organization, a Member user is automatically provisioned (the account requires setting a password on first login) ONLY when the organization has enabled \"Automatically create new users from real-call transcripts\" in its settings and the email's domain matches one of the organization's configured email domains; otherwise the upload is rejected with 422 and neither a user nor a session is created.\n\n**Speaker-labeled SRT**: a standard SRT transcript may carry a `label: message` prefix on the first content line of each cue. A label that normalizes (trim + lowercase) to a valid email whose domain matches the organization's configured domains (or any email when no domains are configured) marks the speaker as internal (sales side); a non-matching email marks an external client whose turns are never attributed and never provisioned. Internal speakers are attributed to the matching Jam user (auto-provisioned under the same organization opt-in as the email parameter when unknown; turns stay unattributed when provisioning is disabled or impossible) and recorded as session participants. A non-email label (e.g. `Client:`) is stripped from the content without attribution, but only when its colon is followed by whitespace or ends the line (prose colons such as `10:30` or URLs are left intact).\n\n**Rep scoring**: the userId/email parameter designates the scored rep. Scoring, KPIs and dashboards attribute exclusively to the rep; other labeled speakers are recorded as participants only (see participantUserIds on the session).","operationId":"RealCallSessionController_create_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RealCallSessionCreateRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RealCallSessionCreateResponseDTO"}}},"description":""},"403":{"description":"Organization seat limit reached — no user or session is created."},"409":{"description":"The email already exists in the identity provider but is not a member of this organization."},"422":{"description":"The upload is rejected and no user or session is created: the transcript is speaker-labeled (email-prefixed cues) but the attributed rep (userId/email) never speaks in it; OR the rep email has no Jam account while automatic user provisioning from transcripts is disabled for the organization; OR the rep email's domain does not match the organization's configured email domains; OR the referenced missionId or scorecardId does not exist."},"502":{"description":"The identity provider refused to provision the user - no user or session is created; the upload can be retried."}},"summary":"Create a new real call session","tags":["real-call-session"]}},"/api/v1/real-call-sessions/{sessionId}":{"get":{"operationId":"RealCallSessionController_findOne_v1","parameters":[{"description":"The unique identifier for the session.","in":"path","name":"sessionId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RealCallSessionFindOneResponseDTO"}}},"description":""}},"summary":"Get a real call session by ID","tags":["real-call-session"]},"patch":{"operationId":"RealCallSessionController_patch_v1","parameters":[{"description":"The unique identifier for the session.","in":"path","name":"sessionId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RealCallSessionPatchRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RealCallSessionPatchResponseDTO"}}},"description":""}},"summary":"Assign a scorecard to a real call session","tags":["real-call-session"]}},"/api/v1/role-play-sessions":{"get":{"operationId":"RolePlaySessionController_find_v1","parameters":[{"description":"Array of IDs to filter results. To skip this filter, omit the key entirely from your JSON. Never write the bare word `undefined` (that is invalid JSON). Empty arrays and null are also treated as omission.","in":"query","name":"ids","required":false,"schema":{"items":{"type":"string"},"nullable":true,"type":"array"}},{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"description":"Optional. Restrict sessions to a specific organization. Omit to use the current user organization.","in":"query","name":"orgId","required":false,"schema":{"type":"string"}},{"description":"Optional. Restrict sessions to specific learner IDs. Omit to include sessions from all learners.","in":"query","name":"userIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Optional. Restrict sessions to specific mission reference IDs. Omit to include all missions.","in":"query","name":"missionReferenceIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Optional. Restrict sessions to specific parent track IDs. Omit to include all tracks.","in":"query","name":"trackIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Optional. Filter sessions by state. Omit to include sessions in any state.","in":"query","name":"state","required":false,"schema":{"enum":["PENDING","PROCESSING","DONE"],"type":"string"}},{"description":"Optional. Lower bound (inclusive) of session creation date, ISO 8601. Omit for no lower bound.","in":"query","name":"createdAfter","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Optional. Upper bound (exclusive) of session creation date, ISO 8601 — sessions strictly before this instant are returned. Omit for no upper bound.","in":"query","name":"createdBefore","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Optional. Lower bound (inclusive) of session completion time (completedAt, falling back to createdAt) for completed sessions, ISO 8601. Omit for no lower bound.","in":"query","name":"completedAfter","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Optional. Filter sessions by mission title (substring match). Omit to include sessions regardless of mission title.","in":"query","name":"missionTitle","required":false,"schema":{"type":"string"}},{"description":"Optional. Restrict sessions to specific scorecard reference IDs. Omit to include all scorecards.","in":"query","name":"scorecardReferenceIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"in":"query","name":"order","required":false,"schema":{"properties":{"createdAt":{"enum":["ASC","DESC"],"type":"string"},"missionTitle":{"enum":["ASC","DESC"],"type":"string"},"score":{"enum":["ASC","DESC"],"type":"string"}},"type":"object"},"style":"deepObject"}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RolePlaySessionFindResponseDTO"}}},"description":""}},"summary":"List role-play sessions with pagination","tags":["role-play-session"]},"post":{"operationId":"RolePlaySessionController_create_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RolePlaySessionCreateRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RolePlaySessionCreateResponseDTO"}}},"description":""}},"summary":"Create a new role-play session","tags":["role-play-session"]}},"/api/v1/role-play-sessions/{sessionId}":{"get":{"operationId":"RolePlaySessionController_findOne_v1","parameters":[{"description":"The unique identifier for the session.","in":"path","name":"sessionId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"description":"The target language code for translating session analysis content (e.g., \"en\", \"de\", \"fr\")","in":"query","name":"language","required":false,"schema":{"enum":["en","de","fr","es","it","nl","pl","zh","ja","id","tr","pt","el","ko","vi","hi","ms","th","hr","ro","bg","sv","no","yue"],"type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RolePlaySessionFindOneResponseDTO"}}},"description":""}},"summary":"Get a role-play session by ID","tags":["role-play-session"]}},"/api/v1/sagas":{"get":{"operationId":"SagaController_find_v1","parameters":[{"description":"Array of IDs to filter results. To skip this filter, omit the key entirely from your JSON. Never write the bare word `undefined` (that is invalid JSON). Empty arrays and null are also treated as omission.","in":"query","name":"ids","required":false,"schema":{"items":{"type":"string"},"nullable":true,"type":"array"}},{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"description":"Search string to filter sagas by name","in":"query","name":"searchString","required":false,"schema":{"type":"string"}},{"description":"Filter sagas by type","in":"query","name":"type","required":false,"schema":{"enum":["under_construction","generic","client_specific"],"type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SagaResponseDTO"}}},"description":""}},"summary":"List sagas with pagination","tags":["cms"]}},"/api/v1/saved-views":{"get":{"operationId":"SavedViewController_list_v1","parameters":[{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":100,"maximum":100,"minimum":1,"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedViewsListResponseDTO"}}},"description":""}},"summary":"List the current user's saved views","tags":["saved-views"]},"post":{"operationId":"SavedViewController_create_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedViewsCreateRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedViewsCreateResponseDTO"}}},"description":""}},"summary":"Create a saved view","tags":["saved-views"]}},"/api/v1/saved-views/{id}":{"delete":{"operationId":"SavedViewController_delete_v1","parameters":[{"description":"Saved view id","in":"path","name":"id","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedViewsDeleteResponseDTO"}}},"description":""}},"summary":"Delete a saved view","tags":["saved-views"]},"patch":{"operationId":"SavedViewController_update_v1","parameters":[{"description":"Saved view id","in":"path","name":"id","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedViewsUpdateRequestDTO"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedViewsUpdateResponseDTO"}}},"description":""}},"summary":"Update a saved view","tags":["saved-views"]}},"/api/v1/scorecard-classifier/classify":{"post":{"operationId":"ScorecardClassifierController_classify_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScorecardClassifierClassifyRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScorecardClassifierClassifyResponseDTO"}}},"description":""}},"summary":"Classify a scorecard transcript","tags":["scorecard-classifier"]}},"/api/v1/scorecards":{"get":{"operationId":"ScorecardController_list_v1","parameters":[{"description":"The page number for pagination","in":"query","name":"page","required":false,"schema":{"default":1,"exclusiveMinimum":true,"maximum":9007199254740991,"minimum":0,"type":"integer"}},{"description":"The number of items per page","in":"query","name":"limit","required":false,"schema":{"default":10,"exclusiveMinimum":true,"maximum":100,"minimum":0,"type":"integer"}},{"description":"Optional search string to filter scorecards by title","in":"query","name":"searchString","required":false,"schema":{"type":"string"}},{"description":"When true, only scorecards active for real-call analysis are returned","in":"query","name":"isActiveForRealCall","required":false,"schema":{"type":"boolean"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScorecardListResponseDTO"}}},"description":""}},"summary":"List scorecards with filters","tags":["scorecards"]}},"/api/v1/scorecards/{id}/toggle-real-call-active":{"patch":{"operationId":"ScorecardController_toggleRealCallActive_v1","parameters":[{"description":"The CMS scorecard ID","in":"path","name":"id","required":true,"schema":{"pattern":"^[0-9a-f]{24}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScorecardToggleRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScorecardToggleResponseDTO"}}},"description":""}},"summary":"Toggle real call active status for a scorecard","tags":["scorecards"]}},"/api/v1/self-enrollment":{"post":{"operationId":"SelfEnrollmentController_enroll_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SelfEnrollmentEnrollRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignmentCreateResponseDTO"}}},"description":""}},"summary":"Self-enroll the current user in content","tags":["content-allocation"]}},"/api/v1/self-enrollment/{contentAllocationId}":{"delete":{"operationId":"SelfEnrollmentController_unenroll_v1","parameters":[{"description":"The unique identifier for the content allocation","in":"path","name":"contentAllocationId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"description":""}},"summary":"Remove self-enrollment from a content allocation","tags":["content-allocation"]}},"/api/v1/session-feedbacks":{"get":{"operationId":"SessionFeedbacksController_get_v1","parameters":[{"in":"query","name":"id","required":false,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"description":"SessionId to get feedback for","in":"query","name":"sessionId","required":false,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionFeedbacksGetResponseDTO"}}},"description":""}},"summary":"Get session feedback for the current user","tags":["user-feedback"]},"post":{"operationId":"SessionFeedbacksController_create_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionFeedbacksCreateRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionFeedbacksCreateResponseDTO"}}},"description":""}},"summary":"Submit feedback for a learner session","tags":["user-feedback"]}},"/api/v1/sessions/sync":{"post":{"operationId":"SessionController_recalculateCompletionState_v1","parameters":[],"responses":{"201":{"description":""}},"summary":"Recalculate session completion state and stream results","tags":["session"]}},"/api/v1/sessions/{sessionId}":{"delete":{"operationId":"SessionController_remove_v1","parameters":[{"description":"The unique identifier for the session.","in":"path","name":"sessionId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionRemoveResponseDTO"}}},"description":""}},"summary":"Delete a session by ID","tags":["session"]}},"/api/v1/sessions/{sessionId}/audio":{"delete":{"operationId":"SessionController_deleteSessionAudio_v1","parameters":[{"description":"The unique identifier for the session.","in":"path","name":"sessionId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"204":{"description":""}},"summary":"Delete the audio recording for a session","tags":["session"]},"get":{"operationId":"SessionController_getSessionAudio_v1","parameters":[{"description":"The unique identifier for the session.","in":"path","name":"sessionId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"content":{"audio/mpeg":{"schema":{"format":"binary","type":"string"}}},"description":"MP3 audio stream for the session recording"}},"summary":"Get the audio recording for a session","tags":["session"]}},"/api/v1/sessions/{sessionId}/conversation-token":{"post":{"operationId":"SessionController_getConversationConnection_v1","parameters":[{"description":"The unique identifier for the session.","in":"path","name":"sessionId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionConversationConnectionRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionConversationConnectionResponseDTO"}}},"description":""}},"summary":"Get a conversation connection (credential + transport) for a session","tags":["session"]}},"/api/v1/sessions/{sessionId}/recalculate-feedback":{"post":{"operationId":"SessionController_recalculateFeedback_v1","parameters":[{"description":"The unique identifier for the session.","in":"path","name":"sessionId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionRecalculateFeedbackResponseDTO"}}},"description":""}},"summary":"Recalculate feedback scores for a session","tags":["session"]}},"/api/v1/short-missions":{"get":{"operationId":"ShortMissionController_findShortMissions_v1","parameters":[{"description":"Array of IDs to filter results. To skip this filter, omit the key entirely from your JSON. Never write the bare word `undefined` (that is invalid JSON). Empty arrays and null are also treated as omission.","in":"query","name":"ids","required":false,"schema":{"items":{"type":"string"},"nullable":true,"type":"array"}},{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"in":"query","name":"order","required":false,"schema":{"properties":{"createdAt":{"enum":["ASC","DESC"],"type":"string"},"title":{"enum":["ASC","DESC"],"type":"string"}},"type":"object"},"style":"deepObject"},{"description":"Optional. Filter missions by title or content (substring match). Omit to return missions regardless of title/content.","in":"query","name":"searchString","required":false,"schema":{"type":"string"}},{"description":"Optional. Full-text search across the mission title via the CMS text index. When set, results are ranked by relevance unless an explicit `order` is provided. Can be combined with `searchString` (both filters apply).","in":"query","name":"search","required":false,"schema":{"type":"string"}},{"description":"Optional. Filter missions by language. Omit to return missions in any language.","in":"query","name":"language","required":false,"schema":{"enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShortMissionPaginatedResponseDTO"}}},"description":""}},"summary":"List short missions with pagination","tags":["cms"]}},"/api/v1/short-missions/{missionId}":{"get":{"operationId":"ShortMissionController_findById_v1","parameters":[{"description":"The unique identifier for the mission","in":"path","name":"missionId","required":true,"schema":{"pattern":"^[0-9a-f]{24}$","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShortMissionResponseDTO"}}},"description":""}},"summary":"Get a short mission by ID","tags":["cms"]}},"/api/v1/simulate":{"post":{"operationId":"SimulateConversationController_create_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulateConversationCreateRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulateConversationCreateResponseDTO"}}},"description":""}},"summary":"Enqueue a conversation simulation job","tags":["conversation"]}},"/api/v1/sprint":{"post":{"operationId":"SprintScheduleController_create_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SprintScheduleCreateRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SprintScheduleCreateResponseDTO"}}},"description":""}},"summary":"Create a new sprint schedule","tags":["content-allocation"]}},"/api/v1/sprint-activity/leaderboard":{"get":{"operationId":"SprintActivityController_findLeaderboard_v1","parameters":[{"description":"The ID of the sprint to find the leaderboard for.","in":"query","name":"sprintId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/SprintActivityFindLeaderboardResponseDTO"},"type":"array"}}},"description":""}},"summary":"Get the sprint activity leaderboard","tags":["dashboard","bff"]}},"/api/v1/sprint-activity/mission-stats":{"get":{"operationId":"SprintActivityController_findMissionStats_v1","parameters":[{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"in":"query","name":"order","required":false,"schema":{"properties":{"averageRoundToCompletion":{"enum":["ASC","DESC"],"type":"string"},"averageScore":{"enum":["ASC","DESC"],"type":"string"},"completionPercentage":{"enum":["ASC","DESC"],"type":"string"},"roundsPlayed":{"enum":["ASC","DESC"],"type":"string"}},"type":"object"},"style":"deepObject"},{"description":"The ID of the sprint to find user stats for.","in":"query","name":"sprintId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SprintActivityFindMissionStatsResponseDTO"}}},"description":""}},"summary":"Get sprint activity stats per mission","tags":["dashboard","bff"]}},"/api/v1/sprint-activity/user-stats":{"get":{"operationId":"SprintActivityController_findUserStats_v1","parameters":[{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"in":"query","name":"order","required":false,"schema":{"properties":{"averageScore":{"enum":["ASC","DESC"],"type":"string"},"completedMissions":{"enum":["ASC","DESC"],"type":"string"},"participatedMissions":{"enum":["ASC","DESC"],"type":"string"},"totalScore":{"enum":["ASC","DESC"],"type":"string"}},"type":"object"},"style":"deepObject"},{"description":"The ID of the sprint to find user stats for.","in":"query","name":"sprintId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SprintActivityFindUserStatsResponseDTO"}}},"description":""}},"summary":"Get sprint activity stats for the current user","tags":["dashboard","bff"]}},"/api/v1/sprint/{sprintScheduleId}":{"delete":{"operationId":"SprintScheduleController_delete_v1","parameters":[{"description":"The unique identifier of the sprint schedule","in":"path","name":"sprintScheduleId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SprintScheduleDeleteResponseDTO"}}},"description":""}},"summary":"Delete a sprint schedule by ID","tags":["content-allocation"]},"get":{"operationId":"SprintScheduleController_get_v1","parameters":[{"description":"The unique identifier of the sprint schedule","in":"path","name":"sprintScheduleId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SprintScheduleGetResponseDTO"}}},"description":""}},"summary":"Get a sprint schedule by ID","tags":["content-allocation"]},"patch":{"operationId":"SprintScheduleController_update_v1","parameters":[{"description":"The unique identifier of the sprint schedule","in":"path","name":"sprintScheduleId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SprintScheduleUpdateRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SprintScheduleUpdateResponseDTO"}}},"description":""}},"summary":"Update a sprint schedule by ID","tags":["content-allocation"]}},"/api/v1/team-activity/real-call-sessions":{"get":{"operationId":"TeamActivityController_findRealCallSessionsAcrossAllUsers_v1","parameters":[{"description":"Array of IDs to filter results. To skip this filter, omit the key entirely from your JSON. Never write the bare word `undefined` (that is invalid JSON). Empty arrays and null are also treated as omission.","in":"query","name":"ids","required":false,"schema":{"items":{"type":"string"},"nullable":true,"type":"array"}},{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"description":"Order configuration as a key-value object where keys are field names and values are \"ASC\" or \"DESC\".","in":"query","name":"order","required":false,"schema":{"additionalProperties":{"enum":["ASC","DESC"],"type":"string"},"type":"object"},"style":"deepObject"},{"in":"query","name":"createdAfter","required":false,"schema":{"format":"date-time","type":"string"}},{"in":"query","name":"createdBefore","required":false,"schema":{"format":"date-time","type":"string"}},{"in":"query","name":"teamId","required":false,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"in":"query","name":"userName","required":false,"schema":{"type":"string"}},{"description":"Matches sessions each user owns as the scored rep OR participated in as an attributed speaker.","in":"query","name":"userIds","required":false,"schema":{"items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":"array"}},{"in":"query","name":"missionTitle","required":false,"schema":{"type":"string"}},{"in":"query","name":"missionReferenceIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"in":"query","name":"scorecardReferenceIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"in":"query","name":"state","required":false,"schema":{"enum":["PENDING","PROCESSING","DONE"],"type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamActivityFindRealCallSessionsResponseDTO"}}},"description":""}},"summary":"List real-call sessions across all team users","tags":["dashboard","bff"]}},"/api/v1/team-activity/role-play-sessions":{"get":{"operationId":"TeamActivityController_findRolePlaySessionsAcrossAllUsers_v1","parameters":[{"description":"Array of IDs to filter results. To skip this filter, omit the key entirely from your JSON. Never write the bare word `undefined` (that is invalid JSON). Empty arrays and null are also treated as omission.","in":"query","name":"ids","required":false,"schema":{"items":{"type":"string"},"nullable":true,"type":"array"}},{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"description":"Order configuration as a key-value object where keys are field names and values are \"ASC\" or \"DESC\".","in":"query","name":"order","required":false,"schema":{"additionalProperties":{"enum":["ASC","DESC"],"type":"string"},"type":"object"},"style":"deepObject"},{"description":"Optional. Inclusive lower bound (>=) on the session create date, ISO 8601. Omit for no lower bound.","in":"query","name":"createdAfter","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Optional. Exclusive upper bound (<) on the session create date, ISO 8601. Omit for no upper bound.","in":"query","name":"createdBefore","required":false,"schema":{"format":"date-time","type":"string"}},{"in":"query","name":"teamId","required":false,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"in":"query","name":"userName","required":false,"schema":{"type":"string"}},{"in":"query","name":"userIds","required":false,"schema":{"items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":"array"}},{"in":"query","name":"missionTitle","required":false,"schema":{"type":"string"}},{"in":"query","name":"missionReferenceIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"in":"query","name":"scorecardReferenceIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"in":"query","name":"state","required":false,"schema":{"enum":["PENDING","PROCESSING","DONE"],"type":"string"}},{"description":"Optional. Filter sessions to missions belonging to these tracks (resolved server-side). Blank/whitespace entries are dropped; an all-empty list is treated as no filter. Omit to include all tracks.","in":"query","name":"trackIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamActivityFindRolePlaySessionsResponseDTO"}}},"description":""}},"summary":"List role-play sessions across all team users","tags":["dashboard","bff"]}},"/api/v1/team-activity/weekly-activity":{"get":{"operationId":"TeamActivityController_getWeeklyActivityAcrossAllUsers_v1","parameters":[{"description":"The unique identifier for the team to filter activity by","in":"query","name":"teamId","required":false,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"description":"Optional list of user ids to scope the activity to","in":"query","name":"userIds","required":false,"schema":{"items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":"array"}},{"description":"Optional list of track ids to scope the attempts chart to","in":"query","name":"trackIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Inclusive lower bound of the weekly activity window","in":"query","name":"fromDate","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Inclusive upper bound of the weekly activity window","in":"query","name":"toDate","required":false,"schema":{"format":"date-time","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamActivityGetWeeklyActivityResponseDTO"}}},"description":""}},"summary":"Get weekly activity across all team users","tags":["dashboard","bff"]}},"/api/v1/team-performance/areas-for-improvement":{"get":{"operationId":"TeamPerformanceController_getAreasForImprovement_v1","parameters":[{"description":"Filter by team ID","in":"query","name":"teamId","required":false,"schema":{"type":"string"}},{"description":"Filter by user IDs","in":"query","name":"userIds","required":false,"schema":{"items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":"array"}},{"description":"Filter by track IDs","in":"query","name":"trackIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Filter by mission IDs directly. Takes precedence over trackIds when provided.","in":"query","name":"missionIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Filter by start date of the performance period","in":"query","name":"fromDate","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Filter by end date of the performance period","in":"query","name":"toDate","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Maximum number of missions to return (default 3)","in":"query","name":"limit","required":false,"schema":{"exclusiveMinimum":true,"maximum":50,"minimum":0,"type":"integer"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamPerformanceGetAreasForImprovementResponseDTO"}}},"description":""}},"summary":"Team/org areas for improvement: missions ranked by how many members are struggling with them","tags":["dashboard","bff"]}},"/api/v1/team-performance/leaderboard":{"get":{"operationId":"TeamPerformanceController_getLeaderboard_v1","parameters":[{"description":"Array of IDs to filter results. To skip this filter, omit the key entirely from your JSON. Never write the bare word `undefined` (that is invalid JSON). Empty arrays and null are also treated as omission.","in":"query","name":"ids","required":false,"schema":{"items":{"type":"string"},"nullable":true,"type":"array"}},{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"in":"query","name":"order","required":false,"schema":{"properties":{"averageScore":{"enum":["ASC","DESC"],"type":"string"},"lastSessionDate":{"enum":["ASC","DESC"],"type":"string"},"roundsPlayed":{"enum":["ASC","DESC"],"type":"string"}},"type":"object"},"style":"deepObject"},{"description":"User name search","in":"query","name":"name","required":false,"schema":{"type":"string"}},{"description":"Filter by team ID","in":"query","name":"teamId","required":false,"schema":{"type":"string"}},{"description":"Filter by user IDs","in":"query","name":"userIds","required":false,"schema":{"items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":"array"}},{"description":"Filter by start date of the performance period","in":"query","name":"fromDate","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Filter by end date of the performance period","in":"query","name":"toDate","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Filter by track IDs","in":"query","name":"trackIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Filter by mission IDs directly. Takes precedence over trackIds when provided (no server-side track resolution). Blank/whitespace entries are dropped; an all-empty list is treated as no filter.","in":"query","name":"missionIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamPerformanceGetLeaderboardResponseDTO"}}},"description":""}},"summary":"Get the performance leaderboard (person, teams, average score, last attempt)","tags":["dashboard","bff"]}},"/api/v1/team-performance/performance-by-member":{"get":{"operationId":"TeamPerformanceController_getPerformanceByMember_v1","parameters":[{"description":"Array of IDs to filter results. To skip this filter, omit the key entirely from your JSON. Never write the bare word `undefined` (that is invalid JSON). Empty arrays and null are also treated as omission.","in":"query","name":"ids","required":false,"schema":{"items":{"type":"string"},"nullable":true,"type":"array"}},{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"in":"query","name":"order","required":false,"schema":{"properties":{"averageScore":{"enum":["ASC","DESC"],"type":"string"},"lastSessionDate":{"enum":["ASC","DESC"],"type":"string"},"missionsCompleted":{"enum":["ASC","DESC"],"type":"string"},"roundsPlayed":{"enum":["ASC","DESC"],"type":"string"},"totalScore":{"enum":["ASC","DESC"],"type":"string"}},"type":"object"},"style":"deepObject"},{"description":"User name search","in":"query","name":"name","required":false,"schema":{"type":"string"}},{"description":"Filter by team ID","in":"query","name":"teamId","required":false,"schema":{"type":"string"}},{"description":"Filter by user IDs","in":"query","name":"userIds","required":false,"schema":{"items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":"array"}},{"description":"Filter by start date of the performance period","in":"query","name":"fromDate","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Filter by end date of the performance period","in":"query","name":"toDate","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Filter by track IDs","in":"query","name":"trackIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Filter by mission IDs directly. Takes precedence over trackIds when provided (no server-side track resolution). Blank/whitespace entries are dropped; an all-empty list is treated as no filter.","in":"query","name":"missionIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamPerformanceGetPerformanceByMemberResponseDTO"}}},"description":""}},"summary":"Get team performance broken down by member","tags":["dashboard","bff"]}},"/api/v1/team-performance/performance-by-mission":{"get":{"operationId":"TeamPerformanceController_getPerformanceByMission_v1","parameters":[{"description":"Array of IDs to filter results. To skip this filter, omit the key entirely from your JSON. Never write the bare word `undefined` (that is invalid JSON). Empty arrays and null are also treated as omission.","in":"query","name":"ids","required":false,"schema":{"items":{"type":"string"},"nullable":true,"type":"array"}},{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"in":"query","name":"order","required":false,"schema":{"properties":{"averageRoundToCompletion":{"enum":["ASC","DESC"],"type":"string"},"averageScore":{"enum":["ASC","DESC"],"type":"string"},"roundsPlayed":{"enum":["ASC","DESC"],"type":"string"}},"type":"object"},"style":"deepObject"},{"description":"Track ID","in":"query","name":"trackId","required":false,"schema":{"type":"string"}},{"description":"Team ID","in":"query","name":"teamId","required":false,"schema":{"type":"string"}},{"description":"From date for filtering","in":"query","name":"fromDate","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"To date for filtering","in":"query","name":"toDate","required":false,"schema":{"format":"date-time","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamPerformanceGetPerformanceByMissionResponseDTO"}}},"description":""}},"summary":"Get team performance broken down by mission","tags":["dashboard","bff"]}},"/api/v1/team-performance/performance-by-scorecard-item":{"get":{"operationId":"TeamPerformanceController_getPerformanceByScorecardItem_v1","parameters":[{"description":"The mission whose scorecard tasks to score","in":"query","name":"missionId","required":true,"schema":{"type":"string"}},{"description":"Restrict the population to these teams","in":"query","name":"teamIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Restrict the population to these users","in":"query","name":"userIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Inclusive lower bound of the session date window","in":"query","name":"fromDate","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Inclusive upper bound of the session date window","in":"query","name":"toDate","required":false,"schema":{"format":"date-time","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/TeamPerformanceGetPerformanceByScorecardItemResponseDTO"},"type":"array"}}},"description":""}},"summary":"Get average score per scorecard task for a mission","tags":["dashboard","bff"]}},"/api/v1/team-performance/performance-by-track":{"get":{"operationId":"TeamPerformanceController_getPerformanceByTrack_v1","parameters":[{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"description":"Optional. Restrict the population to these teams.","in":"query","name":"teamIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Optional. Restrict the population to these users.","in":"query","name":"userIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Optional. Only count missions in this language.","in":"query","name":"language","required":false,"schema":{"enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"}},{"description":"Inclusive lower bound of the session date window","in":"query","name":"createdAfter","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Exclusive upper bound of the session date window","in":"query","name":"createdBefore","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Optional. Restrict to these tracks. Blank/whitespace entries are dropped; an all-empty list is treated as no filter.","in":"query","name":"trackIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamPerformanceGetPerformanceByTrackResponseDTO"}}},"description":""}},"summary":"Get team performance broken down by track","tags":["dashboard","bff"]}},"/api/v1/team-performance/performance-by-track-missions":{"get":{"operationId":"TeamPerformanceController_getPerformanceByTrackMissions_v1","parameters":[{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"description":"Optional. Restrict the population to these teams.","in":"query","name":"teamIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Optional. Restrict the population to these users.","in":"query","name":"userIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Optional. Only count missions in this language.","in":"query","name":"language","required":false,"schema":{"enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"}},{"description":"Inclusive lower bound of the session date window","in":"query","name":"createdAfter","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Exclusive upper bound of the session date window","in":"query","name":"createdBefore","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Required. The track whose missions to score.","in":"query","name":"trackId","required":true,"schema":{"type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamPerformanceGetPerformanceByTrackMissionsResponseDTO"}}},"description":""}},"summary":"Get mission-level performance for a track (nested child rows)","tags":["dashboard","bff"]}},"/api/v1/team-performance/played-mission":{"get":{"operationId":"TeamPerformanceController_findPlayedMissionsAcrossAllUsers_v1","parameters":[{"description":"Page number starting from 1","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Maximum number of items to return per page","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"description":"Search string to filter missions by name or description","in":"query","name":"searchString","required":false,"schema":{"type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamPerformancePlayedMissionResponseDTO"}}},"description":""}},"summary":"List played missions across all users","tags":["dashboard","bff"]}},"/api/v1/team-performance/track-breakdown-by-member":{"get":{"operationId":"TeamPerformanceController_getTrackBreakdownByMember_v1","parameters":[{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"description":"The track whose completion to break down","in":"query","name":"trackId","required":true,"schema":{"type":"string"}},{"description":"Restrict the population to these users","in":"query","name":"userIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Inclusive lower bound of the session date window","in":"query","name":"fromDate","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Inclusive upper bound of the session date window","in":"query","name":"toDate","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"The single team whose members to break down","in":"query","name":"teamId","required":true,"schema":{"type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamPerformanceGetTrackBreakdownByMemberResponseDTO"}}},"description":""}},"summary":"Track completion broken down per member of a single team","tags":["dashboard","bff"]}},"/api/v1/team-performance/track-breakdown-by-team":{"get":{"operationId":"TeamPerformanceController_getTrackBreakdownByTeam_v1","parameters":[{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"description":"The track whose completion to break down","in":"query","name":"trackId","required":true,"schema":{"type":"string"}},{"description":"Restrict the population to these users","in":"query","name":"userIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Inclusive lower bound of the session date window","in":"query","name":"fromDate","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Inclusive upper bound of the session date window","in":"query","name":"toDate","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Restrict to these teams (intersected with the caller's managed teams). Omit for all managed teams.","in":"query","name":"teamIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamPerformanceGetTrackBreakdownByTeamResponseDTO"}}},"description":""}},"summary":"Track completion broken down per team the caller manages","tags":["dashboard","bff"]}},"/api/v1/team-performance/user-performance-by-round":{"get":{"operationId":"TeamPerformanceController_getUserPerformanceByRound_v1","parameters":[{"description":"Array of unique user identifiers to get performance data for","in":"query","name":"userIds","required":true,"schema":{"items":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"},"type":"array"}},{"description":"The unique identifier for the mission to analyze performance by round","in":"query","name":"missionId","required":true,"schema":{"type":"string"}},{"description":"Start date for the performance data range, formatted as an ISO string","in":"query","name":"fromDate","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"End date for the performance data range, formatted as an ISO string","in":"query","name":"toDate","required":false,"schema":{"format":"date-time","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/TeamPerformanceGetUserPerformanceByRoundResponseDTO"},"type":"array"}}},"description":""}},"summary":"Get a user performance history per round","tags":["dashboard","bff"]}},"/api/v1/teams":{"get":{"operationId":"TeamsController_getTeams_v1","parameters":[{"description":"Array of IDs to filter results. To skip this filter, omit the key entirely from your JSON. Never write the bare word `undefined` (that is invalid JSON). Empty arrays and null are also treated as omission.","in":"query","name":"ids","required":false,"schema":{"items":{"type":"string"},"nullable":true,"type":"array"}},{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"description":"Optional. Restrict teams to those a specific user is a member of. Omit to include all teams.","in":"query","name":"userId","required":false,"schema":{"type":"string"}},{"description":"Optional. Filter teams by name (substring match). Omit to return teams regardless of name.","in":"query","name":"searchString","required":false,"schema":{"type":"string"}},{"description":"Optional. Fuzzy search across team name — tolerates typos and partial input (e.g. \"enginering\" finds \"Engineering\", \"eng\" finds \"Engineering\"), ranked by similarity. Composable with searchString.","in":"query","name":"search","required":false,"schema":{"type":"string"}},{"description":"Optional. Inclusive lower bound (>=) on team creation date, as an ISO 8601 date-time string. Teams created on/after this instant are included. Omit for no lower bound.","in":"query","name":"createdAfter","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Optional. Exclusive upper bound (<) on team creation date, as an ISO 8601 date-time string. Teams created strictly before this instant are included. Omit for no upper bound.","in":"query","name":"createdBefore","required":false,"schema":{"format":"date-time","type":"string"}},{"in":"query","name":"order","required":false,"schema":{"properties":{"createdAt":{"enum":["ASC","DESC"],"type":"string"},"name":{"enum":["ASC","DESC"],"type":"string"}},"type":"object"},"style":"deepObject"}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamsGetTeamsPaginatedResponseDTO"}}},"description":""}},"summary":"List teams with pagination","tags":["crm"]},"post":{"operationId":"TeamsController_createTeam_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamCreateRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamsCreateTeamResponseDTO"}}},"description":""}},"summary":"Create a new team","tags":["crm"]}},"/api/v1/teams/full-teams":{"get":{"operationId":"TeamsController_getFullTeams_v1","parameters":[{"description":"Array of IDs to filter results. To skip this filter, omit the key entirely from your JSON. Never write the bare word `undefined` (that is invalid JSON). Empty arrays and null are also treated as omission.","in":"query","name":"ids","required":false,"schema":{"items":{"type":"string"},"nullable":true,"type":"array"}},{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"description":"Optional. Restrict teams to those a specific user is a member of. Omit to include all teams.","in":"query","name":"userId","required":false,"schema":{"type":"string"}},{"description":"Optional. Filter teams by name (substring match). Omit to return teams regardless of name.","in":"query","name":"searchString","required":false,"schema":{"type":"string"}},{"description":"Optional. Fuzzy search across team name — tolerates typos and partial input (e.g. \"enginering\" finds \"Engineering\", \"eng\" finds \"Engineering\"), ranked by similarity. Composable with searchString.","in":"query","name":"search","required":false,"schema":{"type":"string"}},{"description":"Optional. Inclusive lower bound (>=) on team creation date, as an ISO 8601 date-time string. Teams created on/after this instant are included. Omit for no lower bound.","in":"query","name":"createdAfter","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Optional. Exclusive upper bound (<) on team creation date, as an ISO 8601 date-time string. Teams created strictly before this instant are included. Omit for no upper bound.","in":"query","name":"createdBefore","required":false,"schema":{"format":"date-time","type":"string"}},{"in":"query","name":"order","required":false,"schema":{"properties":{"createdAt":{"enum":["ASC","DESC"],"type":"string"},"name":{"enum":["ASC","DESC"],"type":"string"}},"type":"object"},"style":"deepObject"}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamsGetTeamsPaginatedResponseDTO"}}},"description":""}},"summary":"List teams with users and pagination","tags":["crm"]}},"/api/v1/teams/{teamId}":{"delete":{"operationId":"TeamsController_deleteTeam_v1","parameters":[{"description":"The unique identifier of the team","in":"path","name":"teamId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"description":""}},"summary":"Delete a team by ID","tags":["crm"]},"get":{"operationId":"TeamsController_getTeam_v1","parameters":[{"description":"The unique identifier of the team","in":"path","name":"teamId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamsGetTeamResponseDTO"}}},"description":""}},"summary":"Get a team by ID","tags":["crm"]},"patch":{"operationId":"TeamsController_updateTeam_v1","parameters":[{"description":"The unique identifier of the team","in":"path","name":"teamId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamCreateRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamsUpdateTeamResponseDTO"}}},"description":""}},"summary":"Update a team by ID","tags":["crm"]}},"/api/v1/teams/{teamId}/invite/{inviteId}":{"delete":{"operationId":"TeamsController_removeInviteFromTeam_v1","parameters":[{"description":"The unique identifier of the team","in":"path","name":"teamId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"description":"The unique identifier of the invite","in":"path","name":"inviteId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"204":{"description":""}},"summary":"Remove an invite from a team","tags":["crm"]},"post":{"operationId":"TeamsController_addInviteToTeam_v1","parameters":[{"description":"The unique identifier of the team","in":"path","name":"teamId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"description":"The unique identifier of the invite","in":"path","name":"inviteId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"204":{"description":""}},"summary":"Add an invite to a team","tags":["crm"]}},"/api/v1/teams/{teamId}/users/{userId}":{"delete":{"operationId":"TeamsController_removeUserFromTeam_v1","parameters":[{"description":"The unique identifier of the team","in":"path","name":"teamId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"description":"The unique identifier of the user","in":"path","name":"userId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"204":{"description":""}},"summary":"Remove a user from a team","tags":["crm"]},"post":{"operationId":"TeamsController_addUserToTeam_v1","parameters":[{"description":"The unique identifier of the team","in":"path","name":"teamId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"description":"The unique identifier of the user","in":"path","name":"userId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"204":{"description":""}},"summary":"Add a user to a team","tags":["crm"]}},"/api/v1/track-completion":{"get":{"operationId":"TrackCompletionController_getTrackCompletion_v1","parameters":[{"description":"Array of IDs to filter results. To skip this filter, omit the key entirely from your JSON. Never write the bare word `undefined` (that is invalid JSON). Empty arrays and null are also treated as omission.","in":"query","name":"ids","required":false,"schema":{"items":{"type":"string"},"nullable":true,"type":"array"}},{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"description":"List of mission reference IDs to filter tracks","in":"query","name":"missionReferenceIds","required":false,"schema":{"items":{"description":"Mission reference ID","type":"string"},"type":"array"}},{"description":"Optional. Filter tracks by title or content (substring match). Omit this key to return tracks regardless of title/content.","in":"query","name":"searchString","required":false,"schema":{"type":"string"}},{"description":"Optional. Full-text search across title and description via the CMS text index. When set, results are always ranked by relevance (this query type does not expose an `order` field). Can be combined with `searchString` (both filters apply).","in":"query","name":"search","required":false,"schema":{"type":"string"}},{"description":"Optional. Filter tracks by language. Omit this key to return tracks in any language.","in":"query","name":"language","required":false,"schema":{"enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"}},{"in":"query","name":"sagaType","required":false,"schema":{"default":["under_construction","client_specific"],"items":{"description":"Optional saga type filter for tracks.","enum":["under_construction","generic","client_specific"],"type":"string"},"type":"array"}},{"description":"Access level","in":"query","name":"accessLevel","required":false,"schema":{"items":{"enum":["readOnly","readWrite"],"type":"string"},"type":"array"}},{"description":"Optional statuses filter for tracks","in":"query","name":"status","required":false,"schema":{"items":{"enum":["published","draft","processing","processing_error"],"type":"string"},"type":"array"}},{"description":"Optional conversation topics filter for tracks","in":"query","name":"conversationTopic","required":false,"schema":{"enum":["prospecting_and_outreach","discovery_and_qualification","pitching_and_presenting","objection_handling","negotiation","customer_retention","expansion","essential_conversational_skills","sales_leadership","customer_support"],"type":"string"}},{"description":"Team ID to filter users (mandatory)","in":"query","name":"teamId","required":true,"schema":{"type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackCompletionResponseDTO"}}},"description":""}},"summary":"Get track completion data for the dashboard","tags":["dashboard","bff"]}},"/api/v1/tracks":{"get":{"operationId":"TrackController_find_v1","parameters":[{"description":"Array of IDs to filter results. To skip this filter, omit the key entirely from your JSON. Never write the bare word `undefined` (that is invalid JSON). Empty arrays and null are also treated as omission.","in":"query","name":"ids","required":false,"schema":{"items":{"type":"string"},"nullable":true,"type":"array"}},{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"description":"List of mission reference IDs to filter tracks","in":"query","name":"missionReferenceIds","required":false,"schema":{"items":{"description":"Mission reference ID","type":"string"},"type":"array"}},{"description":"Optional search string to filter tracks","in":"query","name":"searchString","required":false,"schema":{"type":"string"}},{"description":"Optional. Full-text search across title and description via the CMS text index. When set, results are always ranked by relevance (this query type does not expose an `order` field). Can be combined with `searchString` (both filters apply).","in":"query","name":"search","required":false,"schema":{"type":"string"}},{"description":"Optional. Filter tracks by language. Omit this key to return tracks in any language.","in":"query","name":"language","required":false,"schema":{"enum":["en","de","fr","es","it","nl","zh-Hans"],"type":"string"}},{"in":"query","name":"sagaType","required":false,"schema":{"default":["under_construction","client_specific"],"items":{"description":"Optional saga type filter for tracks.","enum":["under_construction","generic","client_specific"],"type":"string"},"type":"array"}},{"description":"Access level","in":"query","name":"accessLevel","required":false,"schema":{"items":{"enum":["readOnly","readWrite"],"type":"string"},"type":"array"}},{"description":"Optional statuses filter for tracks","in":"query","name":"status","required":false,"schema":{"default":["published"],"items":{"enum":["published","draft","processing","processing_error"],"type":"string"},"type":"array"}},{"description":"Optional conversation topics filter for tracks","in":"query","name":"conversationTopic","required":false,"schema":{"enum":["prospecting_and_outreach","discovery_and_qualification","pitching_and_presenting","objection_handling","negotiation","customer_retention","expansion","essential_conversational_skills","sales_leadership","customer_support"],"type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackFindResponseDTO"}}},"description":""}},"summary":"List tracks with pagination","tags":["cms"]}},"/api/v1/tracks/{trackId}":{"delete":{"operationId":"TrackController_delete_v1","parameters":[{"description":"The unique identifier for the track","in":"path","name":"trackId","required":true,"schema":{"pattern":"^[0-9a-f]{24}$","type":"string"}}],"responses":{"200":{"description":""}},"summary":"Delete a track","tags":["cms"]},"get":{"operationId":"TrackController_findById_v1","parameters":[{"description":"The unique identifier for the track","in":"path","name":"trackId","required":true,"schema":{"pattern":"^[0-9a-f]{24}$","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackResponseDTO"}}},"description":""}},"summary":"Get a track by ID","tags":["cms"]},"patch":{"operationId":"TrackController_update_v1","parameters":[{"description":"The unique identifier for the track","in":"path","name":"trackId","required":true,"schema":{"pattern":"^[0-9a-f]{24}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackUpdateRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackResponseDTO"}}},"description":""}},"summary":"Update a track","tags":["cms"]}},"/api/v1/tracks/{trackId}/cancel-processing":{"post":{"operationId":"TrackController_cancelProcessing_v1","parameters":[{"description":"The unique identifier for the track","in":"path","name":"trackId","required":true,"schema":{"pattern":"^[0-9a-f]{24}$","type":"string"}}],"responses":{"201":{"description":""}},"summary":"Cancel processing for a track","tags":["cms"]}},"/api/v1/tracks/{trackId}/duplicate":{"post":{"operationId":"TrackController_duplicateTrack_v1","parameters":[{"description":"The unique identifier for the track","in":"path","name":"trackId","required":true,"schema":{"pattern":"^[0-9a-f]{24}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackDuplicateRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackDuplicateResponseDTO"}}},"description":""}},"summary":"Duplicate a track","tags":["cms"]}},"/api/v1/tracks/{trackId}/move":{"post":{"operationId":"TrackController_moveTrack_v1","parameters":[{"description":"The unique identifier for the track","in":"path","name":"trackId","required":true,"schema":{"pattern":"^[0-9a-f]{24}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackMoveRequestDTO"}}},"required":true},"responses":{"201":{"description":""}},"summary":"Move a track to a new position","tags":["cms"]}},"/api/v1/tracks/{trackId}/move-mission":{"post":{"operationId":"TrackController_moveMission_v1","parameters":[{"description":"The unique identifier for the track","in":"path","name":"trackId","required":true,"schema":{"pattern":"^[0-9a-f]{24}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackMoveMissionRequestDTO"}}},"required":true},"responses":{"201":{"description":""}},"summary":"Move a mission within a track","tags":["cms"]}},"/api/v1/tracks/{trackId}/remove-mission":{"post":{"operationId":"TrackController_removeMission_v1","parameters":[{"description":"The unique identifier for the track","in":"path","name":"trackId","required":true,"schema":{"pattern":"^[0-9a-f]{24}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackRemoveMissionRequestDTO"}}},"required":true},"responses":{"201":{"description":""}},"summary":"Remove a mission from a track","tags":["cms"]}},"/api/v1/tracks/{trackId}/retry-processing":{"post":{"operationId":"TrackController_retryProcessing_v1","parameters":[{"description":"The unique identifier for the track","in":"path","name":"trackId","required":true,"schema":{"pattern":"^[0-9a-f]{24}$","type":"string"}}],"responses":{"201":{"description":""}},"summary":"Retry processing for a track","tags":["cms"]}},"/api/v1/tracks/{trackId}/visibility":{"get":{"operationId":"TrackController_getVisibility_v1","parameters":[{"description":"The unique identifier for the track","in":"path","name":"trackId","required":true,"schema":{"pattern":"^[0-9a-f]{24}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackVisibilityResponseDTO"}}},"description":""}},"summary":"Get a track's team visibility audience as team ids","tags":["cms"]},"put":{"operationId":"TrackController_setVisibility_v1","parameters":[{"description":"The unique identifier for the track","in":"path","name":"trackId","required":true,"schema":{"pattern":"^[0-9a-f]{24}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackVisibilityUpdateRequestDTO"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackVisibilityResponseDTO"}}},"description":""}},"summary":"Replace a track's team visibility audience. An empty set makes the track visible to everyone in the organization.","tags":["cms"]}},"/api/v1/tracks/{trackId}/visibility/preflight":{"post":{"operationId":"TrackVisibilityPreflightController_preflight_v1","parameters":[{"description":"The track (Payload content) id","in":"path","name":"trackId","required":true,"schema":{"pattern":"^[0-9a-f]{24}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackVisibilityPreflightRequestDTO"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackVisibilityPreflightResponseDTO"}}},"description":""}},"summary":"Count active assignments of learners who would lose access under a prospective team audience","tags":["content-allocation"]}},"/api/v1/transcript-messages":{"get":{"operationId":"MessageController_find_v1","parameters":[{"description":"Array of IDs to filter results. To skip this filter, omit the key entirely from your JSON. Never write the bare word `undefined` (that is invalid JSON). Empty arrays and null are also treated as omission.","in":"query","name":"ids","required":false,"schema":{"items":{"type":"string"},"nullable":true,"type":"array"}},{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"description":"Order configuration as a key-value object where keys are field names and values are \"ASC\" or \"DESC\".","in":"query","name":"order","required":false,"schema":{"additionalProperties":{"enum":["ASC","DESC"],"type":"string"},"type":"object"},"style":"deepObject"},{"description":"Optional call ID to filter messages.","in":"query","name":"callId","required":false,"schema":{"type":"string"}},{"description":"Optional language code to translate the message content. If provided and different from the original language, messages will be translated to the requested language.","in":"query","name":"language","required":false,"schema":{"enum":["en","de","fr","es","it","nl","pl","zh","ja","id","tr","pt","el","ko","vi","hi","ms","th","hr","ro","bg","sv","no","yue"],"type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageFindResponseDTO"}}},"description":""}},"summary":"List transcript messages with pagination","tags":["session"]}},"/api/v1/user-consent":{"delete":{"operationId":"UserConsentController_revoke_v1","parameters":[],"responses":{"204":{"description":""}},"summary":"Revoke the current user consent","tags":["user-consent"]},"post":{"operationId":"UserConsentController_accept_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserConsentAcceptRequestDTO"}}},"required":true},"responses":{"204":{"description":""}},"summary":"Accept the current consent document","tags":["user-consent"]}},"/api/v1/user-consent/admin/audit.csv":{"get":{"operationId":"UserConsentController_getAuditCsv_v1","parameters":[],"responses":{"200":{"content":{"text/csv":{"schema":{"type":"string"}}},"description":"CSV export of every consent accept and revoke event"}},"summary":"Export consent audit log as CSV","tags":["user-consent"]}},"/api/v1/user-consent/admin/history":{"get":{"operationId":"UserConsentController_getAdminHistory_v1","parameters":[{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"in":"query","name":"order","required":false,"schema":{"properties":{"fileName":{"enum":["ASC","DESC"],"type":"string"},"uploadedAt":{"enum":["ASC","DESC"],"type":"string"},"version":{"enum":["ASC","DESC"],"type":"string"}},"type":"object"},"style":"deepObject"}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserConsentAdminHistoryResponseDTO"}}},"description":""}},"summary":"List all users consent history (admin)","tags":["user-consent"]}},"/api/v1/user-consent/document":{"get":{"operationId":"UserConsentController_getDocument_v1","parameters":[{"description":"Set to \"1\" to trigger a file download instead of inline display","in":"query","name":"download","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/pdf":{"schema":{"format":"binary","type":"string"}}},"description":"PDF stream for the latest consent document"}},"summary":"Download the latest consent document PDF","tags":["user-consent"]},"post":{"operationId":"UserConsentController_uploadDocument_v1","parameters":[],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/UserConsentUploadRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserConsentDocumentResponseDTO"}}},"description":""}},"summary":"Upload a new consent document PDF","tags":["user-consent"]}},"/api/v1/user-consent/document/{documentId}":{"get":{"operationId":"UserConsentController_getDocumentById_v1","parameters":[{"description":"The id of the consent document to stream","in":"path","name":"documentId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},{"description":"Set to \"1\" to trigger a file download instead of inline display","in":"query","name":"download","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/pdf":{"schema":{"format":"binary","type":"string"}}},"description":"PDF stream for a specific consent document version"}},"summary":"Download a consent document by ID","tags":["user-consent"]}},"/api/v1/user-consent/history":{"get":{"operationId":"UserConsentController_getHistory_v1","parameters":[{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserConsentHistoryResponseDTO"}}},"description":""}},"summary":"Get current user consent history","tags":["user-consent"]}},"/api/v1/user-consent/status":{"get":{"operationId":"UserConsentController_getStatus_v1","parameters":[],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserConsentStatusResponseDTO"}}},"description":""}},"summary":"Get current user consent status","tags":["user-consent"]}},"/api/v1/user/activation-status":{"get":{"operationId":"UserActivationStatusController_getActivationStatus_v1","parameters":[],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserActivationStatusGetResponseDTO"}}},"description":""}},"summary":"Get the current user's activation status","tags":["crm"]},"patch":{"operationId":"UserActivationStatusController_updateActivationStatus_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserActivationStatusPatchRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserActivationStatusGetResponseDTO"}}},"description":""}},"summary":"Update the current user's activation status","tags":["crm"]}},"/api/v1/users":{"get":{"operationId":"UsersController_findAllUsers_v1","parameters":[{"description":"Array of IDs to filter results. To skip this filter, omit the key entirely from your JSON. Never write the bare word `undefined` (that is invalid JSON). Empty arrays and null are also treated as omission.","in":"query","name":"ids","required":false,"schema":{"items":{"type":"string"},"nullable":true,"type":"array"}},{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"description":"Optional. Restrict results to users in this team. Omit to include users from all teams.","in":"query","name":"teamId","required":false,"schema":{"type":"string"}},{"description":"Optional. Restrict results to users in any of these teams. Combined with `ids`/`teamId` as an intersection.","in":"query","name":"teamIds","required":false,"schema":{"items":{"type":"string"},"type":"array"}},{"description":"Optional. Exclude users belonging to this team. Omit to apply no exclusion.","in":"query","name":"excludeTeamId","required":false,"schema":{"type":"string"}},{"description":"Optional. Set to \"true\" to only return users the current user can manage. Omit for no manageability filter.","in":"query","name":"manageable","required":false,"schema":{"enum":["true"],"type":"string"}},{"description":"Optional. Filter by full name (case-insensitive substring match against \"firstName lastName\"). Omit to return users regardless of name.","in":"query","name":"name","required":false,"schema":{"type":"string"}},{"description":"Optional. Search users by name or email (substring match). Omit to return users regardless of name/email.","in":"query","name":"searchString","required":false,"schema":{"type":"string"}},{"description":"Optional. Fuzzy search across firstName, lastName, and email — tolerates typos and partial input (e.g. \"jhon\" finds \"John\", \"jo\" finds \"John\"), ranked by similarity. Composable with searchString.","in":"query","name":"search","required":false,"schema":{"type":"string"}},{"description":"Optional. Filter by user role. Omit to return users with any role.","in":"query","name":"role","required":false,"schema":{"enum":["Owner","Manager","Editor","Member","Assistant User"],"type":"string"}},{"description":"Optional. Inclusive lower bound (>=) on user creation date, as an ISO 8601 date-time string. Users created on/after this instant are included. Omit for no lower bound.","in":"query","name":"createdAfter","required":false,"schema":{"format":"date-time","type":"string"}},{"description":"Optional. Exclusive upper bound (<) on user creation date, as an ISO 8601 date-time string. Users created strictly before this instant are included. Omit for no upper bound.","in":"query","name":"createdBefore","required":false,"schema":{"format":"date-time","type":"string"}},{"in":"query","name":"order","required":false,"schema":{"properties":{"createdAt":{"enum":["ASC","DESC"],"type":"string"},"lastLoginDate":{"enum":["ASC","DESC"],"type":"string"},"name":{"enum":["ASC","DESC"],"type":"string"},"roles":{"enum":["ASC","DESC"],"type":"string"}},"type":"object"},"style":"deepObject"}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsersFindAllUsersResponseDTO"}}},"description":""}},"summary":"List all users with optional filters","tags":["crm"]}},"/api/v1/users/change-role":{"patch":{"operationId":"UsersController_changeUserRoles_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsersChangeRoleRequestDTO"}}},"required":true},"responses":{"200":{"description":""}},"summary":"Change roles assigned to a user","tags":["crm"]}},"/api/v1/users/logout":{"post":{"operationId":"UsersController_logout_v1","parameters":[],"responses":{"201":{"description":""}},"summary":"Log out all users in the organization","tags":["crm"]}},"/api/v1/users/sync-courier":{"post":{"operationId":"UsersController_syncCourier_v1","parameters":[],"responses":{"201":{"description":""}},"summary":"Sync all users to Courier notification service","tags":["crm"]}},"/api/v1/users/{userId}":{"delete":{"operationId":"UsersController_deleteUser_v1","parameters":[{"description":"The unique identifier of the user","in":"path","name":"userId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"200":{"description":""}},"summary":"Delete a user by ID","tags":["crm"]},"get":{"operationId":"UsersController_getUser_v1","parameters":[{"description":"The unique identifier of the user","in":"path","name":"userId","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsersGetUserResponseDTO"}}},"description":""}},"summary":"Get a user by ID","tags":["crm"]}},"/api/v1/voices":{"get":{"operationId":"VoicesController_findVoices_v1","parameters":[{"description":"Array of IDs to filter results. To skip this filter, omit the key entirely from your JSON. Never write the bare word `undefined` (that is invalid JSON). Empty arrays and null are also treated as omission.","in":"query","name":"ids","required":false,"schema":{"items":{"type":"string"},"nullable":true,"type":"array"}},{"description":"Page number starting from 1.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"number"}},{"description":"Limit for the number of results per page.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"number"}},{"description":"Order configuration as a key-value object where keys are field names and values are \"ASC\" or \"DESC\".","in":"query","name":"order","required":false,"schema":{"additionalProperties":{"enum":["ASC","DESC"],"type":"string"},"type":"object"},"style":"deepObject"},{"description":"Filter voices by gender","in":"query","name":"gender","required":false,"schema":{"enum":["male","female"],"type":"string"}},{"description":"Filter voices by language","in":"query","name":"language","required":false,"schema":{"type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicesFindResponseDTO"}}},"description":""}},"summary":"List available voices","tags":["cms"]}},"/api/v1/voices/sample":{"get":{"operationId":"VoicesController_findVoiceSample_v1","parameters":[{"description":"Filter voices by language","in":"query","name":"language","required":true,"schema":{"type":"string"}},{"description":"Mission ID used for stable voice selection","in":"query","name":"missionId","required":true,"schema":{"pattern":"^[0-9a-f]{24}$","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicesSampleResponseDTO"}}},"description":""}},"summary":"Get a voice sample audio URL","tags":["cms"]}},"/api/v1/webhook-publishers":{"get":{"operationId":"WebhookPublisherController_list_v1","parameters":[],"responses":{"201":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/WebhookPublisherResponseDTO"},"type":"array"}}},"description":""}},"summary":"List webhook publisher configurations for the org","tags":["webhook-publishers"]},"post":{"operationId":"WebhookPublisherController_create_v1","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPublisherCreateRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPublisherResponseDTO"}}},"description":""}},"summary":"Create a new webhook publisher configuration","tags":["webhook-publishers"]}},"/api/v1/webhook-publishers/{id}":{"delete":{"operationId":"WebhookPublisherController_delete_v1","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"204":{"description":""}},"summary":"Delete a webhook publisher configuration","tags":["webhook-publishers"]},"get":{"operationId":"WebhookPublisherController_getById_v1","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPublisherResponseDTO"}}},"description":""}},"summary":"Get a webhook publisher configuration by ID","tags":["webhook-publishers"]},"patch":{"operationId":"WebhookPublisherController_update_v1","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPublisherUpdateRequestDTO"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPublisherResponseDTO"}}},"description":""}},"summary":"Update a webhook publisher configuration","tags":["webhook-publishers"]}},"/api/v1/webhook-publishers/{id}/test":{"post":{"operationId":"WebhookPublisherController_test_v1","parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookConnectionTestResponseDTO"}}},"description":""}},"summary":"Test webhook publisher connectivity","tags":["webhook-publishers"]}},"/api/v1/whoami":{"get":{"operationId":"WhoAmIController_whoami_v1","parameters":[],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhoAmIResponseDTO"}}},"description":""}},"summary":"Get the current authenticated user profile","tags":["common"]}},"/api/webhook/assistant/elevenlabs":{"post":{"operationId":"VoiceWebhookController_events","parameters":[],"responses":{"200":{"description":""}},"summary":"Handle ElevenLabs assistant post-call webhooks","tags":["assistant"]}},"/health":{"get":{"operationId":"HealthController_check","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"details":{"additionalProperties":{"additionalProperties":true,"properties":{"status":{"type":"string"}},"required":["status"],"type":"object"},"example":{"database":{"status":"up"}},"type":"object"},"error":{"additionalProperties":{"additionalProperties":true,"properties":{"status":{"type":"string"}},"required":["status"],"type":"object"},"example":{},"nullable":true,"type":"object"},"info":{"additionalProperties":{"additionalProperties":true,"properties":{"status":{"type":"string"}},"required":["status"],"type":"object"},"example":{"database":{"status":"up"}},"nullable":true,"type":"object"},"status":{"example":"ok","type":"string"}},"type":"object"}}},"description":"The Health Check is successful"},"503":{"content":{"application/json":{"schema":{"properties":{"details":{"additionalProperties":{"additionalProperties":true,"properties":{"status":{"type":"string"}},"required":["status"],"type":"object"},"example":{"database":{"status":"up"},"redis":{"message":"Could not connect","status":"down"}},"type":"object"},"error":{"additionalProperties":{"additionalProperties":true,"properties":{"status":{"type":"string"}},"required":["status"],"type":"object"},"example":{"redis":{"message":"Could not connect","status":"down"}},"nullable":true,"type":"object"},"info":{"additionalProperties":{"additionalProperties":true,"properties":{"status":{"type":"string"}},"required":["status"],"type":"object"},"example":{"database":{"status":"up"}},"nullable":true,"type":"object"},"status":{"example":"error","type":"string"}},"type":"object"}}},"description":"The Health Check is not successful"}},"summary":"Check API and database health status","tags":["common"]}},"/mcp/.well-known/oauth-protected-resource":{"get":{"description":"MCP-specific path for protected resource metadata discovery. Returns the same metadata as the root well-known endpoint.","operationId":"OAuthMetadataController_getMcpPrefixProtectedResourceMetadata","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthMetadataGetProtectedResourceMetadataResponseDTO"}}},"description":"OAuth 2.0 Protected Resource Metadata"}},"summary":"Get OAuth 2.0 Protected Resource Metadata (MCP path-prefix)","tags":["oauth2","metadata"]}},"/webhook/elevenlabs":{"post":{"operationId":"ElevenLabsController_events","parameters":[],"responses":{"201":{"description":""}},"summary":"Handle incoming ElevenLabs webhook events","tags":["session"]}},"/webhook/uaa":{"post":{"operationId":"UaaController_uaa","parameters":[],"responses":{"201":{"description":""}},"summary":"Handle PropelAuth UAA webhook events","tags":["crm"]}}},"security":[{"X-API-KEY":[]},{"bearer":[]}],"servers":[{"url":"https://api.wejam.ai"}],"tags":[]}