{"openapi":"3.1.0","info":{"title":"Super IT API","description":"Super IT API - FastAPI","version":"2.0.0"},"paths":{"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"}}}},"/ht/":{"get":{"summary":"Health Gcp","description":"GCP load balancer health check endpoint.\n\nReturns 503 if the Redis listener is dead so Cloud Run restarts the container.","operationId":"health_gcp_ht__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"}}}},"/api/identity/auth/login":{"post":{"tags":["identity"],"summary":"Login","description":"Authenticate user and return JWT tokens.","operationId":"login_api_identity_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"429":{"description":"Too many requests"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/auth/refresh":{"post":{"tags":["identity"],"summary":"Refresh Token","description":"Refresh access token using refresh token.","operationId":"refresh_token_api_identity_auth_refresh_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenPair"}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid token"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/auth/password-reset":{"post":{"tags":["identity"],"summary":"Password Reset","description":"Request password reset email.","operationId":"password_reset_api_identity_auth_password_reset_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordResetRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordResetResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"429":{"description":"Too many requests"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/auth/password-reset/confirm":{"post":{"tags":["identity"],"summary":"Password Reset Confirm","description":"Confirm password reset with token and new password.","operationId":"password_reset_confirm_api_identity_auth_password_reset_confirm_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordResetConfirmRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordResetResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or expired token"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"429":{"description":"Too many requests"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/auth/me":{"get":{"tags":["identity"],"summary":"Get Profile","description":"Get current authenticated user profile.","operationId":"get_profile_api_identity_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"}},"security":[{"HTTPBearer":[]}]},"patch":{"tags":["identity"],"summary":"Update Profile","description":"Update current authenticated user profile.","operationId":"update_profile_api_identity_auth_me_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileUpdateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/identity/auth/me/notification-preferences":{"get":{"tags":["identity"],"summary":"Get Notification Preferences","description":"List the current user's notification preferences.","operationId":"get_notification_preferences_api_identity_auth_me_notification_preferences_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/NotificationPreferenceResponse"},"type":"array","title":"Response Get Notification Preferences Api Identity Auth Me Notification Preferences Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"}},"security":[{"HTTPBearer":[]}]},"patch":{"tags":["identity"],"summary":"Update Notification Preference","description":"Update one notification preference for the current user.","operationId":"update_notification_preference_api_identity_auth_me_notification_preferences_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationPreferenceUpdateBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationPreferenceResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/identity/oauth/{provider}/authorize":{"get":{"tags":["identity"],"summary":"Authorize","description":"Redirect to OAuth provider for authorization.\n\n``signup`` marks a start from the sign-up page, which begins the sign-up\ntrace. ``plan_key`` comes from the sign-up page; it picks the tier to\noffer if this sign-in creates a new account. ``offer`` is the sign-up\noffer code from the sign-up link, kept for a new account only.","operationId":"authorize_api_identity_oauth__provider__authorize_get","parameters":[{"name":"provider","in":"path","required":true,"schema":{"$ref":"#/components/schemas/OAuthProvider"}},{"name":"return_url","in":"query","required":false,"schema":{"type":"string","default":"/","title":"Return Url"}},{"name":"signup","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Signup"}},{"name":"plan_key","in":"query","required":false,"schema":{"type":"string","title":"Plan Key"}},{"name":"offer","in":"query","required":false,"schema":{"type":"string","title":"Offer"}}],"responses":{"307":{"description":"Successful Response"},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"302":{"description":"Redirect to OAuth provider"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/oauth/{provider}/callback":{"get":{"tags":["identity"],"summary":"Oauth Callback","description":"Handle OAuth callback from provider.","operationId":"oauth_callback_api_identity_oauth__provider__callback_get","parameters":[{"name":"provider","in":"path","required":true,"schema":{"$ref":"#/components/schemas/OAuthProvider"}}],"responses":{"307":{"description":"Successful Response"},"400":{"description":"Invalid or missing authorization state"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"302":{"description":"Redirect after OAuth flow"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/oauth/exchange":{"post":{"tags":["identity"],"summary":"Exchange","description":"Exchange one-time code for JWT tokens.","operationId":"exchange_api_identity_oauth_exchange_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthExchangeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthExchangeResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or expired code"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/oauth/verify-link":{"post":{"tags":["identity"],"summary":"Verify Link","description":"Verify account linking via email token.","operationId":"verify_link_api_identity_oauth_verify_link_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthLinkVerifyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthExchangeResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or expired token"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/oauth/accounts":{"get":{"tags":["identity"],"summary":"List Accounts","description":"List OAuth accounts linked to current user.","operationId":"list_accounts_api_identity_oauth_accounts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/OAuthAccountResponse"},"type":"array","title":"Response List Accounts Api Identity Oauth Accounts Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"}},"security":[{"HTTPBearer":[]}]}},"/api/identity/oauth/accounts/{key}":{"delete":{"tags":["identity"],"summary":"Unlink Account","description":"Unlink OAuth account from current user.","operationId":"unlink_account_api_identity_oauth_accounts__key__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Unlink Account Api Identity Oauth Accounts  Key  Delete"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/memberships/mine":{"get":{"tags":["identity"],"summary":"Get My Memberships","description":"Get current user's team memberships.","operationId":"get_my_memberships_api_identity_memberships_mine_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/MembershipResponse"},"type":"array","title":"Response Get My Memberships Api Identity Memberships Mine Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"}},"security":[{"HTTPBearer":[]}]}},"/api/identity/memberships/{team_key}/invite":{"post":{"tags":["identity"],"summary":"Invite Member","description":"Invite new member to team.","operationId":"invite_member_api_identity_memberships__team_key__invite_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteMemberRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvitationResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/memberships/{team_key}/invitations":{"get":{"tags":["identity"],"summary":"List Invitations","description":"List pending invitations for team.","operationId":"list_invitations_api_identity_memberships__team_key__invitations_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InvitationResponse"},"title":"Response List Invitations Api Identity Memberships  Team Key  Invitations Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/memberships/invitations/{invitation_id}/accept":{"post":{"tags":["identity"],"summary":"Accept","description":"Accept team invitation.","operationId":"accept_api_identity_memberships_invitations__invitation_id__accept_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"invitation_id","in":"path","required":true,"schema":{"type":"string","title":"Invitation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvitationResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/memberships/{team_key}/members/{user_key}/role":{"put":{"tags":["identity"],"summary":"Update Role","description":"Change member's role.","operationId":"update_role_api_identity_memberships__team_key__members__user_key__role_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"user_key","in":"path","required":true,"schema":{"type":"string","title":"User Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangeRoleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MembershipResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/memberships/{team_key}/members/{user_key}":{"delete":{"tags":["identity"],"summary":"Remove Member","description":"Remove member from team.","operationId":"remove_member_api_identity_memberships__team_key__members__user_key__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"user_key","in":"path","required":true,"schema":{"type":"string","title":"User Key"}}],"responses":{"204":{"description":"Successful Response"},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["identity"],"summary":"Update Member","description":"Update team member's details.","operationId":"update_member_api_identity_memberships__team_key__members__user_key__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"user_key","in":"path","required":true,"schema":{"type":"string","title":"User Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTeamMemberRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/memberships/{team_key}/members":{"post":{"tags":["identity"],"summary":"Create Member","description":"Create a new user account and add as team member.","operationId":"create_member_api_identity_memberships__team_key__members_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTeamMemberRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/memberships/{team_key}/members/{user_key}/send-invite":{"post":{"tags":["identity"],"summary":"Send Invite","description":"Send invitation email to existing team member.","operationId":"send_invite_api_identity_memberships__team_key__members__user_key__send_invite_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"user_key","in":"path","required":true,"schema":{"type":"string","title":"User Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordResetResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/memberships/{team_key}/members/{user_key}/password-reset":{"post":{"tags":["identity"],"summary":"Member Password Reset","description":"Send password reset email to a team member.","operationId":"member_password_reset_api_identity_memberships__team_key__members__user_key__password_reset_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"user_key","in":"path","required":true,"schema":{"type":"string","title":"User Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordResetResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/teams/":{"get":{"tags":["identity"],"summary":"List Teams","description":"List teams for authenticated user.","operationId":"list_teams_api_identity_teams__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/TeamResponse"},"type":"array","title":"Response List Teams Api Identity Teams  Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"}},"security":[{"HTTPBearer":[]}]}},"/api/identity/teams/list":{"get":{"tags":["identity"],"summary":"List Teams Flat","description":"Return flat team list with hierarchy info.","operationId":"list_teams_flat_api_identity_teams_list_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/TeamListItem"},"type":"array","title":"Response List Teams Flat Api Identity Teams List Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"}},"security":[{"HTTPBearer":[]}]}},"/api/identity/teams/{team_key}":{"patch":{"tags":["identity"],"summary":"Update Team","description":"Update team name and timezone. Admin only, non-managed teams.","operationId":"update_team_api_identity_teams__team_key__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/teams/{team_key}/ai-agent":{"get":{"tags":["identity"],"summary":"Get Team Ai Agent Settings","description":"Get effective team AI agent settings.\n\nAny team member may read, but ``llm_instructions`` is operational\ncontext an MSP (or the client's own admin) writes about the client —\nend-user roles get everything except that field (SUP-747 / I-2).","operationId":"get_team_ai_agent_settings_api_identity_teams__team_key__ai_agent_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamAiAgentSettingsResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["identity"],"summary":"Update Team Ai Agent Settings","description":"Update team AI agent settings (name, language, instructions). Admin only.","operationId":"update_team_ai_agent_settings_api_identity_teams__team_key__ai_agent_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamAiAgentUpdateBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamAiAgentSettingsResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/teams/{team_key}/members":{"get":{"tags":["identity"],"summary":"List Team Members","description":"List all members of a team. Any team member may read.","operationId":"list_team_members_api_identity_teams__team_key__members_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TeamMember"},"title":"Response List Team Members Api Identity Teams  Team Key  Members Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/teams/{team_key}/users":{"get":{"tags":["identity"],"summary":"List Team Users","description":"List a team's users with membership and M365 linkage info.","operationId":"list_team_users_api_identity_teams__team_key__users_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsersListResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/connections/{team_key}":{"get":{"tags":["identity"],"summary":"List Connections","description":"List identity connections for a team.","operationId":"list_connections_api_identity_connections__team_key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionsListResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/connections/{team_key}/m365/initiate":{"post":{"tags":["identity"],"summary":"Initiate Oauth","description":"Initiate M365 OAuth admin consent flow.","operationId":"initiate_oauth_api_identity_connections__team_key__m365_initiate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/M365OAuthInitiateRequest"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/M365OAuthInitiateResponse"}}}},"400":{"description":"M365 integration not configured"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/connections/m365/callback":{"get":{"tags":["identity"],"summary":"Oauth Callback","description":"Handle Microsoft admin consent callback. Unauthenticated.","operationId":"oauth_callback_api_identity_connections_m365_callback_get","parameters":[{"name":"state","in":"query","required":true,"schema":{"type":"string","title":"State"}},{"name":"code","in":"query","required":false,"schema":{"type":"string","default":"","title":"Code"}},{"name":"error","in":"query","required":false,"schema":{"type":"string","default":"","title":"Error"}},{"name":"error_description","in":"query","required":false,"schema":{"type":"string","default":"","title":"Error Description"}}],"responses":{"307":{"description":"Successful Response"},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"302":{"description":"Redirect after consent flow"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/connections/{team_key}/{connection_key}/sync":{"post":{"tags":["identity"],"summary":"Trigger Sync","description":"Trigger sync for a connection.","operationId":"trigger_sync_api_identity_connections__team_key___connection_key__sync_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/srv__identity__routes__connections__SyncTriggerResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/connections/{team_key}/{connection_key}":{"delete":{"tags":["identity"],"summary":"Delete Connection","description":"Delete an identity connection.","operationId":"delete_connection_api_identity_connections__team_key___connection_key__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteConnectionResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/connections/{team_key}/{connection_key}/sync/cancel":{"post":{"tags":["identity"],"summary":"Cancel Sync","description":"Cancel in-flight sync tasks for a connection.","operationId":"cancel_sync_api_identity_connections__team_key___connection_key__sync_cancel_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/srv__identity__routes__connections__SyncCancelResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/{team_key}/features":{"get":{"tags":["identity"],"summary":"List Features","operationId":"list_features_api_identity__team_key__features_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"},"title":"Response List Features Api Identity  Team Key  Features Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/{team_key}/users":{"get":{"tags":["identity"],"summary":"Get Unified Users","description":"List internal users with M365/PSA match suggestions.","operationId":"get_unified_users_api_identity__team_key__users_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","title":"Search"}},{"name":"session","in":"query","required":false,"schema":{"type":"string","title":"Session"}},{"name":"identity","in":"query","required":false,"schema":{"type":"string","title":"Identity"}},{"name":"ticketing","in":"query","required":false,"schema":{"type":"string","title":"Ticketing"}},{"name":"tags","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"title":"Tags"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":10,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnifiedUsersListResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/{team_key}/users/m365-all":{"get":{"tags":["identity"],"summary":"List All M365 Users","description":"Paginated list of M365 users for a team.","operationId":"list_all_m365_users_api_identity__team_key__users_m365_all_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","title":"Search"}},{"name":"linked","in":"query","required":false,"schema":{"enum":["all","linked","available"],"type":"string","title":"Linked"}},{"name":"licensed","in":"query","required":false,"schema":{"type":"boolean","title":"Licensed"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":10,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/M365MatchListResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/{team_key}/users/psa-all":{"get":{"tags":["identity"],"summary":"List All Psa Users","description":"Paginated list of PSA users for a team.","operationId":"list_all_psa_users_api_identity__team_key__users_psa_all_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","title":"Search"}},{"name":"linked","in":"query","required":false,"schema":{"enum":["all","linked","available"],"type":"string","title":"Linked"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":10,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_PsaMatchItem_"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/{team_key}/users/psa/import":{"post":{"tags":["identity"],"summary":"Import Psa Users","description":"Queue a background job importing PSA users as team members.\n\nReturns a job key + total; poll progress via the shared bulk-job status\nendpoint (`GET /{team_key}/users/bulk-jobs/{job_key}`).","operationId":"import_psa_users_api_identity__team_key__users_psa_import_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportUsersRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PsaImportJobResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/{team_key}/users/provision":{"post":{"tags":["identity"],"summary":"Provision Member","description":"Queue a job creating one user and granting memberships across teams.\n\nReturns 202 + a job key; poll `GET /{team_key}/users/provision-jobs/{job_key}`\nfor per-team outcomes. Admin only. Every target team is authorized and\nevery role validated server-side.","operationId":"provision_member_api_identity__team_key__users_provision_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProvisionMemberRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProvisionMemberJobResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/{team_key}/users/provision-jobs/{job_key}":{"get":{"tags":["identity"],"summary":"Get Provision Member Job","description":"Fetch status + per-team outcomes for a member-provisioning job. Admin only.","operationId":"get_provision_member_job_api_identity__team_key__users_provision_jobs__job_key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"job_key","in":"path","required":true,"schema":{"type":"string","title":"Job Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProvisionMemberJobStatus"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/{team_key}/users/bulk-actions":{"post":{"tags":["identity"],"summary":"Bulk User Actions","description":"Queue an async bulk action against selected users. Admin only.","operationId":"bulk_user_actions_api_identity__team_key__users_bulk_actions_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/BulkTagUserActionRequest"},{"$ref":"#/components/schemas/BulkChangeRoleUserActionRequest"},{"$ref":"#/components/schemas/BulkPlainUserActionRequest"}],"discriminator":{"propertyName":"action","mapping":{"add_tags":"#/components/schemas/BulkTagUserActionRequest","remove_tags":"#/components/schemas/BulkTagUserActionRequest","change_role":"#/components/schemas/BulkChangeRoleUserActionRequest","export_users":"#/components/schemas/BulkPlainUserActionRequest","export_invite_links":"#/components/schemas/BulkPlainUserActionRequest","link_m365":"#/components/schemas/BulkPlainUserActionRequest","link_psa":"#/components/schemas/BulkPlainUserActionRequest","delete":"#/components/schemas/BulkPlainUserActionRequest","password_reset":"#/components/schemas/BulkPlainUserActionRequest","send_invite":"#/components/schemas/BulkPlainUserActionRequest"}},"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkUserJobResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/{team_key}/users/bulk-jobs":{"get":{"tags":["identity"],"summary":"List Bulk User Jobs","description":"List unfinished bulk user action jobs for the acting admin.","operationId":"list_bulk_user_jobs_api_identity__team_key__users_bulk_jobs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkUserJobListResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/{team_key}/users/bulk-jobs/{job_key}":{"get":{"tags":["identity"],"summary":"Get Bulk User Job","description":"Fetch status/progress of a bulk user action job. Admin only.","operationId":"get_bulk_user_job_api_identity__team_key__users_bulk_jobs__job_key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"job_key","in":"path","required":true,"schema":{"type":"string","title":"Job Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkUserJobStatus"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/{team_key}/service-accounts":{"post":{"tags":["identity"],"summary":"Create Service Account","description":"Create a service account and return its one-time token.","operationId":"create_service_account_api_identity__team_key__service_accounts_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateServiceAccountBody"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssuedCredential"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["identity"],"summary":"List Service Accounts","description":"List the team's service accounts.\n\nReturns no key material — only the display prefix, so an admin can tell\nwhich credential a log line refers to without the value being recoverable.","operationId":"list_service_accounts_api_identity__team_key__service_accounts_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ServiceAccountSummary"},"title":"Response List Service Accounts Api Identity  Team Key  Service Accounts Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/{team_key}/service-accounts/{account_key}/rotate":{"post":{"tags":["identity"],"summary":"Rotate Service Account Key","description":"Issue a second credential, leaving the existing one live.\n\nThe body is optional: rotating with no options is the common case and\nshould not require sending an empty object.","operationId":"rotate_service_account_key_api_identity__team_key__service_accounts__account_key__rotate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"account_key","in":"path","required":true,"schema":{"type":"string","title":"Account Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/RotateKeyBody"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssuedCredential"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/{team_key}/service-accounts/{account_key}":{"patch":{"tags":["identity"],"summary":"Update Service Account","description":"Change which capabilities an account may use.\n\nThe remedy for an account created with the wrong scopes. Without it the\nonly fix is deleting the account and issuing a new credential, which turns\nan admin's typo into a redeployment of the customer's automation.","operationId":"update_service_account_api_identity__team_key__service_accounts__account_key__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"account_key","in":"path","required":true,"schema":{"type":"string","title":"Account Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateServiceAccountBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceAccountSummary"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["identity"],"summary":"Revoke Service Account","description":"Revoke the account and every credential it holds.","operationId":"revoke_service_account_api_identity__team_key__service_accounts__account_key__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"account_key","in":"path","required":true,"schema":{"type":"string","title":"Account Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"204":{"description":"Successful Response"},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/{team_key}/service-accounts/{account_key}/entra":{"put":{"tags":["identity"],"summary":"Connect Entra Application","description":"Bind an Entra application so its client-credentials tokens authenticate.\n\nThe tenant must be one this team has already connected M365 for. That\nconnection is the trust anchor -- without it any tenant could claim a\nservice account simply by asserting a tid.","operationId":"connect_entra_application_api_identity__team_key__service_accounts__account_key__entra_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"account_key","in":"path","required":true,"schema":{"type":"string","title":"Account Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectEntraBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceAccountSummary"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["identity"],"summary":"Disconnect Entra Application","description":"Unbind the Entra application, stopping its tokens.\n\nThe account's API keys are untouched, so this narrows how a machine may\nauthenticate rather than cutting it off entirely.","operationId":"disconnect_entra_application_api_identity__team_key__service_accounts__account_key__entra_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"account_key","in":"path","required":true,"schema":{"type":"string","title":"Account Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"204":{"description":"Successful Response"},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/{team_key}/service-accounts/{account_key}/keys/{credential_key}":{"delete":{"tags":["identity"],"summary":"Retire Service Account Key","description":"Retire one credential, leaving the account and its other keys live.\n\nThe second half of an overlapping rotation: deploy the new token, confirm\nit works, then retire the old one here. Revoking the account instead would\ntake the replacement down with it.","operationId":"retire_service_account_key_api_identity__team_key__service_accounts__account_key__keys__credential_key__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"account_key","in":"path","required":true,"schema":{"type":"string","title":"Account Key"}},{"name":"credential_key","in":"path","required":true,"schema":{"type":"string","title":"Credential Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"204":{"description":"Successful Response"},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/entra/consent/callback":{"get":{"tags":["identity"],"summary":"Entra Consent Callback","description":"Display the consent result without relying on a frontend handler.\n\nThis unauthenticated callback never changes account access. Binding and\ntoken verification establish trust independently of these query parameters.","operationId":"entra_consent_callback_api_identity_entra_consent_callback_get","parameters":[{"name":"admin_consent","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Admin Consent"}},{"name":"tenant","in":"query","required":false,"schema":{"type":"string","default":"","title":"Tenant"}},{"name":"error_description","in":"query","required":false,"schema":{"type":"string","default":"","title":"Error Description"}}],"responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/{team_key}/service-accounts/{account_key}/team-access":{"get":{"tags":["identity"],"summary":"List Service Account Team Access","description":"List managed teams and the account's membership in each.","operationId":"list_service_account_team_access_api_identity__team_key__service_accounts__account_key__team_access_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"account_key","in":"path","required":true,"schema":{"type":"string","title":"Account Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ServiceAccountTeamAccess"},"title":"Response List Service Account Team Access Api Identity  Team Key  Service Accounts  Account Key  Team Access Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["identity"],"summary":"Update Service Account Team Access","description":"Grant, change or remove memberships in this provider's managed teams.","operationId":"update_service_account_team_access_api_identity__team_key__service_accounts__account_key__team_access_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"account_key","in":"path","required":true,"schema":{"type":"string","title":"Account Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateServiceAccountTeamAccessBody"}}}},"responses":{"204":{"description":"Successful Response"},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/{team_key}/m365/users":{"get":{"tags":["m365"],"summary":"List Team M365 Users","description":"List all M365 users for a team.","operationId":"list_team_m365_users_api_identity__team_key__m365_users_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/M365UserResponse"},"title":"Response List Team M365 Users Api Identity  Team Key  M365 Users Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/{team_key}/m365/users/{user_key}":{"get":{"tags":["m365"],"summary":"Get M365 User","description":"Get an M365 user by key, scoped to the caller's team.","operationId":"get_m365_user_api_identity__team_key__m365_users__user_key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"user_key","in":"path","required":true,"schema":{"type":"string","title":"User Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/M365UserResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/{team_key}/m365/groups":{"get":{"tags":["m365"],"summary":"List Team M365 Groups","description":"List all M365 groups for a team.","operationId":"list_team_m365_groups_api_identity__team_key__m365_groups_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/M365GroupResponse"},"title":"Response List Team M365 Groups Api Identity  Team Key  M365 Groups Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/{team_key}/m365/groups/{group_key}":{"get":{"tags":["m365"],"summary":"Get M365 Group","description":"Get an M365 group by key, scoped to the caller's team.","operationId":"get_m365_group_api_identity__team_key__m365_groups__group_key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"group_key","in":"path","required":true,"schema":{"type":"string","title":"Group Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/M365GroupResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/{team_key}/m365/end-users/stats":{"get":{"tags":["m365"],"summary":"Get End Users Stats","description":"Get M365 end-user stats for a team.","operationId":"get_end_users_stats_api_identity__team_key__m365_end_users_stats_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUsersStatsResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/{team_key}/m365/end-users":{"get":{"tags":["m365"],"summary":"List End Users","description":"List M365 end users for a team with pagination and filters.","operationId":"list_end_users_api_identity__team_key__m365_end_users_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","pattern":"^[^\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x9F]*$","title":"Search"}},{"name":"sessionFilter","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SessionStatus","title":"Sessionfilter"}},{"name":"identity","in":"query","required":false,"schema":{"$ref":"#/components/schemas/IdentityStatus","title":"Identity"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":10,"title":"Pagesize"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUsersListResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/{team_key}/m365/end-users/{m365_user_id}/link":{"post":{"tags":["m365"],"summary":"Link End User","description":"Link an M365 user to an identity user.","operationId":"link_end_user_api_identity__team_key__m365_end_users__m365_user_id__link_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"m365_user_id","in":"path","required":true,"schema":{"type":"integer","maximum":9223372036854775807,"exclusiveMinimum":0,"title":"M365 User Id"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkUserRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkUserResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["m365"],"summary":"Unlink End User","description":"Unlink an M365 user from its identity user.","operationId":"unlink_end_user_api_identity__team_key__m365_end_users__m365_user_id__link_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"m365_user_id","in":"path","required":true,"schema":{"type":"integer","maximum":9223372036854775807,"exclusiveMinimum":0,"title":"M365 User Id"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkUserResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/{team_key}/m365/end-users/import":{"post":{"tags":["m365"],"summary":"Import M365 Users","description":"Bulk-import M365 users as internal team members + link M365.\n\nPer-user best-effort: failures are recorded in `errors`, successes commit.","operationId":"import_m365_users_api_identity__team_key__m365_end_users_import_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportUsersRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportUsersResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/{team_key}/m365/available-users":{"get":{"tags":["m365"],"summary":"List Available Users","description":"List team members not linked to M365 users.","operationId":"list_available_users_api_identity__team_key__m365_available_users_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","default":"","title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AvailableUserResponse"},"title":"Response List Available Users Api Identity  Team Key  M365 Available Users Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/{team_key}/users/{user_id}/ticketing-link":{"post":{"tags":["identity"],"summary":"Link Ticketing","description":"Link identity user to a PSA user for ticketing.","operationId":"link_ticketing_api_identity__team_key__users__user_id__ticketing_link_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","maximum":9223372036854775807,"exclusiveMinimum":0,"title":"User Id"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketingLinkBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketingLinkResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["identity"],"summary":"Unlink Ticketing","description":"Unlink identity user from PSA user for ticketing.","operationId":"unlink_ticketing_api_identity__team_key__users__user_id__ticketing_link_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","maximum":9223372036854775807,"exclusiveMinimum":0,"title":"User Id"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketingLinkResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/identity/trial-prospects/redeem":{"post":{"tags":["identity"],"summary":"Redeem","description":"Redeem a trial-prospect invitation for the authenticated user.","operationId":"redeem_api_identity_trial_prospects_redeem_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrialProspectRedeemRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrialProspectRedeemResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/billing/agreements/{revision}":{"get":{"tags":["billing"],"summary":"Get Agreement","operationId":"get_agreement_api_billing_agreements__revision__get","parameters":[{"name":"revision","in":"path","required":true,"schema":{"type":"string","title":"Revision"}}],"responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/{team_key}/status":{"get":{"tags":["billing"],"summary":"Get Status","operationId":"get_status_api_billing__team_key__status_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingStatusResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/{team_key}/subscription-details":{"get":{"tags":["billing"],"summary":"Get Subscription Details","operationId":"get_subscription_details_api_billing__team_key__subscription_details_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingSubscriptionResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/{team_key}/cycles":{"get":{"tags":["billing"],"summary":"Get Cycles","description":"List billing cycles: the current one, then up to 12 historical ones.\n\nThe 12 historical cycles are the first 12 distinct periods found in\nStripe's invoice-creation order (up to 500 invoices), sorted newest-first\nfor display. That is not guaranteed to be the 12 most recent periods: a\nlate-finalized or reissued invoice for a recent period can sit beyond the\n12th distinct period and be omitted.","operationId":"get_cycles_api_billing__team_key__cycles_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BillingCycleResponse"},"title":"Response Get Cycles Api Billing  Team Key  Cycles Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/{team_key}/usage":{"get":{"tags":["billing"],"summary":"Get Usage","operationId":"get_usage_api_billing__team_key__usage_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"cycle","in":"query","required":true,"schema":{"type":"string","title":"Cycle"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingUsageResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/{team_key}/credits":{"get":{"tags":["billing"],"summary":"Get Credits","operationId":"get_credits_api_billing__team_key__credits_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"cycle","in":"query","required":true,"schema":{"type":"string","title":"Cycle"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditUsageResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/{team_key}/topup-quotes":{"post":{"tags":["billing"],"summary":"Create Topup Quote","operationId":"create_topup_quote_api_billing__team_key__topup_quotes_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopupQuoteResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/{team_key}/topup-quotes/{key}/checkout":{"post":{"tags":["billing"],"summary":"Create Topup Checkout","operationId":"create_topup_checkout_api_billing__team_key__topup_quotes__key__checkout_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutSessionResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/{team_key}/topup-quotes/{key}":{"get":{"tags":["billing"],"summary":"Get Topup Purchase","operationId":"get_topup_purchase_api_billing__team_key__topup_quotes__key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopupPurchaseResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/{team_key}/bonus-celebration":{"get":{"tags":["billing"],"summary":"Get Bonus Celebration","operationId":"get_bonus_celebration_api_billing__team_key__bonus_celebration_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BonusCelebrationLookupResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/{team_key}/bonus-celebration/dismiss":{"post":{"tags":["billing"],"summary":"Dismiss Bonus","operationId":"dismiss_bonus_api_billing__team_key__bonus_celebration_dismiss_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"204":{"description":"Successful Response"},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/plans":{"get":{"tags":["billing"],"summary":"List Purchasable Plans","operationId":"list_purchasable_plans_api_billing_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PurchasablePlanResponse"},"type":"array","title":"Response List Purchasable Plans Api Billing Plans Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"}},"security":[{"HTTPBearer":[]}]}},"/api/billing/signup-offer":{"get":{"tags":["billing"],"summary":"Get Signup Offer","description":"The offer a sign-up with ``code`` would get now; the standard one for an unknown code.","operationId":"get_signup_offer_api_billing_signup_offer_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"type":"string","maxLength":40,"title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupOfferLookupResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/{team_key}/checkout-session":{"post":{"tags":["billing"],"summary":"Create Checkout Session","operationId":"create_checkout_session_api_billing__team_key__checkout_session_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CheckoutSessionRequest"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutSessionResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/{team_key}/trial-checkout-session":{"post":{"tags":["billing"],"summary":"Create Trial Checkout Session","operationId":"create_trial_checkout_session_api_billing__team_key__trial_checkout_session_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CheckoutSessionRequest"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutSessionResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/{team_key}/checkout-sync":{"post":{"tags":["billing"],"summary":"Sync Checkout Session","operationId":"sync_checkout_session_api_billing__team_key__checkout_sync_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutSyncRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingStatusResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/{team_key}/portal-session":{"post":{"tags":["billing"],"summary":"Create Portal Session","operationId":"create_portal_session_api_billing__team_key__portal_session_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"cancel_subscription","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Cancel Subscription"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortalSessionResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/signup-settings":{"get":{"tags":["billing"],"summary":"Get Signup Settings","description":"Public signup availability; do not cache an emergency switch.","operationId":"get_signup_settings_api_billing_signup_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupSettingsResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"}}}},"/api/billing/{team_key}/signup-agreement":{"get":{"tags":["billing"],"summary":"Get Signup Agreement","operationId":"get_signup_agreement_api_billing__team_key__signup_agreement_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupAgreementStatus"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["billing"],"summary":"Accept Signup Agreement","operationId":"accept_signup_agreement_api_billing__team_key__signup_agreement_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/SignupAgreementRequest"},{"type":"null"}],"title":"Body"}}}},"responses":{"204":{"description":"Successful Response"},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/webhooks/stripe":{"post":{"tags":["billing"],"summary":"Stripe Webhook","operationId":"stripe_webhook_api_billing_webhooks_stripe_post","parameters":[{"name":"stripe-signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stripe-Signature"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Stripe Webhook Api Billing Webhooks Stripe Post"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/{team_key}/plan-changes":{"get":{"tags":["billing"],"summary":"Get Plan Change Status","operationId":"get_plan_change_status_api_billing__team_key__plan_changes_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanChangeStatusResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["billing"],"summary":"Create Plan Change Quote","operationId":"create_plan_change_quote_api_billing__team_key__plan_changes_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanChangeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanChangeQuoteResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/{team_key}/plan-changes/{key}/confirm":{"post":{"tags":["billing"],"summary":"Confirm Plan Change","operationId":"confirm_plan_change_api_billing__team_key__plan_changes__key__confirm_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanChangeResultResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/{team_key}/plan-changes/scheduled":{"delete":{"tags":["billing"],"summary":"Cancel Plan Change","operationId":"cancel_plan_change_api_billing__team_key__plan_changes_scheduled_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanChangeResultResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/pod/{psa_type}/{connection_key}/ticket/{entity_id}":{"get":{"tags":["psa"],"summary":"Resolve Pod Ticket","description":"Map a PSA ticket id to the SuperIT ticket the caller may open.\n\nEvery failure is the same 404: the pod must not be able to tell \"not\nsynced\" from \"not yours\". Plain ``get_session`` (not the RLS-scoped\n``get_api_session``) because the team is the output of this lookup.","operationId":"resolve_pod_ticket_api_psa_pod__psa_type___connection_key__ticket__entity_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"psa_type","in":"path","required":true,"schema":{"type":"string","title":"Psa Type"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}},{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","title":"Entity Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PodTicketRef"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connections":{"get":{"tags":["psa"],"summary":"List Connections","operationId":"list_connections_api_psa__team_key__connections_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/srv__psa__types__connection__ConnectionResponse"},"title":"Response List Connections Api Psa  Team Key  Connections Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["psa"],"summary":"Create Connection","operationId":"create_connection_api_psa__team_key__connections_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/srv__psa__types__connection__ConnectionResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connections/test":{"post":{"tags":["psa"],"summary":"Test Credentials","operationId":"test_credentials_api_psa__team_key__connections_test_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionTestRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionTestResult"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}":{"get":{"tags":["psa"],"summary":"Get Connection","operationId":"get_connection_api_psa__team_key__connection__connection_key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/srv__psa__types__connection__ConnectionResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["psa"],"summary":"Update Connection","operationId":"update_connection_api_psa__team_key__connection__connection_key__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/srv__psa__types__connection__ConnectionResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["psa"],"summary":"Delete Connection","operationId":"delete_connection_api_psa__team_key__connection__connection_key__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"204":{"description":"Successful Response"},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/test":{"post":{"tags":["psa"],"summary":"Test Saved Connection","operationId":"test_saved_connection_api_psa__team_key__connection__connection_key__test_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionTestResult"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/webhook-secret":{"get":{"tags":["psa"],"summary":"Get Webhook Secret","operationId":"get_webhook_secret_api_psa__team_key__connection__connection_key__webhook_secret_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookSecretResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/poll-now":{"post":{"tags":["psa"],"summary":"Trigger Poll Now","description":"Manually queue one ticket-poll cycle for a connection.","operationId":"trigger_poll_now_api_psa__team_key__connection__connection_key__poll_now_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/srv__psa__routes__types__sync__SyncTriggerResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/sync-teams":{"post":{"tags":["psa"],"summary":"Trigger Teams Sync","description":"Manually refresh companies/clients for a connection.","operationId":"trigger_teams_sync_api_psa__team_key__connection__connection_key__sync_teams_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/srv__psa__routes__types__sync__SyncTriggerResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/sync-kb-articles":{"post":{"tags":["psa"],"summary":"Trigger Kb Article Sync","description":"Manually queue one KB article import cycle for a connection.","operationId":"trigger_kb_article_sync_api_psa__team_key__connection__connection_key__sync_kb_articles_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/srv__psa__routes__types__sync__SyncTriggerResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/capabilities":{"get":{"tags":["psa"],"summary":"Get Connection Capabilities","description":"Vendor's declared permission rubric, left-joined onto observations.","operationId":"get_connection_capabilities_api_psa__team_key__connection__connection_key__capabilities_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CapabilityRow"},"title":"Response Get Connection Capabilities Api Psa  Team Key  Connection  Connection Key  Capabilities Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/kb-articles":{"get":{"tags":["psa"],"summary":"List Connection Kb Articles","description":"Imported KB articles for a connection, with their managed-team grants.","operationId":"list_connection_kb_articles_api_psa__team_key__connection__connection_key__kb_articles_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","title":"Search"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","maximum":1000000,"minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionKbArticlePage"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/kb-articles/grants":{"post":{"tags":["psa"],"summary":"Assign Kb Article Teams","description":"Grant or revoke managed-team access across imported KB articles.","operationId":"assign_kb_article_teams_api_psa__team_key__connection__connection_key__kb_articles_grants_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignKbArticleTeamsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignKbArticleTeamsResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/autotask/connections/{connection_key}/insight":{"get":{"tags":["psa"],"summary":"Get Autotask Insight","operationId":"get_autotask_insight_api_psa__team_key__autotask_connections__connection_key__insight_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutotaskInsightStatus"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["psa"],"summary":"Register Autotask Insight","operationId":"register_autotask_insight_api_psa__team_key__autotask_connections__connection_key__insight_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutotaskInsightRegisterResult"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/integration-requests":{"post":{"tags":["psa"],"summary":"Submit Integration Request","operationId":"submit_integration_request_api_psa__team_key__integration_requests_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationRequestBody"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationRequestResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/member-links":{"get":{"tags":["psa"],"summary":"List Member Links","operationId":"list_member_links_api_psa__team_key__connection__connection_key__member_links_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}},{"name":"entity_key","in":"query","required":false,"schema":{"type":"string","title":"Entity Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MemberLinkResponse"},"title":"Response List Member Links Api Psa  Team Key  Connection  Connection Key  Member Links Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["psa"],"summary":"Create Member Link","operationId":"create_member_link_api_psa__team_key__connection__connection_key__member_links_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}},{"name":"entity_key","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Entity Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMemberLinkRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberLinkResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/member-links/{link_key}":{"delete":{"tags":["psa"],"summary":"Delete Member Link","operationId":"delete_member_link_api_psa__team_key__connection__connection_key__member_links__link_key__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}},{"name":"link_key","in":"path","required":true,"schema":{"type":"string","title":"Link Key"}},{"name":"entity_key","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Entity Key"}}],"responses":{"204":{"description":"Successful Response"},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/organization-links":{"get":{"tags":["psa"],"summary":"List Organization Links","operationId":"list_organization_links_api_psa__team_key__organization_links_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationTeamLinkResponse"},"title":"Response List Organization Links Api Psa  Team Key  Organization Links Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/statuses":{"get":{"tags":["psa"],"summary":"List Statuses","operationId":"list_statuses_api_psa__team_key__connection__connection_key__statuses_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/StatusResponse"},"title":"Response List Statuses Api Psa  Team Key  Connection  Connection Key  Statuses Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/statuses/{status_key}":{"patch":{"tags":["psa"],"summary":"Update Status","operationId":"update_status_api_psa__team_key__connection__connection_key__statuses__status_key__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}},{"name":"status_key","in":"path","required":true,"schema":{"type":"string","title":"Status Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/asset-types":{"get":{"tags":["psa"],"summary":"List Asset Types","operationId":"list_asset_types_api_psa__team_key__connection__connection_key__asset_types_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AssetTypeResponse"},"title":"Response List Asset Types Api Psa  Team Key  Connection  Connection Key  Asset Types Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/cw/boards":{"get":{"tags":["psa"],"summary":"List Cw Boards","operationId":"list_cw_boards_api_psa__team_key__connection__connection_key__cw_boards_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BoardResponse"},"title":"Response List Cw Boards Api Psa  Team Key  Connection  Connection Key  Cw Boards Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/cw/classifications":{"get":{"tags":["psa"],"summary":"List Cw Classifications","operationId":"list_cw_classifications_api_psa__team_key__connection__connection_key__cw_classifications_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectWiseClassificationsResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/cw/types/{reference_key}":{"patch":{"tags":["psa"],"summary":"Update Cw Type Instructions","operationId":"update_cw_type_instructions_api_psa__team_key__connection__connection_key__cw_types__reference_key__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}},{"name":"reference_key","in":"path","required":true,"schema":{"type":"string","title":"Reference Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LlmInstructionsUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectWiseTypeConfigResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/cw/subtypes/{reference_key}":{"patch":{"tags":["psa"],"summary":"Update Cw Subtype Instructions","operationId":"update_cw_subtype_instructions_api_psa__team_key__connection__connection_key__cw_subtypes__reference_key__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}},{"name":"reference_key","in":"path","required":true,"schema":{"type":"string","title":"Reference Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LlmInstructionsUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectWiseSubTypeConfigResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/cw/items/{reference_key}":{"patch":{"tags":["psa"],"summary":"Update Cw Item Instructions","operationId":"update_cw_item_instructions_api_psa__team_key__connection__connection_key__cw_items__reference_key__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}},{"name":"reference_key","in":"path","required":true,"schema":{"type":"string","title":"Reference Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LlmInstructionsUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectWiseItemConfigResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/cw/priorities":{"get":{"tags":["psa"],"summary":"List Cw Priorities","operationId":"list_cw_priorities_api_psa__team_key__connection__connection_key__cw_priorities_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ConnectWisePriorityConfigResponse"},"title":"Response List Cw Priorities Api Psa  Team Key  Connection  Connection Key  Cw Priorities Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/cw/priorities/{reference_key}":{"patch":{"tags":["psa"],"summary":"Update Cw Priority Instructions","operationId":"update_cw_priority_instructions_api_psa__team_key__connection__connection_key__cw_priorities__reference_key__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}},{"name":"reference_key","in":"path","required":true,"schema":{"type":"string","title":"Reference Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LlmInstructionsUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectWisePriorityConfigResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/cw/company-statuses":{"get":{"tags":["psa"],"summary":"List Cw Company Statuses","operationId":"list_cw_company_statuses_api_psa__team_key__connection__connection_key__cw_company_statuses_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CompanyStatusResponse"},"title":"Response List Cw Company Statuses Api Psa  Team Key  Connection  Connection Key  Cw Company Statuses Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/cw/company-types":{"get":{"tags":["psa"],"summary":"List Cw Company Types","operationId":"list_cw_company_types_api_psa__team_key__connection__connection_key__cw_company_types_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CompanyTypeResponse"},"title":"Response List Cw Company Types Api Psa  Team Key  Connection  Connection Key  Cw Company Types Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/halo/categories":{"get":{"tags":["psa"],"summary":"List Halo Categories","operationId":"list_halo_categories_api_psa__team_key__connection__connection_key__halo_categories_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/HaloCategoryResponse"},"title":"Response List Halo Categories Api Psa  Team Key  Connection  Connection Key  Halo Categories Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/halo/ticket-types":{"get":{"tags":["psa"],"summary":"List Halo Ticket Types","operationId":"list_halo_ticket_types_api_psa__team_key__connection__connection_key__halo_ticket_types_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/HaloTicketTypeResponse"},"title":"Response List Halo Ticket Types Api Psa  Team Key  Connection  Connection Key  Halo Ticket Types Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/halo/priorities":{"get":{"tags":["psa"],"summary":"List Halo Priorities","operationId":"list_halo_priorities_api_psa__team_key__connection__connection_key__halo_priorities_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/HaloPriorityConfigResponse"},"title":"Response List Halo Priorities Api Psa  Team Key  Connection  Connection Key  Halo Priorities Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/halo/priorities/{reference_key}":{"patch":{"tags":["psa"],"summary":"Update Halo Priority Instructions","operationId":"update_halo_priority_instructions_api_psa__team_key__connection__connection_key__halo_priorities__reference_key__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}},{"name":"reference_key","in":"path","required":true,"schema":{"type":"string","title":"Reference Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LlmInstructionsUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HaloPriorityConfigResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/halo/custom-fields":{"get":{"tags":["psa"],"summary":"List Halo Custom Fields","operationId":"list_halo_custom_fields_api_psa__team_key__connection__connection_key__halo_custom_fields_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/HaloCustomFieldResponse"},"title":"Response List Halo Custom Fields Api Psa  Team Key  Connection  Connection Key  Halo Custom Fields Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/accelo/priorities":{"get":{"tags":["psa"],"summary":"List Accelo Priorities","operationId":"list_accelo_priorities_api_psa__team_key__connection__connection_key__accelo_priorities_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AcceloPriorityResponse"},"title":"Response List Accelo Priorities Api Psa  Team Key  Connection  Connection Key  Accelo Priorities Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/accelo/issue-types":{"get":{"tags":["psa"],"summary":"List Accelo Issue Types","operationId":"list_accelo_issue_types_api_psa__team_key__connection__connection_key__accelo_issue_types_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AcceloIssueTypeResponse"},"title":"Response List Accelo Issue Types Api Psa  Team Key  Connection  Connection Key  Accelo Issue Types Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/accelo/issue-classes":{"get":{"tags":["psa"],"summary":"List Accelo Issue Classes","operationId":"list_accelo_issue_classes_api_psa__team_key__connection__connection_key__accelo_issue_classes_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AcceloIssueClassResponse"},"title":"Response List Accelo Issue Classes Api Psa  Team Key  Connection  Connection Key  Accelo Issue Classes Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/autotask/queues":{"get":{"tags":["psa"],"summary":"List Autotask Queues","operationId":"list_autotask_queues_api_psa__team_key__connection__connection_key__autotask_queues_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AutotaskQueueResponse"},"title":"Response List Autotask Queues Api Psa  Team Key  Connection  Connection Key  Autotask Queues Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/autotask/ticket-categories":{"get":{"tags":["psa"],"summary":"List Autotask Ticket Categories","operationId":"list_autotask_ticket_categories_api_psa__team_key__connection__connection_key__autotask_ticket_categories_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AutotaskTicketCategoryResponse"},"title":"Response List Autotask Ticket Categories Api Psa  Team Key  Connection  Connection Key  Autotask Ticket Categories Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/autotask/ticket-types":{"get":{"tags":["psa"],"summary":"List Autotask Ticket Types","operationId":"list_autotask_ticket_types_api_psa__team_key__connection__connection_key__autotask_ticket_types_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AutotaskRefResponse"},"title":"Response List Autotask Ticket Types Api Psa  Team Key  Connection  Connection Key  Autotask Ticket Types Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/autotask/priorities":{"get":{"tags":["psa"],"summary":"List Autotask Priorities","operationId":"list_autotask_priorities_api_psa__team_key__connection__connection_key__autotask_priorities_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AutotaskRefResponse"},"title":"Response List Autotask Priorities Api Psa  Team Key  Connection  Connection Key  Autotask Priorities Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/health":{"get":{"tags":["psa"],"summary":"Get Connection Health","description":"Sync state the chat agent reads, for panels that show it live.","operationId":"get_connection_health_api_psa__team_key__connection__connection_key__health_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionHealth"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/sync-summary":{"get":{"tags":["psa"],"summary":"Get Sync Summary","operationId":"get_sync_summary_api_psa__team_key__connection__connection_key__sync_summary_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncSummaryResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/contracts":{"get":{"tags":["psa"],"summary":"List Contracts","description":"Every live contract on the connection, for the admin config table.\n\nSoft-deleted rows are excluded — the vendor no longer returns them, so\nthere is nothing to configure. ``ai_disabled`` rows are NOT excluded;\nthe whole point of the table is switching them back on.","operationId":"list_contracts_api_psa__team_key__connection__connection_key__contracts_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ContractConfigResponse"},"title":"Response List Contracts Api Psa  Team Key  Connection  Connection Key  Contracts Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/contracts/{reference_key}":{"patch":{"tags":["psa"],"summary":"Update Contract Config","operationId":"update_contract_config_api_psa__team_key__connection__connection_key__contracts__reference_key__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}},{"name":"reference_key","in":"path","required":true,"schema":{"type":"string","title":"Reference Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContractConfigUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContractConfigResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/sync-reference-data":{"post":{"tags":["psa"],"summary":"Sync Reference Data","operationId":"sync_reference_data_api_psa__team_key__connection__connection_key__sync_reference_data_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/srv__psa__routes__types__sync__SyncTriggerResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Connection not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/reports/overview":{"get":{"tags":["psa"],"summary":"Get Team Ticket Report Overview","description":"Ticket analysis report over the team's primary connection.","operationId":"get_team_ticket_report_overview_api_psa__team_key__reports_overview_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketReportOverview"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/reports/portfolio-analysis":{"get":{"tags":["psa"],"summary":"Get Msp Portfolio Report Analysis","description":"Rolled-up value across all teams managed by a service-provider team.","operationId":"get_msp_portfolio_report_analysis_api_psa__team_key__reports_portfolio_analysis_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MspPortfolioAnalysis"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/reports/overview/generate":{"post":{"tags":["psa"],"summary":"Generate Team Ticket Report Overview","description":"Ensure the overview trio exists and enqueue a refresh for each.","operationId":"generate_team_ticket_report_overview_api_psa__team_key__reports_overview_generate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/integration-status":{"get":{"tags":["psa"],"summary":"Get Integration Status","operationId":"get_integration_status_api_psa__team_key__integration_status_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PSAIntegrationStatusResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/{connection_key}/teams":{"get":{"tags":["psa"],"summary":"List Teams","description":"List PSA team entities (Halo clients / CW companies) for connection.","operationId":"list_teams_api_psa__team_key___connection_key__teams_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","title":"Search"}},{"name":"linked","in":"query","required":false,"schema":{"type":"string","title":"Linked"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","maximum":1000000,"minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":10,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PsaTeamListResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/{connection_key}/teams/{entity_key}/link":{"post":{"tags":["psa"],"summary":"Link Team","description":"Link PSA team entity to a managed team.\n\nOn a plan with a customer cap, linking an already-linked company to another\nmanaged team deactivates its other links; uncapped plans keep them all.","operationId":"link_team_api_psa__team_key___connection_key__teams__entity_key__link_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}},{"name":"entity_key","in":"path","required":true,"schema":{"type":"string","title":"Entity Key"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/PsaTeamLinkRequest"},{"type":"null"}],"title":"Payload"}}}},"responses":{"200":{"description":"Link updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PsaTeamLinkResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"201":{"description":"Link created"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["psa"],"summary":"Update Team Link","description":"Update link config for a PSA team entity.","operationId":"update_team_link_api_psa__team_key___connection_key__teams__entity_key__link_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}},{"name":"entity_key","in":"path","required":true,"schema":{"type":"string","title":"Entity Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PsaTeamLinkRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PsaTeamLinkResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["psa"],"summary":"Unlink Team","description":"Remove active links for a PSA team entity.\n\nPass managed_team_key to detach a single managed team; without it every\nlink for the entity is removed.","operationId":"unlink_team_api_psa__team_key___connection_key__teams__entity_key__link_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}},{"name":"entity_key","in":"path","required":true,"schema":{"type":"string","title":"Entity Key"}},{"name":"managed_team_key","in":"query","required":false,"schema":{"type":"string","title":"Managed Team Key"}}],"responses":{"204":{"description":"Successful Response"},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/ticket/{ticket_key}/rerun":{"post":{"tags":["psa"],"summary":"Rerun Ticket Agent","description":"Manually re-run one agent flow for a ticket (scope-forced).\n\n``triage`` runs triage only; ``investigate`` / ``analyse`` run triage then\nthat arm. Enqueues ``rerun_workflow`` and returns its id.\n\nSecurity gates (branch-review S2, all four):\n\n- Elevated only — end-customer roles must not trigger LLM spend.\n- 404 before any dispatch when the ticket isn't visible to the caller.\n- Runs under the ticket's **managed** team (resolved via ``psa.team_link``)\n  so the arms / AgentRun / GUC match organic intake — under the managed\n  GUC ``psa.msp_tickets`` returns zero rows, closing the SP-context\n  cross-customer exfil surface. Falls back to the ticket's own team.\n- Concurrency-guarded, but repeatable: each run gets a UNIQUE workflow id\n  ``rerun:{flow}:{ticket_key}:{run_key}``, enqueued on the ``psa.intake``\n  partitioned queue keyed by ``ticket_key`` (SUP-711). Partitioned queues\n  forbid ``deduplication_id`` (DBOS raises at enqueue), so instead of a\n  queue-level dedup key, a prefix guard on ``rerun:{flow}:{ticket_key}:``\n  finds any still-active run for the same (flow, ticket) and returns its\n  id instead of dispatching a second workflow; once the prior run reaches\n  a terminal state the guard no longer matches, so an operator can\n  legitimately rerun a flow again over the ticket's life. The\n  check-then-enqueue window is harmless — the partition serializes any\n  stragglers.\n- Every flow re-checks the effective team's autonomy config — a manual\n  rerun must not bypass ``level_zero_tiers`` / ``ticket_analysis_enabled``.","operationId":"rerun_ticket_agent_api_psa__team_key__ticket__ticket_key__rerun_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ticket_key","in":"path","required":true,"schema":{"type":"string","title":"Ticket Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RerunRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RerunAccepted"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/ticket/{ticket_key}/recommended-action/{action_key}/fire":{"post":{"tags":["psa"],"summary":"Fire Recommended Action","description":"Fire a pending recommended action and mark its row FIRED.\n\n`begin_user_chat` dispatches Michael's EUR flow (forced); `run_workflow`\ndispatches the recommended workflow through the workflows execution service\nwith the engineer-completed `inputs`. Err variants map via the global\nhandlers: InvalidInput/InvalidState -> 400, Forbidden(WithContacts) -> 403,\nNotFound -> 404, ServiceUnavailable -> 503.\n\nElevated only, matching the other ticket-mutating routes here —\nend-customer roles must not trigger LLM spend.","operationId":"fire_recommended_action_api_psa__team_key__ticket__ticket_key__recommended_action__action_key__fire_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ticket_key","in":"path","required":true,"schema":{"type":"string","title":"Ticket Key"}},{"name":"action_key","in":"path","required":true,"schema":{"type":"string","title":"Action Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/FireActionBody"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FireActionResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/tickets":{"get":{"tags":["psa"],"summary":"Get Team Tickets","operationId":"get_team_tickets_api_psa__team_key__tickets_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","pattern":"^[^\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x9F]*$","title":"Search"}},{"name":"status","in":"query","required":false,"schema":{"type":"array","items":{"type":"string","minLength":1,"pattern":"^[^\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x9F]*$"},"title":"Status"}},{"name":"analysis_state","in":"query","required":false,"schema":{"type":"array","items":{"type":"string","minLength":1,"pattern":"^[^\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x9F]*$"},"title":"Analysis State"}},{"name":"ticket_specification","in":"query","required":false,"schema":{"type":"array","items":{"type":"string","minLength":1,"pattern":"^[^\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x9F]*$"},"title":"Ticket Specification"}},{"name":"created_days","in":"query","required":false,"schema":{"type":"integer","maximum":36500,"minimum":0,"title":"Created Days"}},{"name":"sort_by","in":"query","required":false,"schema":{"enum":["updated_at","created_at","source_updated_at","source_created_at","summary","status","ticket_number"],"type":"string","title":"Sort By"}},{"name":"sort_dir","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","title":"Sort Dir"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":10,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketsListResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/ticket/{ticket_key}":{"get":{"tags":["psa"],"summary":"Get Team Ticket","operationId":"get_team_ticket_api_psa__team_key__ticket__ticket_key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ticket_key","in":"path","required":true,"schema":{"type":"string","title":"Ticket Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PsaTicketDetailResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/tickets/stats":{"get":{"tags":["psa"],"summary":"Get Team Ticket Stats","operationId":"get_team_ticket_stats_api_psa__team_key__tickets_stats_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketStatsResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/ticket/{ticket_key}/sync":{"post":{"tags":["psa"],"summary":"Sync Team Ticket","description":"Force a single-ticket re-pull from its PSA via the DBOS\n``sync_ticket_workflow``. Fire-and-forget; the FE re-queries the\nticket detail after a short delay to pick up changes.","operationId":"sync_team_ticket_api_psa__team_key__ticket__ticket_key__sync_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ticket_key","in":"path","required":true,"schema":{"type":"string","title":"Ticket Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketSyncDispatchedResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/ticket/{ticket_key}/deactivate":{"post":{"tags":["psa"],"summary":"Deactivate Team Ticket","description":"Manually deactivate (soft-delete) a ticket. One-way — the ticket is\nhidden from every read path and cannot be restored. Requires elevated\naccess (enforced in the service).","operationId":"deactivate_team_ticket_api_psa__team_key__ticket__ticket_key__deactivate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ticket_key","in":"path","required":true,"schema":{"type":"string","title":"Ticket Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketDeactivatedResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/ticket-events/{event_key}":{"get":{"tags":["psa"],"summary":"Get Ticket Event Status","operationId":"get_ticket_event_status_api_psa__team_key__ticket_events__event_key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"event_key","in":"path","required":true,"schema":{"type":"string","title":"Event Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventStatusResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/users":{"get":{"tags":["psa"],"summary":"List Users","description":"List PSA users visible to this team, optionally sorted by email similarity.","operationId":"list_users_api_psa__team_key__users_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"email_similarity","in":"query","required":false,"schema":{"type":"string","title":"Email Similarity"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PsaUserListItem"},"title":"Response List Users Api Psa  Team Key  Users Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/staff":{"get":{"tags":["psa"],"summary":"List Connection Staff","description":"Paginated list of staff users for a PSA connection.","operationId":"list_connection_staff_api_psa__team_key__connection__connection_key__staff_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","title":"Search"}},{"name":"is_active","in":"query","required":false,"schema":{"type":"boolean","title":"Is Active"}},{"name":"link_status","in":"query","required":false,"schema":{"enum":["linked","unlinked"],"type":"string","title":"Link Status"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":10,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_StaffUserItem_"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/staff/import":{"post":{"tags":["psa"],"summary":"Import Connection Staff","description":"Import PSA staff users as members of the parent team.","operationId":"import_connection_staff_api_psa__team_key__connection__connection_key__staff_import_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportUsersRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportUsersResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/managed-teams":{"get":{"tags":["psa"],"summary":"List Connection Managed Teams","description":"List managed teams linked to a PSA connection.","operationId":"list_connection_managed_teams_api_psa__team_key__connection__connection_key__managed_teams_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ManagedTeamItem"},"title":"Response List Connection Managed Teams Api Psa  Team Key  Connection  Connection Key  Managed Teams Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/staff/{user_key}/roles":{"get":{"tags":["psa"],"summary":"Get Connection Staff User Roles","description":"Return a staff user's current role per managed team on the connection.\n\nManaged teams the user isn't a member of are omitted. The caller can\nassume \"none\" for any managed team not in the response.","operationId":"get_connection_staff_user_roles_api_psa__team_key__connection__connection_key__staff__user_key__roles_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}},{"name":"user_key","in":"path","required":true,"schema":{"type":"string","title":"User Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TeamRoleAssignment"},"title":"Response Get Connection Staff User Roles Api Psa  Team Key  Connection  Connection Key  Staff  User Key  Roles Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/connection/{connection_key}/staff/assign-roles":{"post":{"tags":["psa"],"summary":"Assign Connection Staff Roles","description":"Bulk assign roles to staff across managed teams.","operationId":"assign_connection_staff_roles_api_psa__team_key__connection__connection_key__staff_assign_roles_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignStaffRolesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignStaffRolesResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/{connection_key}/teams/{entity_key}/sync":{"post":{"tags":["psa"],"summary":"Trigger Entity Sync","description":"Trigger entity metadata + user sync.","operationId":"trigger_entity_sync_api_psa__team_key___connection_key__teams__entity_key__sync_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}},{"name":"entity_key","in":"path","required":true,"schema":{"type":"string","title":"Entity Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/srv__psa__routes__types__sync__SyncTriggerResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/{connection_key}/teams/{entity_key}/sync-tickets":{"post":{"tags":["psa"],"summary":"Trigger Ticket Sync","description":"Trigger ticket sync for entity.\n\nDateless calls run an incremental pull from the link's Last Synced\nwatermark; ``full=true`` forces the whole sync_months backfill.","operationId":"trigger_ticket_sync_api_psa__team_key___connection_key__teams__entity_key__sync_tickets_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}},{"name":"entity_key","in":"path","required":true,"schema":{"type":"string","title":"Entity Key"}},{"name":"date_from","in":"query","required":false,"schema":{"type":"string","format":"date-time","title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"type":"string","format":"date-time","title":"Date To"}},{"name":"full","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Full"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/srv__psa__routes__types__sync__SyncTriggerResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/{connection_key}/teams/{entity_key}/sync-users":{"post":{"tags":["psa"],"summary":"Trigger User Sync","description":"Trigger user/contact sync for entity.","operationId":"trigger_user_sync_api_psa__team_key___connection_key__teams__entity_key__sync_users_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}},{"name":"entity_key","in":"path","required":true,"schema":{"type":"string","title":"Entity Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/srv__psa__routes__types__sync__SyncTriggerResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/{connection_key}/teams/{entity_key}/sync/cancel":{"post":{"tags":["psa"],"summary":"Cancel Entity Sync","description":"Cancel running entity sync tasks.","operationId":"cancel_entity_sync_api_psa__team_key___connection_key__teams__entity_key__sync_cancel_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}},{"name":"entity_key","in":"path","required":true,"schema":{"type":"string","title":"Entity Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/srv__psa__routes__types__sync__SyncCancelResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/{connection_key}/teams/{entity_key}/sync-tickets/cancel":{"post":{"tags":["psa"],"summary":"Cancel Ticket Sync","description":"Cancel running ticket sync tasks.","operationId":"cancel_ticket_sync_api_psa__team_key___connection_key__teams__entity_key__sync_tickets_cancel_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}},{"name":"entity_key","in":"path","required":true,"schema":{"type":"string","title":"Entity Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/srv__psa__routes__types__sync__SyncCancelResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/halo/{connection_key}/webhook":{"post":{"tags":["psa"],"summary":"Webhook Endpoint","description":"Receive webhook events from Halo PSA.","operationId":"webhook_endpoint_api_psa__team_key__halo__connection_key__webhook_post","parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}},{"name":"x-halo-signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Halo-Signature"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/cw/{connection_key}/webhook":{"post":{"tags":["psa"],"summary":"Webhook Endpoint","description":"Receive callback events from ConnectWise.","operationId":"webhook_endpoint_api_psa__team_key__cw__connection_key__webhook_post","parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectWiseWebhookBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"429":{"description":"Intake saturated; ConnectWise retries."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/accelo/{connection_key}/webhook":{"post":{"tags":["psa"],"summary":"Webhook Endpoint","operationId":"webhook_endpoint_api_psa__team_key__accelo__connection_key__webhook_post","parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}},{"name":"x-hub-signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Hub-Signature"}},{"name":"x-accelo-event","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Accelo-Event"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/psa/{team_key}/autotask/{connection_key}/webhook":{"post":{"tags":["psa"],"summary":"Webhook Endpoint","description":"Receive callouts from Autotask.\n\n401 when the signature does not verify -- such a request is not from\nAutotask, so refusing it cannot contribute to the vendor's\ndelivery-failure count. 200 for everything past that gate, because\nrepeated failures get the webhook switched off.\n\nThe 401 detail is a constant, never the service's specific reason --\nechoing \"Unknown connection\" vs \"Invalid webhook signature\" vs\n\"connection has no webhook secret configured\" back to an unauthenticated\ncaller is an enumeration oracle. The specific reason is still logged\n(structured) by ``process_autotask_webhook`` itself.","operationId":"webhook_endpoint_api_psa__team_key__autotask__connection_key__webhook_post","parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"connection_key","in":"path","required":true,"schema":{"type":"string","title":"Connection Key"}},{"name":"x-hook-signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Hook-Signature"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comms/{team_key}/conversations/{chat_key}/attachments":{"post":{"tags":["comms"],"summary":"Upload Attachments","description":"Validate and persist image attachments for an authorized chat.","operationId":"upload_attachments_api_comms__team_key__conversations__chat_key__attachments_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"chat_key","in":"path","required":true,"schema":{"type":"string","title":"Chat Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_attachments_api_comms__team_key__conversations__chat_key__attachments_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AttachmentUploaded"},"title":"Response Upload Attachments Api Comms  Team Key  Conversations  Chat Key  Attachments Post"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Chat not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Invalid attachment"}}}},"/api/comms/{team_key}/conversations/{chat_key}/attachments/{attachment_key}/url":{"get":{"tags":["comms"],"summary":"Get Chat Attachment Url","description":"Re-sign view URLs for one chat-authorized attachment.","operationId":"get_chat_attachment_url","security":[{"HTTPBearer":[]}],"parameters":[{"name":"chat_key","in":"path","required":true,"schema":{"type":"string","title":"Chat Key"}},{"name":"attachment_key","in":"path","required":true,"schema":{"type":"string","title":"Attachment Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatAttachmentUrls"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Attachment not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comms/{team_key}/conversations/stats":{"get":{"tags":["comms"],"summary":"Get Conversation Stats","description":"Get conversation stats and filter options.","operationId":"get_conversation_stats_api_comms__team_key__conversations_stats_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationStatsResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comms/{team_key}/conversations/{chat_key}":{"get":{"tags":["comms"],"summary":"Get Conversation","description":"Get a conversation by key.","operationId":"get_conversation_api_comms__team_key__conversations__chat_key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"chat_key","in":"path","required":true,"schema":{"type":"string","title":"Chat Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Conversation"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comms/{team_key}/conversations/{chat_key}/messages":{"get":{"tags":["comms"],"summary":"List Conversation Messages","description":"List all messages for a conversation.","operationId":"list_conversation_messages_api_comms__team_key__conversations__chat_key__messages_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"chat_key","in":"path","required":true,"schema":{"type":"string","title":"Chat Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Message"},"title":"Response List Conversation Messages Api Comms  Team Key  Conversations  Chat Key  Messages Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comms/{team_key}/conversations/{chat_key}/tool-approvals":{"get":{"tags":["comms"],"summary":"List Conversation Tool Approvals","description":"List tool approvals for a single conversation.","operationId":"list_conversation_tool_approvals_api_comms__team_key__conversations__chat_key__tool_approvals_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"chat_key","in":"path","required":true,"schema":{"type":"string","title":"Chat Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"status","in":"query","required":false,"schema":{"type":"array","items":{"$ref":"#/components/schemas/ApprovalStatus"},"title":"Status"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","maximum":1000000,"minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":10,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolApprovalListResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comms/{team_key}/conversations":{"get":{"tags":["comms"],"summary":"List Team Conversations","description":"List all conversations for a team with search, filtering, and pagination.","operationId":"list_team_conversations_api_comms__team_key__conversations_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","title":"Search"}},{"name":"last_message_days","in":"query","required":false,"schema":{"type":"integer","maximum":36500,"minimum":0,"title":"Last Message Days"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","maximum":1000000,"minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":10,"title":"Page Size"}},{"name":"status","in":"query","required":false,"schema":{"$ref":"#/components/schemas/ConversationStatus","default":"active"}},{"name":"types","in":"query","required":false,"schema":{"type":"array","items":{"$ref":"#/components/schemas/ConversationListType"},"title":"Types"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationsListResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comms/{team_key}/tickets/{ticket_key}/conversations":{"get":{"tags":["comms"],"summary":"List Ticket Conversations","description":"List all conversations linked to a ticket.","operationId":"list_ticket_conversations_api_comms__team_key__tickets__ticket_key__conversations_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ticket_key","in":"path","required":true,"schema":{"type":"string","title":"Ticket Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketConversationsResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comms/{team_key}/conversations/{chat_key}/archive":{"post":{"tags":["comms"],"summary":"Archive Chat","description":"Archive or unarchive a chat.","operationId":"archive_chat_api_comms__team_key__conversations__chat_key__archive_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"chat_key","in":"path","required":true,"schema":{"type":"string","title":"Chat Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"is_archived","in":"query","required":true,"schema":{"type":"boolean","title":"Is Archived"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"boolean"}]},"title":"Response Archive Chat Api Comms  Team Key  Conversations  Chat Key  Archive Post"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Chat not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comms/{team_key}/conversations/{chat_key}/related-tickets":{"post":{"tags":["comms"],"summary":"Add Related Ticket","description":"Add a related ticket to a chat.","operationId":"add_related_ticket_api_comms__team_key__conversations__chat_key__related_tickets_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"chat_key","in":"path","required":true,"schema":{"type":"string","title":"Chat Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddRelatedTicketRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketContextResponse"}}}},"400":{"description":"Invalid request"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Chat not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comms/{team_key}/conversations/{chat_key}/related-tickets/{ticket_key}":{"delete":{"tags":["comms"],"summary":"Remove Related Ticket","description":"Remove a related ticket from a chat.","operationId":"remove_related_ticket_api_comms__team_key__conversations__chat_key__related_tickets__ticket_key__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"chat_key","in":"path","required":true,"schema":{"type":"string","title":"Chat Key"}},{"name":"ticket_key","in":"path","required":true,"schema":{"type":"string","title":"Ticket Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"204":{"description":"Successful Response"},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comms/{team_key}/conversations/{chat_key}/device-links/{link_key}/accept":{"post":{"tags":["comms"],"summary":"Accept Chat Device Link","description":"Connect the offered device to the chat and verify it as the caller.","operationId":"accept_chat_device_link_api_comms__team_key__conversations__chat_key__device_links__link_key__accept_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"chat_key","in":"path","required":true,"schema":{"type":"string","title":"Chat Key"}},{"name":"link_key","in":"path","required":true,"schema":{"type":"string","title":"Link Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceLinkSnapshot"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comms/{team_key}/conversations/{chat_key}/device-links/{link_key}/dismiss":{"post":{"tags":["comms"],"summary":"Dismiss Chat Device Link","description":"Decline the offered device; the chat's selected session is untouched.","operationId":"dismiss_chat_device_link_api_comms__team_key__conversations__chat_key__device_links__link_key__dismiss_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"chat_key","in":"path","required":true,"schema":{"type":"string","title":"Chat Key"}},{"name":"link_key","in":"path","required":true,"schema":{"type":"string","title":"Link Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceLinkSnapshot"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comms/{team_key}/conversations/{chat_key}/device-links/{link_key}/continue":{"post":{"tags":["comms"],"summary":"Continue Chat Device Link","description":"Continue the chat after its device connected, without a user message.","operationId":"continue_chat_device_link_api_comms__team_key__conversations__chat_key__device_links__link_key__continue_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"chat_key","in":"path","required":true,"schema":{"type":"string","title":"Chat Key"}},{"name":"link_key","in":"path","required":true,"schema":{"type":"string","title":"Link Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContinueDeviceLinkResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comms/{team_key}/tickets/{ticket_key}/end-user-resolution":{"post":{"tags":["comms"],"summary":"Start End User Resolution Route","operationId":"start_end_user_resolution_route_api_comms__team_key__tickets__ticket_key__end_user_resolution_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"ticket_key","in":"path","required":true,"schema":{"type":"string","title":"Ticket Key"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserResolutionRerunResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comms/{team_key}/explore-runs/{run_key}":{"get":{"tags":["comms"],"summary":"Get Explore Run","operationId":"get_explore_run_api_comms__team_key__explore_runs__run_key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"run_key","in":"path","required":true,"schema":{"type":"string","title":"Run Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExploreRunSnapshot"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comms/{team_key}/explore-runs/{run_key}/continue":{"post":{"tags":["comms"],"summary":"Continue Explore Run","operationId":"continue_explore_run_api_comms__team_key__explore_runs__run_key__continue_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"run_key","in":"path","required":true,"schema":{"type":"string","title":"Run Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExploreContinueBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExploreRunSnapshot"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comms/{team_key}/handoff/{handoff_key}/open":{"post":{"tags":["comms"],"summary":"Open Handoff","description":"Open an AgentHandoff, materialising a seeded engineer chat.\n\nEngineers and admins only. Idempotent: a second open by the same\nengineer returns the same chat without appending a duplicate seeded\nturn. The handoff is marked ``opened`` on the first successful call.\n\nThe handoff detail/summary/question is agent-authored from\nattacker-controllable ticket text, so it is seeded as a VISIBLE,\nfenced ``sparky`` turn — never a SYSTEM turn — so prompt injection in\nthe ticket cannot be elevated to system-prompt level in the\nengineer's Sparky (SECURITY: prompt-injection amplification).","operationId":"open_handoff_api_comms__team_key__handoff__handoff_key__open_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"handoff_key","in":"path","required":true,"schema":{"type":"string","title":"Handoff Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenHandoffResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comms/{team_key}/conversations/{chat_key}/installer-key":{"post":{"tags":["comms"],"summary":"Create Chat Installer Key","description":"Mint an install key linked to a chat.","operationId":"create_chat_installer_key_api_comms__team_key__conversations__chat_key__installer_key_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"chat_key","in":"path","required":true,"schema":{"type":"string","title":"Chat Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateInstallerKeyResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comms/{team_key}/tool-approvals":{"get":{"tags":["comms"],"summary":"List Tool Approvals","description":"List tool approvals for a team.","operationId":"list_tool_approvals_api_comms__team_key__tool_approvals_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"status","in":"query","required":false,"schema":{"type":"array","items":{"$ref":"#/components/schemas/ApprovalStatus"},"title":"Status"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":10,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolApprovalListResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comms/{team_key}/tool-approvals/{approval_key}":{"get":{"tags":["comms"],"summary":"Get Tool Approval","description":"Get a single tool approval.","operationId":"get_tool_approval_api_comms__team_key__tool_approvals__approval_key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"approval_key","in":"path","required":true,"schema":{"type":"string","title":"Approval Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolApprovalResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comms/{team_key}/tool-approvals/{approval_key}/decision":{"post":{"tags":["comms"],"summary":"Decide Tool Approval","description":"Approve or decline a pending command approval (REST counterpart of WS).","operationId":"decide_tool_approval_api_comms__team_key__tool_approvals__approval_key__decision_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"approval_key","in":"path","required":true,"schema":{"type":"string","title":"Approval Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolApprovalDecisionBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolApprovalResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comms/{team_key}/tool-approvals/{approval_key}/cancel":{"post":{"tags":["comms"],"summary":"Cancel Tool Approval","description":"Cancel a pending tool approval.","operationId":"cancel_tool_approval_api_comms__team_key__tool_approvals__approval_key__cancel_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"approval_key","in":"path","required":true,"schema":{"type":"string","title":"Approval Key"}}],"responses":{"204":{"description":"Successful Response"},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comms/{team_key}/tool-approvals/{approval_key}/rules":{"post":{"tags":["comms"],"summary":"Create Command Rule","description":"Create command rule from a tool approval. Requires admin/engineer role on the team.","operationId":"create_command_rule_api_comms__team_key__tool_approvals__approval_key__rules_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"approval_key","in":"path","required":true,"schema":{"type":"string","title":"Approval Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCommandRuleRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCommandRuleResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comms/{team_key}/workspace/":{"post":{"tags":["comms"],"summary":"Create Workspace Chat","description":"Create a new workspace chat.\n\nThis endpoint is used when a user sends their first message from the\nempty workspace chat state. It creates the chat shell and persists a\ngoal SystemTurn synchronously — the first user message arrives later\nvia the WebSocket (which itself emits a\n``ChatTurnIntent(ChatKey, USER)``).\n\nChat-shell creation is a first-class operation distinct from \"advance\na chat by one turn\": there is no turn to persist here, so we call\n``get_or_create_chat_shell`` directly rather than constructing a\nplaceholder ``Turn`` just to satisfy ``ChatTurnIntent``'s shape.\nDedup + principal validation still share the same\n``_create_chat_with_dedup`` codepath as the turn-driven flows.\n\nThe goal SystemTurn is persisted in-route (not emitted as a\n``ChatTurnIntent``) so the goal row is guaranteed to exist before\nthe user's first WebSocket message can be processed — otherwise the\nrunner's history-fold may run without the goal in\n``build_system_prompt`` on the first reply.","operationId":"create_workspace_chat_api_comms__team_key__workspace__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWorkspaceChatRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWorkspaceChatResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comms/{team_key}/user-input/{request_key}":{"get":{"tags":["comms"],"summary":"Get User Input","operationId":"get_user_input_api_comms__team_key__user_input__request_key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"request_key","in":"path","required":true,"schema":{"type":"string","title":"Request Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserInputSnapshot"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comms/{team_key}/user-input/{request_key}/answer":{"post":{"tags":["comms"],"summary":"Answer User Input","operationId":"answer_user_input_api_comms__team_key__user_input__request_key__answer_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"request_key","in":"path","required":true,"schema":{"type":"string","title":"Request Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserInputSubmission"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserInputSnapshot"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comms/tools/schemas":{"get":{"tags":["comms"],"summary":"Get Tool Schemas","description":"Return typed schemas for all available Sparky tools.","operationId":"get_tool_schemas_api_comms_tools_schemas_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolSchemasResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"}},"security":[{"HTTPBearer":[]}]}},"/api/comms/sparky/skills":{"get":{"tags":["comms"],"summary":"List Sparky Skills","description":"List Sparky skills available as slash commands.","operationId":"list_sparky_skills_api_comms_sparky_skills_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SparkySkillsResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"}},"security":[{"HTTPBearer":[]}]}},"/api/comms/ws/enums":{"get":{"tags":["comms"],"summary":"Get Ws Enums","description":"Return all WebSocket protocol enum values.","operationId":"get_ws_enums_api_comms_ws_enums_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebSocketEnumsResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"}},"security":[{"HTTPBearer":[]}]}},"/api/mesh/agents/latest-release":{"get":{"tags":["mesh"],"summary":"Get Latest Release","description":"Proxy latest agent release info to avoid CORS.","operationId":"get_latest_release_api_mesh_agents_latest_release_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LatestRelease"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"}}}},"/api/mesh/agents/sessions/{session_key}/verify":{"put":{"tags":["mesh"],"summary":"Verify Session","description":"Manually verify a session to a team member. Admin only.","operationId":"verify_session_api_mesh_agents_sessions__session_key__verify_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_key","in":"path","required":true,"schema":{"type":"string","title":"Session Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifySessionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionDetail"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mesh/agents/sessions/{session_key}/unverify":{"put":{"tags":["mesh"],"summary":"Unverify Session","description":"Remove verification from a session. Admin only.","operationId":"unverify_session_api_mesh_agents_sessions__session_key__unverify_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_key","in":"path","required":true,"schema":{"type":"string","title":"Session Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionDetail"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mesh/agents/{agent_key}/commands":{"get":{"tags":["mesh"],"summary":"List Agent Commands","description":"Paginated command audit history for a device. Engineer/admin only.","operationId":"list_agent_commands_api_mesh_agents__agent_key__commands_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_key","in":"path","required":true,"schema":{"type":"string","title":"Agent Key"}},{"name":"success_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Success Only"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200,"title":"Q"}},{"name":"membership_id","in":"query","required":false,"schema":{"type":"integer","title":"Membership Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":10,"title":"Pagesize"}},{"name":"team_key","in":"query","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_CommandExecutionDetail_"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mesh/agents/{agent_key}/commands/actors":{"get":{"tags":["mesh"],"summary":"List Agent Command Actors","description":"Distinct actors that ran commands on a device. Engineer/admin only.","operationId":"list_agent_command_actors_api_mesh_agents__agent_key__commands_actors_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_key","in":"path","required":true,"schema":{"type":"string","title":"Agent Key"}},{"name":"team_key","in":"query","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CommandExecutionActor"},"title":"Response List Agent Command Actors Api Mesh Agents  Agent Key  Commands Actors Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mesh/agents/{agent_key}":{"get":{"tags":["mesh"],"summary":"Get Agent","description":"Get agent detail by key.","operationId":"get_agent_api_mesh_agents__agent_key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_key","in":"path","required":true,"schema":{"type":"string","title":"Agent Key"}},{"name":"team_key","in":"query","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentDetail"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mesh/{team_key}/agents":{"get":{"tags":["mesh"],"summary":"List Agents","description":"Paginated agents for a team.","operationId":"list_agents_api_mesh__team_key__agents_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","title":"Q"}},{"name":"status","in":"query","required":false,"schema":{"enum":["all","online","unstable","offline"],"type":"string","default":"all","title":"Status"}},{"name":"platform","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"title":"Platform"}},{"name":"unverified","in":"query","required":false,"schema":{"type":"boolean","title":"Unverified"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":10,"title":"Pagesize"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_Agent_"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mesh/{team_key}/agents/sessions/verified":{"get":{"tags":["mesh"],"summary":"List Verified Sessions","description":"List verified sessions for a team.","operationId":"list_verified_sessions_api_mesh__team_key__agents_sessions_verified_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SessionDetail"},"title":"Response List Verified Sessions Api Mesh  Team Key  Agents Sessions Verified Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mesh/{team_key}/agents/installer-key":{"post":{"tags":["mesh"],"summary":"Create Installer Key","description":"Generate installer key for agent deployment. Requires engineer/admin role on the team.","operationId":"create_installer_key_api_mesh__team_key__agents_installer_key_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateInstallerKeyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateInstallerKeyResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mesh/{team_key}/agents/devices/{device_key}":{"delete":{"tags":["mesh"],"summary":"Delete Device","description":"Soft-delete a device and revoke its agents' NATS credentials.\n\nRequires engineer/admin role on the team.","operationId":"delete_device_api_mesh__team_key__agents_devices__device_key__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"device_key","in":"path","required":true,"schema":{"type":"string","title":"Device Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"204":{"description":"Successful Response"},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mesh/{team_key}/agents/devices/bulk-delete":{"post":{"tags":["mesh"],"summary":"Bulk Delete Devices","description":"Soft-delete the selected devices and revoke their NATS credentials.\n\nRequires engineer/admin role on the team. Returns the outcome per\nkey rather than 204 — a selection can go stale between render and submit,\nand one already-removed device shouldn't sink the rest of the batch.","operationId":"bulk_delete_devices_api_mesh__team_key__agents_devices_bulk_delete_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDeleteDevicesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDeleteDevicesResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mesh/{team_key}/graph":{"get":{"tags":["mesh"],"summary":"Get Graph","operationId":"get_graph_api_mesh__team_key__graph_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GraphResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mesh/{team_key}/graph/node/{key}":{"get":{"tags":["mesh"],"summary":"Get Node Detail","operationId":"get_node_detail_api_mesh__team_key__graph_node__key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NodeDetailResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mesh/{team_key}/signals":{"get":{"tags":["mesh"],"summary":"List Signals","operationId":"list_signals_api_mesh__team_key__signals_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"entity_key","in":"query","required":false,"schema":{"type":"string","title":"Entity Key"}},{"name":"category","in":"query","required":false,"schema":{"type":"string","title":"Category"}},{"name":"before","in":"query","required":false,"schema":{"type":"string","format":"date-time","title":"Before"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalListResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mesh/{team_key}/metrics/{entity_key}":{"get":{"tags":["mesh"],"summary":"Get Metrics","operationId":"get_metrics_api_mesh__team_key__metrics__entity_key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"entity_key","in":"path","required":true,"schema":{"type":"string","pattern":"^[^\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x9F]*$","title":"Entity Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"domain","in":"query","required":true,"schema":{"type":"string","pattern":"^\\s*(cpu|memory|disk|disk_io|wifi|network)(\\s*,\\s*(cpu|memory|disk|disk_io|wifi|network))*\\s*$","description":"Comma-separated: cpu,memory,disk,disk_io,wifi,network","title":"Domain"},"description":"Comma-separated: cpu,memory,disk,disk_io,wifi,network"},{"name":"range","in":"query","required":true,"schema":{"type":"string","pattern":"^(1h|6h|24h|7d|30d)$","title":"Range"}},{"name":"path","in":"query","required":false,"schema":{"type":"string","title":"Path"}},{"name":"disk_name","in":"query","required":false,"schema":{"type":"string","title":"Disk Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetricsResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mesh/policies/{team_key}":{"get":{"tags":["mesh"],"summary":"List Policies","operationId":"list_policies_api_mesh_policies__team_key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":10,"title":"Page Size"}},{"name":"show_inactive","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Show Inactive"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","title":"Search"}},{"name":"override_state","in":"query","required":false,"schema":{"type":"array","items":{"$ref":"#/components/schemas/PolicyOverrideState"},"title":"Override State"}},{"name":"decision","in":"query","required":false,"schema":{"type":"array","items":{"$ref":"#/components/schemas/PolicyDecision"},"title":"Decision"}},{"name":"policy_type","in":"query","required":false,"schema":{"type":"array","items":{"$ref":"#/components/schemas/PolicyType"},"title":"Policy Type"}},{"name":"operating_system","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"title":"Operating System"}},{"name":"group","in":"query","required":false,"schema":{"title":"Group","anyOf":[{"enum":["powershell_helpers_formatting","networking_connectivity","security_device_trust","locale_time_power","system_hardware","processes_services_event_logs","files_registry","identity_sessions_policy","printing","storage","software_updates","scheduled_tasks"],"type":"string"},{"const":"unclassified","type":"string"}]}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyListResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["mesh"],"summary":"Create Policy","operationId":"create_policy_api_mesh_policies__team_key__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CmdletPolicyCreateBody"},{"$ref":"#/components/schemas/PatternPolicyCreateBody"}],"title":"Body"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyDetail"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mesh/policies/{team_key}/validate":{"post":{"tags":["mesh"],"summary":"Validate Team Command","operationId":"validate_team_command_api_mesh_policies__team_key__validate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyValidateBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyValidateResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mesh/policies/{team_key}/{policy_key}":{"patch":{"tags":["mesh"],"summary":"Update Policy","operationId":"update_policy_api_mesh_policies__team_key___policy_key__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"policy_key","in":"path","required":true,"schema":{"type":"string","title":"Policy Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyUpdateBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyDetail"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["mesh"],"summary":"Delete Policy","operationId":"delete_policy_api_mesh_policies__team_key___policy_key__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"policy_key","in":"path","required":true,"schema":{"type":"string","title":"Policy Key"}}],"responses":{"204":{"description":"Successful Response"},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mesh/{team_key}/screenshots/{screenshot_key}/url":{"get":{"tags":["mesh"],"summary":"Get Screenshot Url","operationId":"get_screenshot_refresh_url","security":[{"HTTPBearer":[]}],"parameters":[{"name":"screenshot_key","in":"path","required":true,"schema":{"type":"string","title":"Screenshot Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreenshotUrls"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/onboarding/{team_key}/assessment":{"get":{"tags":["onboarding"],"summary":"Get Setup Assessment","description":"Return setup gaps and viewer-specific remediation for one team.","operationId":"get_setup_assessment_api_onboarding__team_key__assessment_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceProviderSetupAssessment"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/onboarding/{team_key}/managed-teams/{managed_team_key}/access":{"post":{"tags":["onboarding"],"summary":"Open Managed Team","description":"Ensure the provider admin can enter one of its managed teams.\n\nGrants admin there when the caller has no membership yet; an existing\nmembership is kept as it is.","operationId":"open_managed_team_api_onboarding__team_key__managed_teams__managed_team_key__access_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"managed_team_key","in":"path","required":true,"schema":{"type":"string","title":"Managed Team Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagedTeamAccess"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/kb/{team_key}/articles":{"get":{"tags":["kb"],"summary":"List Team Articles","description":"List all articles for a team with pagination and search.\n\nEnd users can't widen this past ``active`` (SUP-1007): the\nrequested status is silently overridden rather than rejected, since\ndrafts/retirements simply don't exist from an end user's point of view.","operationId":"list_team_articles_api_kb__team_key__articles_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"article_type","in":"query","required":false,"schema":{"$ref":"#/components/schemas/ArticleType","title":"Article Type"}},{"name":"status","in":"query","required":false,"schema":{"enum":["active","inactive","all"],"type":"string","default":"active","title":"Status"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","title":"Search"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","maximum":1000000,"minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":10,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArticlesListResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["kb"],"summary":"Create Team Article","description":"Create a new team article.","operationId":"create_team_article_api_kb__team_key__articles_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArticleCreateBody"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArticleDetail"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"An article with this slug already exists"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/kb/{team_key}/articles/accessible":{"get":{"tags":["kb"],"summary":"List Accessible Team Articles","description":"List all articles accessible to team (team + global) with pagination and search.","operationId":"list_accessible_team_articles_api_kb__team_key__articles_accessible_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"article_type","in":"query","required":false,"schema":{"$ref":"#/components/schemas/ArticleType","title":"Article Type"}},{"name":"status","in":"query","required":false,"schema":{"enum":["active","inactive","all"],"type":"string","default":"active","title":"Status"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","title":"Search"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","maximum":1000000,"minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":10,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArticlesListResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/kb/{team_key}/articles/{article_key}":{"get":{"tags":["kb"],"summary":"Get Article","description":"Get an article by key or slug with resources.\n\nScoped to team-owned + global articles: a member of one team must not read\nanother team's article just by knowing its key (SUP-339 / BOLA). An\nend-user caller gets 404, not the article, for a draft or retired article\nreached by key (SUP-1007) — same signal as a nonexistent key.","operationId":"get_article_api_kb__team_key__articles__article_key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"article_key","in":"path","required":true,"schema":{"type":"string","title":"Article Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArticleDetail"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["kb"],"summary":"Update Article By Key","description":"Update an existing article.\n\nScoped to the owning team: foreign and global articles return 404 so a\nteam-scoped route cannot mutate another team's article (SUP-339 / BOLA).","operationId":"update_article_by_key_api_kb__team_key__articles__article_key__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"article_key","in":"path","required":true,"schema":{"type":"string","title":"Article Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArticleUpdateBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArticleDetail"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["kb"],"summary":"Delete Article By Key","description":"Delete an article.\n\nScoped to the owning team: foreign and global articles return 404 so a\nteam-scoped route cannot delete another team's article (SUP-339 / BOLA).","operationId":"delete_article_by_key_api_kb__team_key__articles__article_key__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"article_key","in":"path","required":true,"schema":{"type":"string","title":"Article Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"204":{"description":"Successful Response"},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/kb/{team_key}/articles/{article_key}/duplicate":{"post":{"tags":["kb"],"summary":"Duplicate Article By Key","description":"Duplicate an article (without resources).","operationId":"duplicate_article_by_key_api_kb__team_key__articles__article_key__duplicate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"article_key","in":"path","required":true,"schema":{"type":"string","title":"Article Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArticleDetail"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/kb/{team_key}/articles/bulk-status":{"post":{"tags":["kb"],"summary":"Bulk Set Article Status","description":"Bulk set active/inactive status on team-owned articles.\n\nScoped to the owning team: a key naming a foreign or global article\naborts the whole batch with 404 (SUP-339 / BOLA).","operationId":"bulk_set_article_status_api_kb__team_key__articles_bulk_status_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkArticleStatusBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkArticleActionResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/kb/{team_key}/articles/bulk-delete":{"post":{"tags":["kb"],"summary":"Bulk Delete Team Articles","description":"Bulk delete team-owned articles.\n\nScoped to the owning team: a key naming a foreign or global article\naborts the whole batch with 404 (SUP-339 / BOLA).","operationId":"bulk_delete_team_articles_api_kb__team_key__articles_bulk_delete_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkArticleKeysBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkArticleActionResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/kb/{team_key}/jobs/curation":{"post":{"tags":["kb"],"summary":"Start Kb Curation Job","description":"Start a KB curation job.","operationId":"start_kb_curation_job_api_kb__team_key__jobs_curation_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartKbCurationJobRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KbJobQueued"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["kb"],"summary":"List Kb Curation Jobs","description":"List KB curation jobs.","operationId":"list_kb_curation_jobs_api_kb__team_key__jobs_curation_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","maximum":1000000,"minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":10,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KbCurationJobListResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/kb/{team_key}/jobs/consolidation":{"post":{"tags":["kb"],"summary":"Start Kb Consolidation Job","description":"Start a standalone KB consolidation job.","operationId":"start_kb_consolidation_job_api_kb__team_key__jobs_consolidation_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartKbConsolidationJobRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KbJobQueued"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["kb"],"summary":"List Kb Consolidation Jobs","description":"List KB consolidation jobs.","operationId":"list_kb_consolidation_jobs_api_kb__team_key__jobs_consolidation_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","maximum":1000000,"minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":10,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KbConsolidationJobListResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/kb/{team_key}/jobs/curation/{job_key}":{"get":{"tags":["kb"],"summary":"Get Kb Curation Job","description":"Get one KB curation job.","operationId":"get_kb_curation_job_api_kb__team_key__jobs_curation__job_key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_key","in":"path","required":true,"schema":{"type":"string","title":"Job Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KbCurationJobInfo"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/kb/{team_key}/jobs/consolidation/{job_key}":{"get":{"tags":["kb"],"summary":"Get Kb Consolidation Job","description":"Get one KB consolidation job.","operationId":"get_kb_consolidation_job_api_kb__team_key__jobs_consolidation__job_key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_key","in":"path","required":true,"schema":{"type":"string","title":"Job Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KbConsolidationJobInfo"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/kb/{team_key}/jobs/curation/{job_key}/cancel":{"post":{"tags":["kb"],"summary":"Cancel Kb Curation Job","description":"Cancel a KB curation job.","operationId":"cancel_kb_curation_job_api_kb__team_key__jobs_curation__job_key__cancel_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_key","in":"path","required":true,"schema":{"type":"string","title":"Job Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KbJobCancellation"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/kb/{team_key}/jobs/consolidation/{job_key}/cancel":{"post":{"tags":["kb"],"summary":"Cancel Kb Consolidation Job","description":"Cancel a KB consolidation job.","operationId":"cancel_kb_consolidation_job_api_kb__team_key__jobs_consolidation__job_key__cancel_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_key","in":"path","required":true,"schema":{"type":"string","title":"Job Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KbJobCancellation"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/kb/{team_key}/secrets/{secret_key}":{"get":{"tags":["kb"],"summary":"Get Secret","operationId":"get_secret_api_kb__team_key__secrets__secret_key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"secret_key","in":"path","required":true,"schema":{"type":"string","title":"Secret Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/kb/{team_key}/secrets":{"get":{"tags":["kb"],"summary":"List Team Secrets","operationId":"list_team_secrets_api_kb__team_key__secrets_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Active Only"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analysis/{team_key}/analyses/stats":{"get":{"tags":["analysis"],"summary":"Get Team Analysis Stats","description":"Get analysis stats for team.","operationId":"get_team_analysis_stats_api_analysis__team_key__analyses_stats_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisStatsResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analysis/{team_key}/analyses":{"get":{"tags":["analysis"],"summary":"List Team Analyses","description":"List analyses for team with filtering.","operationId":"list_team_analyses_api_analysis__team_key__analyses_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"source_psa","in":"query","required":false,"schema":{"type":"string","title":"Source Psa"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","title":"Status"}},{"name":"category","in":"query","required":false,"schema":{"type":"string","title":"Category"}},{"name":"analysed_only","in":"query","required":false,"schema":{"type":"boolean","title":"Analysed Only"}},{"name":"date_days","in":"query","required":false,"schema":{"type":"integer","maximum":36500,"minimum":0,"title":"Date Days"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","title":"Search"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","maximum":1000000,"minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":10,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisListResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analysis/{team_key}/analyses/{source_psa}/{ticket_id}":{"get":{"tags":["analysis"],"summary":"Get Team Analysis","description":"Get single analysis by ticket ID.","operationId":"get_team_analysis_api_analysis__team_key__analyses__source_psa___ticket_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"source_psa","in":"path","required":true,"schema":{"type":"string","title":"Source Psa"}},{"name":"ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Ticket Id"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisDetailResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analysis/{team_key}/insights":{"get":{"tags":["analysis"],"summary":"List Team Insights","description":"List IT insights for team.","operationId":"list_team_insights_api_analysis__team_key__insights_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"job_key","in":"query","required":false,"schema":{"type":"string","title":"Job Key"}},{"name":"status","in":"query","required":false,"schema":{"$ref":"#/components/schemas/InsightStatus","title":"Status"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":10,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InsightListResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analysis/{team_key}/insights/latest":{"get":{"tags":["analysis"],"summary":"Get Team Latest Insights","description":"Get latest insights from most recent completed job.","operationId":"get_team_latest_insights_api_analysis__team_key__insights_latest_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"status","in":"query","required":false,"schema":{"type":"array","items":{"$ref":"#/components/schemas/InsightStatus"},"title":"Status"}},{"name":"category","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"title":"Category"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LatestInsightsResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analysis/{team_key}/insights/categories":{"get":{"tags":["analysis"],"summary":"Get Team Insight Categories","description":"Get distinct insight categories for team.","operationId":"get_team_insight_categories_api_analysis__team_key__insights_categories_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InsightCategoriesResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analysis/{team_key}/insights/{insight_key}":{"get":{"tags":["analysis"],"summary":"Get Team Insight","description":"Get a single insight by key.","operationId":"get_team_insight_api_analysis__team_key__insights__insight_key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"insight_key","in":"path","required":true,"schema":{"type":"string","title":"Insight Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsolidatedInsightDetail"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analysis/{team_key}/insights/{insight_key}/status":{"post":{"tags":["analysis"],"summary":"Update Insight Status","description":"Update insight status (active/actioned/ignored).","operationId":"update_insight_status_api_analysis__team_key__insights__insight_key__status_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"insight_key","in":"path","required":true,"schema":{"type":"string","title":"Insight Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateInsightStatusRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateInsightStatusResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analysis/{team_key}/jobs/analysis":{"post":{"tags":["analysis"],"summary":"Start Analysis Job","description":"Start a bulk analysis job.","operationId":"start_analysis_job_api_analysis__team_key__jobs_analysis_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartAnalysisJobRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobCreatedResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Not a team admin"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["analysis"],"summary":"List Analysis Jobs Endpoint","description":"List analysis jobs for team.","operationId":"list_analysis_jobs_endpoint_api_analysis__team_key__jobs_analysis_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","maximum":1000000,"minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":10,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisJobListResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analysis/{team_key}/jobs/analysis/{job_key}":{"get":{"tags":["analysis"],"summary":"Get Analysis Job Status","description":"Get analysis job status.","operationId":"get_analysis_job_status_api_analysis__team_key__jobs_analysis__job_key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_key","in":"path","required":true,"schema":{"type":"string","title":"Job Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisJobInfo"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analysis/{team_key}/jobs/analysis/{job_key}/cancel":{"post":{"tags":["analysis"],"summary":"Cancel Analysis Job Endpoint","description":"Cancel a running analysis job.","operationId":"cancel_analysis_job_endpoint_api_analysis__team_key__jobs_analysis__job_key__cancel_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_key","in":"path","required":true,"schema":{"type":"string","title":"Job Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Not a team admin"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analysis/{team_key}/jobs/insight-consolidation":{"post":{"tags":["analysis"],"summary":"Start Insight Job","description":"Start IT and dev insight consolidation jobs.","operationId":"start_insight_job_api_analysis__team_key__jobs_insight_consolidation_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartInsightJobRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobCreatedResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Not a team admin"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["analysis"],"summary":"List Insight Jobs Endpoint","description":"List insight jobs for team.","operationId":"list_insight_jobs_endpoint_api_analysis__team_key__jobs_insight_consolidation_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"insight_type","in":"query","required":false,"schema":{"enum":["it_team","dev_team"],"type":"string","title":"Insight Type"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","maximum":1000000,"minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":10,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InsightJobListResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analysis/{team_key}/jobs/insight-consolidation/{job_key}":{"get":{"tags":["analysis"],"summary":"Get Insight Job Status","description":"Get insight job status.","operationId":"get_insight_job_status_api_analysis__team_key__jobs_insight_consolidation__job_key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_key","in":"path","required":true,"schema":{"type":"string","title":"Job Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InsightJobInfo"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analysis/{team_key}/jobs/insight-consolidation/{job_key}/cancel":{"post":{"tags":["analysis"],"summary":"Cancel Insight Job Endpoint","description":"Cancel a running insight job.","operationId":"cancel_insight_job_endpoint_api_analysis__team_key__jobs_insight_consolidation__job_key__cancel_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_key","in":"path","required":true,"schema":{"type":"string","title":"Job Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Not a team admin"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analysis/{team_key}/pipeline/{source_psa}/{ticket_id}/run":{"post":{"tags":["analysis"],"summary":"Run Analysis","description":"Start async analysis for a ticket.","operationId":"run_analysis_api_analysis__team_key__pipeline__source_psa___ticket_id__run_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"source_psa","in":"path","required":true,"schema":{"type":"string","title":"Source Psa"}},{"name":"ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Ticket Id"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunPipelineResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analysis/{team_key}/pipeline/{source_psa}/{ticket_id}/cancel":{"post":{"tags":["analysis"],"summary":"Cancel Analysis","description":"Cancel a stuck in-progress analysis by resetting DB state.","operationId":"cancel_analysis_api_analysis__team_key__pipeline__source_psa___ticket_id__cancel_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"source_psa","in":"path","required":true,"schema":{"type":"string","title":"Source Psa"}},{"name":"ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Ticket Id"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analysis/{team_key}/settings":{"get":{"tags":["analysis"],"summary":"Get Team Analysis Settings","operationId":"get_team_analysis_settings_api_analysis__team_key__settings_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"board_key","in":"query","required":false,"schema":{"type":"string","title":"Board Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisSettings"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["analysis"],"summary":"Patch Team Analysis Settings","operationId":"patch_team_analysis_settings_api_analysis__team_key__settings_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"board_key","in":"query","required":false,"schema":{"type":"string","title":"Board Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAnalysisSettingsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisSettings"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analysis/{team_key}/settings/preset":{"put":{"tags":["analysis"],"summary":"Put Team Analysis Preset","operationId":"put_team_analysis_preset_api_analysis__team_key__settings_preset_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"board_key","in":"query","required":false,"schema":{"type":"string","title":"Board Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplyPresetRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisSettings"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analysis/{team_key}/settings/managed/blocked-fields":{"get":{"tags":["analysis"],"summary":"Get Managed Blocked Fields","operationId":"get_managed_blocked_fields_api_analysis__team_key__settings_managed_blocked_fields_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ManagedBlocklistTeam"},"title":"Response Get Managed Blocked Fields Api Analysis  Team Key  Settings Managed Blocked Fields Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["analysis"],"summary":"Put Managed Blocked Fields","operationId":"put_managed_blocked_fields_api_analysis__team_key__settings_managed_blocked_fields_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushBlockedFieldsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ManagedPushResult"},"title":"Response Put Managed Blocked Fields Api Analysis  Team Key  Settings Managed Blocked Fields Put"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analysis/{team_key}/settings/boards":{"get":{"tags":["analysis"],"summary":"Get Team Analysis Boards","operationId":"get_team_analysis_boards_api_analysis__team_key__settings_boards_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AnalysisBoardOption"},"title":"Response Get Team Analysis Boards Api Analysis  Team Key  Settings Boards Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analysis/{team_key}/settings/board/{board_key}":{"delete":{"tags":["analysis"],"summary":"Delete Team Analysis Board Override","operationId":"delete_team_analysis_board_override_api_analysis__team_key__settings_board__board_key__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"board_key","in":"path","required":true,"schema":{"type":"string","title":"Board Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisSettings"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/search/global":{"get":{"tags":["search"],"summary":"Search tickets, devices, and users across accessible teams","description":"Cross-team search limited to teams where the caller is admin/engineer.","operationId":"global_search_api_search_global_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":25,"minimum":1,"description":"Max results per entity type","default":10,"title":"Limit"},"description":"Max results per entity type"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GlobalSearchResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/search/{team_key}/fts":{"get":{"tags":["search"],"summary":"Full-text + vector hybrid search","description":"Search across indexed content using hybrid search.","operationId":"search_fts_api_search__team_key__fts_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"description":"Search query string","title":"Q"},"description":"Search query string"},{"name":"domains","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"description":"Optional domain filter: 'kb', 'psa'. 'insights' requires team admin and is otherwise ignored.","title":"Domains"},"description":"Optional domain filter: 'kb', 'psa'. 'insights' requires team admin and is otherwise ignored."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":10,"title":"Limit"}},{"name":"rerank","in":"query","required":false,"schema":{"type":"boolean","description":"Enable LLM-based reranking","default":false,"title":"Rerank"},"description":"Enable LLM-based reranking"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/search/{team_key}/agent":{"post":{"tags":["search"],"summary":"Create Agent Query Route","description":"Submit a natural language data question.","operationId":"create_agent_query_route_api_search__team_key__agent_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentQueryCreateBody"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentQueryCreated"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/search/{team_key}/agent/{key}":{"get":{"tags":["search"],"summary":"Get Agent Query Route","description":"Poll for agent query results.","operationId":"get_agent_query_route_api_search__team_key__agent__key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentQueryDetail"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/search/{team_key}/cards":{"get":{"tags":["search"],"summary":"List Cards Route","description":"List cards for the team.","operationId":"list_cards_route_api_search__team_key__cards_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CardListItem"},"title":"Response List Cards Route Api Search  Team Key  Cards Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/search/{team_key}/cards/{slug}":{"get":{"tags":["search"],"summary":"Get Card Route","description":"Card definition plus latest successful snapshot (embed contract).","operationId":"get_card_route_api_search__team_key__cards__slug__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CardDetail"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["search"],"summary":"Update Card Route","description":"Update title/description/refresh interval (explicit null clears it).","operationId":"update_card_route_api_search__team_key__cards__slug__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CardUpdateBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CardDetail"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["search"],"summary":"Delete Card Route","description":"Soft-delete a card.","operationId":"delete_card_route_api_search__team_key__cards__slug__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"204":{"description":"Successful Response"},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/search/{team_key}/cards/{slug}/snapshots":{"get":{"tags":["search"],"summary":"List Card Snapshots Route","description":"History of snapshots for a card, newest first.","operationId":"list_card_snapshots_route_api_search__team_key__cards__slug__snapshots_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CardSnapshotDetail"},"title":"Response List Card Snapshots Route Api Search  Team Key  Cards  Slug  Snapshots Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/search/{team_key}/cards/{slug}/generate":{"post":{"tags":["search"],"summary":"Generate Card Route","description":"Enqueue a refresh of this card.","operationId":"generate_card_route_api_search__team_key__cards__slug__generate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/search/status":{"get":{"tags":["search"],"summary":"Search Status","operationId":"search_status_api_search_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchStatusResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"}},"security":[{"HTTPBearer":[]}]}},"/api/search/admin/recompute-idf":{"post":{"tags":["search"],"summary":"Recompute Idf","operationId":"recompute_idf_api_search_admin_recompute_idf_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecomputeIDFResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"}},"security":[{"HTTPBearer":[]}]}},"/api/sparky/{team_key}/agent-runs":{"get":{"tags":["sparky"],"summary":"List Team Agent Runs","description":"List a team's agent-runs, newest-first, with filtering and pagination.","operationId":"list_team_agent_runs_api_sparky__team_key__agent_runs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"flow","in":"query","required":false,"schema":{"type":"string","title":"Flow"}},{"name":"status","in":"query","required":false,"schema":{"$ref":"#/components/schemas/AgentRunStatus","title":"Status"}},{"name":"ticket_key","in":"query","required":false,"schema":{"type":"string","title":"Ticket Key"}},{"name":"chat_key","in":"query","required":false,"schema":{"type":"string","title":"Chat Key"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":10,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRunsListResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sparky/{team_key}/agent-runs/{run_key}":{"get":{"tags":["sparky"],"summary":"Get Agent Run","description":"Get a single agent-run with its transcript turns.","operationId":"get_agent_run_api_sparky__team_key__agent_runs__run_key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"run_key","in":"path","required":true,"schema":{"type":"string","title":"Run Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRunDetail"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workflows/credentials/oauth/callback":{"get":{"tags":["workflows"],"summary":"Oauth Credential Callback","description":"OAuth provider callback — exchange code, create credential, redirect.\n\nteam_key is extracted from the signed state JWT, not the URL path.","operationId":"oauth_credential_callback_api_workflows_credentials_oauth_callback_get","parameters":[{"name":"code","in":"query","required":true,"schema":{"type":"string","title":"Code"}},{"name":"state","in":"query","required":true,"schema":{"type":"string","title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workflows/{team_key}/actions":{"post":{"tags":["workflows"],"summary":"Create Action","operationId":"create_action_api_workflows__team_key__actions_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateActionBody"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionDetail"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["workflows"],"summary":"List Actions","operationId":"list_actions_api_workflows__team_key__actions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ActionListItem"},"title":"Response List Actions Api Workflows  Team Key  Actions Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workflows/{team_key}/actions/{action_key}":{"get":{"tags":["workflows"],"summary":"Get Action","operationId":"get_action_api_workflows__team_key__actions__action_key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"action_key","in":"path","required":true,"schema":{"type":"string","title":"Action Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionDetail"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["workflows"],"summary":"Update Action","operationId":"update_action_api_workflows__team_key__actions__action_key__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"action_key","in":"path","required":true,"schema":{"type":"string","title":"Action Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateActionBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionDetail"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["workflows"],"summary":"Delete Action","operationId":"delete_action_api_workflows__team_key__actions__action_key__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"action_key","in":"path","required":true,"schema":{"type":"string","title":"Action Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"204":{"description":"Successful Response"},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workflows/{team_key}/actions/{action_key}/access":{"get":{"tags":["workflows"],"summary":"Get Action Access","operationId":"get_action_access_api_workflows__team_key__actions__action_key__access_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"action_key","in":"path","required":true,"schema":{"type":"string","title":"Action Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionAccessView"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workflows/{team_key}/actions/{action_key}/publish":{"post":{"tags":["workflows"],"summary":"Publish Action","operationId":"publish_action_api_workflows__team_key__actions__action_key__publish_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"action_key","in":"path","required":true,"schema":{"type":"string","title":"Action Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/PublishActionBody"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishActionResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workflows/{team_key}/actions/{action_key}/publish-targets":{"get":{"tags":["workflows"],"summary":"List Publish Targets","operationId":"list_publish_targets_api_workflows__team_key__actions__action_key__publish_targets_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"action_key","in":"path","required":true,"schema":{"type":"string","title":"Action Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PublishTargetItem"},"title":"Response List Publish Targets Api Workflows  Team Key  Actions  Action Key  Publish Targets Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workflows/{team_key}/actions/{action_key}/regenerate-workflow-summary":{"post":{"tags":["workflows"],"summary":"Regenerate Workflow Summary","operationId":"regenerate_workflow_summary_api_workflows__team_key__actions__action_key__regenerate_workflow_summary_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"action_key","in":"path","required":true,"schema":{"type":"string","title":"Action Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionDetail"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workflows/{team_key}/actions/{action_key}/unpublish":{"post":{"tags":["workflows"],"summary":"Unpublish Action","operationId":"unpublish_action_api_workflows__team_key__actions__action_key__unpublish_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"action_key","in":"path","required":true,"schema":{"type":"string","title":"Action Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionDetail"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workflows/{team_key}/authorisation-policies":{"get":{"tags":["workflows"],"summary":"List Authorisation Policies","operationId":"list_authorisation_policies_api_workflows__team_key__authorisation_policies_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AuthorisationPolicyListItem"},"title":"Response List Authorisation Policies Api Workflows  Team Key  Authorisation Policies Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["workflows"],"summary":"Create Authorisation Policy","operationId":"create_authorisation_policy_api_workflows__team_key__authorisation_policies_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAuthorisationPolicyBody"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorisationPolicyDetail"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workflows/{team_key}/authorisation-policies/{policy_key}":{"get":{"tags":["workflows"],"summary":"Get Authorisation Policy","operationId":"get_authorisation_policy_api_workflows__team_key__authorisation_policies__policy_key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"policy_key","in":"path","required":true,"schema":{"type":"string","title":"Policy Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorisationPolicyDetail"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["workflows"],"summary":"Update Authorisation Policy","operationId":"update_authorisation_policy_api_workflows__team_key__authorisation_policies__policy_key__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"policy_key","in":"path","required":true,"schema":{"type":"string","title":"Policy Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAuthorisationPolicyBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorisationPolicyDetail"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["workflows"],"summary":"Delete Authorisation Policy","operationId":"delete_authorisation_policy_api_workflows__team_key__authorisation_policies__policy_key__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"policy_key","in":"path","required":true,"schema":{"type":"string","title":"Policy Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"204":{"description":"Successful Response"},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workflows/{team_key}/authorisation-policies/{policy_key}/access":{"get":{"tags":["workflows"],"summary":"Get Authorisation Policy Access","operationId":"get_authorisation_policy_access_api_workflows__team_key__authorisation_policies__policy_key__access_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"policy_key","in":"path","required":true,"schema":{"type":"string","title":"Policy Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionAccessView"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workflows/{team_key}/authorisation-policies/promote-from-action/{action_key}":{"post":{"tags":["workflows"],"summary":"Promote Authorisation Policy From Action","operationId":"promote_authorisation_policy_from_action_api_workflows__team_key__authorisation_policies_promote_from_action__action_key__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"action_key","in":"path","required":true,"schema":{"type":"string","title":"Action Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromoteAuthorisationPolicyBody"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorisationPolicyDetail"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workflows/{team_key}/actions/{action_key}/run":{"post":{"tags":["workflows"],"summary":"Run Action","operationId":"run_action_api_workflows__team_key__actions__action_key__run_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"action_key","in":"path","required":true,"schema":{"type":"string","title":"Action Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunActionBody"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecutionDetail"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workflows/{team_key}/executions":{"get":{"tags":["workflows"],"summary":"List Executions","operationId":"list_executions_api_workflows__team_key__executions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}},{"name":"action_key","in":"query","required":false,"schema":{"type":"string","title":"Action Key"}},{"name":"trigger_source","in":"query","required":false,"schema":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/TriggerSource"},{"const":"unknown","type":"string"}]},"title":"Trigger Source"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ExecutionListItem"},"title":"Response List Executions Api Workflows  Team Key  Executions Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workflows/{team_key}/executions/{execution_key}":{"get":{"tags":["workflows"],"summary":"Get Execution","operationId":"get_execution_api_workflows__team_key__executions__execution_key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"execution_key","in":"path","required":true,"schema":{"type":"string","title":"Execution Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ExecutionStatusView"},{"$ref":"#/components/schemas/WaitingForApprovalView"},{"$ref":"#/components/schemas/PermissionDeniedView"}],"discriminator":{"propertyName":"kind","mapping":{"execution":"#/components/schemas/ExecutionStatusView","waiting_for_approval":"#/components/schemas/WaitingForApprovalView","permission_denied":"#/components/schemas/PermissionDeniedView"}},"title":"Response Get Execution Api Workflows  Team Key  Executions  Execution Key  Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workflows/{team_key}/executions/{execution_key}/approve":{"post":{"tags":["workflows"],"summary":"Approve Execution","operationId":"approve_execution_api_workflows__team_key__executions__execution_key__approve_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"execution_key","in":"path","required":true,"schema":{"type":"string","title":"Execution Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveExecutionBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecutionDetail"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workflows/{team_key}/executions/{execution_key}/cancel":{"post":{"tags":["workflows"],"summary":"Cancel Execution","operationId":"cancel_execution_api_workflows__team_key__executions__execution_key__cancel_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"execution_key","in":"path","required":true,"schema":{"type":"string","title":"Execution Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecutionDetail"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workflows/{team_key}/credentials":{"post":{"tags":["workflows"],"summary":"Create Credential","operationId":"create_credential_api_workflows__team_key__credentials_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCredentialBody"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialDetail"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["workflows"],"summary":"List Credentials","operationId":"list_credentials_api_workflows__team_key__credentials_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CredentialListItem"},"title":"Response List Credentials Api Workflows  Team Key  Credentials Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workflows/{team_key}/credentials/{credential_key}":{"get":{"tags":["workflows"],"summary":"Get Credential","operationId":"get_credential_api_workflows__team_key__credentials__credential_key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"credential_key","in":"path","required":true,"schema":{"type":"string","title":"Credential Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialDetail"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["workflows"],"summary":"Update Credential","operationId":"update_credential_api_workflows__team_key__credentials__credential_key__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"credential_key","in":"path","required":true,"schema":{"type":"string","title":"Credential Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCredentialBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialDetail"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["workflows"],"summary":"Delete Credential","operationId":"delete_credential_api_workflows__team_key__credentials__credential_key__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"credential_key","in":"path","required":true,"schema":{"type":"string","title":"Credential Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"204":{"description":"Successful Response"},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workflows/{team_key}/groups":{"get":{"tags":["workflows"],"summary":"List Team Tags","operationId":"list_team_tags_api_workflows__team_key__groups_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":{"type":"string"}},"title":"Response List Team Tags Api Workflows  Team Key  Groups Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workflows/{team_key}/groups/{user_key}":{"get":{"tags":["workflows"],"summary":"List User Tags","operationId":"list_user_tags_api_workflows__team_key__groups__user_key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_key","in":"path","required":true,"schema":{"type":"string","title":"User Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"},"title":"Response List User Tags Api Workflows  Team Key  Groups  User Key  Get"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["workflows"],"summary":"Add Tag","operationId":"add_tag_api_workflows__team_key__groups__user_key__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_key","in":"path","required":true,"schema":{"type":"string","title":"User Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddTagBody"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workflows/{team_key}/groups/{user_key}/{tag}":{"delete":{"tags":["workflows"],"summary":"Remove Tag","operationId":"remove_tag_api_workflows__team_key__groups__user_key___tag__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_key","in":"path","required":true,"schema":{"type":"string","title":"User Key"}},{"name":"tag","in":"path","required":true,"schema":{"type":"string","minLength":9,"pattern":"^superit:[a-z0-9][a-z0-9_-]*$","title":"Tag"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"204":{"description":"Successful Response"},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workflows/{team_key}/schedules/{schedule_key}":{"get":{"tags":["workflows"],"summary":"Get Action Schedule","operationId":"get_action_schedule_api_workflows__team_key__schedules__schedule_key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"schedule_key","in":"path","required":true,"schema":{"type":"string","title":"Schedule Key"}},{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionScheduleDetail"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workflows/{team_key}/credentials/oauth/initiate":{"post":{"tags":["workflows"],"summary":"Initiate Oauth","description":"Start OAuth registration — returns authorize URL.","operationId":"initiate_oauth_api_workflows__team_key__credentials_oauth_initiate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"team_key","in":"path","required":true,"schema":{"type":"string","title":"Team Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthInitiateBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthInitiateResponse"}}}},"400":{"description":"Invalid input"},"401":{"description":"Not authenticated"},"403":{"description":"Forbidden"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AcceloIssueClassResponse":{"properties":{"acceloId":{"type":"integer","title":"Acceloid"},"title":{"type":"string","title":"Title"}},"type":"object","required":["acceloId","title"],"title":"AcceloIssueClassResponse"},"AcceloIssueTypeResponse":{"properties":{"acceloId":{"type":"integer","title":"Acceloid"},"title":{"type":"string","title":"Title"}},"type":"object","required":["acceloId","title"],"title":"AcceloIssueTypeResponse"},"AcceloPriorityResponse":{"properties":{"acceloId":{"type":"integer","title":"Acceloid"},"title":{"type":"string","title":"Title"}},"type":"object","required":["acceloId","title"],"title":"AcceloPriorityResponse"},"AcceloPsaFields":{"properties":{"psaType":{"type":"string","const":"accelo","title":"Psatype","default":"accelo"},"typeName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Typename"},"className":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Classname"},"extra":{"additionalProperties":{"type":"string"},"type":"object","title":"Extra"}},"type":"object","title":"AcceloPsaFields","description":"Accelo classification + leftover display fields."},"AccessLevel":{"type":"string","enum":["blocked","full","read_only"],"title":"AccessLevel"},"ActionAccessContact":{"properties":{"userKey":{"type":"string","title":"Userkey"},"name":{"type":"string","title":"Name","description":"Preferred conversational name, then full name, then login email."},"email":{"type":"string","title":"Email"},"fullName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fullname","description":"Person's full name; empty if unknown, null for legacy contacts without name fields."},"nickname":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nickname","description":"Preferred conversational name, independent of full name."}},"type":"object","required":["userKey","name","email"],"title":"ActionAccessContact"},"ActionAccessContactList":{"properties":{"contacts":{"items":{"$ref":"#/components/schemas/ActionAccessContact"},"type":"array","title":"Contacts"},"truncated":{"type":"boolean","title":"Truncated"},"fallbackReason":{"type":"string","enum":["matched","no_matching_users","no_matching_rules"],"title":"Fallbackreason"}},"type":"object","required":["contacts","truncated","fallbackReason"],"title":"ActionAccessContactList"},"ActionAccessView":{"properties":{"requesters":{"$ref":"#/components/schemas/ActionAccessContactList"},"approversByRule":{"items":{"$ref":"#/components/schemas/RuleApproverGroup"},"type":"array","title":"Approversbyrule"},"rules":{"$ref":"#/components/schemas/AuthorizationMatrix"}},"type":"object","required":["requesters","approversByRule","rules"],"title":"ActionAccessView"},"ActionDetail":{"properties":{"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"status":{"$ref":"#/components/schemas/ActionStatus"},"runtime":{"$ref":"#/components/schemas/Runtime"},"draft":{"type":"string","title":"Draft"},"published":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Published"},"authorisation":{"anyOf":[{"$ref":"#/components/schemas/AuthorizationMatrix"},{"type":"null"}]},"authorisationPolicyKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorisationpolicykey"},"authorisationPolicyName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorisationpolicyname"},"publishedByKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Publishedbykey"},"publishedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Publishedat"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"},"updatedAt":{"type":"string","format":"date-time","title":"Updatedat"},"credentials":{"items":{"$ref":"#/components/schemas/CredentialListItem"},"type":"array","title":"Credentials","default":[]},"inputsSchema":{"anyOf":[{"items":{"$ref":"#/components/schemas/InputField"},"type":"array"},{"type":"null"}],"title":"Inputsschema"},"approvalSchema":{"anyOf":[{"items":{"$ref":"#/components/schemas/InputField"},"type":"array"},{"type":"null"}],"title":"Approvalschema"},"allowedHosts":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowedhosts"},"executionTarget":{"type":"string","title":"Executiontarget","default":"cloud_sandbox"},"meshDeviceSelector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Meshdeviceselector"},"pollTimeoutSeconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Polltimeoutseconds"},"pollIntervalSeconds":{"type":"integer","title":"Pollintervalseconds","default":30},"scriptTimeoutSeconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Scripttimeoutseconds"},"autoRun":{"type":"boolean","title":"Autorun","default":false},"workflowSummary":{"anyOf":[{"items":{"$ref":"#/components/schemas/WorkflowSummaryStep"},"type":"array"},{"type":"null"}],"title":"Workflowsummary"},"workflowSummaryStatus":{"$ref":"#/components/schemas/WorkflowSummaryStatus","default":"idle"},"originActionKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Originactionkey"},"originTeamKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Originteamkey"},"publishedTeamCount":{"type":"integer","title":"Publishedteamcount","default":0}},"type":"object","required":["key","name","description","status","runtime","draft","published","authorisation","publishedByKey","publishedAt","createdAt","updatedAt","inputsSchema","approvalSchema","allowedHosts"],"title":"ActionDetail"},"ActionExecutionListInput":{"properties":{"statuses":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Statuses"}},"type":"object","title":"ActionExecutionListInput"},"ActionExecutionListSchema":{"properties":{"tool":{"type":"string","const":"action_execution_list","title":"Tool","default":"action_execution_list"},"description":{"type":"string","title":"Description","default":"List action executions filtered by status"},"input":{"anyOf":[{"$ref":"#/components/schemas/ActionExecutionListInput"},{"type":"null"}]}},"type":"object","title":"ActionExecutionListSchema"},"ActionGetInput":{"properties":{"action_key":{"type":"string","title":"Action Key"}},"type":"object","required":["action_key"],"title":"ActionGetInput"},"ActionGetRunInput":{"properties":{"run_key":{"type":"string","title":"Run Key"}},"type":"object","required":["run_key"],"title":"ActionGetRunInput"},"ActionGetRunSchema":{"properties":{"tool":{"type":"string","const":"action_get_run","title":"Tool","default":"action_get_run"},"description":{"type":"string","title":"Description","default":"Get the status and details of an execution run"},"input":{"anyOf":[{"$ref":"#/components/schemas/ActionGetRunInput"},{"type":"null"}]}},"type":"object","title":"ActionGetRunSchema"},"ActionGetSchema":{"properties":{"tool":{"type":"string","const":"action_get","title":"Tool","default":"action_get"},"description":{"type":"string","title":"Description","default":"Get full details of an action definition"},"input":{"anyOf":[{"$ref":"#/components/schemas/ActionGetInput"},{"type":"null"}]}},"type":"object","title":"ActionGetSchema"},"ActionListItem":{"properties":{"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"status":{"$ref":"#/components/schemas/ActionStatus"},"runtime":{"$ref":"#/components/schemas/Runtime"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"},"updatedAt":{"type":"string","format":"date-time","title":"Updatedat"},"credentials":{"items":{"$ref":"#/components/schemas/CredentialListItem"},"type":"array","title":"Credentials","default":[]},"originActionKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Originactionkey"},"publishedTeamCount":{"type":"integer","title":"Publishedteamcount","default":0}},"type":"object","required":["key","name","description","status","runtime","createdAt","updatedAt"],"title":"ActionListItem"},"ActionListSchema":{"properties":{"tool":{"type":"string","const":"action_list","title":"Tool","default":"action_list"},"description":{"type":"string","title":"Description","default":"List published actions available to run"}},"type":"object","title":"ActionListSchema"},"ActionProposeDraftInput":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"}},"type":"object","required":["name","description"],"title":"ActionProposeDraftInput"},"ActionProposeDraftSchema":{"properties":{"tool":{"type":"string","const":"action_create","title":"Tool","default":"action_create"},"description":{"type":"string","title":"Description","default":"Design an action and save it as a draft"},"input":{"anyOf":[{"$ref":"#/components/schemas/ActionProposeDraftInput"},{"type":"null"}]}},"type":"object","title":"ActionProposeDraftSchema"},"ActionRunInput":{"properties":{"action_key":{"type":"string","title":"Action Key"},"inputs":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Inputs"}},"type":"object","required":["action_key"],"title":"ActionRunInput"},"ActionRunSchema":{"properties":{"tool":{"type":"string","const":"action_run","title":"Tool","default":"action_run"},"description":{"type":"string","title":"Description","default":"Start a published action execution"},"input":{"anyOf":[{"$ref":"#/components/schemas/ActionRunInput"},{"type":"null"}]}},"type":"object","title":"ActionRunSchema"},"ActionScheduleConfig":{"properties":{"action_key":{"type":"string","title":"Action Key"},"execution_target":{"$ref":"#/components/schemas/ExecutionTarget"},"inputs":{"additionalProperties":{"type":"string"},"type":"object","title":"Inputs"},"target_user_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target User Key"},"device_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Device Key"},"interval_days":{"type":"integer","maximum":3650.0,"minimum":1.0,"title":"Interval Days","default":30},"first_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"First At"}},"additionalProperties":false,"type":"object","required":["action_key","execution_target"],"title":"ActionScheduleConfig"},"ActionScheduleDetail":{"properties":{"key":{"type":"string","title":"Key"},"teamKey":{"type":"string","title":"Teamkey"},"configuration":{"$ref":"#/components/schemas/ActionScheduleConfig"},"actionName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actionname"},"deviceName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Devicename"},"requesterUserKey":{"type":"string","title":"Requesteruserkey"},"requesterName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requestername"},"chatKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chatkey"},"state":{"type":"string","enum":["active","paused","cancelled"],"title":"State"},"anchorAt":{"type":"string","format":"date-time","title":"Anchorat"},"nextDue":{"type":"string","format":"date-time","title":"Nextdue"},"occurrences":{"items":{"$ref":"#/components/schemas/ActionScheduleOccurrence"},"type":"array","title":"Occurrences"}},"type":"object","required":["key","teamKey","configuration","actionName","requesterUserKey","state","anchorAt","nextDue","occurrences"],"title":"ActionScheduleDetail"},"ActionScheduleOccurrence":{"properties":{"revision":{"type":"integer","title":"Revision"},"dueAt":{"type":"string","format":"date-time","title":"Dueat"},"outcome":{"type":"string","enum":["accepted","rejected","skipped"],"title":"Outcome"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"executionKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Executionkey"},"executionStatus":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Executionstatus"},"actionKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actionkey"}},"type":"object","required":["revision","dueAt","outcome"],"title":"ActionScheduleOccurrence"},"ActionStatus":{"type":"string","enum":["draft","published"],"title":"ActionStatus"},"ActionUpdateDraftInput":{"properties":{"action_key":{"type":"string","title":"Action Key"},"changes":{"type":"string","title":"Changes"}},"type":"object","required":["action_key","changes"],"title":"ActionUpdateDraftInput"},"ActionUpdateDraftSchema":{"properties":{"tool":{"type":"string","const":"action_update","title":"Tool","default":"action_update"},"description":{"type":"string","title":"Description","default":"Update a draft action via natural-language changes"},"input":{"anyOf":[{"$ref":"#/components/schemas/ActionUpdateDraftInput"},{"type":"null"}]}},"type":"object","title":"ActionUpdateDraftSchema"},"ActionableInsight":{"properties":{"insightType":{"$ref":"#/components/schemas/InsightType","description":"Type of insight"},"title":{"type":"string","maxLength":255,"title":"Title","description":"Short descriptive title"},"content":{"type":"string","title":"Content","description":"Detailed description of the insight"},"recommendedAction":{"type":"string","title":"Recommendedaction","description":"Specific action to take to address this insight"},"urgency":{"$ref":"#/components/schemas/InsightUrgency","description":"How urgently this should be addressed"},"estimatedImpact":{"type":"string","title":"Estimatedimpact","description":"Who and how many are affected, e.g. '~15 users in sales dept', 'All devices on Windows 10'","default":""},"stakeholders":{"items":{"$ref":"#/components/schemas/Stakeholder"},"type":"array","title":"Stakeholders","description":"Who should see this insight"}},"type":"object","required":["insightType","title","content","recommendedAction","urgency","stakeholders"],"title":"ActionableInsight","description":"An actionable insight the IT team or client should act on."},"AddRelatedTicketRequest":{"properties":{"ticket_key":{"type":"string","title":"Ticket Key"},"ticket_summary":{"type":"string","title":"Ticket Summary","default":""},"ticket_status":{"type":"string","title":"Ticket Status","default":""},"ticket_source":{"type":"string","title":"Ticket Source","default":"superit"},"ticket_updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ticket Updated At"}},"type":"object","required":["ticket_key"],"title":"AddRelatedTicketRequest","description":"Request body for adding a related ticket."},"AddTagBody":{"properties":{"tag":{"type":"string","minLength":9,"pattern":"^superit:[a-z0-9][a-z0-9_-]*$","title":"Tag"}},"additionalProperties":false,"type":"object","required":["tag"],"title":"AddTagBody"},"Agent":{"properties":{"key":{"type":"string","title":"Key"},"hostname":{"type":"string","title":"Hostname"},"machineId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Machineid"},"deviceKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Devicekey"},"osPlatform":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Osplatform"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version"},"isOnline":{"type":"boolean","title":"Isonline","default":false},"connection":{"anyOf":[{"$ref":"#/components/schemas/DeviceConnection"},{"type":"null"}]},"lastSeen":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lastseen"},"sessions":{"items":{"$ref":"#/components/schemas/SessionSummary"},"type":"array","title":"Sessions"}},"type":"object","required":["key","hostname"],"title":"Agent","description":"Agent at API/service boundaries (list view)."},"AgentDetail":{"properties":{"key":{"type":"string","title":"Key"},"deviceKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Devicekey"},"hostname":{"type":"string","title":"Hostname"},"osPlatform":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Osplatform"},"osFamily":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Osfamily"},"osVersion":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Osversion"},"kernelVersion":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kernelversion"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version"},"isOnline":{"type":"boolean","title":"Isonline","default":false},"connection":{"anyOf":[{"$ref":"#/components/schemas/DeviceConnection"},{"type":"null"}]},"lastSeen":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lastseen"},"systemInfo":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Systeminfo"},"sessions":{"items":{"$ref":"#/components/schemas/SessionDetail"},"type":"array","title":"Sessions"},"metrics":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metrics"}},"type":"object","required":["key","hostname"],"title":"AgentDetail","description":"Agent with full details."},"AgentQueryCreateBody":{"properties":{"question":{"type":"string","maxLength":2000,"minLength":1,"pattern":"^[^\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x9F]*$","title":"Question"}},"additionalProperties":false,"type":"object","required":["question"],"title":"AgentQueryCreateBody","description":"Request body for POST /search/{team_key}/agent."},"AgentQueryCreated":{"properties":{"key":{"type":"string","title":"Key"},"status":{"$ref":"#/components/schemas/AgentQueryStatus"}},"type":"object","required":["key","status"],"title":"AgentQueryCreated","description":"Response for POST — just the key and status."},"AgentQueryDetail":{"properties":{"key":{"type":"string","title":"Key"},"status":{"$ref":"#/components/schemas/AgentQueryStatus"},"question":{"type":"string","title":"Question"},"sql":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sql"},"data":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Data"},"explanation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Explanation"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"attempts":{"type":"integer","title":"Attempts","default":0},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Createdat"},"completedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completedat"}},"type":"object","required":["key","status","question"],"title":"AgentQueryDetail","description":"Response for GET — full query state."},"AgentQueryStatus":{"type":"string","enum":["pending","running","completed","unavailable","failed"],"title":"AgentQueryStatus","description":"Lifecycle of one natural-language data question.\n\nThe route's create writes ``pending``; the DBOS workflow moves the row to\n``running`` and then to exactly one terminal state. Values are stored\nverbatim in ``search.agent_query.status``, so this enum is the single\nsource of truth for the repository, the workflow and the polled response —\na state the poller cannot match is now a name that does not resolve.\n\n``unavailable`` is terminal and is NOT a failure: the agent understood the\nquestion and established that no readable relation answers it. Rendering\nit as ``failed`` would tell users to retry something that cannot succeed,\nand as ``completed`` with zero rows would tell them the answer is \"none\"."},"AgentRunDetail":{"properties":{"id":{"type":"integer","title":"Id"},"key":{"type":"string","title":"Key"},"teamKey":{"type":"string","title":"Teamkey"},"workflowId":{"type":"string","title":"Workflowid"},"flow":{"type":"string","title":"Flow"},"parentRunId":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parentrunid"},"status":{"$ref":"#/components/schemas/AgentRunStatus"},"outcome":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outcome"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"ticketKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticketkey"},"ticketNumber":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticketnumber"},"chatKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chatkey"},"startedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Startedat"},"completedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completedat"},"turns":{"items":{"$ref":"#/components/schemas/AgentTurnDetail"},"type":"array","title":"Turns"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata","default":{}}},"type":"object","required":["id","key","teamKey","workflowId","flow","status","turns"],"title":"AgentRunDetail","description":"A single agent-run with its transcript."},"AgentRunStatus":{"type":"string","enum":["running","paused","completed","error","cancelled","historical","superseded"],"title":"AgentRunStatus"},"AgentRunSummary":{"properties":{"id":{"type":"integer","title":"Id"},"key":{"type":"string","title":"Key"},"flow":{"type":"string","title":"Flow"},"workflowId":{"type":"string","title":"Workflowid"},"status":{"$ref":"#/components/schemas/AgentRunStatus"},"outcome":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outcome"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"ticketKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticketkey"},"ticketNumber":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticketnumber"},"chatKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chatkey"},"startedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Startedat"},"completedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completedat"},"parentRunId":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parentrunid"},"children":{"items":{"$ref":"#/components/schemas/AgentRunSummary"},"type":"array","title":"Children","default":[]},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata","default":{}}},"type":"object","required":["id","key","flow","workflowId","status"],"title":"AgentRunSummary","description":"A single agent-run list row."},"AgentRunsListResponse":{"properties":{"runs":{"items":{"$ref":"#/components/schemas/AgentRunSummary"},"type":"array","title":"Runs"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["runs","count"],"title":"AgentRunsListResponse","description":"Response for the agent-runs list with a total count."},"AgentTurnDetail":{"properties":{"seq":{"type":"integer","title":"Seq"},"role":{"type":"string","title":"Role"},"messages":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Messages"},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Createdat"}},"type":"object","required":["seq","role","messages"],"title":"AgentTurnDetail","description":"A single turn in an agent-run transcript."},"AnalyseDataInput":{"properties":{"question":{"type":"string","title":"Question"},"domains":{"items":{"type":"string"},"type":"array","title":"Domains"}},"type":"object","required":["question","domains"],"title":"AnalyseDataInput"},"AnalyseDataSchema":{"properties":{"tool":{"type":"string","const":"analyse_data","title":"Tool","default":"analyse_data"},"description":{"type":"string","title":"Description","default":"Analyse structured data — counts, trends, breakdowns, joins, aggregates"},"input":{"anyOf":[{"$ref":"#/components/schemas/AnalyseDataInput"},{"type":"null"}]}},"type":"object","title":"AnalyseDataSchema"},"AnalysisBoardOption":{"properties":{"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"},"preset":{"$ref":"#/components/schemas/AutonomyPreset","default":"custom"},"inherited":{"type":"boolean","title":"Inherited","default":true},"updatedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updatedat"}},"type":"object","required":["key","name"],"title":"AnalysisBoardOption","description":"A selectable PSA board for board-scoped analysis settings.\n\nCarries the board's current config state so the selector can show each\nboard's preset + last-updated at a glance. ``inherited`` is True when the\nboard has no override (values come from the team \"All boards\" config)."},"AnalysisDetailResponse":{"properties":{"key":{"type":"string","title":"Key"},"source_psa":{"type":"string","title":"Source Psa"},"source_ticket_id":{"type":"string","title":"Source Ticket Id"},"status":{"$ref":"#/components/schemas/TicketAnalysisStatus"},"skip_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Skip Reason"},"analysed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Analysed At"},"analysis_version":{"type":"string","title":"Analysis Version"},"analysis_data":{"anyOf":[{"$ref":"#/components/schemas/TicketAnalysis"},{"type":"null"}]},"ticket_specification":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticket Specification"},"one_sentence_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"One Sentence Summary"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"complexity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Complexity"}},"type":"object","required":["key","source_psa","source_ticket_id","status","analysis_version"],"title":"AnalysisDetailResponse"},"AnalysisJobInfo":{"properties":{"key":{"type":"string","title":"Key","description":"Job key"},"status":{"$ref":"#/components/schemas/JobStatus","description":"Job status"},"sourcePsa":{"$ref":"#/components/schemas/PsaSystem","description":"Source PSA type"},"dateFilterMonths":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Datefiltermonths","description":"Date filter in months"},"dateFrom":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Datefrom","description":"Start of explicit date range"},"dateTo":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Dateto","description":"End of explicit date range"},"selectionMode":{"type":"string","enum":["re_analyse_all","only_not_processed"],"title":"Selectionmode","description":"How tickets were selected for the job"},"analysisProgress":{"$ref":"#/components/schemas/AnalysisJobProgress","description":"Real analysis progress"},"failedTickets":{"items":{"$ref":"#/components/schemas/FailedTicket"},"type":"array","title":"Failedtickets","description":"Failed ticket details"},"startedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Startedat","description":"Start time"},"completedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completedat","description":"Completion time"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Errormessage","description":"Error message if failed"},"createdAt":{"type":"string","format":"date-time","title":"Createdat","description":"Creation time"}},"type":"object","required":["key","status","sourcePsa","dateFilterMonths","dateFrom","dateTo","selectionMode","analysisProgress","startedAt","completedAt","errorMessage","createdAt"],"title":"AnalysisJobInfo","description":"Info about a bulk analysis job."},"AnalysisJobListResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/AnalysisJobInfo"},"type":"array","title":"Results"},"count":{"type":"integer","title":"Count"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["results","count","page","page_size"],"title":"AnalysisJobListResponse"},"AnalysisJobProgress":{"properties":{"total":{"type":"integer","title":"Total"},"completed":{"type":"integer","title":"Completed"},"analysed":{"type":"integer","title":"Analysed"},"failed":{"type":"integer","title":"Failed"},"skipped":{"type":"integer","title":"Skipped"},"inProgress":{"type":"integer","title":"Inprogress"},"progressPercent":{"type":"integer","title":"Progresspercent"}},"type":"object","required":["total","completed","analysed","failed","skipped","inProgress","progressPercent"],"title":"AnalysisJobProgress","description":"Real progress from TicketAnalysisRecord states."},"AnalysisListResponse":{"properties":{"results":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Results"},"count":{"type":"integer","title":"Count"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["results","count","page","page_size"],"title":"AnalysisListResponse"},"AnalysisSettings":{"properties":{"automationReviewedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Automationreviewedat"},"ticketAnalysisEnabled":{"type":"boolean","title":"Ticketanalysisenabled","default":false},"ticketAnalysisTriggers":{"$ref":"#/components/schemas/TicketAnalysisTriggerSettings","default":{"newTicket":false,"reanalyseOnContentChange":false,"reanalysisCooldownHours":24}},"insightConsolidationEnabled":{"type":"boolean","title":"Insightconsolidationenabled","default":false},"insightRecurringEnabled":{"type":"boolean","title":"Insightrecurringenabled","default":false},"insightEmailNotificationsEnabled":{"type":"boolean","title":"Insightemailnotificationsenabled","default":false},"kbCurationEnabled":{"type":"boolean","title":"Kbcurationenabled","default":false},"kbCurationRecurringEnabled":{"type":"boolean","title":"Kbcurationrecurringenabled","default":false},"kbCurationAutoPublishEnabled":{"type":"boolean","title":"Kbcurationautopublishenabled","default":true},"skipStatusCategories":{"items":{"$ref":"#/components/schemas/StatusCategory"},"type":"array","title":"Skipstatuscategories"},"minNarrativeTokens":{"type":"integer","minimum":0.0,"title":"Minnarrativetokens","default":5},"levelZeroTiers":{"items":{"type":"string"},"type":"array","title":"Levelzerotiers"},"levelZeroDeviceGatheringEnabled":{"type":"boolean","title":"Levelzerodevicegatheringenabled","default":false},"endUserResolutionEnabled":{"type":"boolean","title":"Enduserresolutionenabled","default":false},"endUserResolutionApplyMode":{"$ref":"#/components/schemas/EndUserResolutionApplyMode","default":"SUPERIT_ONLY"},"triageApplyMode":{"$ref":"#/components/schemas/TriageApplyMode","default":"SUPERIT_ONLY"},"triageBlockedFields":{"items":{"$ref":"#/components/schemas/TriageField"},"type":"array","title":"Triageblockedfields"},"investigateApplyMode":{"$ref":"#/components/schemas/TriageApplyMode","default":"SUPERIT_ONLY"},"investigateIncludeAudit":{"type":"boolean","title":"Investigateincludeaudit","default":false},"runSummaryEnabled":{"type":"boolean","title":"Runsummaryenabled","default":false},"preset":{"$ref":"#/components/schemas/AutonomyPreset","default":"custom"},"triageStatusCategories":{"items":{"$ref":"#/components/schemas/StatusCategory"},"type":"array","title":"Triagestatuscategories"},"investigateStatusCategories":{"items":{"$ref":"#/components/schemas/StatusCategory"},"type":"array","title":"Investigatestatuscategories"},"endUserChatStatusCategories":{"items":{"$ref":"#/components/schemas/StatusCategory"},"type":"array","title":"Enduserchatstatuscategories"},"inherited":{"type":"boolean","title":"Inherited","default":false}},"type":"object","title":"AnalysisSettings","description":"Team-level analysis and insight controls."},"AnalysisState":{"type":"string","enum":["not_analysed","queued","analysing","analysed","skipped","failed"],"title":"AnalysisState","description":"Ticket-level analysis state (denormalized from pipeline)."},"AnalysisStatsResponse":{"properties":{"totalTickets":{"type":"integer","title":"Totaltickets"},"analysedCount":{"type":"integer","title":"Analysedcount"}},"type":"object","required":["totalTickets","analysedCount"],"title":"AnalysisStatsResponse"},"ApiKeyFields":{"properties":{"type":{"type":"string","const":"api_key","title":"Type"},"headers":{"additionalProperties":{"type":"string"},"type":"object","title":"Headers"}},"type":"object","required":["type","headers"],"title":"ApiKeyFields"},"ApplicableAutonomyPreset":{"type":"string","enum":["none","balanced","full"],"title":"ApplicableAutonomyPreset","description":"The subset of presets the preset endpoint can apply.\n\n``AutonomyPreset.CUSTOM`` is deliberately absent: it is the state a config\nlands in after an individual field edit, never something a caller applies.\nModelling that as its own request enum keeps the published schema honest —\n``custom`` is rejected by validation instead of being documented as\nacceptable and then refused at runtime."},"ApplyPresetRequest":{"properties":{"preset":{"$ref":"#/components/schemas/ApplicableAutonomyPreset"}},"type":"object","required":["preset"],"title":"ApplyPresetRequest","description":"Body for the preset endpoint."},"ApprovalEditable":{"properties":{"lines":{"items":{"type":"string"},"type":"array","title":"Lines","default":[]},"note":{"anyOf":[{"$ref":"#/components/schemas/EditableNote"},{"type":"null"}]},"fields":{"items":{"$ref":"#/components/schemas/EditableField"},"type":"array","title":"Fields","default":[]},"changes":{"items":{"$ref":"#/components/schemas/ProposedChange"},"type":"array","title":"Changes","default":[]},"rationale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rationale"},"noteOnly":{"type":"boolean","title":"Noteonly","default":false},"ticket":{"anyOf":[{"$ref":"#/components/schemas/TicketContext"},{"type":"null"}]},"skipped":{"items":{"$ref":"#/components/schemas/SkippedOperation"},"type":"array","title":"Skipped","default":[]},"changedFieldCount":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Changedfieldcount"},"edited":{"items":{"type":"string"},"type":"array","title":"Edited","default":[]}},"type":"object","title":"ApprovalEditable","description":"The structured card a PSA write approval renders instead of a command."},"ApprovalStatus":{"type":"string","enum":["PENDING","APPROVED","DENIED","ABANDONED","CANCELLED","AUTO_APPROVED"],"title":"ApprovalStatus","description":"API approval statuses."},"ApprovalUser":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"email":{"type":"string","title":"Email"}},"type":"object","required":["id","name","email"],"title":"ApprovalUser","description":"User info for approvals."},"ApproveExecutionBody":{"properties":{"approved":{"type":"boolean","title":"Approved"},"approval_inputs":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Approval Inputs"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["approved"],"title":"ApproveExecutionBody"},"Article":{"properties":{"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"key":{"type":"string","maxLength":12,"title":"Key"},"scope":{"$ref":"#/components/schemas/ArticleScope"},"team_key":{"type":"string","maxLength":12,"title":"Team Key","default":""},"name":{"type":"string","maxLength":255,"title":"Name"},"slug":{"type":"string","maxLength":255,"title":"Slug"},"description":{"type":"string","title":"Description","default":""},"body_markdown":{"type":"string","title":"Body Markdown","default":""},"article_type":{"$ref":"#/components/schemas/ArticleType"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"compatibility":{"type":"string","maxLength":500,"title":"Compatibility","default":""},"is_active":{"type":"boolean","title":"Is Active","default":true},"retired_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Retired At"},"deleted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Deleted At"},"version":{"type":"integer","minimum":0.0,"title":"Version","default":1},"article_metadata":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Article Metadata"},"psa_article_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Psa Article Id"}},"type":"object","required":["scope","name","slug","article_type"],"title":"Article","description":"Article model in kb schema.\n\nKnowledge base articles with team or global scope."},"ArticleCreateBody":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"pattern":"^[^\\x00-\\x1F\\x7F-\\x9F]*$","title":"Name"},"slug":{"type":"string","maxLength":255,"minLength":1,"pattern":"^[^\\s/\\x00-\\x1F\\x7F-\\x9F]+$","title":"Slug"},"description":{"type":"string","title":"Description","default":""},"articleType":{"$ref":"#/components/schemas/ArticleType","default":"troubleshooting"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","default":[]},"compatibility":{"type":"string","maxLength":500,"pattern":"^[^\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x9F]*$","title":"Compatibility","default":""},"bodyMarkdown":{"type":"string","title":"Bodymarkdown","default":""},"isActive":{"type":"boolean","title":"Isactive","default":true}},"additionalProperties":false,"type":"object","required":["name","slug"],"title":"ArticleCreateBody","description":"Request body for creating an article."},"ArticleDetail":{"properties":{"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"description":{"type":"string","title":"Description"},"articleType":{"$ref":"#/components/schemas/ArticleType"},"scope":{"$ref":"#/components/schemas/ArticleScope"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"compatibility":{"type":"string","title":"Compatibility"},"bodyMarkdown":{"type":"string","title":"Bodymarkdown"},"isActive":{"type":"boolean","title":"Isactive"},"version":{"type":"integer","title":"Version"},"resources":{"items":{"$ref":"#/components/schemas/ArticleResource"},"type":"array","title":"Resources"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"},"updatedAt":{"type":"string","format":"date-time","title":"Updatedat"},"isImported":{"type":"boolean","title":"Isimported"},"isEditable":{"type":"boolean","title":"Iseditable","default":false}},"type":"object","required":["key","name","slug","description","articleType","scope","tags","compatibility","bodyMarkdown","isActive","version","resources","createdAt","updatedAt","isImported"],"title":"ArticleDetail","description":"Full article with content and resources."},"ArticleList":{"properties":{"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"description":{"type":"string","title":"Description"},"articleType":{"$ref":"#/components/schemas/ArticleType"},"scope":{"$ref":"#/components/schemas/ArticleScope"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"isActive":{"type":"boolean","title":"Isactive"},"resourceCount":{"type":"integer","title":"Resourcecount"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"},"updatedAt":{"type":"string","format":"date-time","title":"Updatedat"},"isEditable":{"type":"boolean","title":"Iseditable"}},"type":"object","required":["key","name","slug","description","articleType","scope","tags","isActive","resourceCount","createdAt","updatedAt","isEditable"],"title":"ArticleList","description":"Lightweight article for list views."},"ArticleResource":{"properties":{"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"description":{"type":"string","title":"Description","default":""},"resourceType":{"$ref":"#/components/schemas/ResourceType"},"content":{"type":"string","title":"Content"}},"type":"object","required":["key","name","slug","resourceType","content"],"title":"ArticleResource","description":"Resource attached to an article."},"ArticleScope":{"type":"string","enum":["global","team"],"title":"ArticleScope"},"ArticleType":{"type":"string","enum":["business","infrastructure","procedure","software","system","troubleshooting"],"title":"ArticleType"},"ArticleUpdateBody":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1,"pattern":"^[^\\x00-\\x1F\\x7F-\\x9F]*$"},{"type":"null"}],"title":"Name"},"slug":{"anyOf":[{"type":"string","maxLength":255,"minLength":1,"pattern":"^[^\\s/\\x00-\\x1F\\x7F-\\x9F]+$"},{"type":"null"}],"title":"Slug"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"articleType":{"anyOf":[{"$ref":"#/components/schemas/ArticleType"},{"type":"null"}]},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"compatibility":{"anyOf":[{"type":"string","maxLength":500,"pattern":"^[^\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x9F]*$"},{"type":"null"}],"title":"Compatibility"},"bodyMarkdown":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bodymarkdown"},"isActive":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Isactive"}},"additionalProperties":false,"type":"object","title":"ArticleUpdateBody","description":"Request body for updating an article.\n\nA RequestBody like its create sibling: camelCase wire format, control-char\nrejection and `extra=\"forbid\"`. `populate_by_name` keeps the earlier\nsnake_case payload accepted, so the change is backwards compatible."},"ArticlesListResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/ArticleList"},"type":"array","title":"Results"},"count":{"type":"integer","title":"Count"},"totalPages":{"type":"integer","title":"Totalpages"}},"type":"object","required":["results","count","totalPages"],"title":"ArticlesListResponse","description":"Paginated list of articles."},"ArtifactScope":{"type":"string","enum":["it_team","client","user"],"title":"ArtifactScope","description":"Scope/tier of a knowledge artifact."},"ArtifactType":{"type":"string","enum":["procedure","troubleshooting","known_issue","workaround","faq","fact","configuration","policy","warning","glossary_term"],"title":"ArtifactType","description":"Type of knowledge artifact extracted from analysis."},"AssessmentViewerRole":{"type":"string","enum":["admin","engineer"]},"AssetTypeResponse":{"properties":{"name":{"type":"string","title":"Name"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["name","count"],"title":"AssetTypeResponse","description":"One distinct ``psa.asset.type_name`` value and how many assets carry it.\n\n``psa.asset`` is vendor-neutral (see its model docstring), so this isn't\nprefixed ``/cw/`` like the ConnectWise-only reference data below —\nfollowing ``/statuses`` rather than ``/cw/boards``. An admin configuring\nthe configuration-suggestion policy (``ConfigurationFilters``) can't type\nthese from memory — a connection can hold hundreds of distinct values —\nso the count doubles as a sanity check that a type name is worth\nincluding or excluding."},"AssignKbArticleTeamsRequest":{"properties":{"articleKeys":{"items":{"type":"string"},"type":"array","title":"Articlekeys"},"addTeamKeys":{"items":{"type":"string"},"type":"array","title":"Addteamkeys","default":[]},"removeTeamKeys":{"items":{"type":"string"},"type":"array","title":"Removeteamkeys","default":[]},"grantAll":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Grantall"}},"type":"object","required":["articleKeys"],"title":"AssignKbArticleTeamsRequest","description":"Bulk grant change across articles.\n\nOnly the teams the admin actually toggled are sent, so a tri-state\n(indeterminate) row is left untouched. `grant_all` is nullable for the\nsame reason: None means \"leave the wildcard as it is\"."},"AssignKbArticleTeamsResponse":{"properties":{"granted":{"type":"integer","title":"Granted"},"revoked":{"type":"integer","title":"Revoked"}},"type":"object","required":["granted","revoked"],"title":"AssignKbArticleTeamsResponse","description":"Result of a bulk grant change."},"AssignStaffRolesRequest":{"properties":{"userKeys":{"items":{"type":"string"},"type":"array","title":"Userkeys"},"assignments":{"items":{"$ref":"#/components/schemas/TeamRoleAssignment"},"type":"array","title":"Assignments"}},"type":"object","required":["userKeys","assignments"],"title":"AssignStaffRolesRequest","description":"Bulk assign roles to staff across managed teams."},"AssignStaffRolesResponse":{"properties":{"created":{"type":"integer","title":"Created"},"updated":{"type":"integer","title":"Updated"},"removed":{"type":"integer","title":"Removed"},"errors":{"items":{"$ref":"#/components/schemas/ImportUserError"},"type":"array","title":"Errors"}},"type":"object","required":["created","updated","removed","errors"],"title":"AssignStaffRolesResponse","description":"Result of bulk staff role assignment."},"AstBlock":{"properties":{"type":{"type":"string","title":"Type"},"text":{"type":"string","title":"Text"}},"type":"object","required":["type","text"],"title":"AstBlock","description":"A dangerous syntax block flagged by the PowerShell AST parser."},"AttachmentUploaded":{"properties":{"attachmentKey":{"type":"string","title":"Attachmentkey"},"mimeType":{"type":"string","title":"Mimetype"},"width":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Width"},"height":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Height"},"sizeBytes":{"type":"integer","title":"Sizebytes"}},"type":"object","required":["attachmentKey","mimeType","width","height","sizeBytes"],"title":"AttachmentUploaded"},"AuthorisationPolicyDetail":{"properties":{"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"authorisation":{"$ref":"#/components/schemas/AuthorizationMatrix"},"linkedActionCount":{"type":"integer","title":"Linkedactioncount"},"linkedActions":{"items":{"$ref":"#/components/schemas/AuthorisationPolicyLinkedAction"},"type":"array","title":"Linkedactions","default":[]},"createdAt":{"type":"string","format":"date-time","title":"Createdat"},"updatedAt":{"type":"string","format":"date-time","title":"Updatedat"}},"type":"object","required":["key","name","description","authorisation","linkedActionCount","createdAt","updatedAt"],"title":"AuthorisationPolicyDetail"},"AuthorisationPolicyLinkedAction":{"properties":{"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"}},"type":"object","required":["key","name"],"title":"AuthorisationPolicyLinkedAction"},"AuthorisationPolicyListItem":{"properties":{"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"authorisation":{"$ref":"#/components/schemas/AuthorizationMatrix"},"linkedActionCount":{"type":"integer","title":"Linkedactioncount"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"},"updatedAt":{"type":"string","format":"date-time","title":"Updatedat"}},"type":"object","required":["key","name","description","authorisation","linkedActionCount","createdAt","updatedAt"],"title":"AuthorisationPolicyListItem"},"AuthorizationMatrix":{"properties":{"rules":{"items":{"$ref":"#/components/schemas/AuthorizationRule"},"type":"array","title":"Rules"},"target_input":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Input"}},"type":"object","required":["rules"],"title":"AuthorizationMatrix","description":"Ordered list of rules, evaluated top-down, first match wins.","examples":[{"rules":[{"approver":{"tag":"group","tags":["superit:admins"]},"requester":{"tag":"group","tags":["superit:staff"]}}]}]},"AuthorizationRule":{"properties":{"requester":{"oneOf":[{"$ref":"#/components/schemas/GroupTagMatcher"},{"$ref":"#/components/schemas/SelfTagMatcher"},{"$ref":"#/components/schemas/NoneTagMatcher"}],"title":"Requester","discriminator":{"propertyName":"tag","mapping":{"group":"#/components/schemas/GroupTagMatcher","none":"#/components/schemas/NoneTagMatcher","self":"#/components/schemas/SelfTagMatcher"}}},"approver":{"oneOf":[{"$ref":"#/components/schemas/GroupTagMatcher"},{"$ref":"#/components/schemas/SelfTagMatcher"},{"$ref":"#/components/schemas/NoneTagMatcher"}],"title":"Approver","discriminator":{"propertyName":"tag","mapping":{"group":"#/components/schemas/GroupTagMatcher","none":"#/components/schemas/NoneTagMatcher","self":"#/components/schemas/SelfTagMatcher"}}},"target":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/GroupTagMatcher"},{"$ref":"#/components/schemas/SelfTagMatcher"},{"$ref":"#/components/schemas/NoneTagMatcher"}],"discriminator":{"propertyName":"tag","mapping":{"group":"#/components/schemas/GroupTagMatcher","none":"#/components/schemas/NoneTagMatcher","self":"#/components/schemas/SelfTagMatcher"}}},{"type":"null"}],"title":"Target"}},"type":"object","required":["requester","approver"],"title":"AuthorizationRule","description":"Single authorization rule: requester + approver + optional target."},"Automation":{"type":"string","enum":["workflow","autonomous","hitl_user","hitl_engineer","none"],"title":"Automation","description":"How much of the resolution SuperIT can automate."},"AutomationBreakdownItem":{"properties":{"automation":{"type":"string","title":"Automation"},"ticketCount":{"type":"integer","title":"Ticketcount"},"hoursSavable":{"type":"number","title":"Hourssavable"},"percentOfSavable":{"type":"number","title":"Percentofsavable"}},"type":"object","required":["automation","ticketCount","hoursSavable","percentOfSavable"],"title":"AutomationBreakdownItem","description":"Hours savable grouped by Automation ('workflow', 'autonomous', ...)."},"AutonomyPreset":{"type":"string","enum":["none","balanced","full","custom"],"title":"AutonomyPreset","description":"Server-owned autonomy presets.\n\n``CUSTOM`` is the state after any individual field edit; it cannot be\napplied via the preset endpoint (only reached through PATCH)."},"AutonomyTier":{"type":"string","enum":["triage","investigate","resolve"],"title":"AutonomyTier","description":"The subset of tiers a team can enable via level-zero autonomy config.\n\n``knowledge`` is deliberately absent: it is not independently switchable.\nModelling the subset as its own request enum keeps the published schema\nhonest — unknown tiers are rejected by schema validation instead of being\ndocumented as free-form strings and then refused at runtime."},"AutotaskInsightRegisterResult":{"properties":{"ok":{"type":"boolean","title":"Ok"},"insight":{"anyOf":[{"$ref":"#/components/schemas/AutotaskInsightStatus"},{"type":"null"}]},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["ok"],"title":"AutotaskInsightRegisterResult","description":"A 200 either way: an Autotask refusal is the answer the admin needs\nto see verbatim, not a failure of this endpoint."},"AutotaskInsightStatus":{"properties":{"registered":{"type":"boolean","title":"Registered"},"insightId":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Insightid"},"referenceUrl":{"type":"string","title":"Referenceurl"}},"type":"object","required":["registered","insightId","referenceUrl"],"title":"AutotaskInsightStatus"},"AutotaskPsaFields":{"properties":{"psaType":{"type":"string","const":"autotask","title":"Psatype","default":"autotask"},"queueName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Queuename"},"extra":{"additionalProperties":{"type":"string"},"type":"object","title":"Extra"}},"type":"object","title":"AutotaskPsaFields","description":"Autotask classification + leftover display fields."},"AutotaskQueueResponse":{"properties":{"key":{"type":"string","title":"Key"},"autotaskId":{"type":"integer","title":"Autotaskid"},"name":{"type":"string","title":"Name"},"isActive":{"type":"boolean","title":"Isactive"},"isSystem":{"type":"boolean","title":"Issystem"},"visible":{"type":"boolean","title":"Visible"}},"type":"object","required":["key","autotaskId","name","isActive","isSystem","visible"],"title":"AutotaskQueueResponse","description":"An Autotask queue and its visibility signals."},"AutotaskRefResponse":{"properties":{"key":{"type":"string","title":"Key"},"autotaskId":{"type":"integer","title":"Autotaskid"},"name":{"type":"string","title":"Name"},"isActive":{"type":"boolean","title":"Isactive"}},"type":"object","required":["key","autotaskId","name","isActive"],"title":"AutotaskRefResponse","description":"The common Autotask reference row."},"AutotaskTicketCategoryResponse":{"properties":{"key":{"type":"string","title":"Key"},"autotaskId":{"type":"integer","title":"Autotaskid"},"name":{"type":"string","title":"Name"},"nickname":{"type":"string","title":"Nickname"},"isActive":{"type":"boolean","title":"Isactive"},"isApiOnly":{"type":"boolean","title":"Isapionly"},"isGlobalDefault":{"type":"boolean","title":"Isglobaldefault"}},"type":"object","required":["key","autotaskId","name","nickname","isActive","isApiOnly","isGlobalDefault"],"title":"AutotaskTicketCategoryResponse","description":"An Autotask ticket category and its API flags."},"AvailableUserResponse":{"properties":{"id":{"type":"integer","title":"Id"},"email":{"type":"string","title":"Email"},"displayName":{"type":"string","title":"Displayname"}},"type":"object","required":["id","email","displayName"],"title":"AvailableUserResponse","description":"A team member available for M365 linking."},"BillingCycleInvoiceResponse":{"properties":{"status":{"type":"string","enum":["draft","open","paid","uncollectible","void"],"title":"Status"},"totalCents":{"type":"integer","title":"Totalcents"},"currency":{"type":"string","title":"Currency"}},"type":"object","required":["status","totalCents","currency"],"title":"BillingCycleInvoiceResponse","description":"A cycle's Stripe invoice as the plan card shows it for a past cycle.\n\n``total_cents`` is the invoice total in the currency's smallest unit, not the\namount paid, so a trial invoice reads zero."},"BillingCycleResponse":{"properties":{"cycleKey":{"type":"string","title":"Cyclekey"},"periodStart":{"type":"string","format":"date-time","title":"Periodstart"},"periodEnd":{"type":"string","format":"date-time","title":"Periodend"},"isCurrent":{"type":"boolean","title":"Iscurrent"},"cycleSource":{"type":"string","enum":["stripe","calendar"],"title":"Cyclesource"},"invoice":{"anyOf":[{"$ref":"#/components/schemas/BillingCycleInvoiceResponse"},{"type":"null"}]},"pricing":{"type":"string","enum":["per_flow","credits"],"title":"Pricing","readOnly":true}},"type":"object","required":["cycleKey","periodStart","periodEnd","isCurrent","cycleSource","pricing"],"title":"BillingCycleResponse","description":"One billing cycle for the cycle-selector — current or historical.\n\n``cycle_key`` is the period's own start instant as a UTC ISO-8601 string,\ncomputed identically whether the period is currently live or already\ninvoiced — the same period keeps the same key across its current ->\nhistorical lifetime (see design doc, \"cycleKey identity and dedup\")."},"BillingStatus":{"type":"string","enum":["pending_payment","free","trialing","active","past_due","canceled"],"title":"BillingStatus"},"BillingStatusResponse":{"properties":{"billingStatus":{"$ref":"#/components/schemas/BillingStatus"},"accessLevel":{"$ref":"#/components/schemas/AccessLevel"},"stripeConfigured":{"type":"boolean","title":"Stripeconfigured"},"hasSubscription":{"type":"boolean","title":"Hassubscription"},"portalAvailable":{"type":"boolean","title":"Portalavailable"},"cancellationAvailable":{"type":"boolean","title":"Cancellationavailable","default":false},"checkoutAvailable":{"type":"boolean","title":"Checkoutavailable","description":"False while checkout would refuse a live subscription."},"stripeSubscriptionStatus":{"type":"string","title":"Stripesubscriptionstatus"},"trialEnd":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Trialend","description":"Stripe's current trial end, updated by subscription reconciliation."},"checkoutAgreement":{"anyOf":[{"$ref":"#/components/schemas/CheckoutAgreement"},{"type":"null"}]},"topupPaymentLinkUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topuppaymentlinkurl","description":"Stripe Payment Link for buying credit top-ups; null when top-ups aren't configured."}},"type":"object","required":["billingStatus","accessLevel","stripeConfigured","hasSubscription","portalAvailable","checkoutAvailable","stripeSubscriptionStatus"],"title":"BillingStatusResponse","description":"Team billing status shown in the settings UI."},"BillingSubscriptionResponse":{"properties":{"planName":{"type":"string","title":"Planname"},"amountCents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Amountcents"},"currency":{"type":"string","title":"Currency"},"interval":{"type":"string","title":"Interval"},"currentPeriodEnd":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Currentperiodend"},"cancelAtPeriodEnd":{"type":"boolean","title":"Cancelatperiodend"},"cancelAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Cancelat"},"trialEnd":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Trialend"},"billingEmail":{"type":"string","title":"Billingemail"},"paymentMethodBrand":{"type":"string","title":"Paymentmethodbrand"},"paymentMethodLast4":{"type":"string","title":"Paymentmethodlast4"},"includedSeats":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Includedseats"},"extraSeatPriceCents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Extraseatpricecents"},"includedUsageDollars":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Includedusagedollars"}},"type":"object","required":["planName","amountCents","currency","interval","currentPeriodEnd","cancelAtPeriodEnd","cancelAt","trialEnd","billingEmail","paymentMethodBrand","paymentMethodLast4","includedSeats","extraSeatPriceCents","includedUsageDollars"],"title":"BillingSubscriptionResponse","description":"Live Stripe subscription detail shown in the settings UI.\n\nFetched from Stripe on demand (not persisted) — plan, renewal, customer\nand payment-method fields default to empty strings when Stripe omits them\n(e.g. non-card payment methods carry no brand/last4)."},"BillingUsageResponse":{"properties":{"cycleKey":{"type":"string","title":"Cyclekey"},"periodStart":{"type":"string","format":"date-time","title":"Periodstart"},"periodEnd":{"type":"string","format":"date-time","title":"Periodend"},"includedUsageDollars":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Includedusagedollars"},"totalCostCents":{"type":"integer","title":"Totalcostcents"},"categories":{"items":{"$ref":"#/components/schemas/UsageCategoryResponse"},"type":"array","title":"Categories"}},"type":"object","required":["cycleKey","periodStart","periodEnd","includedUsageDollars","totalCostCents","categories"],"title":"BillingUsageResponse","description":"Total-usage card detail for one billing cycle.\n\n``included_usage_dollars`` is ``None`` for a calendar-fallback cycle (no real\nsubscription, nothing to compare against) — categories are still real\ncounts either way, since usage happens regardless of subscription state.\nCosts and ``included_usage_dollars`` share the plan's currency (see\n``billing.pricing``), so no currency field is carried."},"BoardResponse":{"properties":{"key":{"type":"string","title":"Key"},"connectwiseId":{"type":"integer","title":"Connectwiseid"},"name":{"type":"string","title":"Name"},"inactiveFlag":{"type":"boolean","title":"Inactiveflag"},"projectFlag":{"type":"boolean","title":"Projectflag"}},"type":"object","required":["key","connectwiseId","name","inactiveFlag","projectFlag"],"title":"BoardResponse"},"Body_upload_attachments_api_comms__team_key__conversations__chat_key__attachments_post":{"properties":{"files":{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array","title":"Files"}},"type":"object","required":["files"],"title":"Body_upload_attachments_api_comms__team_key__conversations__chat_key__attachments_post"},"BonusCelebrationLookupResponse":{"properties":{"celebration":{"anyOf":[{"$ref":"#/components/schemas/BonusCelebrationResponse"},{"type":"null"}],"description":"The grant this admin has yet to be congratulated on, if any."}},"type":"object","required":["celebration"],"title":"BonusCelebrationLookupResponse"},"BonusCelebrationResponse":{"properties":{"usdCents":{"type":"integer","title":"Usdcents"},"credits":{"type":"integer","title":"Credits"},"expiresAt":{"type":"string","format":"date-time","title":"Expiresat"}},"type":"object","required":["usdCents","credits","expiresAt"],"title":"BonusCelebrationResponse","description":"The sign-up offer grant a user has yet to be congratulated on."},"BulkArticleActionResponse":{"properties":{"count":{"type":"integer","title":"Count"}},"type":"object","required":["count"],"title":"BulkArticleActionResponse","description":"Result of a bulk article action."},"BulkArticleKeysBody":{"properties":{"articleKeys":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Articlekeys"}},"additionalProperties":false,"type":"object","required":["articleKeys"],"title":"BulkArticleKeysBody","description":"Request body for a bulk article action scoped by key."},"BulkArticleStatusBody":{"properties":{"articleKeys":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Articlekeys"},"isActive":{"type":"boolean","title":"Isactive"}},"additionalProperties":false,"type":"object","required":["articleKeys","isActive"],"title":"BulkArticleStatusBody","description":"Request body for bulk-setting article active status."},"BulkChangeRoleUserActionRequest":{"properties":{"userKeys":{"items":{"type":"string","minLength":1,"pattern":"^[^\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x9F]*$"},"type":"array","maxItems":500,"minItems":1,"title":"Userkeys"},"action":{"type":"string","const":"change_role","title":"Action"},"role":{"$ref":"#/components/schemas/MembershipRole"}},"additionalProperties":false,"type":"object","required":["userKeys","action","role"],"title":"BulkChangeRoleUserActionRequest"},"BulkDeleteDevicesRequest":{"properties":{"deviceKeys":{"items":{"type":"string","minLength":1,"pattern":"^[^\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x9F]*$"},"type":"array","maxItems":200,"minItems":1,"title":"Devicekeys"}},"additionalProperties":false,"type":"object","required":["deviceKeys"],"title":"BulkDeleteDevicesRequest","description":"Device keys selected for removal on the device index page.\n\nCapped at exactly one page-select worth of devices — see\n``BULK_DELETE_MAX_DEVICES``."},"BulkDeleteDevicesResponse":{"properties":{"deleted":{"items":{"type":"string"},"type":"array","title":"Deleted"},"notFound":{"items":{"type":"string"},"type":"array","title":"Notfound"}},"type":"object","required":["deleted","notFound"],"title":"BulkDeleteDevicesResponse","description":"Per-key outcome of a bulk device removal.\n\nA stale selection (device already removed, or removed by someone else\nbetween render and submit) lands in ``not_found`` rather than failing the\nwhole batch — the same collapse ``soft_delete_device`` already applies to\nunknown key / wrong team / already-deleted.\n\nBoth fields are required rather than defaulted: the server always sends\nboth lists, and a ``default_factory`` here would surface them as optional\nin the generated TypeScript client, pushing needless null-handling onto\nevery caller."},"BulkPlainUserActionRequest":{"properties":{"userKeys":{"items":{"type":"string","minLength":1,"pattern":"^[^\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x9F]*$"},"type":"array","maxItems":500,"minItems":1,"title":"Userkeys"},"action":{"type":"string","enum":["export_users","export_invite_links","link_m365","link_psa","delete","password_reset","send_invite"],"title":"Action"}},"additionalProperties":false,"type":"object","required":["userKeys","action"],"title":"BulkPlainUserActionRequest"},"BulkTagUserActionRequest":{"properties":{"userKeys":{"items":{"type":"string","minLength":1,"pattern":"^[^\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x9F]*$"},"type":"array","maxItems":500,"minItems":1,"title":"Userkeys"},"action":{"type":"string","enum":["add_tags","remove_tags"],"title":"Action"},"tags":{"items":{"type":"string","minLength":9,"pattern":"^superit:[a-z0-9][a-z0-9_-]*$"},"type":"array","minItems":1,"title":"Tags"}},"additionalProperties":false,"type":"object","required":["userKeys","action","tags"],"title":"BulkTagUserActionRequest"},"BulkUserAction":{"type":"string","enum":["export_users","export_invite_links","link_m365","link_psa","delete","password_reset","send_invite","add_tags","remove_tags","psa_import","change_role"],"title":"BulkUserAction","description":"Actions that can run as a bulk job against selected users."},"BulkUserJobListResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/BulkUserJobStatus"},"type":"array","title":"Results"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["results","count"],"title":"BulkUserJobListResponse","description":"List unfinished bulk jobs for the acting admin."},"BulkUserJobResponse":{"properties":{"jobKey":{"type":"string","title":"Jobkey"}},"type":"object","required":["jobKey"],"title":"BulkUserJobResponse","description":"Response for bulk-action create — only returns the job key."},"BulkUserJobStatus":{"properties":{"jobKey":{"type":"string","title":"Jobkey"},"action":{"$ref":"#/components/schemas/BulkUserAction"},"status":{"type":"string","title":"Status"},"totalItems":{"type":"integer","title":"Totalitems"},"processedItems":{"type":"integer","title":"Processeditems"},"successCount":{"type":"integer","title":"Successcount"},"skipCount":{"type":"integer","title":"Skipcount"},"errorCount":{"type":"integer","title":"Errorcount"},"progressPercent":{"type":"integer","title":"Progresspercent"},"isFinished":{"type":"boolean","title":"Isfinished"},"errorMessage":{"type":"string","title":"Errormessage"}},"type":"object","required":["jobKey","action","status","totalItems","processedItems","successCount","skipCount","errorCount","progressPercent","isFinished","errorMessage"],"title":"BulkUserJobStatus","description":"Full status payload for GET /identity/users/{team_key}/bulk-jobs/{job_key}."},"CancelResponse":{"properties":{"cancelled":{"type":"boolean","title":"Cancelled"},"message":{"type":"string","title":"Message"}},"type":"object","required":["cancelled","message"],"title":"CancelResponse"},"CapabilityGap":{"properties":{"description":{"type":"string","title":"Description","description":"What capability is missing, e.g. 'Direct M365 password reset via Graph API'"},"gapType":{"$ref":"#/components/schemas/GapType","description":"Type of gap"},"impact":{"$ref":"#/components/schemas/GapImpact","description":"How much this gap affects the autonomy verdict"},"effort":{"$ref":"#/components/schemas/GapEffort","description":"Estimated effort to implement"}},"type":"object","required":["description","gapType","impact","effort"],"title":"CapabilityGap","description":"A specific capability SuperIT lacks that prevented a higher autonomy verdict."},"CapabilityRow":{"properties":{"capability":{"type":"string","title":"Capability"},"label":{"type":"string","title":"Label"},"state":{"type":"string","title":"State"},"isRead":{"type":"boolean","title":"Isread"},"isAdvisory":{"type":"boolean","title":"Isadvisory"},"permissions":{"items":{"type":"string"},"type":"array","title":"Permissions"},"lastOkAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Lastokat"},"lastFailAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Lastfailat"},"lastStatusCode":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Laststatuscode"},"lastError":{"type":"string","title":"Lasterror","default":""}},"type":"object","required":["capability","label","state","isRead","isAdvisory","permissions"],"title":"CapabilityRow"},"CapabilityVerdict":{"type":"string","enum":["fully_autonomous","mostly_autonomous","assisted_resolution","triage_and_discovery","human_required"],"title":"CapabilityVerdict","description":"Assessment of SuperIT's ability to handle a ticket."},"CaptureRef":{"properties":{"capture_key":{"$ref":"#/components/schemas/ScopeKey"},"path":{"$ref":"#/components/schemas/JsonPointer","default":""}},"additionalProperties":false,"type":"object","required":["capture_key"],"title":"CaptureRef"},"CardChartSpec":{"properties":{"type":{"$ref":"#/components/schemas/CardKind"},"columns":{"items":{"$ref":"#/components/schemas/CardColumn"},"type":"array","minItems":1,"title":"Columns"},"xKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Xkey"},"series":{"anyOf":[{"items":{"$ref":"#/components/schemas/CardColumn"},"type":"array"},{"type":"null"}],"title":"Series"}},"type":"object","required":["type","columns"],"title":"CardChartSpec","description":"Pinned render contract: refresh rows must contain every column key."},"CardColumn":{"properties":{"key":{"type":"string","title":"Key"},"label":{"type":"string","title":"Label"},"format":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Format"}},"type":"object","required":["key","label"],"title":"CardColumn"},"CardDetail":{"properties":{"key":{"type":"string","title":"Key"},"slug":{"type":"string","title":"Slug"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"kind":{"$ref":"#/components/schemas/CardKind"},"prompt":{"type":"string","title":"Prompt"},"sql":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sql"},"spec":{"anyOf":[{"$ref":"#/components/schemas/CardChartSpec"},{"type":"null"}]},"refreshIntervalHours":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Refreshintervalhours"},"nextRefreshAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Nextrefreshat"},"lastRefreshedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Lastrefreshedat"},"latestStatus":{"anyOf":[{"$ref":"#/components/schemas/CardSnapshotStatus"},{"type":"null"}]},"snapshot":{"anyOf":[{"$ref":"#/components/schemas/CardSnapshotDetail"},{"type":"null"}]}},"type":"object","required":["key","slug","title","description","kind","prompt","sql","spec","refreshIntervalHours","nextRefreshAt","lastRefreshedAt","latestStatus","snapshot"],"title":"CardDetail"},"CardKind":{"type":"string","enum":["table","bar","summary","actions","opportunities"],"title":"CardKind"},"CardListItem":{"properties":{"key":{"type":"string","title":"Key"},"slug":{"type":"string","title":"Slug"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"kind":{"$ref":"#/components/schemas/CardKind"},"refreshIntervalHours":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Refreshintervalhours"},"lastRefreshedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Lastrefreshedat"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"}},"type":"object","required":["key","slug","title","description","kind","refreshIntervalHours","lastRefreshedAt","createdAt"],"title":"CardListItem"},"CardSnapshotDetail":{"properties":{"key":{"type":"string","title":"Key"},"status":{"$ref":"#/components/schemas/CardSnapshotStatus"},"payload":{"anyOf":[{"additionalProperties":true,"type":"object"},{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Payload"},"sqlUsed":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sqlused"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"}},"type":"object","required":["key","status","payload","sqlUsed","error","createdAt"],"title":"CardSnapshotDetail"},"CardSnapshotStatus":{"type":"string","enum":["completed","failed"],"title":"CardSnapshotStatus"},"CardUpdateBody":{"properties":{"title":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"refreshIntervalHours":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Refreshintervalhours"}},"type":"object","title":"CardUpdateBody","description":"Partial update; absent fields are unchanged.\n\n`refresh_interval_hours` is tri-state: absent (unchanged), an int (set,\nclamped to min 1), or explicit `None` (clears schedule) — distinguished\nvia `model_fields_set`."},"CatalogueHealth":{"properties":{"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"syncedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Syncedat"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"companies":{"type":"integer","title":"Companies"},"activeLinks":{"type":"integer","title":"Activelinks"}},"type":"object","required":["status","syncedAt","error","companies","activeLinks"],"title":"CatalogueHealth"},"Category":{"type":"string","enum":["access","network","performance","printer","file","email","hardware","software","security","service_request","other"],"title":"Category","description":"Primary category for ticket."},"ChangeRoleRequest":{"properties":{"role":{"$ref":"#/components/schemas/MembershipRole"}},"type":"object","required":["role"],"title":"ChangeRoleRequest","description":"Change role request."},"ChatAttachmentUrls":{"properties":{"url":{"type":"string","title":"Url"},"thumbUrl":{"type":"string","title":"Thumburl"},"width":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Width"},"height":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Height"},"hasThumbnail":{"type":"boolean","title":"Hasthumbnail"}},"type":"object","required":["url","thumbUrl","width","height","hasThumbnail"],"title":"ChatAttachmentUrls"},"ChatParticipant":{"properties":{"membershipKey":{"type":"string","title":"Membershipkey"},"name":{"type":"string","title":"Name"},"email":{"type":"string","title":"Email"},"role":{"type":"string","title":"Role"},"joinedAt":{"type":"string","format":"date-time","title":"Joinedat"}},"type":"object","required":["membershipKey","name","email","role","joinedAt"],"title":"ChatParticipant","description":"A participant in a chat, derived from message authorship."},"CheckoutAgreement":{"properties":{"version":{"type":"string","title":"Version"},"agreementRevision":{"type":"string","title":"Agreementrevision"},"documentSha256":{"type":"string","title":"Documentsha256"},"url":{"type":"string","title":"Url"},"name":{"type":"string","title":"Name"},"acceptanceText":{"type":"string","title":"Acceptancetext"},"screenTitle":{"type":"string","title":"Screentitle"},"screenDescription":{"type":"string","title":"Screendescription"},"buttonLabel":{"type":"string","title":"Buttonlabel"}},"type":"object","required":["version","agreementRevision","documentSha256","url","name","acceptanceText","screenTitle","screenDescription","buttonLabel"],"title":"CheckoutAgreement"},"CheckoutAgreementAcceptance":{"properties":{"accepted":{"type":"boolean","title":"Accepted"},"version":{"type":"string","maxLength":64,"minLength":1,"title":"Version"}},"type":"object","required":["accepted","version"],"title":"CheckoutAgreementAcceptance"},"CheckoutReturnTo":{"type":"string","enum":["manage_plan","onboarding"],"title":"CheckoutReturnTo"},"CheckoutSessionRequest":{"properties":{"agreementAcceptance":{"anyOf":[{"$ref":"#/components/schemas/CheckoutAgreementAcceptance"},{"type":"null"}]},"planKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plankey"},"returnTo":{"$ref":"#/components/schemas/CheckoutReturnTo","default":"manage_plan"}},"type":"object","title":"CheckoutSessionRequest"},"CheckoutSessionResponse":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"CheckoutSessionResponse","description":"Stripe Checkout session redirect target."},"CheckoutSyncRequest":{"properties":{"sessionId":{"type":"string","maxLength":255,"minLength":4,"pattern":"^cs_[A-Za-z0-9_-]+$","title":"Sessionid","description":"Stripe Checkout Session id from the success URL (cs_…)"}},"type":"object","required":["sessionId"],"title":"CheckoutSyncRequest","description":"Body for the checkout success-URL sync.\n\nCarries the Stripe Checkout ``session_id`` handed back on the success URL\nso the server can retrieve it and reconcile billing state — a backstop for\na missed ``checkout.session.completed`` webhook."},"ClientWebSocketEventType":{"type":"string","enum":["send_message","select_session","get_onboarding_state","stop_sparky","submit_feedback","approval_action","approval_batch_action","set_auto_approve"],"title":"ClientWebSocketEventType","description":"Event types sent from client to server."},"CmdletPolicyCreateBody":{"properties":{"group":{"anyOf":[{"type":"string","enum":["powershell_helpers_formatting","networking_connectivity","security_device_trust","locale_time_power","system_hardware","processes_services_event_logs","files_registry","identity_sessions_policy","printing","storage","software_updates","scheduled_tasks"]},{"type":"null"}],"title":"Group"},"policyType":{"type":"string","const":"cmdlet","title":"Policytype","default":"cmdlet"},"decision":{"type":"string","enum":["allow","deny","needs_approval"],"title":"Decision"},"cmdletName":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[^\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x9F]*$","title":"Cmdletname"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["decision","cmdletName"],"title":"CmdletPolicyCreateBody","description":"Create a team cmdlet policy."},"CommandApprovalGetInput":{"properties":{"approval_key":{"type":"string","title":"Approval Key"}},"type":"object","required":["approval_key"],"title":"CommandApprovalGetInput"},"CommandApprovalGetSchema":{"properties":{"tool":{"type":"string","const":"command_approval_get","title":"Tool","default":"command_approval_get"},"description":{"type":"string","title":"Description","default":"Get the details of a command approval by key"},"input":{"anyOf":[{"$ref":"#/components/schemas/CommandApprovalGetInput"},{"type":"null"}]}},"type":"object","title":"CommandApprovalGetSchema"},"CommandExecutionActor":{"properties":{"membershipId":{"type":"integer","title":"Membershipid"},"membershipKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Membershipkey"},"name":{"type":"string","title":"Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}},"type":"object","required":["membershipId","name"],"title":"CommandExecutionActor","description":"Resolved actor for a command row / actor dropdown entry.\n\n``membership_id`` is always the raw requesting id (the filter value);\n``membership_key`` and ``email`` are ``None`` and ``name`` is\n\"Unknown user\" when the membership no longer resolves."},"CommandExecutionDetail":{"properties":{"key":{"type":"string","title":"Key"},"fullCommand":{"type":"string","title":"Fullcommand"},"status":{"$ref":"#/components/schemas/CommandExecutionStatus"},"risk":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Risk"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"elevated":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Elevated"},"runAsUser":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Runasuser"},"exitCode":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Exitcode"},"durationMs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Durationms"},"actor":{"$ref":"#/components/schemas/CommandExecutionActor"},"chatKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chatkey"},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Createdat"},"dispatchedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dispatchedat"},"completedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completedat"},"stdout":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stdout"},"stderr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stderr"},"outputTruncated":{"type":"boolean","title":"Outputtruncated","default":false},"outputSizes":{"anyOf":[{"$ref":"#/components/schemas/OutputSizes"},{"type":"null"}]},"deniedReason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Deniedreason"},"commandSegments":{"anyOf":[{"items":{"$ref":"#/components/schemas/CommandSegment"},"type":"array"},{"type":"null"}],"title":"Commandsegments"}},"type":"object","required":["key","fullCommand","status","actor","createdAt","dispatchedAt","completedAt"],"title":"CommandExecutionDetail","description":"One command audit row at the API boundary."},"CommandExecutionStatus":{"type":"string","enum":["approval_pending","approval_declined","denied","queued","dispatched","device_unreachable","completed","failed","timeout","agent_error"],"title":"CommandExecutionStatus"},"CommandHandle":{"properties":{"handle":{"type":"string","title":"Handle","description":"Durable command handle; pass to check_command to poll progress. The device-offline sentinel means no execution exists; do not poll."},"status":{"type":"string","title":"Status","description":"One of: queued, running, device_unreachable, waiting_for_approval, completed, failed, timeout, denied, offline. Offline means no command was started; reconnect before retrying."},"detail":{"type":"string","title":"Detail","description":"Guidance about the current state.","default":""},"output":{"anyOf":[{"$ref":"#/components/schemas/srv__mesh__sparky__contracts__command__CommandOutput"},{"type":"null"}],"description":"Final command output; present only in terminal states."}},"type":"object","required":["handle","status"],"title":"CommandHandle","description":"Durable handle for a device command. run_command and check_command both\nreturn this shape; ``output`` is set only once the command is terminal."},"CommandSegment":{"properties":{"text":{"type":"string","title":"Text"},"verb":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verb"},"stepKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stepkey"},"elevated":{"type":"boolean","title":"Elevated","default":false}},"type":"object","required":["text"],"title":"CommandSegment","description":"One top-level statement of a command, for display (SUP-942).\n\n``verb`` is the leading cmdlet, and None when the statement is not a plain\ncommand — an ``if``/``foreach`` block collapses to one segment, and bolding\na cmdlet from inside the block would mislabel the line. The email is the\nonly surface that reads it; the web surfaces retokenize ``text`` with\nPrism.\n\nLives here, next to the audit vocabulary, because the mesh AST parse is\nwhat produces it — ``srv.comms.types.approval`` imports it for the approval\nresponse so both surfaces generate the one OpenAPI model."},"CompanyStatusResponse":{"properties":{"name":{"type":"string","title":"Name"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["name","count"],"title":"CompanyStatusResponse"},"CompanyTypeResponse":{"properties":{"name":{"type":"string","title":"Name"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["name","count"],"title":"CompanyTypeResponse","description":"One distinct CW company ``types`` name and how many companies carry it."},"CompleteSetupItem":{"properties":{"status":{"type":"string","const":"complete","title":"Status","default":"complete"}},"additionalProperties":false,"type":"object","title":"CompleteSetupItem","description":"A setup check whose outcome is satisfied."},"Complexity":{"type":"string","enum":["simple","moderate","complex"],"title":"Complexity","description":"Ticket complexity assessment."},"Confidence":{"type":"string","enum":["low","medium","high"],"title":"Confidence","description":"Confidence in the resolution + automation assessment."},"ConnectEntraBody":{"properties":{"tenantId":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$","title":"Tenantid"},"objectId":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$","title":"Objectid"}},"type":"object","required":["tenantId","objectId"],"title":"ConnectEntraBody","description":"Request body for binding an Entra application to a service account."},"ConnectWiseClassificationsResponse":{"properties":{"types":{"items":{"$ref":"#/components/schemas/ConnectWiseTypeConfigResponse"},"type":"array","title":"Types"},"subtypes":{"items":{"$ref":"#/components/schemas/ConnectWiseSubTypeConfigResponse"},"type":"array","title":"Subtypes"},"items":{"items":{"$ref":"#/components/schemas/ConnectWiseItemConfigResponse"},"type":"array","title":"Items"}},"type":"object","required":["types","subtypes","items"],"title":"ConnectWiseClassificationsResponse"},"ConnectWiseItemConfigResponse":{"properties":{"key":{"type":"string","title":"Key"},"parents":{"items":{"$ref":"#/components/schemas/ConnectWiseItemParentResponse"},"type":"array","title":"Parents"},"connectwiseId":{"type":"integer","title":"Connectwiseid"},"connectwiseBoardId":{"type":"integer","title":"Connectwiseboardid"},"name":{"type":"string","title":"Name"},"inactiveFlag":{"type":"boolean","title":"Inactiveflag"},"llmInstructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Llminstructions"},"editable":{"type":"boolean","title":"Editable","default":true},"inactiveReason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Inactivereason"}},"type":"object","required":["key","parents","connectwiseId","connectwiseBoardId","name","inactiveFlag","llmInstructions"],"title":"ConnectWiseItemConfigResponse"},"ConnectWiseItemParentResponse":{"properties":{"connectwiseTypeId":{"type":"integer","title":"Connectwisetypeid"},"connectwiseSubtypeId":{"type":"integer","title":"Connectwisesubtypeid"}},"type":"object","required":["connectwiseTypeId","connectwiseSubtypeId"],"title":"ConnectWiseItemParentResponse","description":"One (type, subtype) pair an item may be filed under."},"ConnectWisePriorityConfigResponse":{"properties":{"key":{"type":"string","title":"Key"},"connectwiseId":{"type":"integer","title":"Connectwiseid"},"name":{"type":"string","title":"Name"},"sort":{"type":"integer","title":"Sort"},"defaultFlag":{"type":"boolean","title":"Defaultflag"},"llmInstructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Llminstructions"}},"type":"object","required":["key","connectwiseId","name","sort","defaultFlag","llmInstructions"],"title":"ConnectWisePriorityConfigResponse","description":"A CW priority, configurable for the AI like the classification levels.\n\nPriorities are flat and global to the connection — no board scope, no\nparent, and CW exposes no inactive flag — so this carries none of the\n`editable` / `inactiveReason` machinery the hierarchy rows need."},"ConnectWisePsaFields":{"properties":{"psaType":{"type":"string","const":"connectwise","title":"Psatype","default":"connectwise"},"boardName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Boardname"},"typeName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Typename"},"subtypeName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subtypename"},"itemName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Itemname"},"sourceName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sourcename"},"severity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Severity"},"impact":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Impact"},"extra":{"additionalProperties":{"type":"string"},"type":"object","title":"Extra"}},"type":"object","title":"ConnectWisePsaFields","description":"ConnectWise classification + leftover display fields."},"ConnectWiseSubTypeConfigResponse":{"properties":{"key":{"type":"string","title":"Key"},"connectwiseTypeIds":{"items":{"type":"integer"},"type":"array","title":"Connectwisetypeids"},"connectwiseId":{"type":"integer","title":"Connectwiseid"},"connectwiseBoardId":{"type":"integer","title":"Connectwiseboardid"},"name":{"type":"string","title":"Name"},"inactiveFlag":{"type":"boolean","title":"Inactiveflag"},"llmInstructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Llminstructions"},"editable":{"type":"boolean","title":"Editable","default":true},"inactiveReason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Inactivereason"}},"type":"object","required":["key","connectwiseTypeIds","connectwiseId","connectwiseBoardId","name","inactiveFlag","llmInstructions"],"title":"ConnectWiseSubTypeConfigResponse"},"ConnectWiseTypeConfigResponse":{"properties":{"key":{"type":"string","title":"Key"},"connectwiseId":{"type":"integer","title":"Connectwiseid"},"connectwiseBoardId":{"type":"integer","title":"Connectwiseboardid"},"name":{"type":"string","title":"Name"},"inactiveFlag":{"type":"boolean","title":"Inactiveflag"},"llmInstructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Llminstructions"},"editable":{"type":"boolean","title":"Editable","default":true},"inactiveReason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Inactivereason"}},"type":"object","required":["key","connectwiseId","connectwiseBoardId","name","inactiveFlag","llmInstructions"],"title":"ConnectWiseTypeConfigResponse"},"ConnectWiseWebhookBody":{"properties":{"Action":{"type":"string","minLength":1,"title":"Action"},"Type":{"type":"string","minLength":1,"title":"Type"},"ID":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"}},"additionalProperties":true,"type":"object","required":["Action","Type"],"title":"ConnectWiseWebhookBody","description":"ConnectWise Manage callback payload.\n\nCW posts PascalCase keys (Action, Type, ID). Extra vendor fields are\npreserved for audit storage via ``extra=\"allow\"``."},"ConnectionCreateRequest":{"properties":{"psaType":{"type":"string","enum":["halo","connectwise","accelo","autotask"],"title":"Psatype"},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"apiUrl":{"anyOf":[{"type":"string","maxLength":2083,"minLength":1,"format":"uri"},{"type":"null"}],"title":"Apiurl"},"isActive":{"type":"boolean","title":"Isactive","default":true},"syncIntervalMinutes":{"type":"integer","maximum":525600.0,"minimum":1.0,"title":"Syncintervalminutes","default":60},"ticketPollingEnabled":{"type":"boolean","title":"Ticketpollingenabled","default":true},"ticketPollingLookbackMinutes":{"type":"integer","maximum":525600.0,"minimum":1.0,"title":"Ticketpollinglookbackminutes","default":240},"clientId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clientid"},"clientSecret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clientsecret"},"tenantId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenantid"},"codebase":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Codebase"},"companyId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Companyid"},"publicKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Publickey"},"privateKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Privatekey"},"deployment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Deployment"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secret"},"impersonationResourceId":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Impersonationresourceid"}},"type":"object","required":["psaType","name"],"title":"ConnectionCreateRequest"},"ConnectionHealth":{"properties":{"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"},"psaType":{"type":"string","title":"Psatype"},"active":{"type":"boolean","title":"Active"},"primary":{"type":"boolean","title":"Primary"},"referenceData":{"$ref":"#/components/schemas/ReferenceDataHealth"},"catalogue":{"$ref":"#/components/schemas/CatalogueHealth"},"ticketPoll":{"$ref":"#/components/schemas/TicketPollHealth"},"links":{"items":{"$ref":"#/components/schemas/LinkHealth"},"type":"array","title":"Links"}},"type":"object","required":["key","name","psaType","active","primary","referenceData","catalogue","ticketPoll","links"],"title":"ConnectionHealth"},"ConnectionKbArticleItem":{"properties":{"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"articleType":{"type":"string","title":"Articletype"},"tagString":{"type":"string","title":"Tagstring"},"connectionKey":{"type":"string","title":"Connectionkey"},"connectionName":{"type":"string","title":"Connectionname"},"remoteDateEdited":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Remotedateedited"},"grants":{"$ref":"#/components/schemas/KbArticleGrantSummary"}},"type":"object","required":["key","name","description","articleType","tagString","connectionKey","connectionName","remoteDateEdited","grants"],"title":"ConnectionKbArticleItem","description":"One imported article row in the connection's KB tab."},"ConnectionKbArticlePage":{"properties":{"results":{"items":{"$ref":"#/components/schemas/ConnectionKbArticleItem"},"type":"array","title":"Results"},"count":{"type":"integer","title":"Count"},"totalPages":{"type":"integer","title":"Totalpages"}},"type":"object","required":["results","count","totalPages"],"title":"ConnectionKbArticlePage","description":"Paginated imported articles for a connection."},"ConnectionReason":{"type":"string","enum":["steady","recently_connected","flapping","stream_disagreement","slowing","unreachable","never_seen"],"title":"ConnectionReason","description":"Why a device landed on its tier.\n\nUnstable collapses three different faults, so the badge shows the tier\nand the tooltip shows this."},"ConnectionTestRequest":{"properties":{"psaType":{"type":"string","enum":["halo","connectwise","accelo","autotask"],"title":"Psatype"},"apiUrl":{"anyOf":[{"type":"string","maxLength":2083,"minLength":1,"format":"uri"},{"type":"null"}],"title":"Apiurl"},"clientId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clientid"},"clientSecret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clientsecret"},"tenantId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenantid"},"codebase":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Codebase"},"companyId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Companyid"},"publicKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Publickey"},"privateKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Privatekey"},"deployment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Deployment"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secret"},"impersonationResourceId":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Impersonationresourceid"}},"type":"object","required":["psaType"],"title":"ConnectionTestRequest"},"ConnectionTestResult":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"}},"type":"object","required":["success","message"],"title":"ConnectionTestResult"},"ConnectionTier":{"type":"string","enum":["online","unstable","offline"],"title":"ConnectionTier","description":"How much the mesh trusts a device's reachability right now.\n\nDeliberately describes observed connection quality, not a tested\nprediction that a command will succeed — nothing here exercises the\nagent's command responder, so a claim of confidence would be unearned."},"ConnectionUpdateRequest":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Name"},"apiUrl":{"anyOf":[{"type":"string","maxLength":2083,"minLength":1,"format":"uri"},{"type":"null"}],"title":"Apiurl"},"isActive":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Isactive"},"syncIntervalMinutes":{"anyOf":[{"type":"integer","maximum":525600.0,"minimum":1.0},{"type":"null"}],"title":"Syncintervalminutes"},"ticketPollingEnabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ticketpollingenabled"},"ticketPollingLookbackMinutes":{"anyOf":[{"type":"integer","maximum":525600.0,"minimum":1.0},{"type":"null"}],"title":"Ticketpollinglookbackminutes"},"isPrimary":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Isprimary"},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config"},"llmInstructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Llminstructions"},"inboundRateLimit":{"anyOf":[{"type":"integer","maximum":10000.0,"minimum":0.0},{"type":"null"}],"title":"Inboundratelimit"},"inboundRateLimitMax":{"anyOf":[{"type":"integer","maximum":10000.0,"minimum":0.0},{"type":"null"}],"title":"Inboundratelimitmax"},"clientId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clientid"},"clientSecret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clientsecret"},"tenantId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenantid"},"codebase":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Codebase"},"companyId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Companyid"},"publicKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Publickey"},"privateKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Privatekey"},"deployment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Deployment"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secret"},"impersonationResourceId":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Impersonationresourceid"}},"additionalProperties":false,"type":"object","title":"ConnectionUpdateRequest"},"ConnectionsListResponse":{"properties":{"connections":{"items":{"$ref":"#/components/schemas/srv__identity__routes__connections__ConnectionResponse"},"type":"array","title":"Connections"}},"type":"object","required":["connections"],"title":"ConnectionsListResponse","description":"Response for connections list."},"ConsolidatedInsightDetail":{"properties":{"key":{"type":"string","title":"Key","description":"Insight key"},"insightType":{"type":"string","enum":["it_team","dev_team"],"title":"Insighttype","description":"Type of insight"},"category":{"type":"string","title":"Category","description":"Category (analysis category or gap_type)"},"title":{"type":"string","maxLength":255,"title":"Title","description":"Title"},"description":{"type":"string","title":"Description","description":"Detailed description"},"recommendedAction":{"type":"string","title":"Recommendedaction","description":"Recommended action"},"urgency":{"anyOf":[{"$ref":"#/components/schemas/InsightUrgency"},{"type":"null"}],"description":"Urgency (IT team)"},"priority":{"anyOf":[{"type":"string","enum":["P1","P2","P3","P4","P5"]},{"type":"null"}],"title":"Priority","description":"Priority (dev team)"},"confidence":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Confidence","description":"Confidence in recommendation"},"sourceTicketCount":{"type":"integer","title":"Sourceticketcount","description":"Number of source tickets"},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Createdat"},"status":{"$ref":"#/components/schemas/InsightStatus","description":"active/actioned/ignored","default":"active"},"statusChangedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Statuschangedat"},"sourceTickets":{"items":{"$ref":"#/components/schemas/SourceTicketDetail"},"type":"array","title":"Sourcetickets"},"related":{"items":{"$ref":"#/components/schemas/RelatedInsight"},"type":"array","title":"Related"}},"type":"object","required":["key","insightType","category","title","description","recommendedAction","sourceTicketCount"],"title":"ConsolidatedInsightDetail","description":"Insight with hydrated ticket details."},"ContinueDeviceLinkResponse":{"properties":{"continued":{"type":"boolean","title":"Continued"}},"type":"object","required":["continued"],"title":"ContinueDeviceLinkResponse"},"ContractConfigResponse":{"properties":{"key":{"type":"string","title":"Key"},"entityId":{"type":"string","title":"Entityid"},"name":{"type":"string","title":"Name"},"typeName":{"type":"string","title":"Typename"},"status":{"type":"string","title":"Status"},"companyName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Companyname"},"llmInstructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Llminstructions"},"aiDisabled":{"type":"boolean","title":"Aidisabled"}},"type":"object","required":["key","entityId","name","typeName","status","companyName","llmInstructions","aiDisabled"],"title":"ContractConfigResponse","description":"A synced contract (agreement) plus its admin annotations.\n\nVendor-neutral like ``/statuses`` — ``psa.contract`` holds ConnectWise\nagreements and Halo client contracts in one shape. ``company_name`` is\nresolved from ``psa_team`` because contracts belong to a client company,\nand a flat list of agreement names is unnavigable without it."},"ContractConfigUpdateRequest":{"properties":{"llmInstructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Llminstructions"},"aiDisabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Aidisabled"}},"type":"object","title":"ContractConfigUpdateRequest","description":"Partial update; explicit null clears ``llm_instructions``.\n\nSame ``model_fields_set`` contract as ``StatusUpdateRequest``: the\nshared editor's Clear button sends an explicit null, which must be\ndistinguishable from the field being omitted."},"Conversation":{"properties":{"key":{"type":"string","title":"Key"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"team":{"$ref":"#/components/schemas/ConversationTeam"},"participants":{"items":{"$ref":"#/components/schemas/ChatParticipant"},"type":"array","title":"Participants"},"lastMessageAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Lastmessageat"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"},"isArchived":{"type":"boolean","title":"Isarchived","default":false},"contextTokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contexttokens"},"contextWindow":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contextwindow"},"totalTokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Totaltokens"},"flow":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Flow"}},"type":"object","required":["key","team","participants","createdAt"],"title":"Conversation","description":"Conversation at API/service boundaries."},"ConversationListType":{"type":"string","enum":["chat","discovery"],"title":"ConversationListType","description":"List filter for conversation channel class.\n\nCHAT: all non-discovery channels (web, teams, psa_note).\nDISCOVERY: autonomous discovery runs only (kind=system chats)."},"ConversationStatsFilterOption":{"properties":{"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"}},"type":"object","required":["key","name"],"title":"ConversationStatsFilterOption","description":"Filter option for stats response."},"ConversationStatsResponse":{"properties":{"active_count":{"type":"integer","title":"Active Count"},"involve_me_count":{"type":"integer","title":"Involve Me Count"},"escalated_count":{"type":"integer","title":"Escalated Count"},"teams":{"items":{"$ref":"#/components/schemas/ConversationStatsFilterOption"},"type":"array","title":"Teams"},"users":{"items":{"$ref":"#/components/schemas/ConversationStatsFilterOption"},"type":"array","title":"Users"}},"type":"object","required":["active_count","involve_me_count","escalated_count","teams","users"],"title":"ConversationStatsResponse","description":"Stats and filter options for conversations."},"ConversationStatus":{"type":"string","enum":["active","archived","all"],"title":"ConversationStatus"},"ConversationTeam":{"properties":{"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"}},"type":"object","required":["key","name"],"title":"ConversationTeam","description":"Team info for conversation."},"ConversationsListResponse":{"properties":{"count":{"type":"integer","title":"Count"},"page":{"type":"integer","title":"Page"},"pageSize":{"type":"integer","title":"Pagesize"},"totalPages":{"type":"integer","title":"Totalpages"},"results":{"items":{"$ref":"#/components/schemas/Conversation"},"type":"array","title":"Results"}},"type":"object","required":["count","page","pageSize","totalPages","results"],"title":"ConversationsListResponse","description":"Response for conversations list with pagination.\n\nCarries `page`/`page_size`/`total_pages` like every other list response —\nwithout them the UI cannot tell there is a page 2 (SUP-805)."},"CpuBucket":{"properties":{"bucket":{"type":"string","format":"date-time","title":"Bucket"},"samples":{"type":"integer","title":"Samples"},"usageAvg":{"type":"number","title":"Usageavg"},"usageMax":{"type":"number","title":"Usagemax"},"usageMin":{"type":"number","title":"Usagemin"}},"type":"object","required":["bucket","samples","usageAvg","usageMax","usageMin"],"title":"CpuBucket"},"CreateActionBody":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"pattern":".*[A-Za-z0-9].*","title":"Name"},"description":{"type":"string","title":"Description","default":""},"runtime":{"$ref":"#/components/schemas/Runtime"},"draft":{"type":"string","title":"Draft","default":""},"authorisation":{"anyOf":[{"$ref":"#/components/schemas/AuthorizationMatrix"},{"type":"null"}]},"authorisationPolicyKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorisationpolicykey"},"credentialKeys":{"items":{"type":"string"},"type":"array","title":"Credentialkeys","default":[]},"inputsSchema":{"anyOf":[{"items":{"$ref":"#/components/schemas/InputField"},"type":"array"},{"type":"null"}],"title":"Inputsschema"},"approvalSchema":{"anyOf":[{"items":{"$ref":"#/components/schemas/InputField"},"type":"array"},{"type":"null"}],"title":"Approvalschema"},"allowedHosts":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowedhosts"},"executionTarget":{"$ref":"#/components/schemas/ExecutionTarget","default":"cloud_sandbox"},"meshDeviceSelector":{"anyOf":[{"type":"string","maxLength":255,"minLength":1,"pattern":"^[^\\x00-\\x1F\\x7F-\\x9F]*$"},{"type":"null"}],"title":"Meshdeviceselector"},"pollTimeoutSeconds":{"anyOf":[{"type":"integer","maximum":2147483647.0,"minimum":1.0},{"type":"null"}],"title":"Polltimeoutseconds"},"pollIntervalSeconds":{"type":"integer","maximum":2147483647.0,"minimum":1.0,"title":"Pollintervalseconds","default":30},"scriptTimeoutSeconds":{"anyOf":[{"type":"integer","maximum":3600.0,"minimum":1.0},{"type":"null"}],"title":"Scripttimeoutseconds"},"autoRun":{"type":"boolean","title":"Autorun","default":false}},"additionalProperties":false,"type":"object","required":["name","runtime"],"title":"CreateActionBody"},"CreateAuthorisationPolicyBody":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"pattern":"^[^\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x9F]*$","title":"Name"},"description":{"type":"string","title":"Description","default":""},"authorisation":{"$ref":"#/components/schemas/AuthorizationMatrix"}},"additionalProperties":false,"type":"object","required":["name","authorisation"],"title":"CreateAuthorisationPolicyBody","examples":[{"authorisation":{"rules":[{"approver":{"tag":"group","tags":["superit:admins"]},"requester":{"tag":"group","tags":["superit:staff"]}}]},"description":"","name":"Default approval"}]},"CreateCommandRuleRequest":{"properties":{"ruleType":{"type":"string","enum":["allow","block"],"title":"Ruletype"}},"type":"object","required":["ruleType"],"title":"CreateCommandRuleRequest","description":"Create command rule request."},"CreateCommandRuleResponse":{"properties":{"key":{"type":"string","title":"Key"},"ruleType":{"type":"string","title":"Ruletype"},"operatingSystem":{"type":"string","title":"Operatingsystem"},"pattern":{"type":"string","title":"Pattern"},"description":{"type":"string","title":"Description"},"alreadyExists":{"type":"boolean","title":"Alreadyexists","default":false}},"type":"object","required":["key","ruleType","operatingSystem","pattern","description"],"title":"CreateCommandRuleResponse","description":"Create command rule response."},"CreateCredentialBody":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"pattern":".*[A-Za-z0-9].*","title":"Name"},"credentialType":{"$ref":"#/components/schemas/CredentialType"},"fields":{"oneOf":[{"$ref":"#/components/schemas/OAuthAppFields"},{"$ref":"#/components/schemas/ApiKeyFields"}],"title":"Fields","discriminator":{"propertyName":"type","mapping":{"api_key":"#/components/schemas/ApiKeyFields","oauth_app":"#/components/schemas/OAuthAppFields"}}}},"additionalProperties":false,"type":"object","required":["name","credentialType","fields"],"title":"CreateCredentialBody"},"CreateInstallerKeyRequest":{"properties":{"max_uses":{"anyOf":[{"type":"integer","maximum":2147483647.0,"exclusiveMinimum":0.0},{"type":"null"}],"title":"Max Uses","description":"Maximum uses (optional)"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Key description"}},"type":"object","title":"CreateInstallerKeyRequest","description":"Request to create installer key."},"CreateInstallerKeyResponse":{"properties":{"key":{"type":"string","title":"Key"},"key_id":{"type":"string","title":"Key Id"}},"type":"object","required":["key","key_id"],"title":"CreateInstallerKeyResponse","description":"Response with installer key JWT."},"CreateMemberLinkRequest":{"properties":{"membershipKey":{"type":"string","title":"Membershipkey"},"externalUserKey":{"type":"string","title":"Externaluserkey"}},"type":"object","required":["membershipKey","externalUserKey"],"title":"CreateMemberLinkRequest","description":"Request to create a member link."},"CreateServiceAccountBody":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"role":{"type":"string","pattern":"^(admin|engineer)$","title":"Role"},"allowedScopes":{"items":{"type":"string"},"type":"array","title":"Allowedscopes"},"expiresInDays":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Expiresindays","default":90}},"type":"object","required":["name","role"],"title":"CreateServiceAccountBody","description":"Request body for creating a service account."},"CreateTeamMemberRequest":{"properties":{"email":{"type":"string","title":"Email"},"firstName":{"type":"string","title":"Firstname"},"lastName":{"type":"string","title":"Lastname"},"role":{"$ref":"#/components/schemas/MembershipRole","default":"user"}},"type":"object","required":["email","firstName","lastName"],"title":"CreateTeamMemberRequest","description":"Create a new team member (pre-create account + membership)."},"CreateWorkspaceChatRequest":{"properties":{"source":{"type":"string","enum":["querystring","direct"],"title":"Source","default":"direct"},"ticket":{"anyOf":[{"$ref":"#/components/schemas/TicketContextInput"},{"type":"null"}]},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"onboarding":{"type":"boolean","title":"Onboarding","default":false},"step":{"anyOf":[{"$ref":"#/components/schemas/OnboardingStepKey"},{"type":"null"}]}},"type":"object","title":"CreateWorkspaceChatRequest","description":"Request body for creating a new workspace chat."},"CreateWorkspaceChatResponse":{"properties":{"chat_key":{"type":"string","title":"Chat Key"},"ticket_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticket Key"},"resumed":{"type":"boolean","title":"Resumed","default":false}},"type":"object","required":["chat_key"],"title":"CreateWorkspaceChatResponse","description":"Response for successful chat creation."},"CredentialDetail":{"properties":{"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"},"credentialType":{"$ref":"#/components/schemas/CredentialType"},"fields":{"oneOf":[{"$ref":"#/components/schemas/OAuthAppFields"},{"$ref":"#/components/schemas/ApiKeyFields"}],"title":"Fields","discriminator":{"propertyName":"type","mapping":{"api_key":"#/components/schemas/ApiKeyFields","oauth_app":"#/components/schemas/OAuthAppFields"}}},"hasToken":{"type":"boolean","title":"Hastoken"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"},"updatedAt":{"type":"string","format":"date-time","title":"Updatedat"}},"type":"object","required":["key","name","credentialType","fields","hasToken","createdAt","updatedAt"],"title":"CredentialDetail"},"CredentialListItem":{"properties":{"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"},"credentialType":{"$ref":"#/components/schemas/CredentialType"},"hasToken":{"type":"boolean","title":"Hastoken","default":false},"isConfigured":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Isconfigured"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"},"updatedAt":{"type":"string","format":"date-time","title":"Updatedat"},"envVars":{"items":{"type":"string"},"type":"array","title":"Envvars"}},"type":"object","required":["key","name","credentialType","createdAt","updatedAt"],"title":"CredentialListItem"},"CredentialType":{"type":"string","enum":["oauth_app","api_key"],"title":"CredentialType"},"CreditCategoryResponse":{"properties":{"category":{"type":"string","title":"Category"},"label":{"type":"string","title":"Label"},"count":{"type":"integer","title":"Count"},"credits":{"type":"string","title":"Credits"}},"type":"object","required":["category","label","count","credits"],"title":"CreditCategoryResponse","description":"One usage-card legend row: outcomes grouped as a customer counts them."},"CreditGrantBalanceResponse":{"properties":{"key":{"type":"string","title":"Key"},"source":{"$ref":"#/components/schemas/CreditGrantSource"},"usdCents":{"type":"integer","title":"Usdcents"},"credits":{"type":"integer","title":"Credits"},"creditsRemaining":{"type":"string","title":"Creditsremaining"},"grantedAt":{"type":"string","format":"date-time","title":"Grantedat"},"expiresAt":{"type":"string","format":"date-time","title":"Expiresat"}},"type":"object","required":["key","source","usdCents","credits","creditsRemaining","grantedAt","expiresAt"],"title":"CreditGrantBalanceResponse","description":"A grant live during a cycle and what's left of it at the cycle's end, or now."},"CreditGrantSource":{"type":"string","enum":["offer","topup","upgrade"],"title":"CreditGrantSource"},"CreditOutcomeResponse":{"properties":{"outcome":{"type":"string","title":"Outcome"},"label":{"type":"string","title":"Label"},"count":{"type":"integer","title":"Count"},"credits":{"type":"string","title":"Credits"}},"type":"object","required":["outcome","label","count","credits"],"title":"CreditOutcomeResponse","description":"One rate-card outcome's count and credits in a cycle."},"CreditUsageResponse":{"properties":{"cycleKey":{"type":"string","title":"Cyclekey"},"periodStart":{"type":"string","format":"date-time","title":"Periodstart"},"periodEnd":{"type":"string","format":"date-time","title":"Periodend"},"planName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Planname"},"planCredits":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Plancredits"},"totalCredits":{"type":"string","title":"Totalcredits"},"consumedCredits":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Consumedcredits","description":"Credits actually allocated in the active entitlement interval; excludes unfunded usage."},"spendableCredits":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Spendablecredits","description":"Unspent allowance plus live grant balances at the reporting instant."},"outcomes":{"items":{"$ref":"#/components/schemas/CreditOutcomeResponse"},"type":"array","title":"Outcomes"},"categories":{"items":{"$ref":"#/components/schemas/CreditCategoryResponse"},"type":"array","title":"Categories"},"grants":{"items":{"$ref":"#/components/schemas/CreditGrantBalanceResponse"},"type":"array","title":"Grants","description":"Credit grants (e.g. the PSA bonus) live at the cycle's end or now, spent only on usage beyond the plan allowance."}},"type":"object","required":["cycleKey","periodStart","periodEnd","planName","planCredits","totalCredits","outcomes","categories","grants"],"title":"CreditUsageResponse","description":"A cycle's usage priced in credits against the team's plan allowance."},"DeleteConnectionResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"}},"type":"object","required":["success","message"],"title":"DeleteConnectionResponse","description":"Response after deleting a connection."},"DeviceCandidate":{"properties":{"hostname":{"type":"string","title":"Hostname"},"device_key":{"type":"string","title":"Device Key"},"last_seen":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen"}},"type":"object","required":["hostname","device_key"],"title":"DeviceCandidate"},"DeviceChange":{"properties":{"at":{"type":"string","format":"date-time","title":"At"},"domain":{"type":"string","enum":["device","session","network_interface","printer_connection","wifi_connection"],"title":"Domain"},"entity":{"type":"string","title":"Entity"},"field":{"type":"string","title":"Field"},"old":{"title":"Old"},"new":{"title":"New"}},"type":"object","required":["at","domain","entity","field","old","new"],"title":"DeviceChange"},"DeviceChanges":{"properties":{"hostname":{"type":"string","title":"Hostname"},"device_key":{"type":"string","title":"Device Key"},"changes":{"items":{"$ref":"#/components/schemas/DeviceChange"},"type":"array","title":"Changes"}},"type":"object","required":["hostname","device_key","changes"],"title":"DeviceChanges"},"DeviceConnection":{"properties":{"tier":{"$ref":"#/components/schemas/ConnectionTier"},"reasonCode":{"$ref":"#/components/schemas/ConnectionReason"},"since":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Since"},"lastContact":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lastcontact"},"recentGaps":{"type":"integer","title":"Recentgaps","default":0}},"type":"object","required":["tier","reasonCode"],"title":"DeviceConnection","description":"A device's connection tier as the API reports it.\n\n``since`` is the continuity anchor — when the current unbroken stretch\nbegan. ``last_contact`` is the last time either stream was heard from,\nwhich is what an offline device's tooltip counts from. Both are raw\ntimestamps: the client renders the relative wording so it stays live in a\nlong-open tab."},"DeviceLinkSnapshot":{"properties":{"key":{"type":"string","title":"Key"},"sessionKey":{"type":"string","title":"Sessionkey"},"hostname":{"type":"string","title":"Hostname"},"status":{"$ref":"#/components/schemas/DeviceLinkStatus"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"},"resolvedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Resolvedat"}},"type":"object","required":["key","sessionKey","hostname","status","createdAt"],"title":"DeviceLinkSnapshot"},"DeviceLinkStatus":{"type":"string","enum":["pending","connected","dismissed"],"title":"DeviceLinkStatus"},"DeviceSeries":{"properties":{"hostname":{"type":"string","title":"Hostname"},"device_key":{"type":"string","title":"Device Key"},"series":{"additionalProperties":{"$ref":"#/components/schemas/MetricSeries"},"type":"object","title":"Series"}},"type":"object","required":["hostname","device_key","series"],"title":"DeviceSeries"},"DiskBucket":{"properties":{"bucket":{"type":"string","format":"date-time","title":"Bucket"},"samples":{"type":"integer","title":"Samples"},"path":{"type":"string","title":"Path"},"usedAvg":{"type":"number","title":"Usedavg"},"usedMax":{"type":"number","title":"Usedmax"},"total":{"type":"number","title":"Total"}},"type":"object","required":["bucket","samples","path","usedAvg","usedMax","total"],"title":"DiskBucket"},"DiskIOBucket":{"properties":{"bucket":{"type":"string","format":"date-time","title":"Bucket"},"samples":{"type":"integer","title":"Samples"},"diskName":{"type":"string","title":"Diskname"},"intervals":{"type":"integer","title":"Intervals"},"observedSeconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Observedseconds"},"readBpsAvg":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Readbpsavg"},"readBpsMax":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Readbpsmax"},"writeBpsAvg":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Writebpsavg"},"writeBpsMax":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Writebpsmax"},"readIopsAvg":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Readiopsavg"},"readIopsMax":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Readiopsmax"},"writeIopsAvg":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Writeiopsavg"},"writeIopsMax":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Writeiopsmax"},"readLatencyAvgMs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Readlatencyavgms"},"readLatencyMaxMs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Readlatencymaxms"},"writeLatencyAvgMs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Writelatencyavgms"},"writeLatencyMaxMs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Writelatencymaxms"},"busyAvgPct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Busyavgpct"},"busyMaxPct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Busymaxpct"},"queueDepthAvg":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Queuedepthavg"},"queueDepthMax":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Queuedepthmax"}},"type":"object","required":["bucket","samples","diskName","intervals","observedSeconds","readBpsAvg","readBpsMax","writeBpsAvg","writeBpsMax","readIopsAvg","readIopsMax","writeIopsAvg","writeIopsMax","readLatencyAvgMs","readLatencyMaxMs","writeLatencyAvgMs","writeLatencyMaxMs","busyAvgPct","busyMaxPct","queueDepthAvg","queueDepthMax"],"title":"DiskIOBucket","description":"Rates and interval means; latency maxima are not individual I/O peaks."},"EditOption":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"within":{"items":{"type":"string"},"type":"array","title":"Within","default":[]}},"type":"object","required":["id","name"],"title":"EditOption"},"EditableField":{"properties":{"key":{"type":"string","title":"Key"},"label":{"type":"string","title":"Label"},"before":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Before"},"value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value"},"valueName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Valuename"},"parent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent"},"options":{"items":{"$ref":"#/components/schemas/EditOption"},"type":"array","title":"Options","default":[]}},"type":"object","required":["key","label"],"title":"EditableField"},"EditableNote":{"properties":{"text":{"type":"string","title":"Text"},"internal":{"type":"boolean","title":"Internal"},"visibility":{"type":"string","title":"Visibility"}},"type":"object","required":["text","internal","visibility"],"title":"EditableNote"},"EndUserListItem":{"properties":{"id":{"type":"integer","title":"Id"},"microsoftId":{"type":"string","title":"Microsoftid"},"displayName":{"type":"string","title":"Displayname"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"userPrincipalName":{"type":"string","title":"Userprincipalname"},"jobTitle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Jobtitle"},"department":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department"},"accountEnabled":{"type":"boolean","title":"Accountenabled"},"sessionStatus":{"type":"string","title":"Sessionstatus"},"identityStatus":{"type":"string","title":"Identitystatus"},"ticketingStatus":{"type":"string","title":"Ticketingstatus"},"sparkyStatus":{"type":"string","title":"Sparkystatus"},"lastSyncedAt":{"type":"string","title":"Lastsyncedat"}},"type":"object","required":["id","microsoftId","displayName","email","userPrincipalName","jobTitle","department","accountEnabled","sessionStatus","identityStatus","ticketingStatus","sparkyStatus","lastSyncedAt"],"title":"EndUserListItem","description":"End-user list item for table rows."},"EndUserResolutionApplyMode":{"type":"string","enum":["SUPERIT_ONLY","PSA_PUBLIC_NOTE"],"title":"EndUserResolutionApplyMode","description":"Where the end-user resolution invite lands.\n\nSUPERIT_ONLY: staff-only preview in SuperIT; the customer-facing PSA\nnote write is suppressed. PSA_PUBLIC_NOTE: also post the invite as a\ncustomer-facing note on the ticket. Distinct from ``TriageApplyMode``\n(whose second value is an internal note, not customer-facing)."},"EndUserResolutionRerunResponse":{"properties":{"outcome":{"type":"string","const":"queued","title":"Outcome"}},"type":"object","required":["outcome"],"title":"EndUserResolutionRerunResponse"},"EndUsersConnectionInfo":{"properties":{"key":{"type":"string","title":"Key"},"displayName":{"type":"string","title":"Displayname"},"tenantId":{"type":"string","title":"Tenantid"},"isActive":{"type":"boolean","title":"Isactive"},"lastSyncAt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lastsyncat"}},"type":"object","required":["key","displayName","tenantId","isActive","lastSyncAt"],"title":"EndUsersConnectionInfo","description":"Connection summary shown on the end-users page."},"EndUsersListResponse":{"properties":{"count":{"type":"integer","title":"Count"},"page":{"type":"integer","title":"Page"},"pageSize":{"type":"integer","title":"Pagesize"},"totalPages":{"type":"integer","title":"Totalpages"},"stats":{"$ref":"#/components/schemas/EndUsersStatsSummary"},"connections":{"items":{"$ref":"#/components/schemas/EndUsersConnectionInfo"},"type":"array","title":"Connections"},"results":{"items":{"$ref":"#/components/schemas/EndUserListItem"},"type":"array","title":"Results"}},"type":"object","required":["count","page","pageSize","totalPages","stats","connections","results"],"title":"EndUsersListResponse","description":"Paginated end-users list response."},"EndUsersStatsResponse":{"properties":{"total":{"type":"integer","title":"Total"},"active":{"type":"integer","title":"Active"},"inactive":{"type":"integer","title":"Inactive"},"licensed":{"type":"integer","title":"Licensed"},"unlicensed":{"type":"integer","title":"Unlicensed"}},"type":"object","required":["total","active","inactive","licensed","unlicensed"],"title":"EndUsersStatsResponse","description":"Tenant-wide M365 account counts for a team."},"EndUsersStatsSummary":{"properties":{"total":{"type":"integer","title":"Total"},"unverifiedSessions":{"type":"integer","title":"Unverifiedsessions"},"pendingActivation":{"type":"integer","title":"Pendingactivation"}},"type":"object","required":["total","unverifiedSessions","pendingActivation"],"title":"EndUsersStatsSummary","description":"Stats summary for the end-users list page."},"EngineerNoteAddRequestedData":{"properties":{"event_type":{"type":"string","const":"engineer_note_add_requested","title":"Event Type","default":"engineer_note_add_requested"},"ticket_entity_id":{"type":"string","title":"Ticket Entity Id"},"agent_name":{"type":"string","title":"Agent Name"},"user_name":{"type":"string","title":"User Name"},"view_url":{"type":"string","title":"View Url"}},"type":"object","required":["ticket_entity_id","agent_name","user_name","view_url"],"title":"EngineerNoteAddRequestedData","description":"Auto-link note that points an engineer back to Super IT."},"EngineerNoteAddSucceededData":{"properties":{"event_type":{"type":"string","const":"engineer_note_add_succeeded","title":"Event Type","default":"engineer_note_add_succeeded"},"note_entity_id":{"type":"string","title":"Note Entity Id"},"ticket_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticket Number"}},"type":"object","required":["note_entity_id"],"title":"EngineerNoteAddSucceededData"},"EvaluationStep":{"properties":{"step":{"type":"integer","title":"Step"},"kind":{"type":"string","enum":["cmdlet","pattern","parameter_override","default"],"title":"Kind"},"decision":{"type":"string","enum":["allow","deny","needs_approval"],"title":"Decision"},"source":{"type":"string","enum":["ast","system_blocklist","cmdlet_policy_team","cmdlet_policy_global","pattern_rule_team","pattern_rule_global","parameter_override","default"],"title":"Source"},"matched":{"type":"boolean","title":"Matched","default":false},"isSystemLocked":{"type":"boolean","title":"Issystemlocked","default":false},"cmdletName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cmdletname"},"pattern":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pattern"},"priority":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Priority"},"ruleId":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ruleid"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["step","kind","decision","source"],"title":"EvaluationStep","description":"One row in the resolver's ordered rule walk."},"EventDetail":{"properties":{"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"key":{"type":"string","title":"Key"},"eventType":{"type":"string","title":"Eventtype"},"source":{"type":"string","title":"Source"},"summary":{"type":"string","title":"Summary"},"data":{"anyOf":[{"$ref":"#/components/schemas/TicketCreateRequestedData"},{"$ref":"#/components/schemas/NoteAddRequestedData"},{"$ref":"#/components/schemas/NoteUpdateRequestedData"},{"$ref":"#/components/schemas/EngineerNoteAddRequestedData"},{"$ref":"#/components/schemas/TicketUpdateRequestedData"},{"$ref":"#/components/schemas/TimeEntryAddRequestedData"},{"$ref":"#/components/schemas/TicketCreateAcceptedData"},{"$ref":"#/components/schemas/TicketCreateSucceededData"},{"$ref":"#/components/schemas/NoteAddSucceededData"},{"$ref":"#/components/schemas/NoteAddDispatchingData"},{"$ref":"#/components/schemas/NoteUpdateSucceededData"},{"$ref":"#/components/schemas/EngineerNoteAddSucceededData"},{"$ref":"#/components/schemas/TicketUpdateSucceededData"},{"$ref":"#/components/schemas/TimeEntryAddSucceededData"},{"$ref":"#/components/schemas/TimeEntryAddDispatchingData"},{"$ref":"#/components/schemas/OperationFailedData"},{"$ref":"#/components/schemas/WebhookReceivedData"},{"$ref":"#/components/schemas/LifecycleArrivedData"},{"$ref":"#/components/schemas/LifecyclePersistedData"},{"$ref":"#/components/schemas/LifecycleSettledData"},{"$ref":"#/components/schemas/LifecycleFailedData"},{"$ref":"#/components/schemas/UnparseableEventData"},{"type":"null"}],"title":"Data"},"ticketKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticketkey"},"parentKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parentkey"},"dependsOnKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dependsonkey"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"}},"type":"object","required":["key","eventType","source","summary","createdAt"],"title":"EventDetail","description":"API response DTO for ticket events."},"EventStatusResponse":{"properties":{"event":{"$ref":"#/components/schemas/EventDetail"},"status":{"type":"string","enum":["pending","succeeded","failed"],"title":"Status"},"ticketKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticketkey"},"ticketNumber":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticketnumber"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["event","status"],"title":"EventStatusResponse","description":"Poll response for a ticket event."},"ExecutionDetail":{"properties":{"key":{"type":"string","title":"Key"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug"},"actionKey":{"type":"string","title":"Actionkey"},"actionName":{"type":"string","title":"Actionname"},"status":{"$ref":"#/components/schemas/ExecutionStatus"},"mode":{"type":"string","enum":["normal","test"],"title":"Mode","default":"normal"},"script":{"type":"string","title":"Script"},"runtime":{"$ref":"#/components/schemas/Runtime"},"inputsSchema":{"anyOf":[{"items":{"$ref":"#/components/schemas/InputField"},"type":"array"},{"type":"null"}],"title":"Inputsschema"},"approvalSchema":{"anyOf":[{"items":{"$ref":"#/components/schemas/InputField"},"type":"array"},{"type":"null"}],"title":"Approvalschema"},"requesterUserKey":{"type":"string","title":"Requesteruserkey"},"requesterName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requestername"},"targetUserKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Targetuserkey"},"targetDeviceKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Targetdevicekey"},"targetDeviceHostname":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Targetdevicehostname"},"targetDeviceAgentKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Targetdeviceagentkey"},"ticketKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticketkey"},"triggerSource":{"anyOf":[{"$ref":"#/components/schemas/TriggerSource"},{"type":"null"}]},"chatKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chatkey"},"recommendedActionKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recommendedactionkey"},"origin":{"anyOf":[{"$ref":"#/components/schemas/ExecutionOrigin"},{"type":"null"}]},"approvedByUserKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Approvedbyuserkey"},"approvedByName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Approvedbyname"},"approvedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Approvedat"},"approvalNote":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Approvalnote"},"inputs":{"additionalProperties":{"type":"string"},"type":"object","title":"Inputs"},"approvalInputs":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Approvalinputs"},"stdout":{"type":"string","title":"Stdout"},"stderr":{"type":"string","title":"Stderr"},"resultJson":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Resultjson"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Errormessage"},"diagnosticLog":{"type":"string","title":"Diagnosticlog"},"startedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Startedat"},"completedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completedat"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"},"totalDurationMs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Totaldurationms"},"scriptDurationMs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Scriptdurationms"},"scriptTimeoutSeconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Scripttimeoutseconds"}},"type":"object","required":["key","slug","actionKey","actionName","status","script","runtime","requesterUserKey","requesterName","targetUserKey","approvedByUserKey","approvedByName","approvedAt","inputs","approvalInputs","stdout","stderr","resultJson","errorMessage","diagnosticLog","startedAt","completedAt","createdAt"],"title":"ExecutionDetail"},"ExecutionListItem":{"properties":{"key":{"type":"string","title":"Key"},"actionKey":{"type":"string","title":"Actionkey"},"actionName":{"type":"string","title":"Actionname"},"status":{"$ref":"#/components/schemas/ExecutionStatus"},"mode":{"type":"string","enum":["normal","test"],"title":"Mode","default":"normal"},"requesterUserKey":{"type":"string","title":"Requesteruserkey"},"requesterName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requestername"},"targetDeviceKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Targetdevicekey"},"targetDeviceHostname":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Targetdevicehostname"},"approvedByName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Approvedbyname"},"startedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Startedat"},"completedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completedat"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"},"totalDurationMs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Totaldurationms"},"scriptDurationMs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Scriptdurationms"},"triggerSource":{"anyOf":[{"$ref":"#/components/schemas/TriggerSource"},{"type":"null"}]}},"type":"object","required":["key","actionKey","actionName","status","requesterUserKey","requesterName","startedAt","completedAt","createdAt"],"title":"ExecutionListItem"},"ExecutionOrigin":{"properties":{"ticketNumber":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticketnumber"},"ticketSubject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticketsubject"},"chatSummary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chatsummary"},"chatCreatedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Chatcreatedat"},"recommendedActionKind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recommendedactionkind"},"recommendedActionLabel":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recommendedactionlabel"},"agentRunKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agentrunkey"}},"type":"object","title":"ExecutionOrigin","description":"Human-readable labels resolved for the linked ticket/chat/recommendation.\n\nThe raw keys live on ``ExecutionDetail`` (they are columns and always\npresent); this carries only what needs a cross-domain lookup. Every field\ndegrades to None — the ticket, chat, or recommendation may have been\ndeleted since the run, and the execution must still render."},"ExecutionStatus":{"type":"string","enum":["pending","waiting_for_approval","approved","not_approved","running","error","complete","cancelled"],"title":"ExecutionStatus"},"ExecutionStatusView":{"properties":{"kind":{"type":"string","const":"execution","title":"Kind","default":"execution"},"execution":{"$ref":"#/components/schemas/ExecutionDetail"},"callerCanCancel":{"type":"boolean","title":"Callercancancel"}},"type":"object","required":["execution","callerCanCancel"],"title":"ExecutionStatusView"},"ExecutionTarget":{"type":"string","enum":["cloud_sandbox","mesh_device"],"title":"ExecutionTarget","description":"Where an action runs by default."},"ExploreContinueBody":{"properties":{"action":{"type":"string","enum":["next_round","finish"],"title":"Action"}},"type":"object","required":["action"],"title":"ExploreContinueBody"},"ExploreInput":{"properties":{"objective":{"type":"string","title":"Objective"}},"type":"object","required":["objective"],"title":"ExploreInput"},"ExploreRoundSnapshot":{"properties":{"key":{"type":"string","title":"Key"},"index":{"type":"integer","title":"Index"},"status":{"type":"string","title":"Status"},"approvalKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Approvalkey"},"decision":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Decision"},"decisionNote":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Decisionnote"},"gatedCount":{"type":"integer","title":"Gatedcount","default":0},"steps":{"items":{"$ref":"#/components/schemas/ExploreStepSnapshot"},"type":"array","title":"Steps"}},"type":"object","required":["key","index","status"],"title":"ExploreRoundSnapshot"},"ExploreRunSnapshot":{"properties":{"key":{"type":"string","title":"Key"},"chatKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chatkey"},"parentToolCallId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parenttoolcallid"},"objective":{"type":"string","title":"Objective"},"status":{"type":"string","title":"Status"},"roundCount":{"type":"integer","title":"Roundcount"},"roundCap":{"type":"integer","title":"Roundcap"},"report":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Report"},"question":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question"},"stoppedReason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stoppedreason"},"rounds":{"items":{"$ref":"#/components/schemas/ExploreRoundSnapshot"},"type":"array","title":"Rounds"}},"type":"object","required":["key","objective","status","roundCount","roundCap"],"title":"ExploreRunSnapshot"},"ExploreSchema":{"properties":{"tool":{"type":"string","const":"explore","title":"Tool","default":"explore"},"description":{"type":"string","title":"Description","default":"Investigate a topic by dispatching sub-agents across data sources"},"input":{"anyOf":[{"$ref":"#/components/schemas/ExploreInput"},{"type":"null"}]}},"type":"object","title":"ExploreSchema"},"ExploreStepSnapshot":{"properties":{"key":{"type":"string","title":"Key"},"seq":{"type":"integer","title":"Seq"},"kind":{"type":"string","title":"Kind"},"skill":{"type":"string","title":"Skill"},"intent":{"type":"string","title":"Intent"},"sessionKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sessionkey"},"call":{"additionalProperties":true,"type":"object","title":"Call"},"verdict":{"type":"string","title":"Verdict"},"verdictReason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verdictreason"},"enabled":{"type":"boolean","title":"Enabled","default":true},"status":{"type":"string","title":"Status"},"result":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Result"},"commandKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Commandkey"}},"type":"object","required":["key","seq","kind","skill","intent","verdict","status"],"title":"ExploreStepSnapshot"},"FailedTicket":{"properties":{"ticketId":{"type":"string","title":"Ticketid"},"error":{"type":"string","title":"Error"}},"type":"object","required":["ticketId","error"],"title":"FailedTicket","description":"A ticket that failed analysis."},"FeedbackType":{"type":"string","enum":["up","down"],"title":"FeedbackType","description":"Feedback type for message reactions."},"FieldRetryError":{"properties":{"error":{"type":"string","title":"Error"},"decision":{"$ref":"#/components/schemas/TicketFieldDecision"}},"type":"object","required":["error","decision"],"title":"FieldRetryError","description":"A prior failed attempt at field selection, fed back to the sub-agent."},"FireActionBody":{"properties":{"inputs":{"additionalProperties":{"type":"string"},"type":"object","title":"Inputs","default":{}}},"type":"object","title":"FireActionBody","description":"Engineer-completed inputs for firing a recommended action.\n\n`begin_user_chat` ignores this; `run_workflow` validates `inputs` against\nthe workflow action's inputs_schema before dispatch. Body is optional so a\nbodyless POST (begin_user_chat) still works."},"FireActionResponse":{"properties":{"status":{"type":"string","title":"Status"}},"type":"object","required":["status"],"title":"FireActionResponse","description":"Response for firing a recommended action."},"GapEffort":{"type":"string","enum":["trivial","small","medium","large","requires_research"],"title":"GapEffort","description":"Effort required to address a capability gap."},"GapImpact":{"type":"string","enum":["blocking","significant","minor"],"title":"GapImpact","description":"Impact level of a capability gap."},"GapType":{"type":"string","enum":["integration","tool","knowledge","context","permission"],"title":"GapType","description":"Type of capability gap."},"GetComputerSchema":{"properties":{"tool":{"type":"string","const":"get_computer","title":"Tool","default":"get_computer"},"description":{"type":"string","title":"Description","default":"Get device information for the current session"},"requires_session":{"type":"boolean","title":"Requires Session","default":true}},"type":"object","title":"GetComputerSchema"},"GetKbArticleInput":{"properties":{"slug":{"type":"string","title":"Slug"}},"type":"object","required":["slug"],"title":"GetKbArticleInput"},"GetKbArticleSchema":{"properties":{"tool":{"type":"string","const":"get_kb_article","title":"Tool","default":"get_kb_article"},"description":{"type":"string","title":"Description","default":"Get full KB article content"},"input":{"anyOf":[{"$ref":"#/components/schemas/GetKbArticleInput"},{"type":"null"}]}},"type":"object","title":"GetKbArticleSchema"},"GetTicketAnalysisInput":{"properties":{"ticket_key":{"type":"string","title":"Ticket Key"}},"type":"object","required":["ticket_key"],"title":"GetTicketAnalysisInput"},"GetTicketAnalysisSchema":{"properties":{"tool":{"type":"string","const":"get_ticket_analysis","title":"Tool","default":"get_ticket_analysis"},"description":{"type":"string","title":"Description","default":"Get AI analysis for a ticket"},"input":{"anyOf":[{"$ref":"#/components/schemas/GetTicketAnalysisInput"},{"type":"null"}]}},"type":"object","title":"GetTicketAnalysisSchema"},"GlobalSearchEntity":{"type":"string","enum":["device","ticket","user"],"title":"GlobalSearchEntity","description":"Entity kinds surfaced by the global search dialog."},"GlobalSearchResponse":{"properties":{"query":{"type":"string","title":"Query"},"results":{"items":{"$ref":"#/components/schemas/GlobalSearchResult"},"type":"array","title":"Results"}},"type":"object","required":["query","results"],"title":"GlobalSearchResponse","description":"Response for the global search endpoint, grouped client-side."},"GlobalSearchResult":{"properties":{"id":{"type":"string","title":"Id"},"entity":{"$ref":"#/components/schemas/GlobalSearchEntity"},"label":{"type":"string","title":"Label"},"reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference"},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Verified"},"entityKey":{"type":"string","title":"Entitykey"},"teamKey":{"type":"string","title":"Teamkey"},"teamName":{"type":"string","title":"Teamname"}},"type":"object","required":["id","entity","label","entityKey","teamKey","teamName"],"title":"GlobalSearchResult","description":"One navigable row in the global search dialog.\n\n``entity_key`` is the identifier the frontend routes with: agent key for\ndevices and for users (a user hit is a login session, so it opens the\ndevice that session is on), PsaTicket key for tickets. ``reference`` is\nthe ticket number for ticket rows, rendered ahead of the label.\n\n``context`` and ``verified`` carry user rows only: the device hostname the\nsession belongs to, and whether that session resolves to a real identity\nrather than a bare OS username."},"GraphEdge":{"properties":{"type":{"type":"string","title":"Type"},"sourceKey":{"type":"string","title":"Sourcekey"},"targetKey":{"type":"string","title":"Targetkey"},"label":{"type":"string","title":"Label"}},"type":"object","required":["type","sourceKey","targetKey","label"],"title":"GraphEdge"},"GraphNode":{"properties":{"key":{"type":"string","title":"Key"},"domain":{"type":"string","title":"Domain"},"label":{"type":"string","title":"Label"},"health":{"type":"string","enum":["healthy","warning","critical"],"title":"Health"},"state":{"additionalProperties":true,"type":"object","title":"State"}},"type":"object","required":["key","domain","label","health","state"],"title":"GraphNode"},"GraphResponse":{"properties":{"nodes":{"items":{"$ref":"#/components/schemas/GraphNode"},"type":"array","title":"Nodes"},"edges":{"items":{"$ref":"#/components/schemas/GraphEdge"},"type":"array","title":"Edges"}},"type":"object","required":["nodes","edges"],"title":"GraphResponse"},"GroupTagMatcher":{"properties":{"tag":{"type":"string","const":"group","title":"Tag"},"tags":{"items":{"type":"string","minLength":9,"pattern":"^superit:[a-z0-9][a-z0-9_-]*$"},"type":"array","minItems":1,"title":"Tags"}},"type":"object","required":["tag","tags"],"title":"GroupTagMatcher","description":"Match users by membership in one or more superit tags."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HaloCategoryResponse":{"properties":{"haloId":{"type":"integer","title":"Haloid"},"name":{"type":"string","title":"Name"}},"type":"object","required":["haloId","name"],"title":"HaloCategoryResponse"},"HaloCustomFieldResponse":{"properties":{"key":{"type":"string","title":"Key"},"haloId":{"type":"integer","title":"Haloid"},"ticketTypeHaloId":{"type":"integer","title":"Tickettypehaloid"},"ticketTypeName":{"type":"string","title":"Tickettypename"},"name":{"type":"string","title":"Name"},"label":{"type":"string","title":"Label"},"type":{"type":"integer","title":"Type"},"defaultValue":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Defaultvalue"},"options":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Options"},"mandatoryEndusernew":{"type":"boolean","title":"Mandatoryendusernew"},"mandatoryTechnew":{"type":"boolean","title":"Mandatorytechnew"}},"type":"object","required":["key","haloId","ticketTypeHaloId","ticketTypeName","name","label","type","defaultValue","options","mandatoryEndusernew","mandatoryTechnew"],"title":"HaloCustomFieldResponse"},"HaloPriorityConfigResponse":{"properties":{"key":{"type":"string","title":"Key"},"haloId":{"type":"integer","title":"Haloid"},"slaId":{"type":"integer","title":"Slaid"},"name":{"type":"string","title":"Name"},"colour":{"type":"string","title":"Colour"},"llmInstructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Llminstructions"}},"type":"object","required":["key","haloId","slaId","name","colour","llmInstructions"],"title":"HaloPriorityConfigResponse","description":"A Halo priority, configurable for the AI like the CW priorities.\n\nHalo's priority catalogue is per-SLA (``sla_id``); the same ``halo_id``\nrecurs once per SLA, and the API exposes neither a sort order nor a\ndefault flag — so this carries only the colour swatch Halo does give\nus. The list is ordered by ``sla_id`` then name, so callers can render\none SLA's scale as a contiguous block."},"HaloPsaFields":{"properties":{"psaType":{"type":"string","const":"halo","title":"Psatype","default":"halo"},"ticketTypeName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tickettypename"},"categoryNames":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Categorynames"},"extra":{"additionalProperties":{"type":"string"},"type":"object","title":"Extra"}},"type":"object","title":"HaloPsaFields","description":"Halo classification + leftover display fields."},"HaloTicketTypeResponse":{"properties":{"haloId":{"type":"integer","title":"Haloid"},"name":{"type":"string","title":"Name"}},"type":"object","required":["haloId","name"],"title":"HaloTicketTypeResponse"},"IdentityStatus":{"type":"string","enum":["linked","unlinked"],"title":"IdentityStatus","description":"Whether an M365 user is linked to a Super IT identity."},"ImportUserError":{"properties":{"sourceId":{"type":"integer","title":"Sourceid"},"reason":{"type":"string","title":"Reason"}},"type":"object","required":["sourceId","reason"],"title":"ImportUserError","description":"A per-row failure from a bulk import."},"ImportUsersRequest":{"properties":{"userIds":{"items":{"type":"integer"},"type":"array","title":"Userids"}},"type":"object","required":["userIds"],"title":"ImportUsersRequest","description":"Request body for importing M365/PSA users as team members."},"ImportUsersResponse":{"properties":{"created":{"type":"integer","title":"Created"},"skipped":{"type":"integer","title":"Skipped"},"errors":{"items":{"$ref":"#/components/schemas/ImportUserError"},"type":"array","title":"Errors"}},"type":"object","required":["created","skipped","errors"],"title":"ImportUsersResponse","description":"Response after importing M365/PSA users."},"InitialOnboardingStage":{"type":"string","enum":["connect_psa","complete_team_setup","complete"]},"InputField":{"properties":{"name":{"type":"string","title":"Name"},"type":{"type":"string","enum":["string","email","boolean","date","enum","string[]","textarea"],"title":"Type"},"label":{"type":"string","title":"Label"},"required":{"type":"boolean","title":"Required","default":true},"choices":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Choices"},"default":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default"}},"type":"object","required":["name","type","label"],"title":"InputField"},"InsightCategoriesResponse":{"properties":{"categories":{"items":{"type":"string"},"type":"array","title":"Categories"}},"type":"object","required":["categories"],"title":"InsightCategoriesResponse"},"InsightGetInput":{"properties":{"insight_key":{"type":"string","title":"Insight Key"}},"type":"object","required":["insight_key"],"title":"InsightGetInput"},"InsightGetSchema":{"properties":{"tool":{"type":"string","const":"insight_get","title":"Tool","default":"insight_get"},"description":{"type":"string","title":"Description","default":"Get an insight recommendation by key"},"input":{"anyOf":[{"$ref":"#/components/schemas/InsightGetInput"},{"type":"null"}]},"output":{"anyOf":[{"$ref":"#/components/schemas/InsightGetToolResult"},{"type":"null"}]}},"type":"object","title":"InsightGetSchema"},"InsightGetToolResult":{"properties":{"key":{"type":"string","title":"Key"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"recommended_action":{"type":"string","title":"Recommended Action"},"insight_type":{"type":"string","title":"Insight Type"},"category":{"type":"string","title":"Category"},"urgency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Urgency"},"priority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Priority"},"confidence":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Confidence"},"status":{"type":"string","title":"Status"},"source_ticket_count":{"type":"integer","title":"Source Ticket Count"},"source_ticket_keys":{"items":{"type":"string"},"type":"array","title":"Source Ticket Keys"}},"type":"object","required":["key","title","description","recommended_action","insight_type","category","status","source_ticket_count"],"title":"InsightGetToolResult","description":"Insight recommendation details for Sparky."},"InsightJobInfo":{"properties":{"key":{"type":"string","title":"Key","description":"Job key"},"status":{"$ref":"#/components/schemas/JobStatus","description":"Job status"},"insightType":{"type":"string","enum":["it_team","dev_team"],"title":"Insighttype","description":"Type of insights"},"dateFilterMonths":{"type":"integer","title":"Datefiltermonths","description":"Date filter in months"},"dateFrom":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Datefrom","description":"Start of explicit date range"},"dateTo":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Dateto","description":"End of explicit date range"},"recommendationCount":{"type":"integer","title":"Recommendationcount","description":"Number of recommendations"},"progress":{"$ref":"#/components/schemas/JobProgress","description":"Progress info"},"startedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Startedat","description":"Start time"},"completedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completedat","description":"Completion time"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Errormessage","description":"Error message if failed"},"createdAt":{"type":"string","format":"date-time","title":"Createdat","description":"Creation time"}},"type":"object","required":["key","status","insightType","dateFilterMonths","dateFrom","dateTo","recommendationCount","progress","startedAt","completedAt","errorMessage","createdAt"],"title":"InsightJobInfo","description":"Info about an insight consolidation job."},"InsightJobListResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/InsightJobInfo"},"type":"array","title":"Results"},"count":{"type":"integer","title":"Count"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["results","count","page","page_size"],"title":"InsightJobListResponse"},"InsightListResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/ConsolidatedInsightDetail"},"type":"array","title":"Results"},"count":{"type":"integer","title":"Count"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["results","count","page","page_size"],"title":"InsightListResponse"},"InsightStatus":{"type":"string","enum":["active","actioned","ignored"],"title":"InsightStatus","description":"Status of an insight recommendation."},"InsightType":{"type":"string","enum":["sales_opportunity","security_concern","training_need","process_improvement","documentation_gap","recurring_issue","satisfaction_risk","capacity_planning","vendor_issue"],"title":"InsightType","description":"Type of actionable insight."},"InsightUrgency":{"type":"string","enum":["low","medium","high","critical"],"title":"InsightUrgency","description":"Urgency level of an actionable insight."},"IntegrationRequestBody":{"properties":{"psaName":{"type":"string","maxLength":100,"minLength":1,"pattern":"^[^\\x00-\\x1f\\x7f]+$","title":"Psaname"},"chatKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chatkey"}},"type":"object","required":["psaName"],"title":"IntegrationRequestBody"},"IntegrationRequestResponse":{"properties":{"contactEmail":{"type":"string","title":"Contactemail"},"confirmationSent":{"type":"boolean","title":"Confirmationsent"}},"type":"object","required":["contactEmail","confirmationSent"],"title":"IntegrationRequestResponse"},"InternalUserItem":{"properties":{"userId":{"type":"integer","title":"Userid"},"userKey":{"type":"string","title":"Userkey"},"firstName":{"type":"string","title":"Firstname"},"lastName":{"type":"string","title":"Lastname"},"fullName":{"type":"string","title":"Fullname","description":"Person's full name; empty when unknown.","default":""},"nickname":{"type":"string","title":"Nickname","description":"Preferred name for conversation.","default":""},"displayName":{"type":"string","title":"Displayname","description":"Legacy conversational name; use fullName for administrative views."},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"Internal login email, independent of the linked M365 mailbox and sign-in name."},"avatarUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatarurl"},"role":{"$ref":"#/components/schemas/MembershipRole"},"lastLogin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lastlogin"},"m365LinkedUserId":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"M365Linkeduserid"},"m365LinkedEmail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"M365Linkedemail","description":"Legacy mail-or-UPN fallback; use m365LinkedAccount for explicit address roles.","deprecated":true},"m365LinkedAccount":{"anyOf":[{"$ref":"#/components/schemas/M365LinkedAccount"},{"type":"null"}]},"ticketingLinked":{"type":"boolean","title":"Ticketinglinked"},"ticketingLinkedEmail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticketinglinkedemail"},"sessionStatus":{"anyOf":[{"$ref":"#/components/schemas/SessionVerification"},{"type":"null"}]},"isStaff":{"type":"boolean","title":"Isstaff","default":false},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","default":[]}},"type":"object","required":["userId","userKey","firstName","lastName","displayName","email","avatarUrl","role","lastLogin","m365LinkedUserId","m365LinkedEmail","ticketingLinked","ticketingLinkedEmail","sessionStatus"],"title":"InternalUserItem","description":"Internal user row — the primary paginated entity."},"InvitationResponse":{"properties":{"id":{"type":"string","title":"Id"},"teamKey":{"type":"string","title":"Teamkey"},"email":{"type":"string","title":"Email"},"role":{"$ref":"#/components/schemas/MembershipRole"},"invitedByKey":{"type":"string","title":"Invitedbykey"},"isAccepted":{"type":"boolean","title":"Isaccepted"},"acceptedByKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Acceptedbykey"}},"type":"object","required":["id","teamKey","email","role","invitedByKey","isAccepted"],"title":"InvitationResponse","description":"Invitation data for API responses."},"InviteMemberRequest":{"properties":{"email":{"type":"string","title":"Email"},"role":{"$ref":"#/components/schemas/MembershipRole"}},"type":"object","required":["email","role"],"title":"InviteMemberRequest","description":"Invite member request."},"IssuedCredential":{"properties":{"key":{"type":"string","title":"Key"},"token":{"type":"string","title":"Token"},"prefix":{"type":"string","title":"Prefix"},"expiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expiresat"}},"type":"object","required":["key","token","prefix"],"title":"IssuedCredential","description":"A newly minted credential.\n\n``token`` appears here and nowhere else — it is never persisted and never\nreturned by any read endpoint, so this response is the only chance the\ncaller has to store it."},"JobCreatedResponse":{"properties":{"job_key":{"type":"string","title":"Job Key"},"status":{"type":"string","title":"Status"}},"type":"object","required":["job_key","status"],"title":"JobCreatedResponse"},"JobProgress":{"properties":{"totalItems":{"type":"integer","title":"Totalitems","description":"Total items to process"},"processedItems":{"type":"integer","title":"Processeditems","description":"Items processed so far"},"successCount":{"type":"integer","title":"Successcount","description":"Successful items"},"skipCount":{"type":"integer","title":"Skipcount","description":"Skipped items"},"errorCount":{"type":"integer","title":"Errorcount","description":"Errored items"},"progressPercent":{"type":"integer","title":"Progresspercent","description":"Progress percentage"}},"type":"object","required":["totalItems","processedItems","successCount","skipCount","errorCount","progressPercent"],"title":"JobProgress","description":"Progress info for a job."},"JobStatus":{"type":"string","enum":["pending","running","completed","failed","cancelled"],"title":"JobStatus","description":"Status of a job."},"JsonPointer":{"type":"string","pattern":"^(?:/(?:[^~/]|~[01])*)*$"},"KbArticleGrantSummary":{"properties":{"managedTeamKeys":{"items":{"type":"string"},"type":"array","title":"Managedteamkeys"},"allManagedTeams":{"type":"boolean","title":"Allmanagedteams"}},"type":"object","required":["managedTeamKeys","allManagedTeams"],"title":"KbArticleGrantSummary","description":"Current grants on one article.\n\n`all_managed_teams` is the wildcard: every managed team of the connection,\nincluding any linked later."},"KbConsolidationJobInfo":{"properties":{"key":{"type":"string","title":"Key"},"status":{"$ref":"#/components/schemas/JobStatus"},"curationJobKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Curationjobkey"},"maxPasses":{"type":"integer","title":"Maxpasses"},"completedPasses":{"type":"integer","title":"Completedpasses"},"converged":{"type":"boolean","title":"Converged"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Errormessage"},"keepCount":{"type":"integer","title":"Keepcount","default":0},"updateCount":{"type":"integer","title":"Updatecount","default":0},"mergeCount":{"type":"integer","title":"Mergecount","default":0},"archiveCount":{"type":"integer","title":"Archivecount","default":0},"progressTotalItems":{"type":"integer","title":"Progresstotalitems"},"progressProcessedItems":{"type":"integer","title":"Progressprocesseditems"},"startedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Startedat"},"completedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completedat"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"}},"type":"object","required":["key","status","maxPasses","completedPasses","converged","errorMessage","progressTotalItems","progressProcessedItems","startedAt","completedAt","createdAt"],"title":"KbConsolidationJobInfo","description":"Info about a standalone or curation-linked KB consolidation job."},"KbConsolidationJobListResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/KbConsolidationJobInfo"},"type":"array","title":"Results"},"count":{"type":"integer","title":"Count"},"page":{"type":"integer","title":"Page"},"pageSize":{"type":"integer","title":"Pagesize"}},"type":"object","required":["results","count","page","pageSize"],"title":"KbConsolidationJobListResponse","description":"Paginated KB consolidation jobs."},"KbConsolidationStatus":{"type":"string","enum":["queued","running","completed","failed","cancelled"],"title":"KbConsolidationStatus","description":"Status of the follow-up KB consolidation phase for a curation job."},"KbCurationJobInfo":{"properties":{"key":{"type":"string","title":"Key"},"status":{"$ref":"#/components/schemas/JobStatus"},"dateFilterMonths":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Datefiltermonths"},"dateFrom":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Datefrom"},"dateTo":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Dateto"},"selectionMode":{"$ref":"#/components/schemas/KbCurationSelectionMode"},"dryRun":{"type":"boolean","title":"Dryrun"},"autoPublish":{"type":"boolean","title":"Autopublish"},"maxWrites":{"type":"integer","title":"Maxwrites"},"progressTotalItems":{"type":"integer","title":"Progresstotalitems"},"progressProcessedItems":{"type":"integer","title":"Progressprocesseditems"},"successCount":{"type":"integer","title":"Successcount"},"skipCount":{"type":"integer","title":"Skipcount"},"errorCount":{"type":"integer","title":"Errorcount"},"createdArticles":{"type":"integer","title":"Createdarticles"},"updatedArticles":{"type":"integer","title":"Updatedarticles"},"createdResources":{"type":"integer","title":"Createdresources"},"consolidationStatus":{"anyOf":[{"$ref":"#/components/schemas/KbConsolidationStatus"},{"type":"null"}]},"consolidationSummary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Consolidationsummary"},"consolidationError":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Consolidationerror"},"consolidationKeepCount":{"type":"integer","title":"Consolidationkeepcount","default":0},"consolidationUpdateCount":{"type":"integer","title":"Consolidationupdatecount","default":0},"consolidationMergeCount":{"type":"integer","title":"Consolidationmergecount","default":0},"consolidationArchiveCount":{"type":"integer","title":"Consolidationarchivecount","default":0},"consolidationJobKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Consolidationjobkey"},"consolidationCompletedPasses":{"type":"integer","title":"Consolidationcompletedpasses","default":0},"consolidationMaxPasses":{"type":"integer","title":"Consolidationmaxpasses","default":0},"consolidationConverged":{"type":"boolean","title":"Consolidationconverged","default":false},"startedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Startedat"},"completedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completedat"},"errorMessage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Errormessage"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"}},"type":"object","required":["key","status","dateFilterMonths","dateFrom","dateTo","selectionMode","dryRun","autoPublish","maxWrites","progressTotalItems","progressProcessedItems","successCount","skipCount","errorCount","createdArticles","updatedArticles","createdResources","startedAt","completedAt","errorMessage","createdAt"],"title":"KbCurationJobInfo","description":"Info about a KB curation job."},"KbCurationJobListResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/KbCurationJobInfo"},"type":"array","title":"Results"},"count":{"type":"integer","title":"Count"},"page":{"type":"integer","title":"Page"},"pageSize":{"type":"integer","title":"Pagesize"}},"type":"object","required":["results","count","page","pageSize"],"title":"KbCurationJobListResponse","description":"Paginated KB curation jobs."},"KbCurationSelectionMode":{"type":"string","enum":["only_new","reprocess_all"],"title":"KbCurationSelectionMode","description":"How ticket-analysis artifacts are selected for a curation run."},"KbJobCancellation":{"properties":{"cancelled":{"type":"boolean","title":"Cancelled"},"message":{"type":"string","title":"Message"}},"type":"object","required":["cancelled","message"],"title":"KbJobCancellation","description":"Outcome of a cancel request for a KB job.\n\n``cancelled`` is False both when the job does not exist and when it has\nalready reached a terminal status; ``message`` says which."},"KbJobQueued":{"properties":{"jobKey":{"type":"string","title":"Jobkey"},"status":{"$ref":"#/components/schemas/JobStatus"}},"type":"object","required":["jobKey","status"],"title":"KbJobQueued","description":"Queued job handle returned after creating a KB job row.\n\nCovers both curation and consolidation jobs — the handle is the same\nshape for either, so there is one type rather than one per job kind."},"KnowledgeArtifactExtraction":{"properties":{"artifactType":{"$ref":"#/components/schemas/ArtifactType","description":"Type of knowledge artifact"},"scope":{"$ref":"#/components/schemas/ArtifactScope","description":"Who this knowledge applies to: the IT team, a specific client, or the end user"},"title":{"type":"string","title":"Title","description":"Short descriptive title"},"content":{"type":"string","title":"Content","description":"The knowledge content — procedure steps, facts, or guidance"},"reusability":{"type":"string","title":"Reusability","description":"Why this knowledge would help resolve a different future ticket with a similar but not identical situation. If you cannot articulate this clearly, do not include the artifact.","default":""},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","description":"Searchable tags for categorisation, e.g. ['outlook', 'exchange', 'profile']"}},"type":"object","required":["artifactType","scope","title","content"],"title":"KnowledgeArtifactExtraction","description":"Reusable knowledge extracted from the ticket that could help resolve similar issues in future."},"Language":{"type":"string","enum":["en-AU","en-US"],"title":"Language","description":"Supported team languages (locale codes stored on identity.team)."},"LatestInsightsResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/ConsolidatedInsightDetail"},"type":"array","title":"Results"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["results","count"],"title":"LatestInsightsResponse"},"LatestRelease":{"properties":{"version":{"type":"string","title":"Version"},"platforms":{"$ref":"#/components/schemas/Platforms"}},"type":"object","required":["version","platforms"],"title":"LatestRelease","description":"Latest agent release info."},"LifecycleArrivedData":{"properties":{"event_type":{"type":"string","const":"lifecycle_arrived","title":"Event Type","default":"lifecycle_arrived"},"trigger_kind":{"type":"string","title":"Trigger Kind"},"trigger_source":{"type":"string","title":"Trigger Source"},"echo_of_event_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Echo Of Event Id"}},"type":"object","required":["trigger_kind","trigger_source"],"title":"LifecycleArrivedData","description":"A ticket arrived; the trigger classifier categorised it."},"LifecycleFailedData":{"properties":{"event_type":{"type":"string","const":"lifecycle_failed","title":"Event Type","default":"lifecycle_failed"},"error":{"type":"string","title":"Error"},"stage":{"type":"string","enum":["arrived","persisted","running","settled"],"title":"Stage"}},"type":"object","required":["error","stage"],"title":"LifecycleFailedData","description":"Framework-level failure (classifier raised, lock contention, etc.).\n\nDistinct from a sub-agent / tool failure inside a chat -- those live\nin the existing failure events."},"LifecyclePersistedData":{"properties":{"event_type":{"type":"string","const":"lifecycle_persisted","title":"Event Type","default":"lifecycle_persisted"},"is_new":{"type":"boolean","title":"Is New"},"content_changed":{"type":"boolean","title":"Content Changed","default":false}},"type":"object","required":["is_new"],"title":"LifecyclePersistedData","description":"persist_ticket complete; content hash + is_new known."},"LifecycleSettledData":{"properties":{"event_type":{"type":"string","const":"lifecycle_settled","title":"Event Type","default":"lifecycle_settled"},"chat_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chat Key"},"outcome":{"type":"string","enum":["completed","skipped","no_op","superseded"],"title":"Outcome","default":"completed"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","title":"LifecycleSettledData","description":"Lifecycle run reached terminal state (success or no-op)."},"LinkHealth":{"properties":{"managedTeamKey":{"type":"string","title":"Managedteamkey"},"managedTeamName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Managedteamname"},"active":{"type":"boolean","title":"Active"},"entitySyncStarted":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Entitysyncstarted"},"entitySyncCompleted":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Entitysynccompleted"},"entitySyncError":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entitysyncerror"},"initialTicketSyncStarted":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Initialticketsyncstarted"},"initialTicketSyncCompleted":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Initialticketsynccompleted"},"initialTicketSyncCount":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Initialticketsynccount"},"initialTicketSyncError":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Initialticketsyncerror"},"syncProgress":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Syncprogress"}},"type":"object","required":["managedTeamKey","active","entitySyncStarted","entitySyncCompleted","entitySyncError","initialTicketSyncStarted","initialTicketSyncCompleted","initialTicketSyncCount","initialTicketSyncError","syncProgress"],"title":"LinkHealth"},"LinkUserRequest":{"properties":{"userId":{"type":"integer","maximum":9.223372036854776e+18,"exclusiveMinimum":0.0,"title":"Userid"}},"type":"object","required":["userId"],"title":"LinkUserRequest","description":"Request to link an M365 user to a Super IT identity."},"LinkUserResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"}},"type":"object","required":["success","message"],"title":"LinkUserResponse","description":"Outcome of a link/unlink attempt.\n\n``success=False`` is a rejected-but-valid attempt (already linked, not a\nteam member); a missing M365 user is a `NotFound` error instead."},"LlmInstructionsUpdateRequest":{"properties":{"llmInstructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Llminstructions"}},"type":"object","required":["llmInstructions"],"title":"LlmInstructionsUpdateRequest"},"LoadSkillInput":{"properties":{"name":{"type":"string","title":"Name"}},"type":"object","required":["name"],"title":"LoadSkillInput"},"LoadSkillOutput":{"properties":{"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"content":{"type":"string","title":"Content"}},"type":"object","required":["slug","name","description","content"],"title":"LoadSkillOutput"},"LoadSkillSchema":{"properties":{"tool":{"type":"string","const":"load_skill","title":"Tool","default":"load_skill"},"description":{"type":"string","title":"Description","default":"Load an agent workflow skill by name"},"input":{"anyOf":[{"$ref":"#/components/schemas/LoadSkillInput"},{"type":"null"}]},"output":{"anyOf":[{"$ref":"#/components/schemas/LoadSkillOutput"},{"type":"null"}]}},"type":"object","title":"LoadSkillSchema"},"LoginRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","minLength":1,"title":"Password"}},"type":"object","required":["email","password"],"title":"LoginRequest","description":"Login request."},"LoginResponse":{"properties":{"user":{"$ref":"#/components/schemas/UserResponse"},"teams":{"items":{"$ref":"#/components/schemas/TeamResponse"},"type":"array","title":"Teams"},"tokens":{"$ref":"#/components/schemas/TokenPair"},"defaultTeamKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Defaultteamkey"},"isFirstLogin":{"type":"boolean","title":"Isfirstlogin","default":false}},"type":"object","required":["user","teams","tokens"],"title":"LoginResponse","description":"Login response with user, teams, and tokens."},"M365GroupResponse":{"properties":{"key":{"type":"string","title":"Key"},"teamKey":{"type":"string","title":"Teamkey"},"microsoftId":{"type":"string","title":"Microsoftid"},"displayName":{"type":"string","title":"Displayname"},"tagSlug":{"type":"string","title":"Tagslug"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"mail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mail"},"mailEnabled":{"type":"boolean","title":"Mailenabled"},"securityEnabled":{"type":"boolean","title":"Securityenabled"},"visibility":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visibility"},"lastSyncedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lastsyncedat"}},"type":"object","required":["key","teamKey","microsoftId","displayName","tagSlug","description","mail","mailEnabled","securityEnabled","visibility","lastSyncedAt"],"title":"M365GroupResponse","description":"Public projection of a stored M365 group."},"M365LicenseItem":{"properties":{"skuId":{"type":"string","title":"Skuid"},"name":{"type":"string","title":"Name"},"state":{"type":"string","title":"State"}},"type":"object","required":["skuId","name","state"],"title":"M365LicenseItem","description":"One M365 SKU assignment, with a tenant-specific display label."},"M365LinkedAccount":{"properties":{"m365UserId":{"type":"integer","title":"M365Userid"},"displayName":{"type":"string","title":"Displayname","description":"Microsoft directory account label, including qualifiers."},"mail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mail","description":"Mailbox address from Microsoft; null when absent."},"userPrincipalName":{"type":"string","title":"Userprincipalname","description":"Microsoft sign-in name (UPN), not necessarily a mailbox address."}},"type":"object","required":["m365UserId","displayName","mail","userPrincipalName"],"title":"M365LinkedAccount","description":"Directory account linked to a person; address roles remain distinct."},"M365MatchItem":{"properties":{"m365UserId":{"type":"integer","title":"M365Userid"},"displayName":{"type":"string","title":"Displayname","description":"Microsoft directory account label, including qualifiers."},"mail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mail","description":"Mailbox address from Microsoft; null when absent."},"userPrincipalName":{"type":"string","title":"Userprincipalname","description":"Microsoft sign-in name (UPN), not necessarily a mailbox address."},"accountEnabled":{"type":"boolean","title":"Accountenabled"},"linkedToUserId":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Linkedtouserid"},"licenses":{"anyOf":[{"items":{"$ref":"#/components/schemas/M365LicenseItem"},"type":"array"},{"type":"null"}],"title":"Licenses"}},"type":"object","required":["m365UserId","displayName","mail","userPrincipalName","accountEnabled","linkedToUserId"],"title":"M365MatchItem","description":"A potential M365 match for an internal user."},"M365MatchListResponse":{"properties":{"count":{"type":"integer","title":"Count"},"page":{"type":"integer","title":"Page"},"pageSize":{"type":"integer","title":"Pagesize"},"totalPages":{"type":"integer","title":"Totalpages"},"results":{"items":{"$ref":"#/components/schemas/M365MatchItem"},"type":"array","title":"Results"},"licenseDataIncomplete":{"type":"boolean","title":"Licensedataincomplete","default":false}},"type":"object","required":["count","page","pageSize","totalPages","results"],"title":"M365MatchListResponse"},"M365OAuthInitiateRequest":{"properties":{"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"}},"type":"object","title":"M365OAuthInitiateRequest","description":"Request to initiate M365 OAuth flow."},"M365OAuthInitiateResponse":{"properties":{"redirect_url":{"type":"string","title":"Redirect Url"},"state":{"type":"string","title":"State"}},"type":"object","required":["redirect_url","state"],"title":"M365OAuthInitiateResponse","description":"Response with OAuth redirect URL and state."},"M365UserResponse":{"properties":{"key":{"type":"string","title":"Key"},"teamKey":{"type":"string","title":"Teamkey"},"microsoftId":{"type":"string","title":"Microsoftid"},"userPrincipalName":{"type":"string","title":"Userprincipalname"},"displayName":{"type":"string","title":"Displayname"},"mail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mail"},"givenName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Givenname"},"surname":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Surname"},"jobTitle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Jobtitle"},"department":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department"},"officeLocation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Officelocation"},"accountEnabled":{"type":"boolean","title":"Accountenabled"},"lastSyncedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lastsyncedat"}},"type":"object","required":["key","teamKey","microsoftId","userPrincipalName","displayName","mail","givenName","surname","jobTitle","department","officeLocation","accountEnabled","lastSyncedAt"],"title":"M365UserResponse","description":"Public projection of a stored M365 user."},"ManagedBlocklistTeam":{"properties":{"teamKey":{"type":"string","title":"Teamkey"},"teamName":{"type":"string","title":"Teamname"},"state":{"type":"string","enum":["ok","missing","unavailable"],"title":"State"},"blockedFields":{"anyOf":[{"items":{"$ref":"#/components/schemas/TriageField"},"type":"array"},{"type":"null"}],"title":"Blockedfields"},"overrideBoardCount":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Overrideboardcount"}},"type":"object","required":["teamKey","teamName","state"],"title":"ManagedBlocklistTeam","description":"One managed team's current blocklist, for the picker and warning."},"ManagedPushResult":{"properties":{"teamKey":{"type":"string","title":"Teamkey"},"status":{"type":"string","enum":["updated","unchanged","failed"],"title":"Status"},"boardsOverwritten":{"type":"integer","title":"Boardsoverwritten","default":0},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["teamKey","status"],"title":"ManagedPushResult"},"ManagedTeamAccess":{"properties":{"teamKey":{"type":"string","title":"Teamkey"},"membershipKey":{"type":"string","title":"Membershipkey"},"role":{"type":"string","title":"Role"}},"type":"object","required":["teamKey","membershipKey","role"],"title":"ManagedTeamAccess"},"ManagedTeamItem":{"properties":{"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"}},"type":"object","required":["key","name","slug"],"title":"ManagedTeamItem","description":"Managed team linked to a PSA connection."},"MemberLinkResponse":{"properties":{"key":{"type":"string","title":"Key"},"externalUserKey":{"type":"string","title":"Externaluserkey"},"externalUserName":{"type":"string","title":"Externalusername"},"externalUserEmail":{"type":"string","title":"Externaluseremail"},"member":{"$ref":"#/components/schemas/MemberResponse"}},"type":"object","required":["key","externalUserKey","externalUserName","externalUserEmail","member"],"title":"MemberLinkResponse","description":"PSA external user linked to a team member."},"MemberResponse":{"properties":{"role":{"$ref":"#/components/schemas/MembershipRole"},"user":{"$ref":"#/components/schemas/UserResponse"}},"type":"object","required":["role","user"],"title":"MemberResponse","description":"Membership with nested user."},"MembershipResponse":{"properties":{"key":{"type":"string","title":"Key"},"teamKey":{"type":"string","title":"Teamkey"},"userKey":{"type":"string","title":"Userkey"},"role":{"$ref":"#/components/schemas/MembershipRole"}},"type":"object","required":["key","teamKey","userKey","role"],"title":"MembershipResponse","description":"Membership data for API responses."},"MembershipRole":{"type":"string","enum":["admin","engineer","user","system","inactive"],"title":"MembershipRole","description":"Supported membership roles."},"MemoryBucket":{"properties":{"bucket":{"type":"string","format":"date-time","title":"Bucket"},"samples":{"type":"integer","title":"Samples"},"usedAvg":{"type":"number","title":"Usedavg"},"usedMax":{"type":"number","title":"Usedmax"},"total":{"type":"number","title":"Total"},"swapUsedAvg":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Swapusedavg"},"swapTotal":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Swaptotal"}},"type":"object","required":["bucket","samples","usedAvg","usedMax","total","swapUsedAvg","swapTotal"],"title":"MemoryBucket"},"Message":{"properties":{"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"key":{"type":"string","maxLength":12,"title":"Key"},"chat_id":{"type":"integer","title":"Chat Id"},"message_type":{"type":"string","maxLength":50,"title":"Message Type"},"content":{"type":"string","title":"Content","default":"{}"},"membership_key":{"anyOf":[{"type":"string","maxLength":12},{"type":"null"}],"title":"Membership Key"},"attachment_keys":{"items":{"type":"string"},"type":"array","title":"Attachment Keys"},"supports_user_input":{"type":"boolean","title":"Supports User Input","default":false},"session_key":{"anyOf":[{"type":"string","maxLength":12},{"type":"null"}],"title":"Session Key","description":"Verified session key if user selected session when sending message"},"tool_mode":{"type":"string","maxLength":16,"title":"Tool Mode","description":"AI agent tool mode for this message: 'team_only' or 'msp_wide'","default":"team_only"},"processed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Processed At"},"input_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Input Tokens"},"output_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Tokens"},"total_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Tokens"},"model_name":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Model Name"}},"type":"object","required":["chat_id","message_type"],"title":"Message","description":"Message model in comms schema.\n\nRepresents a single message in a chat conversation.\nUses discriminator pattern via message_type field."},"MetricSeries":{"properties":{"columns":{"items":{"type":"string"},"type":"array","title":"Columns"},"rows":{"items":{"items":{},"type":"array"},"type":"array","title":"Rows"}},"type":"object","required":["columns","rows"],"title":"MetricSeries"},"MetricsResponse":{"properties":{"entityKey":{"type":"string","title":"Entitykey"},"timeRange":{"type":"string","title":"Timerange"},"cpu":{"anyOf":[{"items":{"$ref":"#/components/schemas/CpuBucket"},"type":"array"},{"type":"null"}],"title":"Cpu"},"memory":{"anyOf":[{"items":{"$ref":"#/components/schemas/MemoryBucket"},"type":"array"},{"type":"null"}],"title":"Memory"},"disk":{"anyOf":[{"items":{"$ref":"#/components/schemas/DiskBucket"},"type":"array"},{"type":"null"}],"title":"Disk"},"diskIo":{"anyOf":[{"items":{"$ref":"#/components/schemas/DiskIOBucket"},"type":"array"},{"type":"null"}],"title":"Diskio"},"wifi":{"anyOf":[{"items":{"$ref":"#/components/schemas/WifiBucket"},"type":"array"},{"type":"null"}],"title":"Wifi"},"network":{"anyOf":[{"items":{"$ref":"#/components/schemas/NetworkBucket"},"type":"array"},{"type":"null"}],"title":"Network"}},"type":"object","required":["entityKey","timeRange"],"title":"MetricsResponse"},"MspPortfolioAnalysis":{"properties":{"generatedAt":{"type":"string","format":"date-time","title":"Generatedat"},"periodFrom":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Periodfrom"},"periodTo":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Periodto"},"costPerHour":{"type":"number","title":"Costperhour"},"managedTeamCount":{"type":"integer","title":"Managedteamcount"},"totalTickets":{"type":"integer","title":"Totaltickets"},"totalHoursLogged":{"type":"number","title":"Totalhourslogged"},"hoursSavable":{"type":"number","title":"Hourssavable"},"costSaving":{"type":"number","title":"Costsaving"},"coverage":{"$ref":"#/components/schemas/ReportCoverage"},"resolutionBreakdown":{"items":{"$ref":"#/components/schemas/ResolutionBreakdownItem"},"type":"array","title":"Resolutionbreakdown"},"automationBreakdown":{"items":{"$ref":"#/components/schemas/AutomationBreakdownItem"},"type":"array","title":"Automationbreakdown"},"tickets":{"items":{"$ref":"#/components/schemas/PortfolioReportTicket"},"type":"array","title":"Tickets"},"teams":{"items":{"$ref":"#/components/schemas/MspPortfolioTeamRow"},"type":"array","title":"Teams"}},"type":"object","required":["generatedAt","periodFrom","periodTo","costPerHour","managedTeamCount","totalTickets","totalHoursLogged","hoursSavable","costSaving","coverage","resolutionBreakdown","automationBreakdown","tickets","teams"],"title":"MspPortfolioAnalysis"},"MspPortfolioTeamRow":{"properties":{"teamKey":{"type":"string","title":"Teamkey"},"teamName":{"type":"string","title":"Teamname"},"ticketCount":{"type":"integer","title":"Ticketcount"},"hoursSavable":{"type":"number","title":"Hourssavable"},"costSaving":{"type":"number","title":"Costsaving"},"coveragePercent":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Coveragepercent"}},"type":"object","required":["teamKey","teamName","ticketCount","hoursSavable","costSaving","coveragePercent"],"title":"MspPortfolioTeamRow","description":"One managed team's roll-up for the portfolio breakdown table.\n\n``coverage_percent`` is None when no tickets have been analysed —\n0/0 has no defined value and 0% would assert something false."},"NetworkBucket":{"properties":{"bucket":{"type":"string","format":"date-time","title":"Bucket"},"samples":{"type":"integer","title":"Samples"},"interfaceName":{"type":"string","title":"Interfacename"},"bytesSentDelta":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bytessentdelta"},"bytesRecvDelta":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bytesrecvdelta"},"packetsSentDelta":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Packetssentdelta"},"packetsRecvDelta":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Packetsrecvdelta"},"errorsSentDelta":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Errorssentdelta"},"errorsRecvDelta":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Errorsrecvdelta"}},"type":"object","required":["bucket","samples","interfaceName","bytesSentDelta","bytesRecvDelta","packetsSentDelta","packetsRecvDelta","errorsSentDelta","errorsRecvDelta"],"title":"NetworkBucket","description":"One interface's traffic DURING one bucket. NOT a cumulative counter.\n\nEvery other bucket here is a GAUGE: ``usage_avg``/``used_max`` summarise a\nvalue that was true at each sample, and reading one in isolation is\nmeaningful. Network is the exception. The agent reports six MONOTONIC\ncounters per interface -- bytes/packets/errors since boot -- so the raw\nreading answers no question anyone asks: \"how much did this device send\ntoday\" is a difference between two of them, and the sequence resets to\nzero on every reboot.\n\n``mesh.rollup_{5m,1h}_network`` therefore stores a SUM OF PER-SAMPLE\nDELTAS: for each bucket, how much each counter ADVANCED while that bucket\nwas open. The ``_delta`` suffix on every field below is that distinction\nand is the reason the fields are not named after the rollup columns they\ncome from -- a ``bytesSent`` in an API response reads as \"the counter\",\nand a consumer summing a series of those, or plotting one as a level,\nwould be wrong in a way nothing else would catch.\n\nTwo consequences worth stating, because they are what a reader who has\nassumed \"counter\" gets wrong:\n\n- values across buckets are ADDITIVE. Traffic over a range is the SUM of\n  its buckets, never ``last - first`` and never ``max``;\n- a value may be SMALLER than the bucket before it, and that is not a\n  reset or a bug -- it is simply a quieter five minutes.\n\nNULL rather than 0 when the agent supplied no usable counter for a whole\nbucket: 0 is a real reading (an adapter that has errored nothing), so the\ntwo must stay distinguishable. See ``_counter`` in\n``srv.mesh.services.metrics``."},"NodeDetailResponse":{"properties":{"node":{"$ref":"#/components/schemas/GraphNode"},"neighbors":{"items":{"$ref":"#/components/schemas/GraphNode"},"type":"array","title":"Neighbors"},"edges":{"items":{"$ref":"#/components/schemas/GraphEdge"},"type":"array","title":"Edges"}},"type":"object","required":["node","neighbors","edges"],"title":"NodeDetailResponse"},"NoneTagMatcher":{"properties":{"tag":{"type":"string","const":"none","title":"Tag"}},"type":"object","required":["tag"],"title":"NoneTagMatcher","description":"Match unconditionally — no tag required.\n\nEvaluated by ``_matches`` (services/authorization.py) as an unconditional\n``True``, so it means opposite things depending on which field it's used\nin: as a requester/target matcher it means \"anyone\" (no restriction); as\nan approver it means \"no approval needed\" (self-service). The UI labels\nit accordingly per field (``TagMatcherEditor.tsx``'s ``REQUESTER_MODES``\nvs ``APPROVER_MODES``) rather than showing one generic label."},"NoteAddDispatchingData":{"properties":{"event_type":{"type":"string","const":"note_add_dispatching","title":"Event Type","default":"note_add_dispatching"}},"type":"object","title":"NoteAddDispatchingData","description":"Durable claim written before an editable placeholder API call."},"NoteAddRequestedData":{"properties":{"event_type":{"type":"string","const":"note_add_requested","title":"Event Type","default":"note_add_requested"},"description":{"type":"string","title":"Description"},"note":{"type":"string","title":"Note"},"ticket_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticket Key"},"ticket_entity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticket Entity Id"},"pending_ticket_entity_id":{"type":"boolean","title":"Pending Ticket Entity Id","default":false},"chat_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chat Key"},"internal":{"type":"boolean","title":"Internal","default":true},"caller_team_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Caller Team Key"},"customer_facing":{"type":"boolean","title":"Customer Facing","default":false},"retry_count":{"type":"integer","title":"Retry Count","default":0},"previous_errors":{"items":{"$ref":"#/components/schemas/FieldRetryError"},"type":"array","title":"Previous Errors","default":[]},"triage_suggestion_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Triage Suggestion Id"},"placeholder":{"type":"boolean","title":"Placeholder","default":false},"skip_field_decision":{"type":"boolean","title":"Skip Field Decision","default":false},"expected_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Updated At"}},"type":"object","required":["description","note"],"title":"NoteAddRequestedData","description":"Sparky-driven note on an existing or freshly created ticket."},"NoteAddSucceededData":{"properties":{"event_type":{"type":"string","const":"note_add_succeeded","title":"Event Type","default":"note_add_succeeded"},"note_entity_id":{"type":"string","title":"Note Entity Id"},"ticket_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticket Number"}},"type":"object","required":["note_entity_id"],"title":"NoteAddSucceededData"},"NoteUpdateRequestedData":{"properties":{"event_type":{"type":"string","const":"note_update_requested","title":"Event Type","default":"note_update_requested"},"description":{"type":"string","title":"Description"},"note":{"type":"string","title":"Note"},"ticket_key":{"type":"string","title":"Ticket Key"},"ticket_entity_id":{"type":"string","title":"Ticket Entity Id"},"note_entity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note Entity Id"},"pending_note_entity_id":{"type":"boolean","title":"Pending Note Entity Id","default":true},"internal":{"type":"boolean","title":"Internal","default":true},"caller_team_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Caller Team Key"},"customer_facing":{"type":"boolean","title":"Customer Facing","default":false},"fallback_idempotency_key":{"type":"string","title":"Fallback Idempotency Key"}},"type":"object","required":["description","note","ticket_key","ticket_entity_id","fallback_idempotency_key"],"title":"NoteUpdateRequestedData","description":"Replace an editable placeholder once its remote id is known."},"NoteUpdateSucceededData":{"properties":{"event_type":{"type":"string","const":"note_update_succeeded","title":"Event Type","default":"note_update_succeeded"},"note_entity_id":{"type":"string","title":"Note Entity Id"},"ticket_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticket Number"}},"type":"object","required":["note_entity_id"],"title":"NoteUpdateSucceededData"},"NotificationPreferenceResponse":{"properties":{"notificationType":{"type":"string","title":"Notificationtype"},"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["notificationType","enabled"],"title":"NotificationPreferenceResponse","description":"A single notification type and whether the user currently receives it."},"NotificationPreferenceUpdateBody":{"properties":{"notificationType":{"type":"string","title":"Notificationtype"},"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["notificationType","enabled"],"title":"NotificationPreferenceUpdateBody","description":"Request DTO for setting a single notification preference."},"OAuthAccountResponse":{"properties":{"key":{"type":"string","title":"Key"},"provider":{"type":"string","title":"Provider"},"email":{"type":"string","title":"Email"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"avatarUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatarurl"}},"type":"object","required":["key","provider","email","name","avatarUrl"],"title":"OAuthAccountResponse","description":"OAuth account info for display."},"OAuthAppFields":{"properties":{"type":{"type":"string","const":"oauth_app","title":"Type"},"clientId":{"type":"string","title":"Clientid"},"clientSecret":{"type":"string","title":"Clientsecret"},"tenantId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenantid"},"authorizeUrl":{"type":"string","title":"Authorizeurl"},"tokenUrl":{"type":"string","title":"Tokenurl"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"grantType":{"type":"string","title":"Granttype","default":"authorization_code"}},"type":"object","required":["type","clientId","clientSecret","authorizeUrl","tokenUrl","scopes"],"title":"OAuthAppFields"},"OAuthExchangeRequest":{"properties":{"code":{"type":"string","title":"Code"}},"type":"object","required":["code"],"title":"OAuthExchangeRequest","description":"Request to exchange one-time code for tokens."},"OAuthExchangeResponse":{"properties":{"access":{"type":"string","title":"Access"},"refresh":{"type":"string","title":"Refresh"},"userKey":{"type":"string","title":"Userkey"},"isNewUser":{"type":"boolean","title":"Isnewuser"},"isFirstLogin":{"type":"boolean","title":"Isfirstlogin","default":false},"defaultTeamKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Defaultteamkey"}},"type":"object","required":["access","refresh","userKey","isNewUser"],"title":"OAuthExchangeResponse","description":"Response with JWT tokens after OAuth."},"OAuthInitiateBody":{"properties":{"credentialName":{"type":"string","maxLength":255,"minLength":1,"pattern":".*[A-Za-z0-9].*","title":"Credentialname"},"provider":{"type":"string","enum":["azuread-oauth2","microsoft-graph"],"title":"Provider"},"scopes":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Scopes"},"chatKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chatkey"},"credentialKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Credentialkey"}},"additionalProperties":false,"type":"object","required":["credentialName","provider","scopes"],"title":"OAuthInitiateBody"},"OAuthInitiateResponse":{"properties":{"redirectUrl":{"type":"string","title":"Redirecturl"},"state":{"type":"string","title":"State"}},"type":"object","required":["redirectUrl","state"],"title":"OAuthInitiateResponse"},"OAuthLinkVerifyRequest":{"properties":{"token":{"type":"string","title":"Token"}},"type":"object","required":["token"],"title":"OAuthLinkVerifyRequest","description":"Request to verify account linking via email token."},"OAuthProvider":{"type":"string","enum":["google","microsoft"],"title":"OAuthProvider","description":"Supported OAuth providers."},"OnboardingStep":{"properties":{"key":{"$ref":"#/components/schemas/OnboardingStepKey"},"label":{"type":"string","title":"Label"},"status":{"$ref":"#/components/schemas/OnboardingStepStatus"},"missing":{"items":{"type":"string"},"type":"array","title":"Missing"},"targetTeamKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Targetteamkey"}},"additionalProperties":false,"type":"object","required":["key","label","status"],"title":"OnboardingStep","description":"One checklist row, shared verbatim by the card and the onboarding chat.\n\n``missing`` is short human text naming what still has to happen;\n``target_team_key`` is the managed team the step is about when one can be\nidentified, so a consumer can say which team rather than ask."},"OnboardingStepKey":{"type":"string","enum":["install_agent","connect_psa","setup_managed_team","setup_ticket_automation"],"title":"OnboardingStepKey","description":"The four checklist steps, in the order the card and Sparky present them."},"OnboardingStepStatus":{"type":"string","enum":["complete","in_progress","blocked","not_started"]},"OpenHandoffResponse":{"properties":{"chat_key":{"type":"string","title":"Chat Key"}},"type":"object","required":["chat_key"],"title":"OpenHandoffResponse"},"OperationFailedData":{"properties":{"event_type":{"type":"string","enum":["ticket_create_failed","note_add_failed","note_update_failed","engineer_note_add_failed","ticket_update_failed","time_entry_add_failed"],"title":"Event Type"},"error":{"type":"string","title":"Error"},"decision":{"anyOf":[{"$ref":"#/components/schemas/TicketFieldDecision"},{"type":"null"}]}},"type":"object","required":["event_type","error"],"title":"OperationFailedData"},"OrganizationTeamLinkResponse":{"properties":{"id":{"type":"integer","title":"Id"},"organizationId":{"type":"integer","title":"Organizationid"},"organizationName":{"type":"string","title":"Organizationname"},"organizationExternalId":{"type":"string","title":"Organizationexternalid"},"managedTeamKey":{"type":"string","title":"Managedteamkey"},"managedTeamName":{"type":"string","title":"Managedteamname"},"managedTeamSlug":{"type":"string","title":"Managedteamslug"},"connectionName":{"type":"string","title":"Connectionname"},"psaType":{"type":"string","enum":["superit","connectwise","halo","accelo","autotask"],"title":"Psatype"},"isActive":{"type":"boolean","title":"Isactive"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"},"userCount":{"type":"integer","title":"Usercount"},"ticketCount":{"type":"integer","title":"Ticketcount"}},"type":"object","required":["id","organizationId","organizationName","organizationExternalId","managedTeamKey","managedTeamName","managedTeamSlug","connectionName","psaType","isActive","createdAt","userCount","ticketCount"],"title":"OrganizationTeamLinkResponse","description":"Organization team link item."},"OutputSizes":{"properties":{"stdout":{"$ref":"#/components/schemas/StreamSizes"},"stderr":{"$ref":"#/components/schemas/StreamSizes"}},"type":"object","required":["stdout","stderr"],"title":"OutputSizes"},"OutstandingSetupItem":{"properties":{"status":{"$ref":"#/components/schemas/OutstandingSetupItemStatus"},"reason":{"$ref":"#/components/schemas/SetupReasonCode"},"affectedCount":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Affectedcount"},"remediation":{"$ref":"#/components/schemas/Remediation"}},"additionalProperties":false,"type":"object","required":["status","reason","remediation"],"title":"OutstandingSetupItem","description":"An incomplete check with one primary reason and remediation state."},"OutstandingSetupItemStatus":{"type":"string","enum":["not_started","in_progress","blocked"]},"PSAIntegrationStatusResponse":{"properties":{"psa_type":{"type":"string","enum":["connectwise","halo","accelo","autotask","superit"],"title":"Psa Type"},"connection_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Connection Name"},"api_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Url"},"last_sync_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Sync At"},"last_sync_status":{"type":"string","enum":["pending","in_progress","completed","error","cancelled"],"title":"Last Sync Status"},"sync_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sync Error"},"user_count":{"type":"integer","title":"User Count","default":0},"connection_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Connection Key"},"entity_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Key"}},"type":"object","required":["psa_type","connection_name","api_url","last_sync_at","last_sync_status","sync_error"],"title":"PSAIntegrationStatusResponse","description":"Response schema for PSA integration status."},"PaginatedResponse_Agent_":{"properties":{"count":{"type":"integer","title":"Count"},"page":{"type":"integer","title":"Page"},"pageSize":{"type":"integer","title":"Pagesize"},"totalPages":{"type":"integer","title":"Totalpages"},"results":{"items":{"$ref":"#/components/schemas/Agent"},"type":"array","title":"Results"}},"type":"object","required":["count","page","pageSize","totalPages","results"],"title":"PaginatedResponse[Agent]"},"PaginatedResponse_CommandExecutionDetail_":{"properties":{"count":{"type":"integer","title":"Count"},"page":{"type":"integer","title":"Page"},"pageSize":{"type":"integer","title":"Pagesize"},"totalPages":{"type":"integer","title":"Totalpages"},"results":{"items":{"$ref":"#/components/schemas/CommandExecutionDetail"},"type":"array","title":"Results"}},"type":"object","required":["count","page","pageSize","totalPages","results"],"title":"PaginatedResponse[CommandExecutionDetail]"},"PaginatedResponse_PsaMatchItem_":{"properties":{"count":{"type":"integer","title":"Count"},"page":{"type":"integer","title":"Page"},"pageSize":{"type":"integer","title":"Pagesize"},"totalPages":{"type":"integer","title":"Totalpages"},"results":{"items":{"$ref":"#/components/schemas/PsaMatchItem"},"type":"array","title":"Results"}},"type":"object","required":["count","page","pageSize","totalPages","results"],"title":"PaginatedResponse[PsaMatchItem]"},"PaginatedResponse_StaffUserItem_":{"properties":{"count":{"type":"integer","title":"Count"},"page":{"type":"integer","title":"Page"},"pageSize":{"type":"integer","title":"Pagesize"},"totalPages":{"type":"integer","title":"Totalpages"},"results":{"items":{"$ref":"#/components/schemas/StaffUserItem"},"type":"array","title":"Results"}},"type":"object","required":["count","page","pageSize","totalPages","results"],"title":"PaginatedResponse[StaffUserItem]"},"PasswordResetConfirmRequest":{"properties":{"token":{"type":"string","minLength":1,"title":"Token"},"newPassword":{"type":"string","minLength":8,"title":"Newpassword"}},"type":"object","required":["token","newPassword"],"title":"PasswordResetConfirmRequest","description":"Confirm password reset with token + new password."},"PasswordResetRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"redirect":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Redirect"}},"type":"object","required":["email"],"title":"PasswordResetRequest","description":"Password reset request."},"PasswordResetResponse":{"properties":{"status":{"type":"string","title":"Status","default":"ok"}},"type":"object","title":"PasswordResetResponse","description":"Password reset response."},"PatternPolicyCreateBody":{"properties":{"group":{"anyOf":[{"type":"string","enum":["powershell_helpers_formatting","networking_connectivity","security_device_trust","locale_time_power","system_hardware","processes_services_event_logs","files_registry","identity_sessions_policy","printing","storage","software_updates","scheduled_tasks"]},{"type":"null"}],"title":"Group"},"policyType":{"type":"string","const":"pattern","title":"Policytype","default":"pattern"},"decision":{"type":"string","enum":["allow","deny","needs_approval"],"title":"Decision"},"operatingSystem":{"type":"string","enum":["windows","linux","darwin"],"title":"Operatingsystem"},"pattern":{"type":"string","maxLength":1000,"minLength":1,"pattern":"^[^\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x9F]*$","title":"Pattern"},"priority":{"anyOf":[{"type":"integer","maximum":2147483647.0,"minimum":0.0},{"type":"null"}],"title":"Priority"},"description":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Description"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["decision","operatingSystem","pattern"],"title":"PatternPolicyCreateBody","description":"Create a team pattern policy."},"PermissionDeniedView":{"properties":{"kind":{"type":"string","const":"permission_denied","title":"Kind","default":"permission_denied"},"executionKey":{"type":"string","title":"Executionkey"},"actionName":{"type":"string","title":"Actionname"},"requester":{"$ref":"#/components/schemas/ActionAccessContact"}},"type":"object","required":["executionKey","actionName","requester"],"title":"PermissionDeniedView"},"PlanChangeQuoteResponse":{"properties":{"key":{"type":"string","title":"Key"},"planName":{"type":"string","title":"Planname"},"direction":{"type":"string","title":"Direction"},"amountDue":{"type":"integer","title":"Amountdue"},"currency":{"type":"string","title":"Currency"},"monthlyPriceCents":{"type":"integer","title":"Monthlypricecents"},"monthlyCredits":{"type":"integer","title":"Monthlycredits"},"additionalCredits":{"type":"integer","title":"Additionalcredits"},"effectiveAt":{"type":"string","format":"date-time","title":"Effectiveat"},"expiresAt":{"type":"string","format":"date-time","title":"Expiresat"}},"type":"object","required":["key","planName","direction","amountDue","currency","monthlyPriceCents","monthlyCredits","additionalCredits","effectiveAt","expiresAt"],"title":"PlanChangeQuoteResponse"},"PlanChangeRequest":{"properties":{"planKey":{"type":"string","title":"Plankey"}},"type":"object","required":["planKey"],"title":"PlanChangeRequest"},"PlanChangeResultResponse":{"properties":{"state":{"type":"string","title":"State"}},"type":"object","required":["state"],"title":"PlanChangeResultResponse"},"PlanChangeStatusResponse":{"properties":{"eligible":{"type":"boolean","title":"Eligible"},"reason":{"type":"string","title":"Reason","default":""},"pendingPlan":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pendingplan"},"effectiveAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Effectiveat"},"canCancel":{"type":"boolean","title":"Cancancel","default":false}},"type":"object","required":["eligible"],"title":"PlanChangeStatusResponse"},"PlatformAsset":{"properties":{"url":{"type":"string","title":"Url"},"sha256":{"type":"string","title":"Sha256"}},"type":"object","required":["url","sha256"],"title":"PlatformAsset","description":"Single platform installer asset."},"Platforms":{"properties":{"windows":{"$ref":"#/components/schemas/WindowsPlatforms"}},"type":"object","required":["windows"],"title":"Platforms","description":"All platform assets."},"PodTicketRef":{"properties":{"teamKey":{"type":"string","title":"Teamkey"},"ticketKey":{"type":"string","title":"Ticketkey"}},"type":"object","required":["teamKey","ticketKey"],"title":"PodTicketRef","description":"Keys only — the pod then reads the ticket through ``get_team_ticket``."},"PolicyDecision":{"type":"string","enum":["allow","deny","needs_approval"],"title":"PolicyDecision"},"PolicyDetail":{"properties":{"group":{"anyOf":[{"type":"string","enum":["powershell_helpers_formatting","networking_connectivity","security_device_trust","locale_time_power","system_hardware","processes_services_event_logs","files_registry","identity_sessions_policy","printing","storage","software_updates","scheduled_tasks"]},{"type":"null"}],"title":"Group"},"key":{"type":"string","title":"Key"},"policyType":{"type":"string","enum":["cmdlet","pattern"],"title":"Policytype"},"source":{"type":"string","enum":["global","team"],"title":"Source"},"decision":{"type":"string","enum":["allow","deny","needs_approval"],"title":"Decision"},"isActive":{"type":"boolean","title":"Isactive"},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Createdat"},"updatedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updatedat"},"cmdletName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cmdletname"},"module":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Module"},"verb":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verb"},"noun":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Noun"},"operatingSystem":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Operatingsystem"},"pattern":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pattern"},"priority":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Priority"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"securityNotes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Securitynotes"},"isSystemLocked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Issystemlocked"},"override":{"anyOf":[{"$ref":"#/components/schemas/PolicyOverrideRef"},{"type":"null"}]},"loosens":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Loosens"},"loosenedBy":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Loosenedby"}},"type":"object","required":["key","policyType","source","decision","isActive"],"title":"PolicyDetail","description":"Unified policy item — represents the effective policy for a given key."},"PolicyListResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/PolicyDetail"},"type":"array","title":"Results"},"count":{"type":"integer","title":"Count"},"page":{"type":"integer","title":"Page"},"pageSize":{"type":"integer","title":"Pagesize"},"totalPages":{"type":"integer","title":"Totalpages"},"counts":{"$ref":"#/components/schemas/PolicyOverrideStateCounts","default":{"total":0,"lockedGlobal":0,"overridableGlobal":0,"teamOverride":0,"teamOnly":0}}},"type":"object","required":["results","count","page","pageSize","totalPages"],"title":"PolicyListResponse","description":"Paginated policy list."},"PolicyOverrideRef":{"properties":{"source":{"type":"string","const":"global","title":"Source","default":"global"},"decision":{"type":"string","enum":["allow","deny","needs_approval"],"title":"Decision"},"isSystemLocked":{"type":"boolean","title":"Issystemlocked"}},"type":"object","required":["decision","isSystemLocked"],"title":"PolicyOverrideRef","description":"Reference to the global rule a team rule shadows."},"PolicyOverrideState":{"type":"string","enum":["locked_global","overridable_global","team_override","team_only"],"title":"PolicyOverrideState"},"PolicyOverrideStateCounts":{"properties":{"total":{"type":"integer","title":"Total","default":0},"lockedGlobal":{"type":"integer","title":"Lockedglobal","default":0},"overridableGlobal":{"type":"integer","title":"Overridableglobal","default":0},"teamOverride":{"type":"integer","title":"Teamoverride","default":0},"teamOnly":{"type":"integer","title":"Teamonly","default":0}},"type":"object","title":"PolicyOverrideStateCounts","description":"Counts per override state for chip badges."},"PolicyType":{"type":"string","enum":["cmdlet","pattern"],"title":"PolicyType"},"PolicyUpdateBody":{"properties":{"group":{"anyOf":[{"type":"string","enum":["powershell_helpers_formatting","networking_connectivity","security_device_trust","locale_time_power","system_hardware","processes_services_event_logs","files_registry","identity_sessions_policy","printing","storage","software_updates","scheduled_tasks"]},{"type":"null"}],"title":"Group"},"decision":{"anyOf":[{"type":"string","enum":["allow","deny","needs_approval"]},{"type":"null"}],"title":"Decision"},"description":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Description"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"priority":{"anyOf":[{"type":"integer","maximum":2147483647.0,"minimum":0.0},{"type":"null"}],"title":"Priority"},"isActive":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Isactive"}},"type":"object","title":"PolicyUpdateBody","description":"Partial update for a team policy."},"PolicyValidateBody":{"properties":{"command":{"type":"string","maxLength":100000,"minLength":1,"title":"Command"},"operatingSystem":{"type":"string","enum":["windows","linux","darwin"],"title":"Operatingsystem"}},"type":"object","required":["command","operatingSystem"],"title":"PolicyValidateBody","description":"Request body for dry-running a script against team policies."},"PolicyValidateResponse":{"properties":{"status":{"type":"string","enum":["approved","denied","pending"],"title":"Status"},"reason":{"type":"string","title":"Reason"},"astBlocked":{"type":"boolean","title":"Astblocked","default":false},"matchedStep":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Matchedstep"},"parsedCmdlets":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Parsedcmdlets"},"astBlocks":{"anyOf":[{"items":{"$ref":"#/components/schemas/AstBlock"},"type":"array"},{"type":"null"}],"title":"Astblocks"},"evaluationOrder":{"items":{"$ref":"#/components/schemas/EvaluationStep"},"type":"array","title":"Evaluationorder","default":[]}},"type":"object","required":["status","reason"],"title":"PolicyValidateResponse","description":"Result of a dry-run validation."},"PortalSessionResponse":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"PortalSessionResponse","description":"Stripe Billing Portal session redirect target."},"PortfolioReportTicket":{"properties":{"ticketKey":{"type":"string","title":"Ticketkey"},"ticketNumber":{"type":"string","title":"Ticketnumber"},"summary":{"type":"string","title":"Summary"},"automation":{"type":"string","title":"Automation"},"hoursLogged":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Hourslogged"},"hoursSavable":{"type":"number","title":"Hourssavable"},"costSaving":{"type":"number","title":"Costsaving"},"teamKey":{"type":"string","title":"Teamkey"},"teamName":{"type":"string","title":"Teamname"}},"type":"object","required":["ticketKey","ticketNumber","summary","automation","hoursLogged","hoursSavable","costSaving","teamKey","teamName"],"title":"PortfolioReportTicket","description":"A portfolio ticket, tagged with the managed team that owns it.\n\nThe portfolio table spans teams, so each row carries its own team for\nthe ticket deep-link and the Team column."},"ProfileUpdateRequest":{"properties":{"fullName":{"anyOf":[{"type":"string","maxLength":150,"pattern":"[^\\s]"},{"type":"null"}],"title":"Fullname"},"nickname":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nickname"},"phoneNumber":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phonenumber"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"}},"type":"object","title":"ProfileUpdateRequest","description":"Profile update request."},"PromoteAuthorisationPolicyBody":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"pattern":"^[^\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x9F]*$","title":"Name"}},"additionalProperties":false,"type":"object","required":["name"],"title":"PromoteAuthorisationPolicyBody"},"ProposedChange":{"properties":{"label":{"type":"string","title":"Label"},"before":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Before"},"after":{"type":"string","title":"After"}},"type":"object","required":["label","after"],"title":"ProposedChange","description":"A change the write makes that has no picker, such as the description."},"ProvisionMemberJobResponse":{"properties":{"jobKey":{"type":"string","title":"Jobkey"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["jobKey","total"],"title":"ProvisionMemberJobResponse","description":"Response for provision-member create — job key + resolved team count."},"ProvisionMemberJobStatus":{"properties":{"jobKey":{"type":"string","title":"Jobkey"},"status":{"type":"string","title":"Status"},"email":{"type":"string","title":"Email"},"createdUserKey":{"type":"string","title":"Createduserkey"},"userCreated":{"type":"boolean","title":"Usercreated"},"totalItems":{"type":"integer","title":"Totalitems"},"processedItems":{"type":"integer","title":"Processeditems"},"successCount":{"type":"integer","title":"Successcount"},"skipCount":{"type":"integer","title":"Skipcount"},"errorCount":{"type":"integer","title":"Errorcount"},"progressPercent":{"type":"integer","title":"Progresspercent"},"isFinished":{"type":"boolean","title":"Isfinished"},"errorMessage":{"type":"string","title":"Errormessage"},"outcomes":{"items":{"$ref":"#/components/schemas/TeamProvisionOutcome"},"type":"array","title":"Outcomes"}},"type":"object","required":["jobKey","status","email","createdUserKey","userCreated","totalItems","processedItems","successCount","skipCount","errorCount","progressPercent","isFinished","errorMessage","outcomes"],"title":"ProvisionMemberJobStatus","description":"Full status payload for a member-provisioning job."},"ProvisionMemberRequest":{"properties":{"email":{"type":"string","title":"Email"},"firstName":{"type":"string","maxLength":150,"minLength":1,"pattern":"^[^\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x9F]*$","title":"Firstname"},"lastName":{"type":"string","maxLength":150,"minLength":1,"pattern":"^[^\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x9F]*$","title":"Lastname"},"assignments":{"items":{"$ref":"#/components/schemas/TeamRoleAssignmentInput"},"type":"array","maxItems":500,"title":"Assignments"},"allTeamsRole":{"anyOf":[{"$ref":"#/components/schemas/MembershipRole"},{"type":"null"}]}},"additionalProperties":false,"type":"object","required":["email","firstName","lastName"],"title":"ProvisionMemberRequest","description":"Create one user and grant memberships across the given teams.\n\n``assignments`` are explicit per-team grants. ``all_teams_role``, when\nset, tells the backend to additionally grant that role on every team the\nacting admin may administer (explicit assignments win on overlap). At\nleast one resolved assignment is required."},"PsaActionResponse":{"properties":{"key":{"type":"string","title":"Key"},"psaType":{"$ref":"#/components/schemas/PsaSystem"},"entityId":{"type":"string","title":"Entityid"},"actionType":{"type":"string","title":"Actiontype"},"internal":{"type":"boolean","title":"Internal","default":false},"createdByName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Createdbyname"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"actualHours":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actualhours"},"occurredAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Occurredat"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"},"updatedAt":{"type":"string","format":"date-time","title":"Updatedat"}},"type":"object","required":["key","psaType","entityId","actionType","createdAt","updatedAt"],"title":"PsaActionResponse","description":"Read model for PsaAction — excludes DB internals."},"PsaImportJobResponse":{"properties":{"jobKey":{"type":"string","title":"Jobkey"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["jobKey","total"],"title":"PsaImportJobResponse","description":"Response after queueing a PSA import background job."},"PsaMatchItem":{"properties":{"psaUserId":{"type":"integer","title":"Psauserid"},"psaUserKey":{"type":"string","title":"Psauserkey"},"name":{"type":"string","title":"Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"psaType":{"$ref":"#/components/schemas/PsaSystem"},"psaEntityType":{"type":"string","title":"Psaentitytype"},"psaTeamName":{"type":"string","title":"Psateamname"},"isActive":{"type":"boolean","title":"Isactive"},"isStaff":{"type":"boolean","title":"Isstaff"},"linkedToUserId":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Linkedtouserid"}},"type":"object","required":["psaUserId","psaUserKey","name","email","psaType","psaEntityType","psaTeamName","isActive","isStaff","linkedToUserId"],"title":"PsaMatchItem","description":"A potential PSA match for an internal user."},"PsaProgress":{"properties":{"phase":{"type":"string","enum":["connect","syncing_reference_data","sync_companies","syncing_companies"],"title":"Phase"},"connectionKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Connectionkey"},"psaType":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Psatype"}},"additionalProperties":false,"type":"object","required":["phase"],"title":"PsaProgress","description":"Where the Connect PSA step is, and the connection its action opens.\n\nPhase and destination are decided together so the card cannot show one\nconnection's progress while linking to another's. ``connect`` has no\nconnection: nothing is connected yet."},"PsaSystem":{"type":"string","enum":["halo","connectwise","accelo","autotask","native"],"title":"PsaSystem"},"PsaTeamEntityResponse":{"properties":{"key":{"type":"string","title":"Key"},"entityId":{"type":"string","title":"Entityid"},"name":{"type":"string","title":"Name"},"isActive":{"type":"boolean","title":"Isactive"},"ticketCount":{"type":"integer","title":"Ticketcount"},"userCount":{"type":"integer","title":"Usercount"},"link":{"anyOf":[{"$ref":"#/components/schemas/PsaTeamLinkInfo"},{"type":"null"}]},"raw":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Raw"}},"type":"object","required":["key","entityId","name","isActive","ticketCount","userCount"],"title":"PsaTeamEntityResponse","description":"A single PSA team entity (Halo client / CW company)."},"PsaTeamLinkInfo":{"properties":{"managedTeamKey":{"type":"string","title":"Managedteamkey"},"managedTeamName":{"type":"string","title":"Managedteamname"},"managedTeamSlug":{"type":"string","title":"Managedteamslug"},"entitySyncStatus":{"type":"string","title":"Entitysyncstatus"},"entitySyncError":{"type":"string","title":"Entitysyncerror"},"ticketSyncStatus":{"type":"string","title":"Ticketsyncstatus"},"ticketSyncError":{"type":"string","title":"Ticketsyncerror"},"ticketSyncCompletedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticketsynccompletedat"},"ticketSyncProgress":{"anyOf":[{"$ref":"#/components/schemas/TicketSyncProgress"},{"type":"null"}]}},"type":"object","required":["managedTeamKey","managedTeamName","managedTeamSlug","entitySyncStatus","entitySyncError","ticketSyncStatus","ticketSyncError"],"title":"PsaTeamLinkInfo","description":"Link status for an entity."},"PsaTeamLinkRequest":{"properties":{"linkToTeamKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linktoteamkey"},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config"}},"type":"object","title":"PsaTeamLinkRequest","description":"Request to link a team entity to a managed team."},"PsaTeamLinkResponse":{"properties":{"id":{"type":"integer","title":"Id"},"entityKey":{"type":"string","title":"Entitykey"},"managedTeamName":{"type":"string","title":"Managedteamname"},"created":{"type":"boolean","title":"Created"}},"type":"object","required":["id","entityKey","managedTeamName","created"],"title":"PsaTeamLinkResponse","description":"Response for link/unlink operations."},"PsaTeamListResponse":{"properties":{"count":{"type":"integer","title":"Count"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"pageSize":{"type":"integer","title":"Pagesize"},"totalPages":{"type":"integer","title":"Totalpages"},"stats":{"$ref":"#/components/schemas/PsaTeamStatsResponse"},"results":{"items":{"$ref":"#/components/schemas/PsaTeamEntityResponse"},"type":"array","title":"Results"}},"type":"object","required":["count","total","page","pageSize","totalPages","stats","results"],"title":"PsaTeamListResponse","description":"Paginated list of team entities with stats."},"PsaTeamStatsResponse":{"properties":{"total":{"type":"integer","title":"Total"},"linked":{"type":"integer","title":"Linked"},"unlinked":{"type":"integer","title":"Unlinked"}},"type":"object","required":["total","linked","unlinked"],"title":"PsaTeamStatsResponse","description":"Aggregate stats for team entities."},"PsaTicketDetailResponse":{"properties":{"ticket":{"$ref":"#/components/schemas/PsaTicketResponse"},"triage":{"$ref":"#/components/schemas/TicketTriageResponse"},"actions":{"items":{"$ref":"#/components/schemas/PsaActionResponse"},"type":"array","title":"Actions"},"deepLinkUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Deeplinkurl"},"syncState":{"anyOf":[{"$ref":"#/components/schemas/TicketSyncState"},{"type":"null"}]},"discoveryFinding":{"anyOf":[{"$ref":"#/components/schemas/TicketDiscoveryFindingResponse"},{"type":"null"}]},"allowedRerunFlows":{"items":{"type":"string"},"type":"array","title":"Allowedrerunflows"},"recommendedActions":{"items":{"$ref":"#/components/schemas/RecommendedActionResponse"},"type":"array","title":"Recommendedactions"},"relationships":{"items":{"$ref":"#/components/schemas/TicketRelationshipEntry"},"type":"array","title":"Relationships"}},"type":"object","required":["ticket","triage"],"title":"PsaTicketDetailResponse","description":"Unified ticket detail — ticket + triage + actions."},"PsaTicketResponse":{"properties":{"key":{"type":"string","title":"Key"},"teamKey":{"type":"string","title":"Teamkey"},"psaType":{"$ref":"#/components/schemas/PsaSystem"},"connectionId":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Connectionid"},"entityId":{"type":"string","title":"Entityid"},"ticketNumber":{"type":"string","title":"Ticketnumber"},"summary":{"type":"string","title":"Summary"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"status":{"type":"string","title":"Status"},"statusCategory":{"anyOf":[{"$ref":"#/components/schemas/StatusCategory"},{"type":"null"}]},"priority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Priority"},"analysisState":{"$ref":"#/components/schemas/AnalysisState"},"analysedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Analysedat"},"syncStatus":{"anyOf":[{"$ref":"#/components/schemas/SyncStatus"},{"type":"null"}]},"lastSyncedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Lastsyncedat"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"},"updatedAt":{"type":"string","format":"date-time","title":"Updatedat"},"sourceCreatedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sourcecreatedat"},"sourceUpdatedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sourceupdatedat"},"contentHash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contenthash"},"assignedUserName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assignedusername"},"contactUserName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contactusername"},"contactEmail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contactemail"},"clientName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clientname"},"cwBoardName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cwboardname","deprecated":true},"haloTickettypeName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Halotickettypename","deprecated":true},"haloCategoryNames":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Halocategorynames","deprecated":true},"acceloTypeName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Accelotypename","deprecated":true},"acceloClassName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Acceloclassname","deprecated":true},"psaFields":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/ConnectWisePsaFields"},{"$ref":"#/components/schemas/HaloPsaFields"},{"$ref":"#/components/schemas/AcceloPsaFields"},{"$ref":"#/components/schemas/AutotaskPsaFields"}],"discriminator":{"propertyName":"psaType","mapping":{"accelo":"#/components/schemas/AcceloPsaFields","autotask":"#/components/schemas/AutotaskPsaFields","connectwise":"#/components/schemas/ConnectWisePsaFields","halo":"#/components/schemas/HaloPsaFields"}}},{"type":"null"}],"title":"Psafields"}},"type":"object","required":["key","teamKey","psaType","entityId","ticketNumber","summary","status","analysisState","createdAt","updatedAt"],"title":"PsaTicketResponse","description":"Read model for PsaTicket — excludes DB internals."},"PsaUserListItem":{"properties":{"id":{"type":"integer","title":"Id"},"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"psaType":{"type":"string","title":"Psatype"},"psaEntityType":{"type":"string","title":"Psaentitytype"},"psaTeamName":{"type":"string","title":"Psateamname"},"isActive":{"type":"boolean","title":"Isactive"},"isStaff":{"type":"boolean","title":"Isstaff"}},"type":"object","required":["id","key","name","email","psaType","psaEntityType","psaTeamName","isActive","isStaff"],"title":"PsaUserListItem","description":"PSA user for linking UI — includes PSA team context."},"PublishActionBody":{"properties":{"managedTeamKeys":{"items":{"type":"string"},"type":"array","title":"Managedteamkeys","default":[]}},"additionalProperties":false,"type":"object","title":"PublishActionBody"},"PublishActionResponse":{"properties":{"action":{"$ref":"#/components/schemas/ActionDetail"},"teams":{"items":{"$ref":"#/components/schemas/PublishTeamResult"},"type":"array","title":"Teams","default":[]}},"type":"object","required":["action"],"title":"PublishActionResponse"},"PublishTargetItem":{"properties":{"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"selected":{"type":"boolean","title":"Selected","default":false},"published":{"type":"boolean","title":"Published","default":false},"copyActionKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Copyactionkey"},"credentialsConfigured":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Credentialsconfigured"},"lastRunAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Lastrunat"},"linked":{"type":"boolean","title":"Linked","default":true}},"type":"object","required":["key","name","slug"],"title":"PublishTargetItem"},"PublishTeamResult":{"properties":{"teamKey":{"type":"string","title":"Teamkey"},"status":{"type":"string","enum":["published","failed","retracted"],"title":"Status"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["teamKey","status"],"title":"PublishTeamResult"},"PurchasablePlanResponse":{"properties":{"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"},"credits":{"type":"integer","title":"Credits"},"priceCents":{"type":"integer","title":"Pricecents"}},"type":"object","required":["key","name","credits","priceCents"],"title":"PurchasablePlanResponse","description":"A plan tier the picker offers — priced and sellable via Checkout."},"PushBlockedFieldsRequest":{"properties":{"teamKeys":{"items":{"type":"string"},"type":"array","maxItems":20,"minItems":1,"title":"Teamkeys"},"triageBlockedFields":{"items":{"$ref":"#/components/schemas/TriageField"},"type":"array","title":"Triageblockedfields"}},"type":"object","required":["teamKeys","triageBlockedFields"],"title":"PushBlockedFieldsRequest"},"QuoteRequest":{"properties":{"usdCents":{"type":"integer","multipleOf":1000.0,"maximum":100000.0,"minimum":5000.0,"title":"Usdcents"}},"type":"object","required":["usdCents"],"title":"QuoteRequest"},"RecommendedActionResponse":{"properties":{"key":{"type":"string","title":"Key"},"kind":{"type":"string","title":"Kind"},"status":{"type":"string","title":"Status"},"payload":{"additionalProperties":true,"type":"object","title":"Payload"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"}},"type":"object","required":["key","kind","status","payload","createdAt"],"title":"RecommendedActionResponse","description":"Read model for a recommended action surfaced on the ticket detail."},"RecomputeIDFResponse":{"properties":{"task_id":{"type":"string","title":"Task Id"},"status":{"type":"string","title":"Status"}},"type":"object","required":["task_id","status"],"title":"RecomputeIDFResponse"},"ReferenceDataHealth":{"properties":{"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"lastAttemptAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Lastattemptat"},"syncedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Syncedat"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["status","lastAttemptAt","syncedAt","error"],"title":"ReferenceDataHealth"},"RefreshRequest":{"properties":{"refresh":{"type":"string","minLength":1,"title":"Refresh"}},"type":"object","required":["refresh"],"title":"RefreshRequest","description":"Token refresh request."},"RelatedInsight":{"properties":{"key":{"type":"string","title":"Key"},"title":{"type":"string","title":"Title"},"category":{"type":"string","title":"Category"},"kind":{"type":"string","title":"Kind"},"rationale":{"type":"string","title":"Rationale"}},"type":"object","required":["key","title","category","kind","rationale"],"title":"RelatedInsight","description":"A cross-category insight linked to the one being viewed."},"Remediation":{"type":"string","enum":["available","requires_admin","unavailable"]},"ReportCoverage":{"properties":{"ticketsResolvable":{"type":"integer","title":"Ticketsresolvable"},"totalTickets":{"type":"integer","title":"Totaltickets"},"ratePercent":{"type":"number","title":"Ratepercent"}},"type":"object","required":["ticketsResolvable","totalTickets","ratePercent"],"title":"ReportCoverage"},"ReportTicket":{"properties":{"ticketKey":{"type":"string","title":"Ticketkey"},"ticketNumber":{"type":"string","title":"Ticketnumber"},"summary":{"type":"string","title":"Summary"},"automation":{"type":"string","title":"Automation"},"hoursLogged":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Hourslogged"},"hoursSavable":{"type":"number","title":"Hourssavable"},"costSaving":{"type":"number","title":"Costsaving"}},"type":"object","required":["ticketKey","ticketNumber","summary","automation","hoursLogged","hoursSavable","costSaving"],"title":"ReportTicket"},"RerunAccepted":{"properties":{"workflow_id":{"type":"string","title":"Workflow Id"}},"type":"object","required":["workflow_id"],"title":"RerunAccepted","description":"Response for an accepted re-run — the enqueued workflow id."},"RerunRequest":{"properties":{"flow":{"type":"string","enum":["triage","investigate","analyse"],"title":"Flow"}},"type":"object","required":["flow"],"title":"RerunRequest","description":"Body for a manual agent re-run: which flow to re-run."},"Resolution":{"type":"string","enum":["full","partial","unsure","no"],"title":"Resolution","description":"Whether SuperIT could resolve a ticket like this, given its toolkit."},"ResolutionBreakdownItem":{"properties":{"resolution":{"type":"string","title":"Resolution"},"ticketCount":{"type":"integer","title":"Ticketcount"},"hoursSavable":{"type":"number","title":"Hourssavable"},"percent":{"type":"number","title":"Percent"}},"type":"object","required":["resolution","ticketCount","hoursSavable","percent"],"title":"ResolutionBreakdownItem","description":"Hours savable grouped by Resolution ('full', 'partial', ...)."},"ResourceType":{"type":"string","enum":["device_script","backend_workflow","reference","assets"],"title":"ResourceType"},"RootCauseAnalysis":{"properties":{"rootCauseCategory":{"$ref":"#/components/schemas/RootCauseCategory","description":"Root cause category"},"rootCauseDetail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rootcausedetail","description":"1-2 sentence explanation of the root cause. Omit if insufficient information."},"contributingFactors":{"items":{"type":"string"},"type":"array","title":"Contributingfactors","description":"Other factors that contributed to the issue"},"wasPreventable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Waspreventable","description":"Whether this could have been prevented. Omit if not determinable."},"preventionSuggestion":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preventionsuggestion","description":"How to prevent recurrence, if preventable"}},"type":"object","required":["rootCauseCategory"],"title":"RootCauseAnalysis","description":"Analysis of what caused the issue or triggered the request."},"RootCauseCategory":{"type":"string","enum":["user_error","configuration_issue","software_bug","hardware_failure","network_issue","external_service","capacity_exhaustion","security_incident","change_related","environmental","unknown"],"title":"RootCauseCategory","description":"Category of root cause."},"RotateKeyBody":{"properties":{"expiresInDays":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Expiresindays","default":90}},"type":"object","title":"RotateKeyBody","description":"Request body for issuing an additional credential."},"RuleApproverGroup":{"properties":{"ruleIndex":{"type":"integer","title":"Ruleindex"},"rule":{"$ref":"#/components/schemas/AuthorizationRule"},"contacts":{"$ref":"#/components/schemas/ActionAccessContactList"}},"type":"object","required":["ruleIndex","rule","contacts"],"title":"RuleApproverGroup"},"RunActionBody":{"properties":{"inputs":{"additionalProperties":{"type":"string"},"type":"object","title":"Inputs","default":{}},"target_user_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target User Key"},"mode":{"type":"string","enum":["normal","test"],"title":"Mode","default":"normal"},"source":{"type":"string","enum":["published","draft"],"title":"Source","default":"published"},"approval_inputs":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Approval Inputs"},"run_device_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Run Device Key"},"ticket_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticket Key"}},"type":"object","title":"RunActionBody"},"RunCommandInput":{"properties":{"full_command":{"type":"string","title":"Full Command"},"reason":{"type":"string","title":"Reason"},"risk":{"type":"string","title":"Risk"},"elevated":{"anyOf":[{"type":"string","const":"system"},{"type":"null"}],"title":"Elevated"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"}},"type":"object","required":["full_command","reason","risk"],"title":"RunCommandInput"},"RunCommandSchema":{"properties":{"tool":{"type":"string","const":"run_command","title":"Tool","default":"run_command"},"description":{"type":"string","title":"Description","default":"Run a command on the user's computer"},"requires_session":{"type":"boolean","title":"Requires Session","default":true},"input":{"anyOf":[{"$ref":"#/components/schemas/RunCommandInput"},{"type":"null"}]},"output":{"anyOf":[{"$ref":"#/components/schemas/CommandHandle"},{"type":"null"}]}},"type":"object","title":"RunCommandSchema"},"RunDeviceScriptInput":{"properties":{"article_slug":{"type":"string","title":"Article Slug"},"resource_slug":{"type":"string","title":"Resource Slug"},"parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameters"}},"type":"object","required":["article_slug","resource_slug"],"title":"RunDeviceScriptInput"},"RunDeviceScriptSchema":{"properties":{"tool":{"type":"string","const":"run_device_script","title":"Tool","default":"run_device_script"},"description":{"type":"string","title":"Description","default":"Prepare and execute a KB device script"},"requires_session":{"type":"boolean","title":"Requires Session","default":true},"input":{"anyOf":[{"$ref":"#/components/schemas/RunDeviceScriptInput"},{"type":"null"}]},"output":{"anyOf":[{"$ref":"#/components/schemas/srv__comms__routes__tools__CommandOutput"},{"type":"null"}]}},"type":"object","title":"RunDeviceScriptSchema"},"RunPipelineResponse":{"properties":{"result":{"type":"string","title":"Result","description":"accepted"},"status":{"$ref":"#/components/schemas/TicketAnalysisStatus"}},"type":"object","required":["result","status"],"title":"RunPipelineResponse"},"Runtime":{"type":"string","enum":["powershell","python","playwright"],"title":"Runtime"},"ScopeKey":{"type":"string","maxLength":12,"minLength":1},"ScreenshotInput":{"properties":{"reason":{"type":"string","title":"Reason"}},"type":"object","required":["reason"],"title":"ScreenshotInput"},"ScreenshotUrls":{"properties":{"url":{"type":"string","title":"Url"},"thumb_url":{"type":"string","title":"Thumb Url"}},"type":"object","required":["url","thumb_url"],"title":"ScreenshotUrls","description":"Re-signed view URLs for a single screenshot (refresh route).\n\nSnake_case keys are part of the wire contract — the chat UI reads\n`thumb_url` directly (see RemoteImage.tsx)."},"SearchFtsInput":{"properties":{"query":{"type":"string","title":"Query"},"domains":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Domains"},"limit":{"type":"integer","title":"Limit","default":10}},"type":"object","required":["query"],"title":"SearchFtsInput"},"SearchFtsSchema":{"properties":{"tool":{"type":"string","const":"search_fts","title":"Tool","default":"search_fts"},"description":{"type":"string","title":"Description","default":"Full-text search across all domains"},"input":{"anyOf":[{"$ref":"#/components/schemas/SearchFtsInput"},{"type":"null"}]}},"type":"object","title":"SearchFtsSchema"},"SearchKbInput":{"properties":{"query":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Query"}},"type":"object","title":"SearchKbInput"},"SearchKbSchema":{"properties":{"tool":{"type":"string","const":"search_kb","title":"Tool","default":"search_kb"},"description":{"type":"string","title":"Description","default":"Search knowledge base articles"},"input":{"anyOf":[{"$ref":"#/components/schemas/SearchKbInput"},{"type":"null"}]}},"type":"object","title":"SearchKbSchema"},"SearchResponse":{"properties":{"query":{"type":"string","title":"Query"},"total":{"type":"integer","title":"Total"},"results":{"items":{"$ref":"#/components/schemas/SearchResult"},"type":"array","title":"Results"},"took_ms":{"type":"integer","title":"Took Ms"}},"type":"object","required":["query","total","results","took_ms"],"title":"SearchResponse","description":"Response for search endpoint."},"SearchResult":{"properties":{"domain":{"type":"string","title":"Domain"},"entity_type":{"type":"string","title":"Entity Type"},"entity_id":{"type":"integer","title":"Entity Id"},"entity_key":{"type":"string","title":"Entity Key"},"score":{"type":"number","title":"Score"},"rank":{"type":"integer","title":"Rank"},"snippet":{"type":"string","title":"Snippet"},"title":{"type":"string","title":"Title"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"article":{"anyOf":[{"$ref":"#/components/schemas/Article"},{"type":"null"}]},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","default":[]},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata","default":{}}},"type":"object","required":["domain","entity_type","entity_id","entity_key","score","rank","snippet","title","created_at","updated_at"],"title":"SearchResult","description":"Unified search result across domains."},"SearchStatusResponse":{"properties":{"status":{"type":"string","title":"Status"},"indexed_documents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Indexed Documents"}},"type":"object","required":["status"],"title":"SearchStatusResponse"},"SelfTagMatcher":{"properties":{"tag":{"type":"string","const":"self","title":"Tag"}},"type":"object","required":["tag"],"title":"SelfTagMatcher","description":"Match the requesting user."},"ServerWebSocketEventType":{"type":"string","enum":["chat_state","sparky_typing","active_stream_snapshot","message_added","sparky_stream_snapshot","sparky_complete","sparky_stop","sparky_pending_approval","sparky_error","sparky_update","participant_joined","participant_left","error","feedback_ack","chat_name_updated","session_selected","related_ticket_added","related_ticket_removed","agent_selected","primary_ticket_updated","pending_approvals_updated","auto_approve_updated","explore_updated","user_input_updated","device_link_updated","ui_tour"],"title":"ServerWebSocketEventType","description":"Event types sent from server to client."},"ServiceAccountKeySummary":{"properties":{"key":{"type":"string","title":"Key"},"prefix":{"type":"string","title":"Prefix"},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Createdat"},"expiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expiresat"},"lastUsedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Lastusedat"},"revokedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revokedat"}},"type":"object","required":["key","prefix"],"title":"ServiceAccountKeySummary","description":"A credential, described without any material that could rebuild it."},"ServiceAccountSummary":{"properties":{"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"},"role":{"type":"string","title":"Role"},"allowedScopes":{"items":{"type":"string"},"type":"array","title":"Allowedscopes"},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Createdat"},"revokedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revokedat"},"entraTenantId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entratenantid"},"entraObjectId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entraobjectid"},"entraLastUsedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Entralastusedat"},"connectableTenantId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Connectabletenantid"},"entraConsentUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entraconsenturl"},"keys":{"items":{"$ref":"#/components/schemas/ServiceAccountKeySummary"},"type":"array","title":"Keys"}},"type":"object","required":["key","name","role","allowedScopes"],"title":"ServiceAccountSummary","description":"A service account as listed in team settings."},"ServiceAccountTeamAccess":{"properties":{"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"}},"type":"object","required":["key","name"],"title":"ServiceAccountTeamAccess","description":"A provider-owned managed team and the account's current role."},"ServiceAccountTeamAssignment":{"properties":{"teamKey":{"type":"string","maxLength":12,"minLength":12,"title":"Teamkey"},"role":{"anyOf":[{"type":"string","pattern":"^(admin|engineer)$"},{"type":"null"}],"title":"Role"}},"type":"object","required":["teamKey","role"],"title":"ServiceAccountTeamAssignment","description":"An explicit membership change; null deactivates the membership."},"ServiceProviderSetupAssessment":{"properties":{"teamType":{"type":"string","const":"service-provider","title":"Teamtype","default":"service-provider"},"teamKey":{"type":"string","title":"Teamkey"},"viewerRole":{"$ref":"#/components/schemas/AssessmentViewerRole"},"initialOnboardingStage":{"$ref":"#/components/schemas/InitialOnboardingStage"},"linkedManagedTeamKeys":{"items":{"type":"string"},"type":"array","title":"Linkedmanagedteamkeys"},"syncingManagedTeams":{"type":"integer","minimum":0.0,"title":"Syncingmanagedteams"},"syncingTicketTeams":{"type":"integer","minimum":0.0,"title":"Syncingticketteams"},"psaProgress":{"$ref":"#/components/schemas/PsaProgress"},"resolutionChatStarted":{"type":"boolean","title":"Resolutionchatstarted"},"items":{"$ref":"#/components/schemas/ServiceProviderSetupItems"},"steps":{"items":{"$ref":"#/components/schemas/OnboardingStep"},"type":"array","title":"Steps"}},"additionalProperties":false,"type":"object","required":["teamKey","viewerRole","initialOnboardingStage","linkedManagedTeamKeys","syncingManagedTeams","syncingTicketTeams","psaProgress","resolutionChatStarted","items","steps"],"title":"ServiceProviderSetupAssessment","description":"Server-owned setup checks for a service-provider team."},"ServiceProviderSetupItems":{"properties":{"psa_connection_ready":{"$ref":"#/components/schemas/SetupItem"},"managed_teams_ready":{"$ref":"#/components/schemas/SetupItem"},"agent_installed":{"$ref":"#/components/schemas/SetupItem"},"engineer_active":{"$ref":"#/components/schemas/SetupItem"},"sparky_used":{"$ref":"#/components/schemas/SetupItem"},"workflow_published":{"$ref":"#/components/schemas/SetupItem"}},"additionalProperties":false,"type":"object","required":["psa_connection_ready","managed_teams_ready","agent_installed","engineer_active","sparky_used","workflow_published"],"title":"ServiceProviderSetupItems","description":"The complete, immutable setup checks for a service-provider team."},"SessionDetail":{"properties":{"key":{"type":"string","title":"Key"},"username":{"type":"string","title":"Username"},"hostname":{"type":"string","title":"Hostname"},"operatingSystem":{"type":"string","title":"Operatingsystem"},"machineId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Machineid"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"},"updatedAt":{"type":"string","format":"date-time","title":"Updatedat"},"lastObserved":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lastobserved"},"isOnline":{"type":"boolean","title":"Isonline","default":false},"isLoggedIn":{"type":"boolean","title":"Isloggedin","default":false},"isVerified":{"type":"boolean","title":"Isverified","default":false},"verifiedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verifiedat"},"verifiedUser":{"anyOf":[{"$ref":"#/components/schemas/SessionUser"},{"type":"null"}]},"verificationMethod":{"anyOf":[{"$ref":"#/components/schemas/VerificationMethod"},{"type":"null"}]},"lastUsedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lastusedat"}},"type":"object","required":["key","username","hostname","operatingSystem","createdAt","updatedAt"],"title":"SessionDetail","description":"Session detail for API responses."},"SessionStatus":{"type":"string","enum":["verified","unverified"],"title":"SessionStatus","description":"Whether an M365 account is enabled in the tenant."},"SessionSummary":{"properties":{"username":{"type":"string","title":"Username"},"isVerified":{"type":"boolean","title":"Isverified"}},"type":"object","required":["username","isVerified"],"title":"SessionSummary","description":"Session username + verification flag for the device list."},"SessionUser":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"email":{"type":"string","title":"Email"}},"type":"object","required":["id","name","email"],"title":"SessionUser","description":"User info for verified session."},"SessionVerification":{"type":"string","enum":["verified","unverified"],"title":"SessionVerification"},"SetupItem":{"oneOf":[{"$ref":"#/components/schemas/CompleteSetupItem"},{"$ref":"#/components/schemas/OutstandingSetupItem"}],"discriminator":{"propertyName":"status","mapping":{"blocked":"#/components/schemas/OutstandingSetupItem","complete":"#/components/schemas/CompleteSetupItem","in_progress":"#/components/schemas/OutstandingSetupItem","not_started":"#/components/schemas/OutstandingSetupItem"}}},"SetupReasonCode":{"type":"string","enum":["no_active_psa_connection","connection_sync_not_started","connection_sync_pending","connection_sync_failed","no_managed_teams","missing_managed_team_link","managed_team_sync_pending","managed_team_sync_not_started","managed_team_sync_failed","no_active_agent","no_active_engineer","pending_engineer_invitation","sparky_not_used","no_published_workflow","workflow_draft_exists"],"title":"SetupReasonCode","description":"Machine-readable explanation for an outstanding setup item."},"ShowVideoInput":{"properties":{"youtube_id":{"type":"string","title":"Youtube Id"},"title":{"type":"string","title":"Title"}},"type":"object","required":["youtube_id","title"],"title":"ShowVideoInput"},"ShowVideoSchema":{"properties":{"tool":{"type":"string","const":"show_video","title":"Tool","default":"show_video"},"description":{"type":"string","title":"Description","default":"Embed a YouTube video inline in chat"},"input":{"anyOf":[{"$ref":"#/components/schemas/ShowVideoInput"},{"type":"null"}]},"output":{"anyOf":[{"$ref":"#/components/schemas/VideoToolOutput"},{"type":"null"}]}},"type":"object","title":"ShowVideoSchema"},"SignalItem":{"properties":{"key":{"type":"string","title":"Key"},"domain":{"type":"string","title":"Domain"},"entityKey":{"type":"string","title":"Entitykey"},"category":{"type":"string","title":"Category"},"summary":{"type":"string","title":"Summary"},"detail":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Detail"},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Createdat"}},"type":"object","required":["key","domain","entityKey","category","summary","detail","createdAt"],"title":"SignalItem"},"SignalListResponse":{"properties":{"signals":{"items":{"$ref":"#/components/schemas/SignalItem"},"type":"array","title":"Signals"},"hasMore":{"type":"boolean","title":"Hasmore"}},"type":"object","required":["signals","hasMore"],"title":"SignalListResponse"},"SignupAgreementRequest":{"properties":{"agreementAcceptance":{"anyOf":[{"$ref":"#/components/schemas/CheckoutAgreementAcceptance"},{"type":"null"}]}},"type":"object","title":"SignupAgreementRequest"},"SignupAgreementStatus":{"properties":{"agreement":{"$ref":"#/components/schemas/CheckoutAgreement"},"accepted":{"type":"boolean","title":"Accepted"},"required":{"type":"boolean","title":"Required"},"offer":{"anyOf":[{"$ref":"#/components/schemas/SignupOfferResponse"},{"type":"null"}],"description":"The team's sign-up offer while it can still be earned."}},"type":"object","required":["agreement","accepted","required"],"title":"SignupAgreementStatus"},"SignupOfferLookupResponse":{"properties":{"offer":{"anyOf":[{"$ref":"#/components/schemas/SignupOfferResponse"},{"type":"null"}],"description":"The offer a sign-up with this code would get, if any."}},"type":"object","required":["offer"],"title":"SignupOfferLookupResponse"},"SignupOfferResponse":{"properties":{"usdCents":{"type":"integer","title":"Usdcents"},"connectWithinDays":{"type":"integer","title":"Connectwithindays"},"claimBy":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Claimby","description":"Set only when this fixed cut-off ends the offer before connect_within_days does."}},"type":"object","required":["usdCents","connectWithinDays"],"title":"SignupOfferResponse","description":"What the sign-up and plan screens say about an offer."},"SignupSettingsResponse":{"properties":{"signupsEnabled":{"type":"boolean","title":"Signupsenabled"}},"type":"object","required":["signupsEnabled"],"title":"SignupSettingsResponse"},"SkippedOperation":{"properties":{"kind":{"type":"string","title":"Kind"},"text":{"type":"string","title":"Text"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["kind","text"],"title":"SkippedOperation","description":"Something asked for in the chat that this write will not do."},"SourceTicketDetail":{"properties":{"key":{"type":"string","title":"Key"},"entityId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entityid"},"ticketNumber":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticketnumber"},"subject":{"type":"string","title":"Subject"},"lastUpdatedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Lastupdatedat"}},"type":"object","required":["key","subject"],"title":"SourceTicketDetail","description":"Lightweight ticket info for insight source references."},"SparkySkill":{"properties":{"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"command":{"type":"string","title":"Command"}},"type":"object","required":["slug","name","description","command"],"title":"SparkySkill","description":"A Sparky skill exposed as a slash command."},"SparkySkillsResponse":{"properties":{"skills":{"items":{"$ref":"#/components/schemas/SparkySkill"},"type":"array","title":"Skills"}},"type":"object","required":["skills"],"title":"SparkySkillsResponse","description":"All available Sparky skills."},"SparkyToolName":{"type":"string","enum":["run_command","run_device_script","take_screenshot","get_computer","search_kb","get_kb_article","load_skill","web_search","ticket_get","ticket_persist","search_fts","analyse_data","save_card","get_ticket_analysis","insight_get","twin_metrics","twin_changes","explore","todo_add","todo_start","todo_complete","todo_skip","action_run","action_get","action_get_run","action_execution_list","action_link_ticket","action_approve","action_list","action_create","action_update","authorisation_policy_list","authorisation_policy_get","authorisation_policy_upsert","command_approval_get","request_user_input","show_video","show_agent_install_card","offer_team_handoff","show_identity_connect_card","ticket_field_suggest","ticket_add_note","psa_connection","psa_connection_update","psa_team_link","psa_integration_sync","record_discovery_finding","ask_engineer","request_resolution_confirmation","offer_desktop_shortcut"],"title":"SparkyToolName","description":"All registered Sparky tool names."},"StaffUserItem":{"properties":{"id":{"type":"integer","title":"Id"},"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"psaType":{"type":"string","title":"Psatype"},"psaEntityType":{"type":"string","title":"Psaentitytype"},"isActive":{"type":"boolean","title":"Isactive"},"isStaff":{"type":"boolean","title":"Isstaff"},"userKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Userkey"},"managedTeamCount":{"type":"integer","title":"Managedteamcount","default":0}},"type":"object","required":["id","key","name","email","psaType","psaEntityType","isActive","isStaff"],"title":"StaffUserItem","description":"Enriched staff user with internal membership info."},"Stakeholder":{"type":"string","enum":["it_sales","it_technical","it_management","client_contact","client_management"],"title":"Stakeholder","description":"Who should see an actionable insight."},"StartAnalysisJobRequest":{"properties":{"source_psa":{"type":"string","enum":["connectwise","halo","accelo","autotask","native","superit"],"title":"Source Psa","description":"Source PSA system"},"date_filter_months":{"anyOf":[{"type":"integer","maximum":1200.0,"minimum":1.0},{"type":"null"}],"title":"Date Filter Months","description":"Only analyse tickets from last N months"},"date_from":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date From","description":"Only analyse tickets created on/after this time"},"date_to":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date To","description":"Only analyse tickets created on/before this time"},"selection_mode":{"type":"string","enum":["re_analyse_all","only_not_processed"],"title":"Selection Mode","description":"Whether to rerun all tickets or only not-yet-processed ones","default":"only_not_processed"}},"type":"object","required":["source_psa"],"title":"StartAnalysisJobRequest"},"StartInsightJobRequest":{"properties":{"date_filter_months":{"type":"integer","maximum":1200.0,"minimum":1.0,"title":"Date Filter Months","description":"Include analyses from last N months","default":3},"date_from":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date From","description":"Only include analyses for tickets on/after this time"},"date_to":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date To","description":"Only include analyses for tickets on/before this time"}},"type":"object","title":"StartInsightJobRequest"},"StartKbConsolidationJobRequest":{"properties":{"max_passes":{"type":"integer","maximum":10.0,"minimum":1.0,"title":"Max Passes","default":10}},"type":"object","title":"StartKbConsolidationJobRequest","description":"Request body for starting a standalone KB consolidation job."},"StartKbCurationJobRequest":{"properties":{"date_filter_months":{"anyOf":[{"type":"integer","maximum":1200.0,"minimum":1.0},{"type":"null"}],"title":"Date Filter Months","default":3},"date_from":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date From"},"date_to":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date To"},"selection_mode":{"$ref":"#/components/schemas/KbCurationSelectionMode","default":"only_new"},"dry_run":{"type":"boolean","title":"Dry Run","default":false},"auto_publish":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Publish"}},"type":"object","title":"StartKbCurationJobRequest","description":"Request body for starting a KB curation job."},"StatusCategory":{"type":"string","enum":["NEW","OPEN","CLOSED"],"title":"StatusCategory","description":"Generalised PSA ticket status category.\n\nEach PsaStatus row is mapped to one of these by an admin (or by the\nname-pattern backfill in migration 0182). Triage rules reference\ncategories rather than raw status names so defaults stay universal.\n\nThree buckets, deliberately. The original nine (WAITING, ESCALATED,\nON_HOLD, CANCELLED, MERGED, DUPLICATE) made the one question this\nfield exists to answer — \"how many tickets are open right now\" —\nimpossible to express as a single predicate, because whether\nWAITING and ON_HOLD counted as open was a judgement call every\ncaller made differently. WAITING / ESCALATED / ON_HOLD are open;\nCANCELLED / MERGED / DUPLICATE are closed. MERGED and DUPLICATE\nnever had a single row in production."},"StatusResponse":{"properties":{"key":{"type":"string","title":"Key"},"entityId":{"type":"string","title":"Entityid"},"name":{"type":"string","title":"Name"},"psaType":{"type":"string","title":"Psatype"},"isActive":{"type":"boolean","title":"Isactive"},"statusCategory":{"anyOf":[{"$ref":"#/components/schemas/StatusCategory"},{"type":"null"}]},"cwBoardId":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cwboardid"},"llmInstructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Llminstructions"}},"type":"object","required":["key","entityId","name","psaType","isActive","statusCategory","cwBoardId","llmInstructions"],"title":"StatusResponse"},"StatusUpdateRequest":{"properties":{"statusCategory":{"anyOf":[{"$ref":"#/components/schemas/StatusCategory"},{"type":"null"}]},"llmInstructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Llminstructions"}},"type":"object","title":"StatusUpdateRequest"},"StreamPartKind":{"type":"string","enum":["text","thinking","tool-call","tool-return","retry-prompt","sub-agent-progress"],"title":"StreamPartKind","description":"Kind of stream part."},"StreamPartStatus":{"type":"string","enum":["running","complete"],"title":"StreamPartStatus","description":"Status of a stream part."},"StreamSizes":{"properties":{"storedBytes":{"type":"integer","title":"Storedbytes"},"hiddenStart":{"type":"integer","title":"Hiddenstart"},"hiddenBytes":{"type":"integer","title":"Hiddenbytes"},"agentBytes":{"type":"integer","title":"Agentbytes"},"backendBytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Backendbytes"}},"type":"object","required":["storedBytes","hiddenStart","hiddenBytes","agentBytes","backendBytes"],"title":"StreamSizes"},"SuperITCapabilityAssessment":{"properties":{"verdict":{"$ref":"#/components/schemas/CapabilityVerdict","description":"Overall capability verdict for this ticket"},"verdictRationale":{"type":"string","title":"Verdictrationale","description":"1-2 sentence explanation of why this verdict was chosen"},"resolution":{"anyOf":[{"$ref":"#/components/schemas/Resolution"},{"type":"null"}],"description":"Whether SuperIT could resolve a ticket like this given its toolkit (knowledge base, live device access, a verified session, and the ticket linked to a user)"},"automation":{"anyOf":[{"$ref":"#/components/schemas/Automation"},{"type":"null"}],"description":"How much of the resolution SuperIT can automate"},"confidence":{"anyOf":[{"$ref":"#/components/schemas/Confidence"},{"type":"null"}],"description":"Confidence in the resolution and automation assessment"},"capabilityGaps":{"items":{"$ref":"#/components/schemas/CapabilityGap"},"type":"array","title":"Capabilitygaps","description":"Specific capabilities needed for SuperIT to achieve a higher autonomy verdict"}},"type":"object","required":["verdict","verdictRationale"],"title":"SuperITCapabilityAssessment","description":"Assessment of how well SuperIT could handle this ticket autonomously today."},"SyncStatus":{"type":"string","enum":["never","pending","synced","error","cancelled"],"title":"SyncStatus","description":"Sync status for client/ticket sync operations."},"SyncSummaryResponse":{"properties":{"psaType":{"type":"string","title":"Psatype"},"boards":{"type":"integer","title":"Boards","default":0},"types":{"type":"integer","title":"Types","default":0},"subtypes":{"type":"integer","title":"Subtypes","default":0},"items":{"type":"integer","title":"Items","default":0},"priorities":{"type":"integer","title":"Priorities","default":0},"members":{"type":"integer","title":"Members","default":0},"categories":{"type":"integer","title":"Categories","default":0},"ticketTypes":{"type":"integer","title":"Tickettypes","default":0},"customFields":{"type":"integer","title":"Customfields","default":0},"agents":{"type":"integer","title":"Agents","default":0},"issueTypes":{"type":"integer","title":"Issuetypes","default":0},"issueClasses":{"type":"integer","title":"Issueclasses","default":0},"queues":{"type":"integer","title":"Queues","default":0},"ticketCategories":{"type":"integer","title":"Ticketcategories","default":0},"subIssueTypes":{"type":"integer","title":"Subissuetypes","default":0},"sources":{"type":"integer","title":"Sources","default":0},"statuses":{"type":"integer","title":"Statuses","default":0},"teams":{"type":"integer","title":"Teams","default":0},"teamsWithRecentActivity":{"type":"integer","title":"Teamswithrecentactivity","default":0},"lastSyncAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Lastsyncat"},"lastSyncStatus":{"type":"string","title":"Lastsyncstatus","default":"pending"},"syncError":{"type":"string","title":"Syncerror","default":""},"psaTeamsSyncedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Psateamssyncedat"},"companyCatalogSyncStatus":{"type":"string","title":"Companycatalogsyncstatus","default":"pending"},"companyCatalogSyncError":{"type":"string","title":"Companycatalogsyncerror","default":""}},"type":"object","required":["psaType"],"title":"SyncSummaryResponse"},"TakeScreenshotSchema":{"properties":{"tool":{"type":"string","const":"take_screenshot","title":"Tool","default":"take_screenshot"},"description":{"type":"string","title":"Description","default":"Capture a screenshot from the user's computer"},"requires_session":{"type":"boolean","title":"Requires Session","default":true},"input":{"anyOf":[{"$ref":"#/components/schemas/ScreenshotInput"},{"type":"null"}]}},"type":"object","title":"TakeScreenshotSchema"},"TeamAiAgentSettingsResponse":{"properties":{"displayName":{"type":"string","title":"Displayname"},"editable":{"type":"boolean","title":"Editable"},"managedByTeamName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Managedbyteamname"},"language":{"$ref":"#/components/schemas/Language"},"llmInstructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Llminstructions"}},"type":"object","required":["displayName","editable","language"],"title":"TeamAiAgentSettingsResponse","description":"Team AI agent settings for API responses."},"TeamAiAgentUpdateBody":{"properties":{"displayName":{"type":"string","maxLength":64,"pattern":"^[^\\x00-\\x1F\\x7F-\\x9F]*$","title":"Displayname","default":""},"language":{"$ref":"#/components/schemas/Language"},"llmInstructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Llminstructions"}},"additionalProperties":false,"type":"object","required":["language"],"title":"TeamAiAgentUpdateBody","description":"Request body for updating team AI agent settings.\n\nCovers the agent's display name, language and prompt context."},"TeamListItem":{"properties":{"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"role":{"$ref":"#/components/schemas/MembershipRole"},"type":{"$ref":"#/components/schemas/TeamType"},"managedByTeamKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Managedbyteamkey"},"timezone":{"type":"string","title":"Timezone","default":"Australia/Sydney"},"language":{"type":"string","title":"Language","default":"en-US"}},"type":"object","required":["key","name","slug","role","type"],"title":"TeamListItem","description":"Team item in flat list."},"TeamMember":{"properties":{"key":{"type":"string","title":"Key"},"email":{"type":"string","title":"Email"},"name":{"type":"string","title":"Name"},"fullName":{"type":"string","title":"Fullname","default":""},"nickname":{"type":"string","title":"Nickname","default":""},"displayName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Displayname"},"avatarUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatarurl"},"role":{"$ref":"#/components/schemas/MembershipRole"}},"type":"object","required":["key","email","name","role"],"title":"TeamMember","description":"Team member with user details and role."},"TeamProvisionOutcome":{"properties":{"teamKey":{"type":"string","title":"Teamkey"},"role":{"$ref":"#/components/schemas/MembershipRole"},"outcome":{"type":"string","enum":["added","already_member","error"],"title":"Outcome"},"message":{"type":"string","title":"Message","default":""}},"type":"object","required":["teamKey","role","outcome"],"title":"TeamProvisionOutcome","description":"Per-team result of a provisioning job."},"TeamResponse":{"properties":{"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"type":{"$ref":"#/components/schemas/TeamType"},"parentTeamId":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parentteamid"},"timezone":{"type":"string","title":"Timezone"},"language":{"type":"string","title":"Language"}},"type":"object","required":["key","name","slug","type","timezone","language"],"title":"TeamResponse","description":"Team data for API responses."},"TeamRoleAssignment":{"properties":{"managedTeamKey":{"type":"string","title":"Managedteamkey"},"role":{"anyOf":[{"$ref":"#/components/schemas/MembershipRole"},{"type":"null"}]}},"type":"object","required":["managedTeamKey","role"],"title":"TeamRoleAssignment","description":"Single team + role pair for staff role assignment.\n\nA `None` role signals removal of the membership in that managed team."},"TeamRoleAssignmentInput":{"properties":{"teamKey":{"type":"string","minLength":1,"pattern":"^[^\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x9F]*$","title":"Teamkey"},"role":{"$ref":"#/components/schemas/MembershipRole"}},"type":"object","required":["teamKey","role"],"title":"TeamRoleAssignmentInput","description":"A single team + role the new user should be granted."},"TeamType":{"type":"string","enum":["normal","service-provider","managed"],"title":"TeamType","description":"Supported team types."},"TeamUpdateRequest":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"pattern":"^[^\\x00-\\x1F\\x7F-\\x9F]*$","title":"Name"},"timezone":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Timezone"}},"additionalProperties":false,"type":"object","required":["name"],"title":"TeamUpdateRequest","description":"Request body for updating a team."},"TicketAnalysis":{"properties":{"ticketSpecification":{"$ref":"#/components/schemas/TicketSpecification","description":"Authoritative classification of whether this is a service request, incident, or other"},"category":{"$ref":"#/components/schemas/Category","description":"Authoritative primary category for the ticket"},"complexity":{"$ref":"#/components/schemas/Complexity","description":"Authoritative ticket complexity assessment"},"oneSentenceSummary":{"type":"string","title":"Onesentencesummary","description":"Short plain-language summary of the ticket"},"rootCause":{"anyOf":[{"$ref":"#/components/schemas/RootCauseAnalysis"},{"type":"null"}],"description":"Root cause analysis. Omit for service requests or tickets with no failure/incident."},"technologies":{"items":{"type":"string"},"type":"array","title":"Technologies","description":"Key technologies and products involved, e.g. ['Microsoft 365', 'Azure AD', 'GlobalProtect VPN']"},"capabilityAssessment":{"$ref":"#/components/schemas/SuperITCapabilityAssessment","description":"Assessment of SuperIT's ability to handle this ticket autonomously"},"knowledgeArtifacts":{"items":{"$ref":"#/components/schemas/KnowledgeArtifactExtraction"},"type":"array","title":"Knowledgeartifacts","description":"Reusable knowledge extracted from this ticket"},"actionableInsights":{"items":{"$ref":"#/components/schemas/ActionableInsight"},"type":"array","title":"Actionableinsights","description":"Actionable insights for the IT team or client"},"workflowRecommendations":{"items":{"$ref":"#/components/schemas/WorkflowRecommendation"},"type":"array","title":"Workflowrecommendations","description":"New automation workflows worth building for this recurring, automatable class of ticket. Only when automation == workflow and the recommendation transfers to future similar tickets; empty otherwise."}},"type":"object","required":["ticketSpecification","category","complexity","oneSentenceSummary","capabilityAssessment"],"title":"TicketAnalysis","description":"Complete structured analysis of an IT support ticket."},"TicketAnalysisStatus":{"type":"string","enum":["queued","preparing","triaging","analysing","failed","skipped_deterministic","skipped_triage","cancelled","analysed"],"title":"TicketAnalysisStatus","description":"Status of a ticket analysis through the pipeline."},"TicketAnalysisTriggerSettings":{"properties":{"newTicket":{"type":"boolean","title":"Newticket","default":false},"reanalyseOnContentChange":{"type":"boolean","title":"Reanalyseoncontentchange","default":false},"reanalysisCooldownHours":{"type":"integer","minimum":0.0,"title":"Reanalysiscooldownhours","default":24}},"type":"object","title":"TicketAnalysisTriggerSettings","description":"Real-time ticket analysis trigger config."},"TicketContext":{"properties":{"key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"},"number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Number"},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"},"requester":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requester"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"updatedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updatedat"}},"type":"object","title":"TicketContext","description":"The ticket the card writes to, as it stood when the card went up."},"TicketContextInput":{"properties":{"key":{"type":"string","title":"Key"},"summary":{"type":"string","title":"Summary"},"status":{"type":"string","title":"Status"},"source":{"type":"string","title":"Source","default":"superit"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["key","summary","status"],"title":"TicketContextInput","description":"Ticket context for chat creation."},"TicketContextResponse":{"properties":{"key":{"type":"string","title":"Key"},"summary":{"type":"string","title":"Summary"},"status":{"type":"string","title":"Status"},"updatedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updatedat"},"isIntakeTarget":{"type":"boolean","title":"Isintaketarget","default":false}},"type":"object","required":["key","summary","status"],"title":"TicketContextResponse","description":"Ticket context info."},"TicketConversation":{"properties":{"key":{"type":"string","title":"Key"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"participants":{"items":{"$ref":"#/components/schemas/ChatParticipant"},"type":"array","title":"Participants"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"},"updatedAt":{"type":"string","format":"date-time","title":"Updatedat"},"isPrimary":{"type":"boolean","title":"Isprimary","default":false}},"type":"object","required":["key","participants","createdAt","updatedAt"],"title":"TicketConversation","description":"Conversation linked to a ticket."},"TicketConversationsResponse":{"properties":{"conversations":{"items":{"$ref":"#/components/schemas/TicketConversation"},"type":"array","title":"Conversations"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["conversations","count"],"title":"TicketConversationsResponse","description":"Response for ticket conversations list."},"TicketCreateAcceptedData":{"properties":{"event_type":{"type":"string","const":"ticket_create_accepted","title":"Event Type","default":"ticket_create_accepted"},"ticket_entity_id":{"type":"string","title":"Ticket Entity Id"},"ticket_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticket Number"},"halo_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Halo Id"},"cw_ticket_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cw Ticket Id"},"custom_field_provenance":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Custom Field Provenance"},"custom_fields":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Custom Fields"}},"type":"object","required":["ticket_entity_id"],"title":"TicketCreateAcceptedData","description":"PSA accepted the create call; local persistence not yet complete."},"TicketCreateRequestedData":{"properties":{"event_type":{"type":"string","const":"ticket_create_requested","title":"Event Type","default":"ticket_create_requested"},"description":{"type":"string","title":"Description"},"contact_entity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Entity Id"},"assignee_entity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assignee Entity Id"},"chat_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chat Key"},"custom_fields":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Custom Fields"},"caller_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Caller Role"},"caller_team_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Caller Team Key"},"retry_count":{"type":"integer","title":"Retry Count","default":0},"previous_errors":{"items":{"$ref":"#/components/schemas/FieldRetryError"},"type":"array","title":"Previous Errors","default":[]},"decision":{"anyOf":[{"$ref":"#/components/schemas/TicketFieldDecision"},{"type":"null"}]}},"type":"object","required":["description"],"title":"TicketCreateRequestedData"},"TicketCreateSucceededData":{"properties":{"event_type":{"type":"string","const":"ticket_create_succeeded","title":"Event Type","default":"ticket_create_succeeded"},"halo_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Halo Id"},"cw_ticket_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cw Ticket Id"},"autotask_ticket_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Autotask Ticket Id"},"custom_field_provenance":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Custom Field Provenance"},"custom_fields":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Custom Fields"}},"type":"object","title":"TicketCreateSucceededData","description":"Local ticket fully persisted after a PSA create."},"TicketDeactivatedResponse":{"properties":{"ticket_key":{"type":"string","title":"Ticket Key"},"deactivated":{"type":"boolean","title":"Deactivated"}},"type":"object","required":["ticket_key","deactivated"],"title":"TicketDeactivatedResponse"},"TicketDiscoveryFindingResponse":{"properties":{"confidence":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Confidence"},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Createdat"},"agentRunKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agentrunkey"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"instructedResults":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instructedresults"},"deviceHostname":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Devicehostname"},"deviceOs":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Deviceos"}},"type":"object","title":"TicketDiscoveryFindingResponse","description":"Latest discovery finding for the ticket detail (chat- or\nagent-written). Role-gated: all fields are elevated-only, so\nnon-elevated roles get an empty object shape with every field set to\nNone."},"TicketFieldDecision":{"properties":{"status_name":{"type":"string","title":"Status Name","default":""},"status_entity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Entity Id"},"board_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Board Id"},"category_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Category Id"},"category_id_2":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Category Id 2"},"category_id_3":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Category Id 3"},"category_id_4":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Category Id 4"},"ticket_type_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ticket Type Id"},"priority_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Priority Id"},"impact_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Impact Id"},"urgency_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Urgency Id"},"type_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Type Id"},"subtype_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subtype Id"},"item_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Item Id"},"source_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Source Id"},"configuration_entity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Configuration Entity Id"},"contract_entity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contract Entity Id"},"summary":{"type":"string","title":"Summary","default":""},"description":{"type":"string","title":"Description","default":""},"custom_fields":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Custom Fields"}},"type":"object","title":"TicketFieldDecision","description":"Sub-agent output: which status and fields to use."},"TicketGetInput":{"properties":{"ticket_key":{"type":"string","title":"Ticket Key"}},"type":"object","required":["ticket_key"],"title":"TicketGetInput"},"TicketGetSchema":{"properties":{"tool":{"type":"string","const":"ticket_get","title":"Tool","default":"ticket_get"},"description":{"type":"string","title":"Description","default":"Get a specific ticket by key"},"input":{"anyOf":[{"$ref":"#/components/schemas/TicketGetInput"},{"type":"null"}]}},"type":"object","title":"TicketGetSchema"},"TicketListItemResponse":{"properties":{"key":{"type":"string","title":"Key"},"psaType":{"$ref":"#/components/schemas/PsaSystem"},"ticketNumber":{"type":"string","title":"Ticketnumber"},"summary":{"type":"string","title":"Summary"},"status":{"type":"string","title":"Status"},"statusCategory":{"anyOf":[{"$ref":"#/components/schemas/StatusCategory"},{"type":"null"}]},"priority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Priority"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"},"updatedAt":{"type":"string","format":"date-time","title":"Updatedat"},"sourceCreatedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sourcecreatedat"},"sourceUpdatedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sourceupdatedat"},"analysisState":{"$ref":"#/components/schemas/AnalysisState"},"analysedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Analysedat"},"ticketSpecification":{"anyOf":[{"$ref":"#/components/schemas/TicketSpecification"},{"type":"null"}]},"oneSentenceSummary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Onesentencesummary"}},"type":"object","required":["key","psaType","ticketNumber","summary","status","createdAt","updatedAt","analysisState"],"title":"TicketListItemResponse","description":"Single ticket in a list view — ticket + triage summary."},"TicketPersistInput":{"properties":{"description":{"type":"string","title":"Description"},"ticket_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticket Key"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["description"],"title":"TicketPersistInput"},"TicketPersistSchema":{"properties":{"tool":{"type":"string","const":"ticket_persist","title":"Tool","default":"ticket_persist"},"description":{"type":"string","title":"Description","default":"Create or update a support ticket"},"input":{"anyOf":[{"$ref":"#/components/schemas/TicketPersistInput"},{"type":"null"}]}},"type":"object","title":"TicketPersistSchema"},"TicketPollHealth":{"properties":{"lastPolledAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Lastpolledat"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["lastPolledAt","error"],"title":"TicketPollHealth"},"TicketRelationshipEntry":{"properties":{"role":{"type":"string","title":"Role"},"relatedEntityId":{"type":"string","title":"Relatedentityid"},"ticketKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticketkey"},"ticketNumber":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticketnumber"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"teamKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Teamkey"}},"type":"object","required":["role","relatedEntityId"],"title":"TicketRelationshipEntry","description":"A single resolved ticket relationship — parent/child/merge/related.\n\nThe related ticket may be unsynced (not yet in our `psa_ticket` table),\nin which case every field but `role`/`related_entity_id` is None.\n\n`team_key` is the related ticket's OWN managed team, which may differ\nfrom the team the caller requested this ticket under — a bundle/merge can\ncross managed clients on one MSP connection. Clients must build the\nticket link with this value. `None` when `ticket_key` is None, or when\nthe related ticket's team link is missing/inactive (SUP-597) — render as\nplain text, not a link."},"TicketReportOverview":{"properties":{"generatedAt":{"type":"string","format":"date-time","title":"Generatedat"},"periodFrom":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Periodfrom"},"periodTo":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Periodto"},"dataSource":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Datasource"},"connectionKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Connectionkey"},"costPerHour":{"type":"number","title":"Costperhour"},"totalTickets":{"type":"integer","title":"Totaltickets"},"totalHoursLogged":{"type":"number","title":"Totalhourslogged"},"hoursSavable":{"type":"number","title":"Hourssavable"},"ticketsWithoutTimeData":{"type":"integer","title":"Ticketswithouttimedata"},"coverage":{"$ref":"#/components/schemas/ReportCoverage"},"resolutionBreakdown":{"items":{"$ref":"#/components/schemas/ResolutionBreakdownItem"},"type":"array","title":"Resolutionbreakdown"},"automationBreakdown":{"items":{"$ref":"#/components/schemas/AutomationBreakdownItem"},"type":"array","title":"Automationbreakdown"},"tickets":{"items":{"$ref":"#/components/schemas/ReportTicket"},"type":"array","title":"Tickets"}},"type":"object","required":["generatedAt","periodFrom","periodTo","dataSource","connectionKey","costPerHour","totalTickets","totalHoursLogged","hoursSavable","ticketsWithoutTimeData","coverage","resolutionBreakdown","automationBreakdown","tickets"],"title":"TicketReportOverview"},"TicketSpecification":{"type":"string","enum":["service_request","incident","other"],"title":"TicketSpecification","description":"Whether a ticket is a service request, an incident, or other."},"TicketStatsResponse":{"properties":{"open_count":{"type":"integer","title":"Open Count"},"assigned_to_you_count":{"type":"integer","title":"Assigned To You Count"},"escalated_count":{"type":"integer","title":"Escalated Count"}},"type":"object","required":["open_count","assigned_to_you_count","escalated_count"],"title":"TicketStatsResponse","description":"Response for ticket statistics."},"TicketSyncDispatchedResponse":{"properties":{"ticket_key":{"type":"string","title":"Ticket Key"},"dispatched":{"type":"boolean","title":"Dispatched"}},"type":"object","required":["ticket_key","dispatched"],"title":"TicketSyncDispatchedResponse"},"TicketSyncProgress":{"properties":{"total":{"type":"integer","title":"Total"},"done":{"type":"integer","title":"Done"},"errors":{"type":"integer","title":"Errors"}},"type":"object","required":["total","done","errors"],"title":"TicketSyncProgress","description":"Tickets processed so far in the link's initial or bulk ticket sync."},"TicketSyncState":{"properties":{"status":{"$ref":"#/components/schemas/TicketSyncStatus"},"lastSyncedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Lastsyncedat"},"lastError":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lasterror"}},"type":"object","required":["status"],"title":"TicketSyncState","description":"Per-ticket outbound sync state derived from TicketEvent log."},"TicketSyncStatus":{"type":"string","enum":["synced","syncing","failed"],"title":"TicketSyncStatus","description":"Per-ticket outbound sync status derived from the TicketEvent log."},"TicketTriageResponse":{"properties":{"ticketSpecification":{"anyOf":[{"$ref":"#/components/schemas/TicketSpecification"},{"type":"null"}]},"oneSentenceSummary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Onesentencesummary"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"complexity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Complexity"},"skipReason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Skipreason"},"analysisData":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Analysisdata"},"analysedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Analysedat"},"contentHash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contenthash"},"autoMode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Automode"},"psaWriteStatus":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Psawritestatus"}},"type":"object","title":"TicketTriageResponse","description":"Triage/analysis metadata for a ticket detail."},"TicketUpdateRequestedData":{"properties":{"event_type":{"type":"string","const":"ticket_update_requested","title":"Event Type","default":"ticket_update_requested"},"ticket_entity_id":{"type":"string","title":"Ticket Entity Id"},"ticket_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticket Key"},"description":{"type":"string","title":"Description"},"retry_count":{"type":"integer","title":"Retry Count","default":0},"previous_errors":{"items":{"$ref":"#/components/schemas/FieldRetryError"},"type":"array","title":"Previous Errors","default":[]},"decision":{"anyOf":[{"$ref":"#/components/schemas/TicketFieldDecision"},{"type":"null"}]},"triage_suggestion_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Triage Suggestion Id"},"manual_apply":{"type":"boolean","title":"Manual Apply","default":false},"partial_apply":{"type":"boolean","title":"Partial Apply","default":false},"assignee_entity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assignee Entity Id"},"skip_field_decision":{"type":"boolean","title":"Skip Field Decision","default":false},"bypass_write_policy":{"type":"boolean","title":"Bypass Write Policy","default":false},"approved_decision":{"type":"boolean","title":"Approved Decision","default":false},"expected_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Updated At"}},"type":"object","required":["ticket_entity_id","description"],"title":"TicketUpdateRequestedData"},"TicketUpdateSucceededData":{"properties":{"event_type":{"type":"string","const":"ticket_update_succeeded","title":"Event Type","default":"ticket_update_succeeded"},"ticket_entity_id":{"type":"string","title":"Ticket Entity Id"}},"type":"object","required":["ticket_entity_id"],"title":"TicketUpdateSucceededData"},"TicketingLinkBody":{"properties":{"psa_user_id":{"type":"integer","maximum":9.223372036854776e+18,"exclusiveMinimum":0.0,"title":"Psa User Id"}},"type":"object","required":["psa_user_id"],"title":"TicketingLinkBody","description":"Request body for creating a ticketing link."},"TicketingLinkResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"}},"type":"object","required":["success","message"],"title":"TicketingLinkResponse","description":"Response after ticketing link/unlink."},"TicketsListResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/TicketListItemResponse"},"type":"array","title":"Results"},"count":{"type":"integer","title":"Count"},"totalPages":{"type":"integer","title":"Totalpages"},"statuses":{"items":{"type":"string"},"type":"array","title":"Statuses"}},"type":"object","required":["results","count","totalPages"],"title":"TicketsListResponse","description":"Paginated list of tickets."},"TimeEntryAddDispatchingData":{"properties":{"event_type":{"type":"string","const":"time_entry_add_dispatching","title":"Event Type","default":"time_entry_add_dispatching"}},"type":"object","title":"TimeEntryAddDispatchingData","description":"Durable claim written before the time-entry POST."},"TimeEntryAddRequestedData":{"properties":{"event_type":{"type":"string","const":"time_entry_add_requested","title":"Event Type","default":"time_entry_add_requested"},"ticket_key":{"type":"string","title":"Ticket Key"},"ticket_entity_id":{"type":"string","title":"Ticket Entity Id"},"chat_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chat Key"},"caller_team_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Caller Team Key"},"actor_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Key"},"member_entity_id":{"type":"string","title":"Member Entity Id"},"member_name":{"type":"string","title":"Member Name"},"minutes":{"type":"integer","title":"Minutes"},"notes":{"type":"string","title":"Notes"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"billable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Billable"},"work_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Work Type"}},"type":"object","required":["ticket_key","ticket_entity_id","member_entity_id","member_name","minutes","notes"],"title":"TimeEntryAddRequestedData","description":"A human-approved time entry against an existing PSA ticket."},"TimeEntryAddSucceededData":{"properties":{"event_type":{"type":"string","const":"time_entry_add_succeeded","title":"Event Type","default":"time_entry_add_succeeded"},"time_entry_entity_id":{"type":"string","title":"Time Entry Entity Id"}},"type":"object","required":["time_entry_entity_id"],"title":"TimeEntryAddSucceededData"},"TodoAddInput":{"properties":{"names":{"items":{"type":"string"},"type":"array","title":"Names"}},"type":"object","required":["names"],"title":"TodoAddInput"},"TodoAddSchema":{"properties":{"tool":{"type":"string","const":"todo_add","title":"Tool","default":"todo_add"},"description":{"type":"string","title":"Description","default":"Add items to the todo checklist"},"input":{"anyOf":[{"$ref":"#/components/schemas/TodoAddInput"},{"type":"null"}]},"output":{"anyOf":[{"$ref":"#/components/schemas/TodoToolResult"},{"type":"null"}]}},"type":"object","title":"TodoAddSchema"},"TodoCompleteInput":{"properties":{"name":{"type":"string","title":"Name"}},"type":"object","required":["name"],"title":"TodoCompleteInput"},"TodoCompleteSchema":{"properties":{"tool":{"type":"string","const":"todo_complete","title":"Tool","default":"todo_complete"},"description":{"type":"string","title":"Description","default":"Mark a todo item as done"},"input":{"anyOf":[{"$ref":"#/components/schemas/TodoCompleteInput"},{"type":"null"}]},"output":{"anyOf":[{"$ref":"#/components/schemas/TodoToolResult"},{"type":"null"}]}},"type":"object","title":"TodoCompleteSchema"},"TodoItem":{"properties":{"name":{"type":"string","title":"Name"},"status":{"type":"string","enum":["not_started","started","done","skipped"],"title":"Status","default":"not_started"}},"type":"object","required":["name"],"title":"TodoItem"},"TodoSkipInput":{"properties":{"name":{"type":"string","title":"Name"}},"type":"object","required":["name"],"title":"TodoSkipInput"},"TodoSkipSchema":{"properties":{"tool":{"type":"string","const":"todo_skip","title":"Tool","default":"todo_skip"},"description":{"type":"string","title":"Description","default":"Mark a todo item as skipped"},"input":{"anyOf":[{"$ref":"#/components/schemas/TodoSkipInput"},{"type":"null"}]},"output":{"anyOf":[{"$ref":"#/components/schemas/TodoToolResult"},{"type":"null"}]}},"type":"object","title":"TodoSkipSchema"},"TodoStartInput":{"properties":{"name":{"type":"string","title":"Name"}},"type":"object","required":["name"],"title":"TodoStartInput"},"TodoStartSchema":{"properties":{"tool":{"type":"string","const":"todo_start","title":"Tool","default":"todo_start"},"description":{"type":"string","title":"Description","default":"Mark a todo item as started"},"input":{"anyOf":[{"$ref":"#/components/schemas/TodoStartInput"},{"type":"null"}]},"output":{"anyOf":[{"$ref":"#/components/schemas/TodoToolResult"},{"type":"null"}]}},"type":"object","title":"TodoStartSchema"},"TodoToolResult":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TodoItem"},"type":"array","title":"Items"},"summary":{"type":"string","title":"Summary"},"changed":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Changed"}},"type":"object","required":["items","summary"],"title":"TodoToolResult"},"TokenPair":{"properties":{"access":{"type":"string","title":"Access"},"refresh":{"type":"string","title":"Refresh"}},"type":"object","required":["access","refresh"],"title":"TokenPair","description":"JWT token pair."},"ToolApprovalDecisionBody":{"properties":{"approved":{"type":"boolean","title":"Approved"},"reason":{"anyOf":[{"type":"string","maxLength":500,"pattern":"^[^\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x9F]*$"},{"type":"null"}],"title":"Reason"},"skippedStepKeys":{"items":{"type":"string"},"type":"array","title":"Skippedstepkeys","default":[]}},"additionalProperties":false,"type":"object","required":["approved"],"title":"ToolApprovalDecisionBody","description":"Approve/reject body for the standalone approval page."},"ToolApprovalListResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/ToolApprovalResponse"},"type":"array","title":"Results"},"count":{"type":"integer","title":"Count"},"page":{"type":"integer","title":"Page"},"pageSize":{"type":"integer","title":"Pagesize"},"totalPages":{"type":"integer","title":"Totalpages"}},"type":"object","required":["results","count","page","pageSize","totalPages"],"title":"ToolApprovalListResponse","description":"Paginated tool approvals response."},"ToolApprovalResponse":{"properties":{"key":{"type":"string","title":"Key"},"toolName":{"type":"string","title":"Toolname"},"toolCallId":{"type":"string","title":"Toolcallid"},"parentToolCallId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parenttoolcallid","description":"The tool cycle the chat renders this under when tool_call_id is an explore sub-agent's call, which is never in the transcript."},"command":{"type":"string","title":"Command"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"reason":{"type":"string","title":"Reason"},"risk":{"type":"string","title":"Risk"},"riskLevel":{"type":"string","enum":["low","medium","high"],"title":"Risklevel"},"status":{"$ref":"#/components/schemas/ApprovalStatus"},"chatKey":{"type":"string","title":"Chatkey"},"user":{"anyOf":[{"$ref":"#/components/schemas/ApprovalUser"},{"type":"null"}]},"teamName":{"type":"string","title":"Teamname"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"},"approver":{"anyOf":[{"$ref":"#/components/schemas/ApprovalUser"},{"type":"null"}]},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"operatingSystem":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Operatingsystem"},"elevated":{"type":"boolean","title":"Elevated","default":false},"selfConsentEligible":{"type":"boolean","title":"Selfconsenteligible","default":false},"cancelable":{"type":"boolean","title":"Cancelable","default":false},"targetLabel":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Targetlabel"},"targetPlatform":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Targetplatform","description":"Target device os_platform: windows, linux or darwin."},"decidedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Decidedat"},"approvalSource":{"anyOf":[{"type":"string","const":"command_judge"},{"type":"null"}],"title":"Approvalsource"},"agentName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agentname"},"approvalReason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Approvalreason"},"commandSegments":{"anyOf":[{"items":{"$ref":"#/components/schemas/CommandSegment"},"type":"array"},{"type":"null"}],"title":"Commandsegments"},"editable":{"anyOf":[{"$ref":"#/components/schemas/ApprovalEditable"},{"type":"null"}]},"ticketChangedSinceProposal":{"type":"boolean","title":"Ticketchangedsinceproposal","description":"A pending PSA write whose ticket the PSA updated after the card went up; approving it is refused until it is proposed again.","default":false},"outcome":{"anyOf":[{"type":"string","enum":["verified","written_unconfirmed","failed"]},{"type":"null"}],"title":"Outcome","description":"What an approved PSA write did. Null until the write finishes, and for anything that is not a PSA write."},"outcomeDetail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outcomedetail","description":"The PSA's displayed ticket number when verified, else the reason."}},"type":"object","required":["key","toolName","toolCallId","command","reason","risk","riskLevel","status","chatKey","user","teamName","createdAt","approver","message","operatingSystem"],"title":"ToolApprovalResponse","description":"Tool approval item."},"ToolSchemasResponse":{"properties":{"tool_names":{"items":{"$ref":"#/components/schemas/SparkyToolName"},"type":"array","title":"Tool Names"},"tools":{"items":{"oneOf":[{"$ref":"#/components/schemas/RunCommandSchema"},{"$ref":"#/components/schemas/RunDeviceScriptSchema"},{"$ref":"#/components/schemas/TakeScreenshotSchema"},{"$ref":"#/components/schemas/GetComputerSchema"},{"$ref":"#/components/schemas/SearchKbSchema"},{"$ref":"#/components/schemas/GetKbArticleSchema"},{"$ref":"#/components/schemas/LoadSkillSchema"},{"$ref":"#/components/schemas/WebSearchSchema"},{"$ref":"#/components/schemas/TicketGetSchema"},{"$ref":"#/components/schemas/TicketPersistSchema"},{"$ref":"#/components/schemas/SearchFtsSchema"},{"$ref":"#/components/schemas/AnalyseDataSchema"},{"$ref":"#/components/schemas/GetTicketAnalysisSchema"},{"$ref":"#/components/schemas/InsightGetSchema"},{"$ref":"#/components/schemas/TwinMetricsSchema"},{"$ref":"#/components/schemas/TwinChangesSchema"},{"$ref":"#/components/schemas/ExploreSchema"},{"$ref":"#/components/schemas/TodoAddSchema"},{"$ref":"#/components/schemas/TodoStartSchema"},{"$ref":"#/components/schemas/TodoCompleteSchema"},{"$ref":"#/components/schemas/TodoSkipSchema"},{"$ref":"#/components/schemas/ActionRunSchema"},{"$ref":"#/components/schemas/ActionGetSchema"},{"$ref":"#/components/schemas/ActionGetRunSchema"},{"$ref":"#/components/schemas/ActionExecutionListSchema"},{"$ref":"#/components/schemas/ActionListSchema"},{"$ref":"#/components/schemas/CommandApprovalGetSchema"},{"$ref":"#/components/schemas/ActionProposeDraftSchema"},{"$ref":"#/components/schemas/ActionUpdateDraftSchema"},{"$ref":"#/components/schemas/ShowVideoSchema"}],"discriminator":{"propertyName":"tool","mapping":{"action_create":"#/components/schemas/ActionProposeDraftSchema","action_execution_list":"#/components/schemas/ActionExecutionListSchema","action_get":"#/components/schemas/ActionGetSchema","action_get_run":"#/components/schemas/ActionGetRunSchema","action_list":"#/components/schemas/ActionListSchema","action_run":"#/components/schemas/ActionRunSchema","action_update":"#/components/schemas/ActionUpdateDraftSchema","analyse_data":"#/components/schemas/AnalyseDataSchema","command_approval_get":"#/components/schemas/CommandApprovalGetSchema","explore":"#/components/schemas/ExploreSchema","get_computer":"#/components/schemas/GetComputerSchema","get_kb_article":"#/components/schemas/GetKbArticleSchema","get_ticket_analysis":"#/components/schemas/GetTicketAnalysisSchema","insight_get":"#/components/schemas/InsightGetSchema","load_skill":"#/components/schemas/LoadSkillSchema","run_command":"#/components/schemas/RunCommandSchema","run_device_script":"#/components/schemas/RunDeviceScriptSchema","search_fts":"#/components/schemas/SearchFtsSchema","search_kb":"#/components/schemas/SearchKbSchema","show_video":"#/components/schemas/ShowVideoSchema","take_screenshot":"#/components/schemas/TakeScreenshotSchema","ticket_get":"#/components/schemas/TicketGetSchema","ticket_persist":"#/components/schemas/TicketPersistSchema","todo_add":"#/components/schemas/TodoAddSchema","todo_complete":"#/components/schemas/TodoCompleteSchema","todo_skip":"#/components/schemas/TodoSkipSchema","todo_start":"#/components/schemas/TodoStartSchema","twin_changes":"#/components/schemas/TwinChangesSchema","twin_metrics":"#/components/schemas/TwinMetricsSchema","web_search":"#/components/schemas/WebSearchSchema"}}},"type":"array","title":"Tools"}},"type":"object","required":["tool_names","tools"],"title":"ToolSchemasResponse","description":"All available Sparky tool schemas."},"TopupPurchaseResponse":{"properties":{"credits":{"type":"integer","title":"Credits"},"state":{"type":"string","title":"State"}},"type":"object","required":["credits","state"],"title":"TopupPurchaseResponse"},"TopupQuoteResponse":{"properties":{"key":{"type":"string","title":"Key"},"usdCents":{"type":"integer","title":"Usdcents"},"credits":{"type":"integer","title":"Credits"},"expiresAt":{"type":"string","format":"date-time","title":"Expiresat"}},"type":"object","required":["key","usdCents","credits","expiresAt"],"title":"TopupQuoteResponse"},"TriageApplyMode":{"type":"string","enum":["SUPERIT_ONLY","PSA_INTERNAL_NOTE","PSA_AUTO_UPDATE"],"title":"TriageApplyMode","description":"Where triage suggestions land for a connection.\n\nSpec C only persists the value; spec D's dispatch logic acts on it."},"TriageField":{"type":"string","enum":["status","priority","impact","urgency","board","ticket_type","category","type","subtype","item","source","agreement","summary","description"],"title":"TriageField","description":"Fields an admin can stop automated triage from writing."},"TrialProspectRedeemRequest":{"properties":{"token":{"type":"string","minLength":1,"title":"Token"}},"type":"object","required":["token"],"title":"TrialProspectRedeemRequest","description":"Redeem a trial-prospect invitation by its token."},"TrialProspectRedeemResponse":{"properties":{"teamKey":{"type":"string","title":"Teamkey"}},"type":"object","required":["teamKey"],"title":"TrialProspectRedeemResponse","description":"The team the authenticated user was just granted redeemed access to."},"TriggerSource":{"type":"string","enum":["manual","sparky_chat","schedule","ticket_recommendation"],"title":"TriggerSource","description":"What initiated an execution.\n\nSet server-side per callsite, never from a request body — provenance on an\naudit record must not be forgeable. Rows created before this field existed\nare NULL (\"unknown\"); there is no data from which to recover their origin."},"TwinChangesInput":{"properties":{"devices":{"items":{"type":"string"},"type":"array","title":"Devices"},"domains":{"anyOf":[{"items":{"type":"string","enum":["device","session","network_interface","printer_connection","wifi_connection"]},"type":"array"},{"type":"null"}],"title":"Domains"},"range":{"type":"string","enum":["24h","7d","30d","90d"],"title":"Range","default":"7d"},"start":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start"}},"type":"object","required":["devices"],"title":"TwinChangesInput"},"TwinChangesResult":{"properties":{"start":{"type":"string","format":"date-time","title":"Start"},"end":{"type":"string","format":"date-time","title":"End"},"devices":{"items":{"$ref":"#/components/schemas/DeviceChanges"},"type":"array","title":"Devices"},"unresolved":{"items":{"$ref":"#/components/schemas/UnresolvedDevice"},"type":"array","title":"Unresolved"},"evidence_refs":{"items":{"$ref":"#/components/schemas/CaptureRef"},"type":"array","title":"Evidence Refs"}},"type":"object","required":["start","end","devices","unresolved"],"title":"TwinChangesResult"},"TwinChangesSchema":{"properties":{"tool":{"type":"string","const":"twin_changes","title":"Tool","default":"twin_changes"},"description":{"type":"string","title":"Description","default":"Change history for named devices"},"input":{"anyOf":[{"$ref":"#/components/schemas/TwinChangesInput"},{"type":"null"}]},"output":{"anyOf":[{"$ref":"#/components/schemas/TwinChangesResult"},{"type":"null"}]}},"type":"object","title":"TwinChangesSchema"},"TwinMetricsInput":{"properties":{"devices":{"items":{"type":"string"},"type":"array","title":"Devices"},"metrics":{"items":{"type":"string","enum":["cpu","memory","disk","disk_io","network","wifi"]},"type":"array","title":"Metrics"},"range":{"type":"string","enum":["1h","6h","24h","3d","7d"],"title":"Range","default":"6h"},"start":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start"},"disk_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Disk Path"}},"type":"object","required":["devices","metrics"],"title":"TwinMetricsInput"},"TwinMetricsResult":{"properties":{"start":{"type":"string","format":"date-time","title":"Start"},"end":{"type":"string","format":"date-time","title":"End"},"granularity":{"type":"string","enum":["5m","1h"],"title":"Granularity"},"devices":{"items":{"$ref":"#/components/schemas/DeviceSeries"},"type":"array","title":"Devices"},"unresolved":{"items":{"$ref":"#/components/schemas/UnresolvedDevice"},"type":"array","title":"Unresolved"},"evidence_refs":{"items":{"$ref":"#/components/schemas/CaptureRef"},"type":"array","title":"Evidence Refs"}},"type":"object","required":["start","end","granularity","devices","unresolved"],"title":"TwinMetricsResult"},"TwinMetricsSchema":{"properties":{"tool":{"type":"string","const":"twin_metrics","title":"Tool","default":"twin_metrics"},"description":{"type":"string","title":"Description","default":"Metric history for named devices"},"input":{"anyOf":[{"$ref":"#/components/schemas/TwinMetricsInput"},{"type":"null"}]},"output":{"anyOf":[{"$ref":"#/components/schemas/TwinMetricsResult"},{"type":"null"}]}},"type":"object","title":"TwinMetricsSchema"},"UnifiedConnectionItem":{"properties":{"key":{"type":"string","title":"Key"},"displayName":{"type":"string","title":"Displayname"},"tenantId":{"type":"string","title":"Tenantid"},"isActive":{"type":"boolean","title":"Isactive"},"lastSyncAt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lastsyncat"}},"type":"object","required":["key","displayName","tenantId","isActive","lastSyncAt"],"title":"UnifiedConnectionItem","description":"Connection summary shown on unified users page."},"UnifiedStatsItem":{"properties":{"total":{"type":"integer","title":"Total"},"unverifiedSessions":{"type":"integer","title":"Unverifiedsessions"},"pendingActivation":{"type":"integer","title":"Pendingactivation"}},"type":"object","required":["total","unverifiedSessions","pendingActivation"],"title":"UnifiedStatsItem","description":"Stats summary for unified users list page."},"UnifiedUsersListResponse":{"properties":{"count":{"type":"integer","title":"Count"},"page":{"type":"integer","title":"Page"},"pageSize":{"type":"integer","title":"Pagesize"},"totalPages":{"type":"integer","title":"Totalpages"},"stats":{"$ref":"#/components/schemas/UnifiedStatsItem"},"connections":{"items":{"$ref":"#/components/schemas/UnifiedConnectionItem"},"type":"array","title":"Connections"},"results":{"items":{"$ref":"#/components/schemas/InternalUserItem"},"type":"array","title":"Results"},"m365Matches":{"additionalProperties":{"items":{"$ref":"#/components/schemas/M365MatchItem"},"type":"array"},"type":"object","title":"M365Matches"},"psaMatches":{"anyOf":[{"additionalProperties":{"items":{"$ref":"#/components/schemas/PsaMatchItem"},"type":"array"},"type":"object"},{"type":"null"}],"title":"Psamatches"},"staffTeamName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Staffteamname"}},"type":"object","required":["count","page","pageSize","totalPages","stats","connections","results","m365Matches","psaMatches"],"title":"UnifiedUsersListResponse","description":"Paginated unified users list with match suggestions."},"UnparseableEventData":{"properties":{"event_type":{"type":"string","const":"_unparseable","title":"Event Type","default":"_unparseable"},"original_event_type":{"type":"string","title":"Original Event Type"},"raw":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Raw"},"parse_error":{"type":"string","title":"Parse Error"}},"type":"object","required":["original_event_type","parse_error"],"title":"UnparseableEventData","description":"Fallback shape when event.data fails validation against the typed union.\n\nPreserves the raw payload and parse error so the UI can still render\nsomething and operators can investigate the malformed row."},"UnresolvedDevice":{"properties":{"query":{"type":"string","title":"Query"},"reason":{"type":"string","enum":["not_found","ambiguous"],"title":"Reason"},"candidates":{"items":{"$ref":"#/components/schemas/DeviceCandidate"},"type":"array","title":"Candidates"}},"type":"object","required":["query","reason","candidates"],"title":"UnresolvedDevice"},"UpdateActionBody":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1,"pattern":".*[A-Za-z0-9].*"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"runtime":{"anyOf":[{"$ref":"#/components/schemas/Runtime"},{"type":"null"}]},"draft":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Draft"},"authorisation":{"anyOf":[{"$ref":"#/components/schemas/AuthorizationMatrix"},{"type":"null"}]},"authorisationPolicyKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorisationpolicykey"},"credentialKeys":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Credentialkeys"},"inputsSchema":{"anyOf":[{"items":{"$ref":"#/components/schemas/InputField"},"type":"array"},{"type":"null"}],"title":"Inputsschema"},"approvalSchema":{"anyOf":[{"items":{"$ref":"#/components/schemas/InputField"},"type":"array"},{"type":"null"}],"title":"Approvalschema"},"allowedHosts":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowedhosts"},"executionTarget":{"anyOf":[{"$ref":"#/components/schemas/ExecutionTarget"},{"type":"null"}]},"meshDeviceSelector":{"anyOf":[{"type":"string","maxLength":255,"minLength":1,"pattern":"^[^\\x00-\\x1F\\x7F-\\x9F]*$"},{"type":"null"}],"title":"Meshdeviceselector"},"pollTimeoutSeconds":{"anyOf":[{"type":"integer","maximum":2147483647.0,"minimum":1.0},{"type":"null"}],"title":"Polltimeoutseconds"},"pollIntervalSeconds":{"anyOf":[{"type":"integer","maximum":2147483647.0,"minimum":1.0},{"type":"null"}],"title":"Pollintervalseconds"},"scriptTimeoutSeconds":{"anyOf":[{"type":"integer","maximum":3600.0,"minimum":1.0},{"type":"null"}],"title":"Scripttimeoutseconds"},"autoRun":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Autorun"}},"additionalProperties":false,"type":"object","title":"UpdateActionBody","description":"Fields to change on an action. Omitted fields are left as they are."},"UpdateAnalysisSettingsRequest":{"properties":{"recordAutomationVisit":{"type":"boolean","title":"Recordautomationvisit","default":false},"ticketAnalysisEnabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ticketanalysisenabled"},"ticketAnalysisTriggers":{"anyOf":[{"$ref":"#/components/schemas/TicketAnalysisTriggerSettings"},{"type":"null"}]},"insightConsolidationEnabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Insightconsolidationenabled"},"insightRecurringEnabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Insightrecurringenabled"},"insightEmailNotificationsEnabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Insightemailnotificationsenabled"},"kbCurationEnabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Kbcurationenabled"},"kbCurationRecurringEnabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Kbcurationrecurringenabled"},"kbCurationAutoPublishEnabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Kbcurationautopublishenabled"},"skipStatusCategories":{"anyOf":[{"items":{"$ref":"#/components/schemas/StatusCategory"},"type":"array"},{"type":"null"}],"title":"Skipstatuscategories"},"minNarrativeTokens":{"anyOf":[{"type":"integer","maximum":2147483647.0,"minimum":0.0},{"type":"null"}],"title":"Minnarrativetokens"},"levelZeroTiers":{"anyOf":[{"items":{"$ref":"#/components/schemas/AutonomyTier"},"type":"array"},{"type":"null"}],"title":"Levelzerotiers"},"levelZeroDeviceGatheringEnabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Levelzerodevicegatheringenabled"},"endUserResolutionEnabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enduserresolutionenabled"},"endUserResolutionApplyMode":{"anyOf":[{"$ref":"#/components/schemas/EndUserResolutionApplyMode"},{"type":"null"}]},"triageApplyMode":{"anyOf":[{"$ref":"#/components/schemas/TriageApplyMode"},{"type":"null"}]},"triageBlockedFields":{"anyOf":[{"items":{"$ref":"#/components/schemas/TriageField"},"type":"array"},{"type":"null"}],"title":"Triageblockedfields"},"investigateApplyMode":{"anyOf":[{"$ref":"#/components/schemas/TriageApplyMode"},{"type":"null"}]},"investigateIncludeAudit":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Investigateincludeaudit"},"runSummaryEnabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Runsummaryenabled"},"triageStatusCategories":{"anyOf":[{"items":{"$ref":"#/components/schemas/StatusCategory"},"type":"array"},{"type":"null"}],"title":"Triagestatuscategories"},"investigateStatusCategories":{"anyOf":[{"items":{"$ref":"#/components/schemas/StatusCategory"},"type":"array"},{"type":"null"}],"title":"Investigatestatuscategories"},"endUserChatStatusCategories":{"anyOf":[{"items":{"$ref":"#/components/schemas/StatusCategory"},"type":"array"},{"type":"null"}],"title":"Enduserchatstatuscategories"}},"type":"object","title":"UpdateAnalysisSettingsRequest","description":"Patch request for team-level analysis and insight controls."},"UpdateAuthorisationPolicyBody":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1,"pattern":"^[^\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x9F]*$"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"authorisation":{"anyOf":[{"$ref":"#/components/schemas/AuthorizationMatrix"},{"type":"null"}]}},"additionalProperties":false,"type":"object","title":"UpdateAuthorisationPolicyBody"},"UpdateCredentialBody":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1,"pattern":".*[A-Za-z0-9].*"},{"type":"null"}],"title":"Name"},"fields":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/OAuthAppFields"},{"$ref":"#/components/schemas/ApiKeyFields"}],"discriminator":{"propertyName":"type","mapping":{"api_key":"#/components/schemas/ApiKeyFields","oauth_app":"#/components/schemas/OAuthAppFields"}}},{"type":"null"}],"title":"Fields"}},"additionalProperties":false,"type":"object","title":"UpdateCredentialBody","description":"Fields to change on a credential. Omitted fields are left as they are."},"UpdateInsightStatusRequest":{"properties":{"status":{"$ref":"#/components/schemas/InsightStatus"}},"additionalProperties":false,"type":"object","required":["status"],"title":"UpdateInsightStatusRequest","description":"Request body for changing an insight's status."},"UpdateInsightStatusResponse":{"properties":{"key":{"type":"string","title":"Key"},"status":{"$ref":"#/components/schemas/InsightStatus"},"statusChangedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Statuschangedat"}},"type":"object","required":["key","status","statusChangedAt"],"title":"UpdateInsightStatusResponse","description":"Result of an insight status change."},"UpdateServiceAccountBody":{"properties":{"allowedScopes":{"items":{"type":"string"},"type":"array","title":"Allowedscopes"}},"type":"object","title":"UpdateServiceAccountBody","description":"Request body for changing what an existing account may call.\n\nOnly the scopes. Role is deliberately not editable here: it decides what\nthe principal can *see*, and changing it silently under a running\nautomation is a different and larger decision than narrowing which\nendpoints it may reach."},"UpdateServiceAccountTeamAccessBody":{"properties":{"assignments":{"items":{"$ref":"#/components/schemas/ServiceAccountTeamAssignment"},"type":"array","title":"Assignments"}},"type":"object","required":["assignments"],"title":"UpdateServiceAccountTeamAccessBody","description":"Only the supplied teams are changed; omitted teams are untouched."},"UpdateTeamMemberRequest":{"properties":{"firstName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firstname"},"lastName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lastname"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"role":{"anyOf":[{"$ref":"#/components/schemas/MembershipRole"},{"type":"null"}]}},"type":"object","title":"UpdateTeamMemberRequest","description":"Update an existing team member's details (PATCH — all optional)."},"UsageCategoryResponse":{"properties":{"category":{"type":"string","enum":["triage","investigate","analysis","chats"],"title":"Category"},"label":{"type":"string","title":"Label"},"count":{"type":"integer","title":"Count"},"costCents":{"type":"integer","title":"Costcents"}},"type":"object","required":["category","label","count","costCents"],"title":"UsageCategoryResponse","description":"One quota-counted usage category row (see design doc's category ->\nsource mapping table)."},"UserInputOption":{"properties":{"id":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,64}$","title":"Id"},"label":{"type":"string","maxLength":120,"minLength":1,"title":"Label"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"}},"additionalProperties":false,"type":"object","required":["id","label"],"title":"UserInputOption"},"UserInputQuestion":{"properties":{"id":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,64}$","title":"Id"},"question":{"type":"string","maxLength":3000,"minLength":1,"title":"Question"},"selection":{"type":"string","enum":["single","multiple"],"title":"Selection","default":"single"},"options":{"items":{"$ref":"#/components/schemas/UserInputOption"},"type":"array","maxItems":8,"minItems":2,"title":"Options"},"allowFreeText":{"type":"boolean","title":"Allowfreetext","default":true},"required":{"type":"boolean","title":"Required","default":true}},"additionalProperties":false,"type":"object","required":["id","question","options"],"title":"UserInputQuestion"},"UserInputSnapshot":{"properties":{"key":{"type":"string","title":"Key"},"chatKey":{"type":"string","title":"Chatkey"},"toolCallId":{"type":"string","title":"Toolcallid"},"status":{"$ref":"#/components/schemas/UserInputStatus"},"question":{"$ref":"#/components/schemas/UserInputQuestion"},"answer":{"anyOf":[{"$ref":"#/components/schemas/UserInputSubmission"},{"type":"null"}]},"respondentMembershipKey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Respondentmembershipkey"},"respondedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Respondedat"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"},"updatedAt":{"type":"string","format":"date-time","title":"Updatedat"}},"type":"object","required":["key","chatKey","toolCallId","status","question","createdAt","updatedAt"],"title":"UserInputSnapshot"},"UserInputStatus":{"type":"string","enum":["pending","answered","skipped","superseded"],"title":"UserInputStatus"},"UserInputSubmission":{"properties":{"questionId":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,64}$","title":"Questionid"},"action":{"type":"string","enum":["answer","skip"],"title":"Action","default":"answer"},"selectedOptionIds":{"items":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,64}$"},"type":"array","maxItems":8,"title":"Selectedoptionids"},"text":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Text"}},"additionalProperties":false,"type":"object","required":["questionId"],"title":"UserInputSubmission"},"UserResponse":{"properties":{"key":{"type":"string","title":"Key"},"email":{"type":"string","title":"Email"},"firstName":{"type":"string","title":"Firstname","default":""},"lastName":{"type":"string","title":"Lastname","default":""},"fullName":{"type":"string","title":"Fullname","default":""},"nickname":{"type":"string","title":"Nickname","default":""},"displayName":{"type":"string","title":"Displayname","default":""},"avatarUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatarurl"},"lastLogin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lastlogin"},"phoneNumber":{"type":"string","title":"Phonenumber","default":""},"timezone":{"type":"string","title":"Timezone","default":""},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"}},"type":"object","required":["key","email"],"title":"UserResponse","description":"User data for API responses."},"UserWithMembershipResponse":{"properties":{"key":{"type":"string","title":"Key"},"email":{"type":"string","title":"Email"},"firstName":{"type":"string","title":"Firstname","default":""},"lastName":{"type":"string","title":"Lastname","default":""},"fullName":{"type":"string","title":"Fullname","default":""},"nickname":{"type":"string","title":"Nickname","default":""},"displayName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Displayname"},"avatarUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatarurl"},"role":{"$ref":"#/components/schemas/MembershipRole"},"lastLogin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lastlogin"},"isM365Linked":{"type":"boolean","title":"Ism365Linked","default":false}},"type":"object","required":["key","email","role"],"title":"UserWithMembershipResponse","description":"User with membership info for team member lists.\n\nIdentified by the nanoid ``key`` — the ``user`` table PK stays behind the\nrepository boundary and is never serialised."},"UsersListResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/UserWithMembershipResponse"},"type":"array","title":"Results"}},"type":"object","required":["results"],"title":"UsersListResponse","description":"Paginated users list response."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VerificationMethod":{"type":"string","enum":["aad_auto","admin_manual","aad_pending","install_key","legacy"],"title":"VerificationMethod"},"VerifySessionRequest":{"properties":{"userKey":{"type":"string","title":"Userkey"}},"type":"object","required":["userKey"],"title":"VerifySessionRequest","description":"Request body for manual session verification."},"VideoToolOutput":{"properties":{"kind":{"type":"string","const":"video","title":"Kind","default":"video"},"youtube_id":{"type":"string","title":"Youtube Id"},"title":{"type":"string","title":"Title"}},"type":"object","required":["youtube_id","title"],"title":"VideoToolOutput"},"WaitingForApprovalView":{"properties":{"kind":{"type":"string","const":"waiting_for_approval","title":"Kind","default":"waiting_for_approval"},"execution":{"$ref":"#/components/schemas/ExecutionDetail"},"callerCanApprove":{"type":"boolean","title":"Callercanapprove"},"callerCanCancel":{"type":"boolean","title":"Callercancancel"},"approverContacts":{"$ref":"#/components/schemas/ActionAccessContactList"}},"type":"object","required":["execution","callerCanApprove","callerCanCancel","approverContacts"],"title":"WaitingForApprovalView"},"WebSearchInput":{"properties":{"query":{"type":"string","title":"Query"},"max_results":{"type":"integer","title":"Max Results","default":5}},"type":"object","required":["query"],"title":"WebSearchInput"},"WebSearchSchema":{"properties":{"tool":{"type":"string","const":"web_search","title":"Tool","default":"web_search"},"description":{"type":"string","title":"Description","default":"Search the web"},"input":{"anyOf":[{"$ref":"#/components/schemas/WebSearchInput"},{"type":"null"}]}},"type":"object","title":"WebSearchSchema"},"WebSocketEnumsResponse":{"properties":{"server_events":{"items":{"$ref":"#/components/schemas/ServerWebSocketEventType"},"type":"array","title":"Server Events"},"client_events":{"items":{"$ref":"#/components/schemas/ClientWebSocketEventType"},"type":"array","title":"Client Events"},"stream_part_kinds":{"items":{"$ref":"#/components/schemas/StreamPartKind"},"type":"array","title":"Stream Part Kinds"},"stream_part_statuses":{"items":{"$ref":"#/components/schemas/StreamPartStatus"},"type":"array","title":"Stream Part Statuses"},"feedback_types":{"items":{"$ref":"#/components/schemas/FeedbackType"},"type":"array","title":"Feedback Types"}},"type":"object","required":["server_events","client_events","stream_part_kinds","stream_part_statuses","feedback_types"],"title":"WebSocketEnumsResponse","description":"WebSocket protocol enum values for frontend codegen."},"WebhookReceivedData":{"properties":{"event_type":{"type":"string","const":"webhook_received","title":"Event Type","default":"webhook_received"},"entity_id":{"type":"string","title":"Entity Id"},"status":{"type":"string","title":"Status"},"is_new":{"type":"boolean","title":"Is New"},"status_changed":{"type":"boolean","title":"Status Changed"}},"type":"object","required":["entity_id","status","is_new","status_changed"],"title":"WebhookReceivedData"},"WebhookSecretResponse":{"properties":{"webhookSecret":{"type":"string","title":"Webhooksecret"}},"type":"object","required":["webhookSecret"],"title":"WebhookSecretResponse"},"WifiBucket":{"properties":{"bucket":{"type":"string","format":"date-time","title":"Bucket"},"samples":{"type":"integer","title":"Samples"},"dbmAvg":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Dbmavg"},"dbmMin":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Dbmmin"},"dbmMax":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Dbmmax"},"qualityAvg":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Qualityavg"},"qualityMin":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Qualitymin"}},"type":"object","required":["bucket","samples","dbmAvg","dbmMin","dbmMax","qualityAvg","qualityMin"],"title":"WifiBucket"},"WindowsPlatforms":{"properties":{"amd64":{"$ref":"#/components/schemas/PlatformAsset"},"arm64":{"$ref":"#/components/schemas/PlatformAsset"}},"type":"object","required":["amd64","arm64"],"title":"WindowsPlatforms","description":"Windows platform assets."},"WorkflowRecommendation":{"properties":{"title":{"type":"string","maxLength":255,"title":"Title","description":"Short name for the proposed workflow, e.g. 'Restore shared-drive access after security-group re-scope'"},"trigger":{"type":"string","title":"Trigger","description":"The class of ticket / condition this workflow should fire on — general, not this one ticket."},"outline":{"type":"string","title":"Outline","description":"The steps the workflow would automate (a runbook sketch)."},"reusability":{"type":"string","title":"Reusability","description":"Why building this resolves DIFFERENT future tickets with a similar (not identical) situation. If you cannot articulate this clearly, do not include the recommendation."}},"type":"object","required":["title","trigger","outline","reusability"],"title":"WorkflowRecommendation","description":"A new automation workflow worth building for a recurring, automatable\nclass of ticket.\n\nDistinct from ``KnowledgeArtifactExtraction`` (which produces KB\ndocumentation): this proposes a *runbook to automate*, not knowledge to\nwrite down. Only emitted when the capability assessment judged\n``automation == workflow`` AND the recommendation clears the same\ntransferability bar as knowledge artifacts."},"WorkflowSummaryStatus":{"type":"string","enum":["idle","regenerating","failed"],"title":"WorkflowSummaryStatus"},"WorkflowSummaryStep":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"}},"type":"object","required":["name","description"],"title":"WorkflowSummaryStep"},"srv__comms__routes__tools__CommandOutput":{"properties":{"id":{"type":"string","title":"Id"},"stdout":{"type":"string","title":"Stdout"},"stderr":{"type":"string","title":"Stderr"},"exit_code":{"type":"integer","title":"Exit Code"},"error":{"type":"string","title":"Error","default":""}},"type":"object","required":["id","stdout","stderr","exit_code"],"title":"CommandOutput"},"srv__identity__routes__connections__ConnectionResponse":{"properties":{"id":{"type":"integer","title":"Id"},"key":{"type":"string","title":"Key"},"identity_type":{"type":"string","title":"Identity Type"},"tenant_id":{"type":"string","title":"Tenant Id"},"tenant_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant Name"},"name":{"type":"string","title":"Name"},"is_active":{"type":"boolean","title":"Is Active"},"last_sync_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Sync At"},"last_sync_status":{"anyOf":[{"type":"string","enum":["success","error","in_progress","cancelled","pending"]},{"type":"null"}],"title":"Last Sync Status"},"sync_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sync Error"},"user_count":{"type":"integer","title":"User Count"},"license_sync_status":{"anyOf":[{"type":"string","enum":["ready","permission_required","lookup_failed","incomplete"]},{"type":"null"}],"title":"License Sync Status"},"license_sync_checked_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"License Sync Checked At"},"license_unknown_user_count":{"type":"integer","title":"License Unknown User Count","default":0},"license_unresolved_sku_count":{"type":"integer","title":"License Unresolved Sku Count","default":0}},"type":"object","required":["id","key","identity_type","tenant_id","tenant_name","name","is_active","last_sync_at","last_sync_status","sync_error","user_count"],"title":"ConnectionResponse","description":"Response for a single identity connection."},"srv__identity__routes__connections__SyncCancelResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"},"cancelled_task_ids":{"items":{"type":"string"},"type":"array","title":"Cancelled Task Ids"}},"type":"object","required":["success","message","cancelled_task_ids"],"title":"SyncCancelResponse","description":"Response after canceling sync."},"srv__identity__routes__connections__SyncTriggerResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"},"task_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Task Id"}},"type":"object","required":["success","message"],"title":"SyncTriggerResponse","description":"Response after triggering sync."},"srv__mesh__sparky__contracts__command__CommandOutput":{"properties":{"id":{"type":"string","title":"Id","description":"Mesh command execution id when the agent ran the command; synthetic value `policy-blocked` when validation blocked before execution."},"stdout":{"type":"string","title":"Stdout","description":"Standard output from command"},"stderr":{"type":"string","title":"Stderr","description":"Standard error from command"},"exit_code":{"type":"integer","title":"Exit Code","description":"Command exit code"},"error":{"type":"string","title":"Error","description":"Execution error message if any","default":""},"output_note":{"type":"string","title":"Output Note","description":"Set when output was cut or shortened: what was lost, where, and how to read the rest.","default":""},"evidence_refs":{"items":{"$ref":"#/components/schemas/CaptureRef"},"type":"array","title":"Evidence Refs"}},"type":"object","required":["id","stdout","stderr","exit_code"],"title":"CommandOutput","description":"Final result of a device command execution."},"srv__psa__routes__types__sync__SyncCancelResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"},"cancelledTaskIds":{"items":{"type":"string"},"type":"array","title":"Cancelledtaskids","default":[]}},"type":"object","required":["success","message"],"title":"SyncCancelResponse","description":"Response after cancelling sync tasks."},"srv__psa__routes__types__sync__SyncTriggerResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"},"taskId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Taskid"}},"type":"object","required":["success","message"],"title":"SyncTriggerResponse","description":"Response for sync trigger endpoints."},"srv__psa__types__connection__ConnectionResponse":{"properties":{"key":{"type":"string","title":"Key"},"psaType":{"type":"string","enum":["halo","connectwise","accelo","autotask"],"title":"Psatype"},"name":{"type":"string","title":"Name"},"apiUrl":{"type":"string","title":"Apiurl","default":""},"isActive":{"type":"boolean","title":"Isactive"},"syncIntervalMinutes":{"type":"integer","title":"Syncintervalminutes"},"ticketPollingEnabled":{"type":"boolean","title":"Ticketpollingenabled"},"ticketPollingLookbackMinutes":{"type":"integer","title":"Ticketpollinglookbackminutes"},"lastTicketPollAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Lastticketpollat"},"ticketPollError":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticketpollerror"},"isPrimary":{"type":"boolean","title":"Isprimary"},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config"},"llmInstructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Llminstructions"},"lastSyncAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Lastsyncat"},"lastSyncStatus":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lastsyncstatus"},"inboundRateLimit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Inboundratelimit"},"inboundRateLimitMax":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Inboundratelimitmax"},"inboundRateLimitUpdatedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Inboundratelimitupdatedat"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"},"updatedAt":{"type":"string","format":"date-time","title":"Updatedat"},"clientId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clientid"},"tenantId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenantid"},"codebase":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Codebase"},"companyId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Companyid"},"deployment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Deployment"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"impersonationResourceId":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Impersonationresourceid"},"supportsKbArticles":{"type":"boolean","title":"Supportskbarticles","description":"Whether this connection's PSA implements KB article extraction.\n\nComputed rather than stored so the four _to_response builders\n(connections, halo_connections, cw_connections, accelo_connections)\nneed no changes and cannot drift apart.","readOnly":true}},"type":"object","required":["key","psaType","name","isActive","syncIntervalMinutes","ticketPollingEnabled","ticketPollingLookbackMinutes","lastTicketPollAt","isPrimary","lastSyncAt","lastSyncStatus","createdAt","updatedAt","supportsKbArticles"],"title":"ConnectionResponse"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}