{"openapi":"3.1.0","info":{"title":"Systam API","description":"Systam API Service","version":"0.1"},"servers":[{"url":"http://localhost:8080","description":"Local server"},{"url":"https://api.systamrooms.com","description":"Development server"}],"paths":{"/users/change-password":{"patch":{"tags":["Authentication","User","Login"],"summary":"Change Password","description":"Change password","operationId":"Change_Password_users_change_password_patch","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePassword"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePasswordOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/update-password":{"post":{"tags":["Authentication","Login"],"summary":"Updatepassword","description":"Update password","operationId":"UpdatePassword_users_update_password_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePassword"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePasswordOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/forgot-password":{"post":{"tags":["Authentication","Login"],"summary":"Forgotpassword","description":"Initiate the forgot password process for a user.","operationId":"ForgotPassword_users_forgot_password_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotPassword"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotPasswordOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/adminusers/login":{"post":{"tags":["Authentication","Admin User"],"summary":"Login","description":"Login as admin user","operationId":"Login_adminusers_login_post","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_Login_adminusers_login_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/login":{"post":{"tags":["Authentication","User"],"summary":"Login","description":"Login as user","operationId":"Login_users_login_post","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_Login_users_login_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/device/login":{"post":{"tags":["Authentication","Device"],"summary":"Login","description":"Login as device","operationId":"Login_device_login_post","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_Login_device_login_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/visitors/login":{"post":{"tags":["Authentication","Login"],"summary":"Visitors Login","description":"Visitors login using identifier","operationId":"Visitors_login_visitors_login_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitorLogin"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hosts/login":{"post":{"tags":["Authentication","Login"],"summary":"Hosts Login","description":"Host login endpoint.\n\nAuthenticates a host using a unique login code and returns an access token\ntied to their current visit session. This token can be used to perform\nlimited operations related to the host's visit.","operationId":"Hosts_login_hosts_login_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostLogin"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostTokenOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/token/refresh":{"post":{"tags":["Authentication","Login"],"summary":"Token","description":"Get new token using refresh token","operationId":"Token_token_refresh_post","security":[{"OAuth2PasswordBearer":[]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}}}}},"/impersonation":{"post":{"tags":["Authentication","Login"],"summary":"Token","description":"Impersonation endpoint.\n\nAllows an admin user to obtain an impersonated token for a target\norganization.\nThe token is generated using the admin user's access token and\nimpersonation parameters.","operationId":"Token_impersonation_post","security":[{"OAuth2PasswordBearer":["All.All","Organization.All"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Impersonation"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImpersonatedToken"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/id_token":{"get":{"tags":["Authentication","Login"],"summary":"Google Id Token","description":"Get Google ID token using access token.\nThis endpoint allows users to obtain an ID token by providing a valid\naccess token. The ID token can be used for authentication and\nauthorization purposes.","operationId":"Google_ID_Token_id_token_get","security":[{"OAuth2PasswordBearer":["All.All","Organization.All"]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/calendars":{"get":{"tags":["Calendar"],"summary":"Get All Calendar Providers","description":"Retrieves all calendar providers associated with\nthe current user's organization.\n\nThis endpoint fetches calendar integration accounts (Azure and Google only)\nrelated to the organization to which the user belongs. Other integration\ntypes are excluded.\nIt adjusts its behavior based on the user type,\nfetching data specific to the user's device or organization role.","operationId":"Get_all_calendar_providers_calendars_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Organization.All","Organization.ReadWrite","Organization.Read"]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CalendarProvidersOut"},"title":"Response Get All Calendar Providers Calendars Get"}}}}}}},"/calendars/":{"post":{"tags":["Calendar"],"summary":"Add Calendar Integration Account","description":"Adds a calendar integration account to the user's organization.\n\nThis endpoint is responsible for adding a calendar integration account\nto the user's organization. It checks if the current user has the necessary\npermissions and belongs to an organization that can modify these\nintegrations.","operationId":"Add_calendar_integration_account_calendars__post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Organization.All","Organization.ReadWrite"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarProvidersOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/calendars/activate":{"post":{"tags":["Calendar"],"summary":"Activate Calendar Account","description":"Activates a calendar account for the current user's organization\nbased on the provided credentials.\n\nThis endpoint handles the activation of a calendar account by interfacing\nwith either Google or Azure calendar services.\nIt requires specific tokens from the client,\nwhich are then used to request access and refresh tokens from\nthe external calendar services.","operationId":"Activate_calendar_account_calendars_activate_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Organization.All","Organization.ReadWrite"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarActivate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/calendars/{calendar_provider_id}":{"delete":{"tags":["Calendar"],"summary":"Delete Calendar Provider","description":"Deletes a calendar provider associated with the user's organization.\n\nThis endpoint is responsible for deleting a calendar provider integration\nbased on its ID. It checks if the current user has the necessary\npermissions and belongs to an organization that can modify these\nintegrations.","operationId":"Delete_calendar_provider_calendars__calendar_provider_id__delete","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Organization.All","Organization.ReadWrite"]}],"parameters":[{"name":"calendar_provider_id","in":"path","required":true,"schema":{"type":"integer","title":"Calendar Provider Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rooms/events":{"get":{"tags":["Room","Calendar"],"summary":"Get Rooms Calendar Events","description":"Get rooms calendar events.\n\nRestricted to Workplace display use only (device token).\n\nThe values of start_date_time and end_date_time are interpreted using the timezone offset specified in the value. If no timezone offset is included in the value, it is interpreted as UTC.","operationId":"Get_rooms_calendar_events_rooms_events_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Calendar.All","Calendar.ReadWrite","Calendar.Read"]}],"parameters":[{"name":"select","in":"query","required":false,"schema":{"type":"string","description":"Query parameter to return a set of properties that are different than the default set.\n\nPossible properties options: start, end, subject, organizer.\n\n","examples":"select=start,end,subject","default":"start,end,subject,organizer","title":"Select"},"description":"Query parameter to return a set of properties that are different than the default set.\n\nPossible properties options: start, end, subject, organizer.\n\n"},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","description":"Query parameter to specify the sort order of the items returned from endpoint. The default order is ascending order.\n\nChange the direction of the sorting (ASC or DESC) by prefixing with - or + (Optional, it's the default behavior if omitted).\n\nPossible properties options: start, end, subject, organizer/name, organizer/email, organizer (by organizer name).\n\n","examples":"\n\nselect=start\n\nselect=+start\n\nselect=-start\n\nselect=organizer/email\n\nselect=-organizer/email\n\nselect=organizer\n\n","default":"start","title":"Order By"},"description":"Query parameter to specify the sort order of the items returned from endpoint. The default order is ascending order.\n\nChange the direction of the sorting (ASC or DESC) by prefixing with - or + (Optional, it's the default behavior if omitted).\n\nPossible properties options: start, end, subject, organizer/name, organizer/email, organizer (by organizer name).\n\n"},{"name":"start_date_time","in":"query","required":true,"schema":{"type":"string","format":"date-time","description":"The start date and time of the time range,represented in ISO 8601 format.\n\n","examples":"\n\nstart_date_time=2022-10-26T08:00:00,\n\nstart_date_time=2022-10-26T08:00:00-08:00","title":"Start Date Time"},"description":"The start date and time of the time range,represented in ISO 8601 format.\n\n"},{"name":"end_date_time","in":"query","required":true,"schema":{"type":"string","format":"date-time","description":"The end date and time of the time range,represented in ISO 8601 format.\n\n","examples":"\n\nend_date_time=2022-10-26T18:00:00,\n\nend_date_time=2022-10-26T18:00:00-08:00","title":"End Date Time"},"description":"The end date and time of the time range,represented in ISO 8601 format.\n\n"},{"name":"top","in":"query","required":false,"schema":{"type":"integer","description":"Limits calendar event amount in response. Has a minimum value of 1 and maximum of 1000.","default":10,"title":"Top"},"description":"Limits calendar event amount in response. Has a minimum value of 1 and maximum of 1000."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarEventsOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Room","Calendar"],"summary":"Add Rooms Calendar Event","description":"Add rooms calendar event for selected resource.\n\nRestricted to Workplace display use only (device token).\n\nIn request body time_zone represents a time zone, for example, \"Europe/Helsinki\".","operationId":"Add_rooms_calendar_event_rooms_events_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Calendar.All","Calendar.ReadWrite"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GraphCalendarEventCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarEventOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rooms/events/{event_id}":{"get":{"tags":["Room","Calendar"],"summary":"Get Rooms Calendar Event By Id","description":"Get rooms calendar event by id. \n\nRestricted to Workplace display use only (device token).","operationId":"Get_rooms_calendar_event_by_id_rooms_events__event_id__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Calendar.All","Calendar.ReadWrite","Calendar.Read"]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","title":"Event Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarEventOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Room","Calendar"],"summary":"Update Rooms Calendar Event","description":"Update rooms calendar event for selected resource.\n\nRestricted to Workplace display use only (device token).\n\nIn request body time_zone represents a time zone, for example, \"Europe/Helsinki\".","operationId":"Update_rooms_calendar_event_rooms_events__event_id__patch","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Calendar.All","Calendar.ReadWrite"]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","title":"Event Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GraphCalendarEventUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarEventOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Room","Calendar"],"summary":"Remove Rooms Calendar Event","description":"Remove rooms calendar event for selected resource.\n\nRestricted to Workplace display use only (device token).","operationId":"Remove_rooms_calendar_event_rooms_events__event_id__delete","security":[{"OAuth2PasswordBearer":["All.All","Calendar.All"]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","title":"Event Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/organizations/":{"get":{"tags":["Organization"],"summary":"Get Organizations","description":"Retrieve organizations accessible to the current user.","operationId":"Get_organizations_organizations__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Organization.All","Organization.ReadWrite","Organization.Read"]}],"parameters":[{"name":"order_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Change the direction of the sorting (ASC or DESC) by prefixing with - or + (Optional, it's the default behavior if omitted). It takes a list of string, separated by comma.\n\nSort options:\n\nname, created\n\nExample:\n\norder_by=created\n\norder_by=-created\n\norder_by=created,name","default":"created","title":"Order By"},"description":"Change the direction of the sorting (ASC or DESC) by prefixing with - or + (Optional, it's the default behavior if omitted). It takes a list of string, separated by comma.\n\nSort options:\n\nname, created\n\nExample:\n\norder_by=created\n\norder_by=-created\n\norder_by=created,name","example":{}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationOut"},"title":"Response Get Organizations Organizations  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Organization"],"summary":"Create Organization","description":"Create a new organization.\n\nThis endpoint allows authorized users to create a new organization. Only\nusers with admin privileges can perform this action. The organization data\nprovided in the request will be validated and persisted in the database.","operationId":"Create_organization_organizations__post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Organization.All","Organization.ReadWrite"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/organizations/templates":{"get":{"tags":["Organization"],"summary":"Get Organization Templates","description":"Retrieve organization templates.\n\nThis endpoint fetches a list of organization templates. Only users with\nadmin privileges are authorized to access this endpoint. The templates\ninclude predefined settings that can be used to create new organizations.","operationId":"Get_organization_templates_organizations_templates_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Organization.All","Organization.ReadWrite","Organization.Read"]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationWithSettingsOut"},"title":"Response Get Organization Templates Organizations Templates Get"}}}}}}},"/organizations/{organization_id}":{"get":{"tags":["Organization"],"summary":"Get Organization By Id","description":"Retrieve a specific organization by its ID.","operationId":"Get_organization_by_id_organizations__organization_id__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Organization.All","Organization.ReadWrite","Organization.Read"]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"integer","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Organization"],"summary":"Update Organization","description":"Update an existing organization.\n\nThis endpoint allows authorized users to update the details of an existing\norganization identified by `organization_id`. It ensures that\nthe organization is not a template before allowing updates.\nOnly users with appropriate permissions can perform this action.","operationId":"Update_organization_organizations__organization_id__patch","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Organization.All","Organization.ReadWrite"]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"integer","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Organization"],"summary":"Delete Organization","description":"Delete an existing organization.\n\nThis endpoint allows authorized users to delete an organization identified\nby `organization_id`. It ensures that the user has the necessary\npermissions and that the organization exists before performing\nthe deletion. The endpoint is idempotent and will return a\n`204 No Content` status regardless of whether the organization was\npreviously deleted.","operationId":"Delete_organization_organizations__organization_id__delete","security":[{"OAuth2PasswordBearer":["All.All","Organization.All"]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"integer","title":"Organization Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/organizations/{organization_id}/rooms":{"get":{"tags":["Organization"],"summary":"Get Organization With Rooms By Id","description":"Retrieve an organization along with its associated rooms.","operationId":"Get_organization_with_rooms_by_id_organizations__organization_id__rooms_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Room.All","Room.ReadWrite","Room.Read"]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"integer","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationWithRoomsOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Organization"],"summary":"Add Room To An Organization","description":"Add a room to an organization.","operationId":"Add_room_to_an_organization_organizations__organization_id__rooms_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Room.All","Room.ReadWrite"]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"integer","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationRoomRouteCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationRoomOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/organizations/{organization_id}/rooms/{room_id}":{"patch":{"tags":["Organization"],"summary":"Update Organization Room","description":"Update an organization room.","operationId":"Update_organization_room_organizations__organization_id__rooms__room_id__patch","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Room.All","Room.ReadWrite"]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"integer","title":"Organization Id"}},{"name":"room_id","in":"path","required":true,"schema":{"type":"integer","title":"Room Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationRoomRouteUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationRoomOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Organization"],"summary":"Remove Room From Organization","description":"Remove a room from an organization.","operationId":"Remove_room_from_organization_organizations__organization_id__rooms__room_id__delete","security":[{"OAuth2PasswordBearer":["All.All","Room.All"]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"integer","title":"Organization Id"}},{"name":"room_id","in":"path","required":true,"schema":{"type":"integer","title":"Room Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/organizations/{organization_id}/workspaces":{"get":{"tags":["Organization"],"summary":"Get Organization Workspaces By Organization Id","description":"Retrieve an organization and its associated workspaces.","operationId":"Get_organization_workspaces_by_organization_id_organizations__organization_id__workspaces_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Organization.All","Organization.ReadWrite","Organization.Read"]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"integer","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationWithWorkspaceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/organizations/{organization_id}/users":{"get":{"tags":["Organization"],"summary":"Get Users By Organization Id","description":"Retrieve all users belonging to a specific organization.","operationId":"Get_users_by_organization_id_organizations__organization_id__users_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","User.All","User.ReadWrite","User.Read"]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"integer","title":"Organization Id"}},{"name":"role__name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Role filter\n\nexample: role__name=AdminUser","title":"Role  Name"},"description":"Role filter\n\nexample: role__name=AdminUser","example":{}},{"name":"role__name__like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Role filter using like\n\nexample: role__name__like=ad -> result role: AdminUser","title":"Role  Name  Like"},"description":"Role filter using like\n\nexample: role__name__like=ad -> result role: AdminUser","example":{}},{"name":"role__name__in","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Role filter using in\n\nexample: role__name__in=AdminUser,User","title":"Role  Name  In"},"description":"Role filter using in\n\nexample: role__name__in=AdminUser,User","example":{}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UserDataOut"},"title":"Response Get Users By Organization Id Organizations  Organization Id  Users Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/organizations/{organization_id}/usage":{"get":{"tags":["Organization"],"summary":"Get Organization Usage Counts","description":"Return organization-wide active usage counts.\n\nCounts are summed across **all** of the organization's workspaces and\ncover active Hosts, Kiosks, and Room displays. They are computed with\n``COUNT`` queries (no row materialization), so the endpoint stays\nefficient on large organizations.\n\nOnly an Organization Owner of this organization (or an admin) may read\nthe counts; cross-organization access is denied via ``check_user_scope``.","operationId":"Get_organization_usage_counts_organizations__organization_id__usage_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Organization.All","Organization.ReadWrite"]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"integer","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationUsageOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/organizations/{organization_uuid}/devices/reset":{"post":{"tags":["Organization"],"summary":"Reset Devices In Organization","description":"Reset serial numbers and regenerate PIN codes for devices in\nan organization.\n\nThis endpoint resets all applicable devices in the specified organization,\noptionally filtered by workspace or device type. The serial numbers\nare cleared and new PIN codes are generated for each device.\nA reset event is also triggered via the pusher mechanism\nfor each affected device.\n\nOnly authorized users with organization-level permissions can perform\nthis action.","operationId":"Reset_devices_in_organization_organizations__organization_uuid__devices_reset_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Organization.All","Organization.ReadWrite"]}],"parameters":[{"name":"organization_uuid","in":"path","required":true,"schema":{"type":"string","title":"Organization Uuid"}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Optional workspace ID to filter devices.","title":"Workspace Id"},"description":"Optional workspace ID to filter devices."},{"name":"device_type_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional device type name to filter devices.\n\nDevice types:\n\nKiosk, Room Display, Printer, Gate","title":"Device Type Name"},"description":"Optional device type name to filter devices.\n\nDevice types:\n\nKiosk, Room Display, Printer, Gate"},{"name":"rereset","in":"query","required":false,"schema":{"type":"boolean","description":"If true, resets already reset devices.","default":false,"title":"Rereset"},"description":"If true, resets already reset devices."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationDeviceResetOut"},"title":"Response Reset Devices In Organization Organizations  Organization Uuid  Devices Reset Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/":{"get":{"tags":["Workspace"],"summary":"Fetch Workspaces","description":"Fetch workspaces accessible to the current user.\n\nKey behavior\n------------\n- Path: GET `/workspaces/`\n- Auth: requires workspace read permission.\n- Inputs: optional workspace query filters.\n- Status codes: `200` on success, `401` when the caller type is not\n  allowed to list workspaces, `500` on unexpected retrieval errors.\n- Idempotency: fully idempotent read.\n- Side effects: none.\n- Returns workspaces visible to admin, organization, and workspace users\n  after applying the requested filters.","operationId":"Fetch_workspaces_workspaces__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Workspace.All","Workspace.ReadWrite","Workspace.Read"]}],"parameters":[{"name":"order_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Change the direction of the sorting (ASC or DESC) by prefixing with - or + (Optional, it's the default behavior if omitted). It takes a list of string, separated by comma.\n\nSort options:\n\nname, created\n\nExample:\n\norder_by=created\n\norder_by=-created\n\norder_by=created,name","default":"created","title":"Order By"},"description":"Change the direction of the sorting (ASC or DESC) by prefixing with - or + (Optional, it's the default behavior if omitted). It takes a list of string, separated by comma.\n\nSort options:\n\nname, created\n\nExample:\n\norder_by=created\n\norder_by=-created\n\norder_by=created,name","example":{}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceOut"},"title":"Response Fetch Workspaces Workspaces  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Workspace"],"summary":"Create Workspace","description":"Create a workspace.\n\nKey behavior\n------------\n- Path: POST `/workspaces/`\n- Auth: requires workspace read-write permission; device users are\n  rejected.\n- Inputs: workspace creation payload in the request body.\n- Status codes: `200` on success, `401` when the caller cannot create\n  workspaces, `422` when the referenced organization does not exist,\n  `500` on unexpected creation failures.\n- Idempotency: not idempotent.\n- Side effects: creates a workspace and links organization users to the\n  new workspace.","operationId":"Create_workspace_workspaces__post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Workspace.All","Workspace.ReadWrite"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/templates":{"get":{"tags":["Workspace"],"summary":"Retrieve Workspace Templates","description":"Retrieve workspace templates.\n\nKey behavior\n------------\n- Path: GET `/workspaces/templates`\n- Auth: requires workspace read permission and an admin user type.\n- Inputs: none.\n- Status codes: `200` on success, `401` when the caller is not an admin\n  user, `500` on unexpected retrieval errors.\n- Idempotency: fully idempotent read.\n- Side effects: none.\n- Returns workspaces flagged as templates together with their settings.","operationId":"Retrieve_workspace_templates_workspaces_templates_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Workspace.All","Workspace.ReadWrite","Workspace.Read"]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceSettingsOut"},"title":"Response Retrieve Workspace Templates Workspaces Templates Get"}}}}}}},"/workspaces/{workspace_id}":{"get":{"tags":["Workspace"],"summary":"Fetch Workspace By Id","description":"Fetch a workspace detail response by ID.\n\nKey behavior\n------------\n- Path: GET `/workspaces/{workspace_id}`\n- Auth: requires workspace read permission and access to the requested\n  workspace scope.\n- Inputs: workspace ID in the path.\n- Status codes: `200` on success, `404` when the workspace is missing or\n  hidden by scope checks.\n- Idempotency: fully idempotent read.\n- Side effects: none.\n- Returns the workspace detail payload plus detail-only self-service and\n  single-host fields.\n\nThe response includes ``self_service_identifier`` (value of the\nworkspace's last currently-valid QR Code identifier) and\n``self_service_url`` (``{BASE_MOBILE_URL}/signin/{identifier}``).\nEither field is null when the workspace has no currently-valid QR Code\nidentifier; the URL is also null when ``BASE_MOBILE_URL`` is not\nconfigured. Both fields are populated regardless of the\n``SelfServiceSignIn`` workspace setting.\n\nThe response also includes ``single_host_uuid``: the UUID of the\nworkspace's sole eligible host. Eligibility matches\n``GET /self-service/users`` — any user linked to the workspace via\n``user_workspace`` with ``allow_uninvited = True``, regardless of user\ntype. The field is null when zero or two or more users match.","operationId":"Fetch_workspace_by_id_workspaces__workspace_id__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Workspace.All","Workspace.ReadWrite","Workspace.Read"]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceDetailOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Workspace"],"summary":"Delete Workspace","description":"Delete a workspace by ID.\n\nKey behavior\n------------\n- Path: DELETE `/workspaces/{workspace_id}`\n- Auth: requires workspace all permission and access to the requested\n  workspace scope.\n- Inputs: workspace ID in the path.\n- Status codes: `204` when the workspace is deleted or already absent\n  within scope, `404` when the workspace is hidden by scope checks,\n  `500` on unexpected deletion failures.\n- Idempotency: idempotent delete.\n- Side effects: deletes the workspace and any related data removed by the\n  existing persistence rules.","operationId":"Delete_workspace_workspaces__workspace_id__delete","security":[{"OAuth2PasswordBearer":["All.All","Workspace.All"]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Workspace"],"summary":"Update Workspace","description":"Update a workspace.\n\nKey behavior\n------------\n- Path: PATCH `/workspaces/{workspace_id}`\n- Auth: requires workspace read-write permission and access to the\n  requested workspace scope.\n- Inputs: workspace ID in the path and a partial update payload in the\n  request body.\n- Status codes: `200` on success, `404` when the workspace is missing or\n  hidden by scope checks, `422` when validation-style update rules fail,\n  `500` on unexpected update failures.\n- Idempotency: not guaranteed to be idempotent for all payloads.\n- Side effects: updates workspace fields and may re-link organization\n  users when the organization assignment changes.","operationId":"Update_workspace_workspaces__workspace_id__patch","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Workspace.All","Workspace.ReadWrite"]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/visitors/signed-url":{"post":{"tags":["Signed URL","Workspace","Visitor"],"summary":"Request Visitors Signed Url","description":"Request visitors signed URL, for pictures","operationId":"Request_visitors_signed_URL_workspaces__workspace_id__visitors_signed_url_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Visitor.All","Visitor.ReadWrite"]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignedUrlRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignedUrlOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/hosts/signed-url":{"post":{"tags":["Signed URL","Workspace","Host"],"summary":"Get Hosts Signed Url","description":"Get hosts signed URL, for pictures","operationId":"Get_hosts_signed_URL_workspaces__workspace_id__hosts_signed_url_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Host.All","Host.ReadWrite"]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignedUrlRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignedUrlOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/settings/signed-url":{"post":{"tags":["Signed URL","Workspace","Setting"],"summary":"Get Settings Signed Url","description":"Get settings signed URL, for files","operationId":"Get_settings_signed_URL_workspaces__workspace_id__settings_signed_url_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Workspace.All","Workspace.ReadWrite"]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignedUrlRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignedUrlOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/hosts/unused-since/{date_since}":{"delete":{"tags":["Workspace","Host"],"summary":"Delete Unused Hosts","description":"Deprecated endpoint - no operation performed.\n\nKey behavior\n------------\n- Path: DELETE `/workspaces/{workspace_id}/hosts/unused-since/{date_since}`\n- Auth: requires the host all permission and access to the requested\n  workspace scope.\n- Inputs: workspace ID and a date threshold in the path. The date is\n  validated but not used.\n- Status codes: `204` on success, `404` when the workspace is missing or\n  hidden by scope checks, `422` when the date is invalid.\n- Idempotency: idempotent; no operations are performed.\n- Side effects: none. The endpoint is maintained for backward\n  compatibility with cloud functions that still reference it; host\n  functionality has been removed from the system.\n\nRoute logic\n-----------\n- Verifies the caller has scope access to the workspace.\n- Returns 204 without performing any deletions.","operationId":"Delete_Unused_Hosts_workspaces__workspace_id__hosts_unused_since__date_since__delete","security":[{"OAuth2PasswordBearer":["All.All","Host.All"]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"date_since","in":"path","required":true,"schema":{"type":"string","format":"date","title":"Date Since"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/languages":{"get":{"tags":["Language","Workspace"],"summary":"Retrieve All Languages Associated With A Workspace","description":"Retrieve all languages associated with a specific workspace.\n\nThis endpoint fetches all workspace languages for the given workspace ID.\nThe user must have the necessary workspace read permissions\nto access the workspace.","operationId":"Retrieve_all_languages_associated_with_a_workspace_workspaces__workspace_id__languages_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Workspace.All","Workspace.ReadWrite","Workspace.Read"]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceLanguagesOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Language","Workspace"],"summary":"Update Workspace Languages","description":"Update languages associated with a specific workspace.\n\nThis endpoint updates the languages associated with a workspace.\nThe user must have the necessary workspace read-write permissions\nto update the workspace.","operationId":"Update_workspace_languages_workspaces__workspace_id__languages_patch","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Workspace.All","Workspace.ReadWrite"]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceLanguageRouteUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceLanguagesOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/users":{"post":{"tags":["Workspace","User"],"summary":"Add User To Workspace","description":"Add an existing user to a workspace.\n\nThis endpoint allows authorized users to add an existing user\nto a workspace.\nThe user must belong to the same organization as the workspace.\nReturns 201 if the user is newly added, 200 if already exists.\n\nThe allow_uninvited flag will not update existing records. The\nis_assistant flag is set on new records (defaulting to False when\nomitted) and updates an existing record only when explicitly provided,\nso an idempotent add that omits it never clears an existing assistant.","operationId":"Add_user_to_workspace_workspaces__workspace_id__users_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","User.All","User.ReadWrite"]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserWorkspaceAddUserRoute"}}}},"responses":{"200":{"description":"User already exists in workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserWorkspaceOut"}}}},"201":{"description":"User successfully added to workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserWorkspaceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/user/send-notification":{"post":{"tags":["User","Messaging"],"summary":"Send User Notification","description":"Send a notification to a specified user.\n\nKey behavior\n------------\n- Path: POST `/user/send-notification`.\n- Auth: requires user read scope; the user must have access to the target\n  user's scope.\n- Returns: 202 Accepted on success.\n- Errors: 401 when the user lacks access to the target user, 404 when the\n  target user or workspace association is missing, 422 for invalid\n  payloads, 500 when the downstream send fails.","operationId":"Send_user_notification_user_send_notification_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","User.All","User.ReadWrite","User.Read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserNotification"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/visits":{"get":{"tags":["Visit","Workspace"],"summary":"Get All Visits From Workspace","description":"Get the visits of a single workspace.\n\nKey behavior\n------------\n- Path: GET `/workspaces/{workspace_id}/visits`.\n- Auth: requires the visit read (or own) permission and access to the\n  workspace scope.\n- Inputs: workspace id in the path and optional visit filter query params.\n- Status codes: `200` on success, `401` when unauthorized, `404` when the\n  caller is out of scope for the workspace. A retrieval error degrades to an\n  empty page rather than failing.\n- Idempotency: idempotent; read-only.\n- Side effects: none.","operationId":"Get_All_Visits_from_Workspace_workspaces__workspace_id__visits_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Visit.All","Visit.ReadWrite","Visit.Read","Visit.Own"]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visit name filter","title":"Name"},"description":"Visit name filter","example":{}},{"name":"name__like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visit name filter using like\n\nexample: name__like=es -> result name: Test","title":"Name  Like"},"description":"Visit name filter using like\n\nexample: name__like=es -> result name: Test","example":{}},{"name":"start_time__lte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visits start time filter -> less than or equal\n\nexamples:\n\nstart_time__lte=2022-10-26\n\nstart_time__lte=2022-10-26T08:00:00","title":"Start Time  Lte"},"description":"Visits start time filter -> less than or equal\n\nexamples:\n\nstart_time__lte=2022-10-26\n\nstart_time__lte=2022-10-26T08:00:00","example":{}},{"name":"start_time__gte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visits start time filter -> greater than or equal\n\nexamples:\n\nstart_time__gte=2022-10-26\n\nstart_time__gte=2022-10-26T08:00:00","title":"Start Time  Gte"},"description":"Visits start time filter -> greater than or equal\n\nexamples:\n\nstart_time__gte=2022-10-26\n\nstart_time__gte=2022-10-26T08:00:00","example":{}},{"name":"start_time__lt","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visits start time filter -> less than\n\nexamples:\n\nstart_time__lt=2022-10-26\n\nstart_time__lt=2022-10-26T08:00:00","title":"Start Time  Lt"},"description":"Visits start time filter -> less than\n\nexamples:\n\nstart_time__lt=2022-10-26\n\nstart_time__lt=2022-10-26T08:00:00","example":{}},{"name":"start_time__gt","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visits start time filter -> greater than\n\nexamples:\n\nstart_time__gt=2022-10-26\n\nstart_time__gt=2022-10-26T08:00:00","title":"Start Time  Gt"},"description":"Visits start time filter -> greater than\n\nexamples:\n\nstart_time__gt=2022-10-26\n\nstart_time__gt=2022-10-26T08:00:00","example":{}},{"name":"order_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Change the direction of the sorting (ASC or DESC) by prefixing with - or + (Optional, it's the default behavior if omitted). It takes a list of string, separated by comma.\n\nSort options:\n\nstart_time, name\n\nExample:\n\norder_by=start_time\n\norder_by=-start_time\n\norder_by=-start_time,name","default":"-start_time","title":"Order By"},"description":"Change the direction of the sorting (ASC or DESC) by prefixing with - or + (Optional, it's the default behavior if omitted). It takes a list of string, separated by comma.\n\nSort options:\n\nstart_time, name\n\nExample:\n\norder_by=start_time\n\norder_by=-start_time\n\norder_by=-start_time,name","example":{}},{"name":"visitor__state_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Visitors state filter: \n\n 1 = expected\n\n2 = signed_in\n\n3 = signed_out\n\nexample: state_id=1","title":"Visitor  State Id"},"description":"Visitors state filter: \n\n 1 = expected\n\n2 = signed_in\n\n3 = signed_out\n\nexample: state_id=1","example":{}},{"name":"visitor__state_id__in","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitors state filter by multi states: \n\n 1 = expected\n\n2 = signed_in\n\n3 = signed_out\n\nexample: state_id__in=1,2","title":"Visitor  State Id  In"},"description":"Visitors state filter by multi states: \n\n 1 = expected\n\n2 = signed_in\n\n3 = signed_out\n\nexample: state_id__in=1,2","example":{}},{"name":"visitor__first_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor first name filter","title":"Visitor  First Name"},"description":"Visitor first name filter","example":{}},{"name":"visitor__last_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor last name filter","title":"Visitor  Last Name"},"description":"Visitor last name filter","example":{}},{"name":"visitor__first_name__like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor first name filter using like\n\nexample: name__like=es -> result name: Test","title":"Visitor  First Name  Like"},"description":"Visitor first name filter using like\n\nexample: name__like=es -> result name: Test","example":{}},{"name":"visitor__last_name__like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor last name filter using like\n\nexample: name__like=es -> result name: Test","title":"Visitor  Last Name  Like"},"description":"Visitor last name filter using like\n\nexample: name__like=es -> result name: Test","example":{}},{"name":"visitor__company","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor company filter","title":"Visitor  Company"},"description":"Visitor company filter","example":{}},{"name":"visitor__company__like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor company filter using like\n\nexample: company__like=es -> result company: Test","title":"Visitor  Company  Like"},"description":"Visitor company filter using like\n\nexample: company__like=es -> result company: Test","example":{}},{"name":"visitor_contact_detail__value","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor contact detail value filter","title":"Visitor Contact Detail  Value"},"description":"Visitor contact detail value filter","example":{}},{"name":"visitor_contact_detail__value__like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor contact detail value filter using like\n\nexample: value__like=es -> result value: test@example.com","title":"Visitor Contact Detail  Value  Like"},"description":"Visitor contact detail value filter using like\n\nexample: value__like=es -> result value: test@example.com","example":{}},{"name":"visitor_contact_detail__type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor contact detail type filter","title":"Visitor Contact Detail  Type"},"description":"Visitor contact detail type filter","example":{}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Page size","default":50,"title":"Size"},"description":"Page size"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_VisitOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/visits/":{"post":{"tags":["Visit","Workspace"],"summary":"Add Visit","description":"Add a new visit to a workspace.\n\nKey behavior\n------------\n- Path: POST `/workspaces/{workspace_id}/visits/`.\n- Auth: requires the visit read-write (or own) permission and access to the\n  workspace scope.\n- Inputs: workspace id in the path and the visit create payload in the body.\n- Status codes: `200` on success, `401` when unauthorized, `404` when the\n  caller lacks access to the workspace, `422` for invalid create data, and\n  `500` on an unexpected runtime error.\n- Idempotency: not idempotent; creates a new visit.\n- Side effects: creates the visit with its hosts and visitors, publishes\n  ASSA ABLOY reservations when enabled, and sends the creation messages.","operationId":"Add_Visit_workspaces__workspace_id__visits__post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Visit.All","Visit.ReadWrite","Visit.Own"]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitRouteCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/visits/signed-in-visitors":{"patch":{"tags":["Visit","Workspace","Visitor"],"summary":"Update All Signed In Visitors From All Visits","description":"Update every signed-in visitor across all visits in a workspace.\n\nKey behavior\n------------\n- Path: PATCH `/workspaces/{workspace_id}/visits/signed-in-visitors`.\n- Auth: requires the visit read-write permission and access to the workspace\n  scope.\n- Inputs: workspace id in the path and the visitor update payload.\n- Status codes: `200` on success (an empty list when no visitor was signed\n  in), `401` when unauthorized, `404` when the caller is out of scope.\n- Idempotency: not idempotent; transitions visitor states and writes state\n  logs (group action).\n- Side effects: updates the signed-in visitor instances and recomputes their\n  agreement validity. No messaging.","operationId":"Update_All_Signed_In_Visitors_from_All_Visits_workspaces__workspace_id__visits_signed_in_visitors_patch","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Visit.All","Visit.ReadWrite"]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitorInstanceEndpointUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/VisitorInstanceOut"},"title":"Response Update All Signed In Visitors From All Visits Workspaces  Workspace Id  Visits Signed In Visitors Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/rules":{"get":{"tags":["Rule","Workspace"],"summary":"Retrieve All Rules Associated With A Workspace","description":"Retrieve all rules associated with a specific workspace.\n\nThis endpoint fetches all workspace rules for the given workspace ID.\nThe user must have the necessary workspace read permissions\nto access the workspace.","operationId":"Retrieve_all_rules_associated_with_a_workspace_workspaces__workspace_id__rules_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Workspace.All","Workspace.ReadWrite","Workspace.Read"]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceRulesOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/rules/{rule_name}":{"get":{"tags":["Rule","Workspace"],"summary":"Retrieve A Single Workspace Rule By Its Name","description":"Retrieve a single workspace rule by its name.\n\nThis endpoint fetches a specific workspace rule identified\nby its name within the given workspace. The user must have\nthe necessary workspace read permissions to access the workspace.","operationId":"Retrieve_a_single_workspace_rule_by_its_name_workspaces__workspace_id__rules__rule_name__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Workspace.All","Workspace.ReadWrite","Workspace.Read"]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"rule_name","in":"path","required":true,"schema":{"type":"string","title":"Rule Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceRuleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Rule","Workspace"],"summary":"Update A Workspace Rule","description":"Update an existing workspace rule.\n\nThis endpoint allows updating the values associated with\na specific workspace rule. It handles the addition of new values\nand the removal of existing ones as per the update data.\nThe user must have the necessary workspace write permissions\nto modify the workspace.","operationId":"Update_a_workspace_rule_workspaces__workspace_id__rules__rule_name__patch","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Workspace.All","Workspace.ReadWrite"]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"rule_name","in":"path","required":true,"schema":{"type":"string","title":"Rule Name"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceRuleRouteUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceRuleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/settings":{"get":{"tags":["Setting","Workspace"],"summary":"Get All Settings","description":"Get all settings from a single workspace","operationId":"Get_All_Settings_workspaces__workspace_id__settings_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Workspace.All","Workspace.ReadWrite","Workspace.Read"]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceSettingsOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Setting","Workspace"],"summary":"Add Setting To Workspace","description":"Add setting with value to workspace","operationId":"Add_setting_to_workspace_workspaces__workspace_id__settings_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Workspace.All","Workspace.ReadWrite"]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceSettingCreateWithKey"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/settings/{setting_key}":{"get":{"tags":["Setting","Workspace"],"summary":"Get Single Setting","description":"Get workspace setting by key","operationId":"Get_single_setting_workspaces__workspace_id__settings__setting_key__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Workspace.All","Workspace.ReadWrite","Workspace.Read"]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"setting_key","in":"path","required":true,"schema":{"type":"string","title":"Setting Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Setting","Workspace"],"summary":"Update Workspace Setting","description":"Update workspace setting value","operationId":"Update_workspace_setting_workspaces__workspace_id__settings__setting_key__patch","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Workspace.All","Workspace.ReadWrite"]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"setting_key","in":"path","required":true,"schema":{"type":"string","title":"Setting Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceSettingDBUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Setting","Workspace"],"summary":"Update/Add Workspaces Setting","description":"Update or add a setting value for a workspace.\n\nThis endpoint updates or adds a setting value for a specific workspace.\nIt ensures the user has the appropriate scope to modify the workspace\nsetting and then triggers a pusher notification\nif the update is successful.","operationId":"Update_Add_workspaces_setting_workspaces__workspace_id__settings__setting_key__put","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Workspace.All","Workspace.ReadWrite"]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"setting_key","in":"path","required":true,"schema":{"type":"string","title":"Setting Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceSettingDBUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Setting","Workspace"],"summary":"Remove Setting From Workspace","description":"Remove setting from workspace","operationId":"Remove_setting_from_workspace_workspaces__workspace_id__settings__setting_key__delete","security":[{"OAuth2PasswordBearer":["All.All","Workspace.All"]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"setting_key","in":"path","required":true,"schema":{"type":"string","title":"Setting Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/integrations":{"get":{"tags":["Admin User"],"summary":"Get Integrations","description":"Retrieve all integrations available for admin operations.\n\nKey behavior\n------------\n- Path: GET `/integrations`\n- Auth: requires `Organization.All` permission and `AdminUser` type.\n- Inputs: none.\n- Status codes: `200` on success, `401` for missing/invalid auth or\n  non-admin tokens.\n- Idempotency: fully idempotent read.\n- Side effects: none.\n\nRoute logic\n-----------\n- Validates admin permission scope and user type via dependency.\n- Fetches integration rows and returns API response models.\n- Converts unexpected runtime failures to `500`.","operationId":"Get_integrations_integrations_get","security":[{"OAuth2PasswordBearer":["All.All","Organization.All"]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationResponse"},"title":"Response Get Integrations Integrations Get"}}}}}}},"/integrations/{integration_uuid}":{"patch":{"tags":["Admin User"],"summary":"Update Integration","description":"Update integration metadata fields.\n\nKey behavior\n------------\n- Path: PATCH `/integrations/{integration_uuid}`\n- Auth: requires `Organization.All` permission and `AdminUser` type.\n- Inputs: partial update payload for metadata fields.\n- Status codes: `200` on success, `404` when missing, `422` for invalid\n  update values, `401` for missing/invalid auth or non-admin tokens.\n- Idempotency: conditionally idempotent for identical payloads.\n- Side effects: updates integration metadata and audit columns.\n\nRoute logic\n-----------\n- Validates admin permission scope and user type via dependency.\n- Resolves integration by UUID and applies allowed metadata updates.\n- Converts unexpected runtime failures to `500`.","operationId":"Update_integration_integrations__integration_uuid__patch","security":[{"OAuth2PasswordBearer":["All.All","Organization.All"]}],"parameters":[{"name":"integration_uuid","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Integration Uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/integrations/{integration_uuid}/secret":{"patch":{"tags":["Admin User"],"summary":"Update Integration Secret","description":"Update integration secret and its expiration datetime.\n\nKey behavior\n------------\n- Path: PATCH `/integrations/{integration_uuid}/secret`\n- Auth: requires `Organization.All` permission and `AdminUser` type.\n- Inputs: `secret` and `secret_expire` in request body.\n- Status codes: `200` on success, `404` when missing, `422` when secret\n  updates are disabled or payload is invalid, `401` for auth errors or\n  non-admin tokens.\n- Idempotency: conditionally idempotent for identical payloads.\n- Side effects: updates secret values and audit columns.\n\nRoute logic\n-----------\n- Validates admin permission scope and user type via dependency.\n- Ensures secret updates are enabled for the target integration.\n- Applies secret update and returns updated integration data.\n- Converts unexpected runtime failures to `500`.","operationId":"Update_integration_secret_integrations__integration_uuid__secret_patch","security":[{"OAuth2PasswordBearer":["All.All","Organization.All"]}],"parameters":[{"name":"integration_uuid","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Integration Uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationSecretUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/languages":{"get":{"tags":["Language"],"summary":"Get All Languages","description":"Retrieve a list of all available languages.\n\nKey behavior\n------------\n- Path: GET `/languages`\n- Auth: requires a signed-in user.\n- Returns the full list of supported languages.\n- No query params are required.\n\nRoute logic\n-----------\n- Fetches all supported languages from the database.\n- Returns the full list as `LanguageOut` items.\n- Any unexpected error is returned as `InternalServerError`.","operationId":"Get_all_languages_languages_get","security":[{"OAuth2PasswordBearer":[]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LanguageOut"},"title":"Response Get All Languages Languages Get"}}}}}}},"/organizations/{organization_uuid}/applications/extensions":{"get":{"tags":["Organization"],"summary":"Get Organization Application Extensions","description":"List extension application statuses for an organization.\n\nKey behavior\n------------\n- Path: GET `/organizations/{organization_uuid}/applications/extensions`\n- Auth: requires permission to view the organization.\n- Returns all extension applications with an `is_enabled` flag.\n- Safe to call frequently; it does not modify data.\n\nRoute logic\n-----------\n- Verifies the caller is allowed to view the organization.\n- Fetches all extension applications and marks which are enabled for the\n  organization.\n- Unexpected errors are logged and returned as `InternalServerError`.","operationId":"Get_organization_application_extensions_organizations__organization_uuid__applications_extensions_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Organization.All","Organization.ReadWrite","Organization.Read"]}],"parameters":[{"name":"organization_uuid","in":"path","required":true,"schema":{"type":"string","title":"Organization Uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationApplicationExtensionResponse"},"title":"Response Get Organization Application Extensions Organizations  Organization Uuid  Applications Extensions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Organization"],"summary":"Enable Organization Application Extension","description":"Enable an extension application for an organization.\n\nThe operation is idempotent and can be safely retried.\n\nStatus codes\n------------\n- 201 Created: the extension was enabled for the first time.\n- 200 OK: the extension was already enabled.\n\nInputs\n------\n- Path: `organization_uuid`\n- Body: `application_uuid`\n\nSide effects\n------------\n- Ensures required organization integration and application links exist.\n- May create missing integration/account/application rows when the\n  organization is partially configured.\n\nError behavior (frontend-relevant)\n----------------------------------\n- 404 Not Found: the organization or application is not found, or the\n  application exists but is not an extension (by design).\n\nRoute logic\n-----------\n- Verifies the caller is allowed to change organization settings.\n- Ensures the extension is enabled for the organization, creating missing\n  linkage data as needed.\n- If the extension was already enabled, the status code is set to 200 to\n  reflect idempotent behavior.\n- Unexpected errors are logged and returned as `InternalServerError`.","operationId":"Enable_organization_application_extension_organizations__organization_uuid__applications_extensions_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Organization.All","Organization.ReadWrite"]}],"parameters":[{"name":"organization_uuid","in":"path","required":true,"schema":{"type":"string","title":"Organization Uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationApplicationExtensionRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationApplicationExtensionResponse"}}}},"200":{"description":"Extension was already enabled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationApplicationExtensionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Organization"],"summary":"Disable Organization Application Extension","description":"Disable an extension application for an organization.\n\nThe operation is idempotent and can be safely retried.\n\nKey behavior\n------------\n- Path: DELETE `/organizations/{organization_uuid}/applications/extensions`\n- Auth: requires permission to manage the organization.\n- Body: `application_uuid`\n- Returns 204 No Content when successful.\n\nSide effects\n------------\n- Removes the organization-application link if present.\n- Runs extension-specific cleanup to undo POST side effects (for example,\n  SCIM integration data for Microsoft Entra ID).\n\nError behavior (frontend-relevant)\n----------------------------------\n- 404 Not Found: the organization or extension application is not found,\n  or the caller cannot access the organization.\n\nRoute logic\n-----------\n- Verifies the caller is allowed to change organization settings.\n- Ensures the extension is disabled for the organization and cleans up any\n  extension-specific integration data.\n- Unexpected errors are logged and returned as `InternalServerError`.","operationId":"Disable_organization_application_extension_organizations__organization_uuid__applications_extensions_delete","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Organization.All","Organization.ReadWrite"]}],"parameters":[{"name":"organization_uuid","in":"path","required":true,"schema":{"type":"string","title":"Organization Uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationApplicationExtensionRequest"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/list":{"post":{"tags":["User"],"summary":"Bulk Create Or Update Users","description":"Bulk create or update users by email.\n\nKey behavior\n------------\n- Path: POST `/users/list`\n- Auth: requires `USER_ALL`.\n- Body: list of user upsert payload items using UUID references.\n- Defaults:\n  - `role_uuid`: `BasicUser` when omitted.\n  - `username`: root `email` when omitted.\n  - `password`: random value for new users when omitted.\n  - `workspaces[].allow_uninvited`: `true` when omitted.\n  - `primary_workspace_uuid`: first requested workspace for new users when\n    omitted.\n  - `emails[].notifications` and `phones[].notifications`: when omitted,\n    newly created effective primary details default to `true` and newly\n    created same-type secondary details default to `false`; existing\n    stored values are preserved.\n  - Contact `primary`: existing primary is kept when present; otherwise the\n    first effective value becomes primary.\n  - Root `email` is always present in email contact details and is inserted\n    when missing from `emails`.\n- Returns aggregate created, updated, and workspace-link counts plus\n  per-item failures.\n- Same email in the same organization updates the existing user.\n- Same email in a different organization fails that item.\n- Workspace-scoped callers must have access to each target user and\n  each requested workspace.\n- Side effects: creates people/users, updates people/users, upserts\n  contact details, and creates missing workspace links.\n\nRoute logic\n-----------\n- Delegates bulk orchestration to the async API and domain services.\n- Converts unexpected runtime failures to `InternalServerError`.","operationId":"Bulk_create_or_update_users_users_list_post","security":[{"OAuth2PasswordBearer":["All.All","User.All"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UserBulkUpsertRequest"},"title":"Objects In"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserBulkUpsertResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/lobbies/":{"get":{"tags":["Lobby"],"summary":"Get Lobbies","description":"Lobbies","operationId":"Get_lobbies_lobbies__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Lobby.All","Lobby.ReadWrite","Lobby.Read"]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LobbyOut"},"title":"Response Get Lobbies Lobbies  Get"}}}}}},"post":{"tags":["Lobby"],"summary":"Create Lobby","description":"Lobbies","operationId":"Create_lobby_lobbies__post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Lobby.All","Lobby.ReadWrite"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LobbyCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LobbyOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/lobbies/{lobby_id}":{"get":{"tags":["Lobby"],"summary":"Get Lobby By Id","description":"Lobbies","operationId":"Get_lobby_by_id_lobbies__lobby_id__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Lobby.All","Lobby.ReadWrite","Lobby.Read"]}],"parameters":[{"name":"lobby_id","in":"path","required":true,"schema":{"type":"integer","title":"Lobby Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LobbyOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Lobby"],"summary":"Delete Lobby","description":"Lobbies","operationId":"Delete_lobby_lobbies__lobby_id__delete","security":[{"OAuth2PasswordBearer":["All.All","Lobby.All"]}],"parameters":[{"name":"lobby_id","in":"path","required":true,"schema":{"type":"integer","title":"Lobby Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Lobby"],"summary":"Update Lobby","description":"Lobbies","operationId":"Update_lobby_lobbies__lobby_id__patch","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Lobby.All","Lobby.ReadWrite"]}],"parameters":[{"name":"lobby_id","in":"path","required":true,"schema":{"type":"integer","title":"Lobby Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LobbyCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LobbyOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/lobbies/{lobby_id}/workspaces":{"get":{"tags":["Lobby"],"summary":"Get Lobby With Workspaces By Id","description":"Lobbies","operationId":"Get_lobby_with_workspaces_by_id_lobbies__lobby_id__workspaces_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","LobbyWorkspace.All","LobbyWorkspace.ReadWrite","LobbyWorkspace.Read"]}],"parameters":[{"name":"lobby_id","in":"path","required":true,"schema":{"type":"integer","title":"Lobby Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LobbyWithWorkspaceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Lobby"],"summary":"Add Workspace To Lobby","description":"Lobbies","operationId":"Add_workspace_to_lobby_lobbies__lobby_id__workspaces_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","LobbyWorkspace.All","LobbyWorkspace.ReadWrite"]}],"parameters":[{"name":"lobby_id","in":"path","required":true,"schema":{"type":"integer","title":"Lobby Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LobbyWorkspaceRouteCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LobbyWithWorkspaceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/lobbies/{lobby_id}/workspaces/{workspace_id}":{"delete":{"tags":["Lobby"],"summary":"Remove Workspaces From Lobby","description":"Lobbies","operationId":"Remove_workspaces_from_lobby_lobbies__lobby_id__workspaces__workspace_id__delete","security":[{"OAuth2PasswordBearer":["All.All","LobbyWorkspace.All"]}],"parameters":[{"name":"lobby_id","in":"path","required":true,"schema":{"type":"integer","title":"Lobby Id"}},{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/lobbies/{lobby_id}/visits/":{"get":{"tags":["Visit","Lobby"],"summary":"Get All Visits From Lobby","description":"Get all visits from a single Lobby","operationId":"Get_All_Visits_from_Lobby_lobbies__lobby_id__visits__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Visit.All","Visit.ReadWrite","Visit.Read"]}],"parameters":[{"name":"lobby_id","in":"path","required":true,"schema":{"type":"integer","title":"Lobby Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LobbyVisitsOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/logs/visitors":{"get":{"tags":["Log","Visitor"],"summary":"Fetch Visitor Logs","description":"Fetch visitor logs for the requested workspace.\n\nKey behavior\n------------\n- Path: GET `/logs/visitors`\n- Auth: accepts workspace read-write permission (full workspace data) or\n  the regular-host `Visit.Own` scope. An owner/admin sees all of the\n  requested workspace's logs; a regular host sees only the logs of visits\n  they host, and only when they are a member of the requested workspace.\n- Inputs: required `workspace_id` and optional `state`,\n  `start_date_time`, and `end_date_time` query filters.\n- Status codes: `200` on success (an empty list when a regular host is not\n  a member of the requested workspace); `401` when unauthorized; `404`\n  when the workspace is inaccessible to an owner/admin caller.\n- Response headers: `X-Workspace-Usage-Started-At` and\n  `X-Organization-Usage-Started-At` (UTC ISO 8601) when usage metadata\n  exists; omitted otherwise.\n- Idempotency: yes; read-only.\n\nRoute logic\n-----------\n- Verifies the caller can access the requested workspace (owner/admin: the\n  workspace scope; regular host: UserWorkspace membership).\n- Loads matching state-log rows — scoped to the host's own visits for a\n  regular host — classifies each as expected or adhoc, and maps them to the\n  visitor log contract.\n- Attaches usage-start headers when state-log history exists.","operationId":"Fetch_visitor_logs_logs_visitors_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Workspace.All","Workspace.ReadWrite","Visit.Own"]}],"parameters":[{"name":"workspace_id","in":"query","required":true,"schema":{"type":"integer","description":"Filter logs by workspace ID (required).\n\nExample: workspace_id=1","title":"Workspace Id"},"description":"Filter logs by workspace ID (required).\n\nExample: workspace_id=1"},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter logs by visitor state.\n\nPossible values: expected, signed_in, signed_out.\n\nExample: state=signed_in","title":"State"},"description":"Filter logs by visitor state.\n\nPossible values: expected, signed_in, signed_out.\n\nExample: state=signed_in"},{"name":"start_date_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"The start date and time of the time range, represented in ISO 8601 format.\n\n","examples":"\n\nstart_date_time=2022-10-26T08:00:00,\n\nstart_date_time=2022-10-26T08:00:00-08:00","title":"Start Date Time"},"description":"The start date and time of the time range, represented in ISO 8601 format.\n\n"},{"name":"end_date_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"The end date and time of the time range, represented in ISO 8601 format.\n\n","examples":"\n\nend_date_time=2022-10-26T18:00:00,\n\nend_date_time=2022-10-26T18:00:00-08:00","title":"End Date Time"},"description":"The end date and time of the time range, represented in ISO 8601 format.\n\n"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LogVisitorOut"},"title":"Response Fetch Visitor Logs Logs Visitors Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rooms":{"get":{"tags":["Room"],"summary":"Get Rooms","description":"Retrieve paginated rooms visible to the authenticated user.\n\nPath: ``GET /rooms``. Authorization requires ``ROOM_READ``.\nQuery parameters support filtering and sorting through the room filter.\nResults are constrained by user scope:\nadmin users see all rooms, organization users see rooms in their\norganization, and workspace users see rooms in their assigned workspaces.\n\nReturns ``200 OK`` with a paginated room list. This endpoint is\nidempotent and has no side effects.","operationId":"Get_rooms_rooms_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Room.All","Room.ReadWrite","Room.Read"]}],"parameters":[{"name":"id__in","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Room id in filter\n\n example: id__in=1,2,3","title":"Id  In"},"description":"Room id in filter\n\n example: id__in=1,2,3","example":{}},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Room name filter\n\n example: name=Room 123","title":"Name"},"description":"Room name filter\n\n example: name=Room 123","example":{}},{"name":"name__like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Room name filter using like\n\n example: name__like=123 ->  result name: Room 123","title":"Name  Like"},"description":"Room name filter using like\n\n example: name__like=123 ->  result name: Room 123","example":{}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Room workspace id filter\n\n example: workspace_id=1","title":"Workspace Id"},"description":"Room workspace id filter\n\n example: workspace_id=1","example":{}},{"name":"workspace_id__in","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Room workspace id in filter\n\n example: workspace_id__in=1,2","title":"Workspace Id  In"},"description":"Room workspace id in filter\n\n example: workspace_id__in=1,2","example":{}},{"name":"order_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Change the direction of the sorting (ASC or DESC) by prefixing with - or + (Optional, it's the default behavior if omitted). It takes a list of string, separated by comma.\n\nSort options:\n\ntype, created\n\nExample:\n\norder_by=created\n\norder_by=-created\n\norder_by=name,created","default":"-created","title":"Order By"},"description":"Change the direction of the sorting (ASC or DESC) by prefixing with - or + (Optional, it's the default behavior if omitted). It takes a list of string, separated by comma.\n\nSort options:\n\ntype, created\n\nExample:\n\norder_by=created\n\norder_by=-created\n\norder_by=name,created","example":{}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Page size","default":50,"title":"Size"},"description":"Page size"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_RoomOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rooms/{object_id}":{"get":{"tags":["Room"],"summary":"Get Room By Id","description":"Retrieve one room by internal ID when it is in caller scope.\n\nPath: ``GET /rooms/{object_id}``. Authorization requires ``ROOM_READ``.\nThe room must be accessible within the caller scope; otherwise a\nnot-found response is returned to avoid leaking existence.\n\nReturns ``200 OK`` with room details. This endpoint is idempotent and\nhas no side effects.","operationId":"Get_room_by_id_rooms__object_id__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Room.All","Room.ReadWrite","Room.Read"]}],"parameters":[{"name":"object_id","in":"path","required":true,"schema":{"type":"integer","title":"Object Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoomOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Room"],"summary":"Delete Room","description":"Delete a room when it exists and is visible in caller scope.\n\nPath: ``DELETE /rooms/{object_id}``. Authorization requires ``ROOM_ALL``.\nIf the room is outside scope or not found, the endpoint returns\n``204 No Content`` to keep delete semantics idempotent.\n\nReturns ``204 No Content`` on all successful/no-op delete flows.\nThis endpoint has side effects when a matching room exists.","operationId":"Delete_room_rooms__object_id__delete","security":[{"OAuth2PasswordBearer":["All.All","Room.All"]}],"parameters":[{"name":"object_id","in":"path","required":true,"schema":{"type":"integer","title":"Object Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rooms/":{"post":{"tags":["Room"],"summary":"Create Room","description":"Create a room and optional room resource mapping.\n\nPath: ``POST /rooms/``. Authorization requires ``ROOM_READ_WRITE``.\nThe request includes room name and workspace ID, with optional\nresource account and address. Workspace existence and caller scope are\nvalidated before creation. If resource values are provided, the room is\nlinked to organization resource data.\n\nReturns ``200 OK`` with the created or existing room object.\nThis endpoint has side effects and is not idempotent for new data.","operationId":"Create_room_rooms__post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Room.All","Room.ReadWrite"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoomRouteCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoomOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rooms/list":{"post":{"tags":["Room"],"summary":"Create Rooms List","description":"Create rooms in bulk and optionally create room-display devices.\n\nPath: ``POST /rooms/list``. Authorization requires ``ROOM_READ_WRITE``.\nThe request body is a list of room entries containing workspace UUID and\noptional integration/resource/device data. Each item is validated for\nworkspace existence, optional organization integration account existence,\nscope rights, and organization consistency between workspace and account.\nDuplicate room payload items are skipped when ``create_device`` is false.\nWhen ``create_device`` is true, multiple devices can be created for the\nsame resolved room.\n\nResponse status is ``201 Created`` and includes created room/device counts,\nskipped/failed counts, and per-item reasons for skipped/failed entries.\nThe endpoint is not idempotent when ``create_device`` is true because each\nrequest can create additional devices.","operationId":"Create_rooms_list_rooms_list_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Room.All","Room.ReadWrite"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RoomListRouteCreate"},"title":"Objects In"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoomListCreateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Room"],"summary":"Update Rooms List","description":"Update rooms in bulk, including workspace migration and resource settings.\n\nPath: ``PATCH /rooms/list``. Authorization requires ``ROOM_READ_WRITE``.\nEach payload item targets one room by ``room_uuid`` and can update room\nname, workspace, integration account, and resource address. Item\nvalidation checks room scope visibility, target workspace existence/scope,\nand organization consistency and scope for integration accounts. When a\nroom workspace changes, linked room-display devices are moved to the same\nworkspace.\n\nReturns ``200 OK`` with aggregate counts and per-item skipped/failed\nreasons. This endpoint has side effects and is not idempotent across\ndifferent payload values.","operationId":"Update_rooms_list_rooms_list_patch","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Room.All","Room.ReadWrite"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RoomListRouteUpdate"},"title":"Objects In"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoomListUpdateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rooms/{room_id}":{"patch":{"tags":["Room"],"summary":"Update Room","description":"Update a room and optional external resource linkage.\n\nPath: ``PATCH /rooms/{room_id}``. Authorization requires\n``ROOM_READ_WRITE``. The target room must be in caller scope. Optional\nworkspace and integration account references are validated before update.\nResource address/account payload updates or creates room resource mapping.\n\nReturns ``200 OK`` with updated room details. This endpoint has side\neffects and is not idempotent across different payloads.","operationId":"Update_room_rooms__room_id__patch","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Room.All","Room.ReadWrite"]}],"parameters":[{"name":"room_id","in":"path","required":true,"schema":{"type":"integer","title":"Room Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoomRouteUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoomOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rooms/{object_id}/organizations":{"get":{"tags":["Room"],"summary":"Get Room With Organizations By Id","description":"Retrieve one room with organization relationships.\n\nPath: ``GET /rooms/{object_id}/organizations``. Authorization requires\n``ORGANIZATION_READ``. This endpoint returns room data with\norganization links when available.\n\nReturns ``200 OK`` with room and organizations. This endpoint is\nidempotent and has no side effects.","operationId":"Get_room_with_organizations_by_id_rooms__object_id__organizations_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Organization.All","Organization.ReadWrite","Organization.Read"]}],"parameters":[{"name":"object_id","in":"path","required":true,"schema":{"type":"integer","title":"Object Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoomWithOrganizationsOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/roles":{"get":{"tags":["Role"],"summary":"Get All Roles","description":"Get all roles","operationId":"Get_all_roles_roles_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Role.All","Role.ReadWrite","Role.Read"]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RoleOut"},"title":"Response Get All Roles Roles Get"}}}}}}},"/roles/{object_id}":{"get":{"tags":["Role"],"summary":"Get Single Role By Id","description":"Get single role by id","operationId":"Get_single_role_by_id_roles__object_id__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Role.All","Role.ReadWrite","Role.Read"]}],"parameters":[{"name":"object_id","in":"path","required":true,"schema":{"type":"integer","title":"Object Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/devices/settings":{"get":{"tags":["Device"],"summary":"Device Settings","description":"Settings","operationId":"Device_settings_devices_settings_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Device.All","Device.ReadWrite","Device.Read"]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceDataSuccessOut"}}}}}}},"/devices/reset":{"patch":{"tags":["Device"],"summary":"Reset Device","description":"Reset device","operationId":"Reset_device_devices_reset_patch","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Device.All","Device.ReadWrite"]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetDeviceSuccessOut"}}}}}}},"/devices/login":{"post":{"tags":["Device","Login"],"summary":"Login","description":"Login as device","operationId":"Login_devices_login_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceLogin"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceLoginOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/devices/register":{"post":{"tags":["Device","Login"],"summary":"Register","description":"Register device","operationId":"Register_devices_register_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceRegister"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterSuccessOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/devices/token":{"post":{"tags":["Device","Login"],"summary":"Token","description":"Get new token","operationId":"Token_devices_token_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Device.All","Device.ReadWrite","Device.Read"]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterSuccessOut"}}}}}}},"/devices/updateapk":{"get":{"tags":["Device","Update"],"summary":"Update Apk","description":"Get latest version of the APK to update","operationId":"Update_APK_devices_updateapk_get","responses":{"200":{"description":"Successful Response"}}}},"/devices/":{"get":{"tags":["Device"],"summary":"Get Devices","description":"Devices","operationId":"Get_devices_devices__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Device.All","Device.ReadWrite","Device.Read"]}],"parameters":[{"name":"id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Device id filter\n\n example: model__id=1","title":"Id"},"description":"Device id filter\n\n example: model__id=1","example":{}},{"name":"model__id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Device model id filter\n\n example: model__id=1","title":"Model  Id"},"description":"Device model id filter\n\n example: model__id=1","example":{}},{"name":"model__id__in","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Device model id in filter\n\n example: model__id=1,2,3","title":"Model  Id  In"},"description":"Device model id in filter\n\n example: model__id=1,2,3","example":{}},{"name":"model__name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Device model name filter\n\n example: model__name=Visit 22X Android","title":"Model  Name"},"description":"Device model name filter\n\n example: model__name=Visit 22X Android","example":{}},{"name":"model__type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Device model type filter\n\n example: model__type=Kiosk","title":"Model  Type"},"description":"Device model type filter\n\n example: model__type=Kiosk","example":{}},{"name":"model__type__in","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Device model type in filter\n\n example: model__type__in=Kiosk,Gate","title":"Model  Type  In"},"description":"Device model type in filter\n\n example: model__type__in=Kiosk,Gate","example":{}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeviceOut"},"title":"Response Get Devices Devices  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Device"],"summary":"Create Device","description":"Creates one or more new devices based on the provided\nlist of device creation requests.\n\nThis endpoint processes a list of device creation requests\nand attempts to create new devices accordingly. It checks\nthe current user's authorization, and returns a list of created devices.\nIf room_id is provided, it validates the room_id and checks if it belongs\nto the same workspace with device.\nLink between device and room is created only if the room\nbelongs to the workspace.","operationId":"Create_device_devices__post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Device.All","Device.ReadWrite"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeviceRouteCreate"},"title":"Device Create List"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeviceOut"},"title":"Response Create Device Devices  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/devices/systam-visit":{"get":{"tags":["Device"],"summary":"Get Systam Visit Devices","description":"Devices","operationId":"Get_Systam_Visit_devices_devices_systam_visit_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Device.All","Device.ReadWrite","Device.Read"]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeviceOut"},"title":"Response Get Systam Visit Devices Devices Systam Visit Get"}}}}}}},"/devices/systam-workplace":{"get":{"tags":["Device"],"summary":"Get Systam Workplace Devices","description":"Devices","operationId":"Get_Systam_Workplace_devices_devices_systam_workplace_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Device.All","Device.ReadWrite","Device.Read"]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeviceOut"},"title":"Response Get Systam Workplace Devices Devices Systam Workplace Get"}}}}}}},"/devices/me":{"get":{"tags":["Device"],"summary":"Get Devices","description":"Devices","operationId":"Get_devices_devices_me_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Device.All","Device.ReadWrite","Device.Read"]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceOut"}}}}}}},"/devices/templates":{"get":{"tags":["Device"],"summary":"Get Device Templates","description":"Get all device templates","operationId":"Get_device_templates_devices_templates_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Device.All","Device.ReadWrite","Device.Read"]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeviceTemplateOut"},"title":"Response Get Device Templates Devices Templates Get"}}}}}}},"/devices/{device_id}":{"get":{"tags":["Device"],"summary":"Get Device By Id","description":"Devices","operationId":"Get_device_by_id_devices__device_id__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Device.All","Device.ReadWrite","Device.Read"]}],"parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"integer","title":"Device Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Device"],"summary":"Delete Device","description":"Delete device","operationId":"Delete_device_devices__device_id__delete","security":[{"OAuth2PasswordBearer":["All.All","Device.All"]}],"parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"integer","title":"Device Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Device"],"summary":"Update Device","description":"Updates specific details of an existing device by device ID.\n\nThis endpoint allows for the updating of a device based\non the device ID and provided new data. It ensures that\nthe current user has the right permissions to perform the update.\nIf room_id is provided, it validates the room_id and checks if it belongs\nto the same workspace with device.\nLink between device and room is created only if the room\nbelongs to the workspace. If there is already a link between\ndevice and room, it updates the link.","operationId":"Update_device_devices__device_id__patch","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Device.All","Device.ReadWrite"]}],"parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"integer","title":"Device Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceRouteUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/devices/{device_id}/reset":{"post":{"tags":["Device"],"summary":"Reset Device By Id","description":"Reset device -> create pin code, set serial number to null","operationId":"Reset_device_by_id_devices__device_id__reset_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Device.All","Device.ReadWrite"]}],"parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"integer","title":"Device Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetDeviceSuccessOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/devices/{printer_device_id}/badge-count":{"patch":{"tags":["Device"],"summary":"Update Printer Badge Count","description":"Updates the badge count for a specific printer device.\nThis endpoint allows for the updating of the badge count\nfor a printer device based on the device ID and provided new data.\nIt ensures that the current user has the right permissions\nto perform the update.","operationId":"Update_printer_badge_count_devices__printer_device_id__badge_count_patch","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Device.All","Device.ReadWrite"]}],"parameters":[{"name":"printer_device_id","in":"path","required":true,"schema":{"type":"integer","title":"Printer Device Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrinterBadgeCount"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceWithSettingsOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/devices/me/settings":{"get":{"tags":["Device"],"summary":"Get Device Settings By Device Id","description":"Devices","operationId":"Get_device_settings_by_device_id_devices_me_settings_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Device.All","Device.ReadWrite","Device.Read"]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceWithSettingsOut"}}}}}}},"/devices/me/workspaces":{"get":{"tags":["Device"],"summary":"Get Device Settings By Device Id","description":"Devices","operationId":"Get_device_settings_by_device_id_devices_me_workspaces_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Device.All","Device.ReadWrite","Device.Read"]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceWithWorkspaceOut"}}}}}}},"/devices/me/settings/{setting_key}":{"get":{"tags":["Device"],"summary":"Get Device Setting By Key","description":"Devices","operationId":"Get_device_setting_by_key_devices_me_settings__setting_key__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Device.All","Device.ReadWrite","Device.Read"]}],"parameters":[{"name":"setting_key","in":"path","required":true,"schema":{"type":"string","title":"Setting Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/devices/{device_id}/links":{"get":{"tags":["Device"],"summary":"Get Devices Linked To Device","description":"Get devices linked to device","operationId":"Get_devices_linked_to_device_devices__device_id__links_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Device.All","Device.ReadWrite","Device.Read"]}],"parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"integer","title":"Device Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeviceLinkForDeviceOut"},"title":"Response Get Devices Linked To Device Devices  Device Id  Links Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Device"],"summary":"Add Link To Another Device","description":"Add link to another device","operationId":"Add_link_to_another_device_devices__device_id__links_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Device.All","Device.ReadWrite"]}],"parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"integer","title":"Device Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceLinkRouteCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceLinkOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/devices/links/{device_link_id}":{"patch":{"tags":["Device"],"summary":"Update Device Link","description":"Update device link","operationId":"Update_device_link_devices_links__device_link_id__patch","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Device.All","Device.ReadWrite"]}],"parameters":[{"name":"device_link_id","in":"path","required":true,"schema":{"type":"integer","title":"Device Link Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceLinkUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceLinkOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Device"],"summary":"Remove Device Link","description":"Remove device link","operationId":"Remove_device_link_devices_links__device_link_id__delete","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Device.All","Device.ReadWrite"]}],"parameters":[{"name":"device_link_id","in":"path","required":true,"schema":{"type":"integer","title":"Device Link Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/device-models":{"get":{"tags":["Device"],"summary":"Get All Device Modes","description":"Get all device models","operationId":"Get_all_device_modes_device_models_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Device.All","Device.ReadWrite","Device.Read"]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeviceModelOut"},"title":"Response Get All Device Modes Device Models Get"}}}}}}},"/device-models/{device_model_id}":{"get":{"tags":["Device"],"summary":"Get Single Device Model By Id","description":"Get single device model by id","operationId":"Get_single_device_model_by_id_device_models__device_model_id__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Device.All","Device.ReadWrite","Device.Read"]}],"parameters":[{"name":"device_model_id","in":"path","required":true,"schema":{"type":"integer","title":"Device Model Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceModelOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/device-models/":{"post":{"tags":["Device"],"summary":"Create Device Model","description":"Create a new device model","operationId":"Create_device_model_device_models__post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Device.All","Device.ReadWrite"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceModelCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceModelOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/devices/{device_id}/room":{"get":{"tags":["Device"],"summary":"Get Room Resource Of A Device","description":"Get room resource of a device","operationId":"Get_room_resource_of_a_device_devices__device_id__room_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Device.All","Device.ReadWrite","Device.Read"]}],"parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"integer","title":"Device Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoomOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Device"],"summary":"Replace Room Resource Of A Device","description":"Replace the room resource of a device.\n\nThis endpoint replaces the room resource associated with a specific device.\nIt ensures the device is a room display and belongs to a workspace before\nperforming the replacement.","operationId":"Replace_room_resource_of_a_device_devices__device_id__room_put","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Device.All","Device.ReadWrite"]}],"parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"integer","title":"Device Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceRoomRouteCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoomOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Device"],"summary":"Remove Room Resource Of A Device","description":"Remove room resource of a device","operationId":"Remove_room_resource_of_a_device_devices__device_id__room_delete","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Device.All","Device.ReadWrite"]}],"parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"integer","title":"Device Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/devices/{device_id}/settings":{"get":{"tags":["Device","Setting"],"summary":"Get Devices Settings","description":"Get all settings for single device","operationId":"Get_devices_settings_devices__device_id__settings_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Device.All","Device.ReadWrite","Device.Read"]}],"parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"integer","title":"Device Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceWithSettingsOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Device","Setting"],"summary":"Add Setting To Device","description":"Add setting to device","operationId":"Add_setting_to_device_devices__device_id__settings_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Device.All","Device.ReadWrite"]}],"parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"integer","title":"Device Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceSettingRouteCreateWithKey"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/devices/{device_id}/settings/{setting_key}":{"get":{"tags":["Device","Setting"],"summary":"Get Devices Setting By Key","description":"Get devices setting using setting key","operationId":"Get_devices_setting_by_key_devices__device_id__settings__setting_key__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Device.All","Device.ReadWrite","Device.Read"]}],"parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"integer","title":"Device Id"}},{"name":"setting_key","in":"path","required":true,"schema":{"type":"string","title":"Setting Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Device","Setting"],"summary":"Update Device Setting","description":"Update device setting using setting key","operationId":"Update_device_setting_devices__device_id__settings__setting_key__patch","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Device.All","Device.ReadWrite"]}],"parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"integer","title":"Device Id"}},{"name":"setting_key","in":"path","required":true,"schema":{"type":"string","title":"Setting Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceSettingDBUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Device","Setting"],"summary":"Update/Add Devices Setting","description":"Update or add a device setting value.\n\nThis endpoint updates or adds a setting value for a specific device.\nIt ensures the user has the appropriate scope to modify the device setting\nand then triggers a pusher notification if the update is successful.","operationId":"Update_Add_devices_setting_devices__device_id__settings__setting_key__put","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Device.All","Device.ReadWrite"]}],"parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"integer","title":"Device Id"}},{"name":"setting_key","in":"path","required":true,"schema":{"type":"string","title":"Setting Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceSettingDBUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Device","Setting"],"summary":"Remove Setting From Device","description":"Remove setting from device","operationId":"Remove_setting_from_device_devices__device_id__settings__setting_key__delete","security":[{"OAuth2PasswordBearer":["All.All","Device.All"]}],"parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"integer","title":"Device Id"}},{"name":"setting_key","in":"path","required":true,"schema":{"type":"string","title":"Setting Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/devices/{device_id}/settings/signed-url":{"post":{"tags":["Device","Setting","Setting"],"summary":"Get Settings Signed Url","description":"Get settings signed URL, for files","operationId":"Get_settings_signed_URL_devices__device_id__settings_signed_url_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Device.All","Device.ReadWrite"]}],"parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"integer","title":"Device Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignedUrlRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignedUrlOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/device-types":{"get":{"tags":["Device"],"summary":"Get All Device Types","description":"Get all device types","operationId":"Get_all_device_types_device_types_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Device.All","Device.ReadWrite","Device.Read"]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeviceTypeOut"},"title":"Response Get All Device Types Device Types Get"}}}}}}},"/device-types/{device_type_id}":{"get":{"tags":["Device"],"summary":"Get Single Device Type By Id","description":"Get single device type by id","operationId":"Get_single_device_type_by_id_device_types__device_type_id__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Device.All","Device.ReadWrite","Device.Read"]}],"parameters":[{"name":"device_type_id","in":"path","required":true,"schema":{"type":"integer","title":"Device Type Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceTypeOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/device-types/{device_type_id}/models":{"get":{"tags":["Device"],"summary":"Get Device Models By Device Type","description":"Get device models by device type","operationId":"Get_device_models_by_device_type_device_types__device_type_id__models_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Device.All","Device.ReadWrite","Device.Read"]}],"parameters":[{"name":"device_type_id","in":"path","required":true,"schema":{"type":"integer","title":"Device Type Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeviceModelOut"},"title":"Response Get Device Models By Device Type Device Types  Device Type Id  Models Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/device-types/":{"post":{"tags":["Device"],"summary":"Create Device Type","description":"Create a new device type","operationId":"Create_device_type_device_types__post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Device.All","Device.ReadWrite"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceTypeCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceTypeOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/devices/{device_id}/workspaces":{"get":{"tags":["Device","Workspace"],"summary":"Get Device Workspaces","description":"Get device workspaces","operationId":"Get_device_workspaces_devices__device_id__workspaces_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Device.All","Device.ReadWrite","Device.Read"]}],"parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"integer","title":"Device Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceWithWorkspaceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Device","Workspace"],"summary":"Add Workspace To Device","description":"Add workspace to device","operationId":"Add_workspace_to_device_devices__device_id__workspaces_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Device.All","Device.ReadWrite"]}],"parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"integer","title":"Device Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LobbyWorkspaceDBCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceWithWorkspaceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/devices/{device_id}/workspaces/{workspace_id}":{"delete":{"tags":["Device","Workspace"],"summary":"Remove Workspace From Device","description":"Remove workspace from device","operationId":"Remove_workspace_from_device_devices__device_id__workspaces__workspace_id__delete","security":[{"OAuth2PasswordBearer":["All.All","Device.All"]}],"parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"integer","title":"Device Id"}},{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/organizations/{organization_id}/integrations":{"post":{"tags":["Organization"],"summary":"Add Integration To Organization","description":"Add a new integration to the specified organization.\n\nThis endpoint allows authorized users to add a new integration\nto an organization. It validates the user's permissions\nand the existence of the organization and integration,\nthen creates the integration and its corresponding account.","operationId":"Add_integration_to_organization_organizations__organization_id__integrations_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Organization.All","Organization.ReadWrite"]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"integer","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationIntegrationRouteCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationIntegrationAccountOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/organizations/{organization_id}/integrations/scim":{"get":{"tags":["Organization"],"summary":"Get Scim Integration For Organization","description":"Get the SCIM integration for the specified organization.\n\nThis endpoint allows authorized users to retrieve the SCIM integration\nfor an organization. It validates the user's permissions\nand the existence of the organization, then retrieves the SCIM integration.","operationId":"Get_SCIM_integration_for_organization_organizations__organization_id__integrations_scim_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Organization.All","Organization.ReadWrite"]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"integer","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationIntegrationScimOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Organization"],"summary":"Create Scim Integration For Organization","description":"Create a SCIM integration for the specified organization.\n\nThis endpoint allows authorized users to create a SCIM integration\nfor an organization. It validates the user's permissions\nand the existence of the organization, then creates the SCIM integration.","operationId":"Create_SCIM_integration_for_organization_organizations__organization_id__integrations_scim_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Organization.All","Organization.ReadWrite"]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"integer","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationIntegrationScimRoute"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationIntegrationScimOut"}}}},"200":{"description":"An existing record with the SCIM integration for the organization was found and returned.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationIntegrationScimOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Organization"],"summary":"Update Scim Integration For Organization","description":"Update a SCIM integration for the specified organization.\n\nThis endpoint allows authorized users to update a SCIM integration\nfor an organization. It validates the user's permissions\nand the existence of the organization, then updates the SCIM integration.","operationId":"Update_SCIM_integration_for_organization_organizations__organization_id__integrations_scim_patch","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Organization.All","Organization.ReadWrite"]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"integer","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationIntegrationScimRoute"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationIntegrationScimOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Organization"],"summary":"Delete Scim Integration For Organization","description":"Delete the SCIM integration for the specified organization.\n\nThis endpoint allows authorized users to delete the SCIM integration\nfor an organization. It validates the user's permissions\nand the existence of the organization, then deletes the SCIM integration.","operationId":"Delete_SCIM_integration_for_organization_organizations__organization_id__integrations_scim_delete","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Organization.All","Organization.ReadWrite"]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"integer","title":"Organization Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/organizations/{organization_id}/settings":{"get":{"tags":["Organization","Setting"],"summary":"Get Organization Settings By Organization Id","description":"Organizations","operationId":"Get_organization_settings_by_organization_id_organizations__organization_id__settings_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Organization.All","Organization.ReadWrite","Organization.Read"]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"integer","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationWithSettingsOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Organization","Setting"],"summary":"Add Setting To Organization","description":"Add setting with value to organization","operationId":"Add_setting_to_organization_organizations__organization_id__settings_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Organization.All","Organization.ReadWrite"]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"integer","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationSettingCreateWithKey"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/organizations/{organization_id}/settings/{setting_key}":{"get":{"tags":["Organization","Setting"],"summary":"Get Organizations Setting By Key","description":"Organizations","operationId":"Get_organizations_setting_by_key_organizations__organization_id__settings__setting_key__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Organization.All","Organization.ReadWrite","Organization.Read"]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"integer","title":"Organization Id"}},{"name":"setting_key","in":"path","required":true,"schema":{"type":"string","title":"Setting Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Organization","Setting"],"summary":"Update Organizations Setting","description":"Update organization setting value","operationId":"Update_organizations_setting_organizations__organization_id__settings__setting_key__patch","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Organization.All","Organization.ReadWrite"]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"integer","title":"Organization Id"}},{"name":"setting_key","in":"path","required":true,"schema":{"type":"string","title":"Setting Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationSettingDBUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Organization","Setting"],"summary":"Update/Add Organizations Setting","description":"Update or add a setting value for an organization.\n\nThis endpoint updates or adds a setting value for a specific organization.\nIt ensures the user has the appropriate scope to modify the organization\nsetting and then triggers a pusher notification\nif the update is successful.","operationId":"Update_Add_organizations_setting_organizations__organization_id__settings__setting_key__put","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Organization.All","Organization.ReadWrite"]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"integer","title":"Organization Id"}},{"name":"setting_key","in":"path","required":true,"schema":{"type":"string","title":"Setting Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationSettingDBUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Organization","Setting"],"summary":"Remove Setting From Organization","description":"Remove setting from organization","operationId":"Remove_setting_from_organization_organizations__organization_id__settings__setting_key__delete","security":[{"OAuth2PasswordBearer":["All.All","Organization.All"]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"integer","title":"Organization Id"}},{"name":"setting_key","in":"path","required":true,"schema":{"type":"string","title":"Setting Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/permissions/types":{"get":{"tags":["Permission"],"summary":"Get All Permission Types","description":"Get all permissions types","operationId":"Get_all_permission_types_permissions_types_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Permission.All","Permission.ReadWrite","Permission.Read"]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PermissionTypeOut"},"title":"Response Get All Permission Types Permissions Types Get"}}}}}}},"/permissions/types/{object_id}":{"get":{"tags":["Permission"],"summary":"Get Single Permission Type By Id","description":"Get single permission type by id","operationId":"Get_single_permission_type_by_id_permissions_types__object_id__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Permission.All","Permission.ReadWrite","Permission.Read"]}],"parameters":[{"name":"object_id","in":"path","required":true,"schema":{"type":"integer","title":"Object Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PermissionTypeOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/permissions/values":{"get":{"tags":["Permission"],"summary":"Get All Permission Values","description":"Get all permissions values","operationId":"Get_all_permission_values_permissions_values_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Permission.All","Permission.ReadWrite","Permission.Read"]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PermissionValueOut"},"title":"Response Get All Permission Values Permissions Values Get"}}}}}}},"/permissions/values/{object_id}":{"get":{"tags":["Permission"],"summary":"Get Single Permission Value By Id","description":"Get single permission value by id","operationId":"Get_single_permission_value_by_id_permissions_values__object_id__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Permission.All","Permission.ReadWrite","Permission.Read"]}],"parameters":[{"name":"object_id","in":"path","required":true,"schema":{"type":"integer","title":"Object Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PermissionValueOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/permissions":{"get":{"tags":["Permission"],"summary":"Get All Permissions","description":"Get all permissions","operationId":"Get_all_permissions_permissions_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Permission.All","Permission.ReadWrite","Permission.Read"]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PermissionOut"},"title":"Response Get All Permissions Permissions Get"}}}}}}},"/permissions/{object_id}":{"get":{"tags":["Permission"],"summary":"Get Single Permission By Id","description":"Get single permission by id","operationId":"Get_single_permission_by_id_permissions__object_id__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Permission.All","Permission.ReadWrite","Permission.Read"]}],"parameters":[{"name":"object_id","in":"path","required":true,"schema":{"type":"integer","title":"Object Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PermissionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/setting-metadata":{"get":{"tags":["Setting"],"summary":"Get Settings Metadata","description":"Get all setting metadata","operationId":"Get_settings_metadata_setting_metadata_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Setting.All","Setting.ReadWrite","Setting.Read"]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Page size","default":50,"title":"Size"},"description":"Page size"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_SettingMetadataOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/setting-metadata/{setting_metadata_key}":{"get":{"tags":["Setting"],"summary":"Get Single Setting Metadata","description":"Get a single setting metadata by key","operationId":"Get_Single_Setting_Metadata_setting_metadata__setting_metadata_key__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Setting.All","Setting.ReadWrite","Setting.Read"]}],"parameters":[{"name":"setting_metadata_key","in":"path","required":true,"schema":{"type":"string","title":"Setting Metadata Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettingMetadataOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/identifiers/{value}":{"get":{"tags":["Identifier"],"summary":"Get Visitor Info By Identifier For Current Date","description":"Retrieve visitor identifier information for the current date.\n\nKey behavior\n------------\n- Path: GET `/identifiers/{value}`\n- Auth: requires the identifier-read permission.\n- Inputs: identifier value in the path (for example a QR or PIN code); an\n  optional `induction_language_id` query parameter overrides the induction\n  content language.\n- Status codes: `200` on success; `404` when the identifier is not found,\n  is hidden by access scope, or matches more than one record.\n- Idempotency: yes; read-only.\n- Side effects: none persisted; populates agreement validity and the\n  induction result on the response only.\n\nRoute logic\n-----------\n- Admin users match any workspace; other users are restricted to the\n  workspaces they can access, and an empty access set is treated as not\n  found.\n- Resolves a single currently-valid match, attaches the induction result,\n  and populates agreement validity for the response.","operationId":"Get_visitor_info_by_identifier_for_current_date_identifiers__value__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Identifier.All","Identifier.ReadWrite","Identifier.Read"]}],"parameters":[{"name":"value","in":"path","required":true,"schema":{"type":"string","title":"Value"}},{"name":"induction_language_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Induction Language Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentifierVisitorInstanceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/invite-addresses":{"get":{"tags":["Invite Address"],"summary":"Get Invite Addresses For User","description":"Get invite addresses for a user. Requires valid API key authentication.","operationId":"Get_invite_addresses_for_user_invite_addresses_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"email","in":"query","required":true,"schema":{"type":"string","title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteAddressOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/user-types/":{"get":{"tags":["User Type"],"summary":"Get User Types","description":"Get all user types","operationId":"Get_user_types_user_types__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","User.All","User.ReadWrite","User.Read"]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UserTypeOut"},"title":"Response Get User Types User Types  Get"}}}}}}},"/user-types/{user_type_id}":{"get":{"tags":["User Type"],"summary":"Get User Type","description":"Get a single user type","operationId":"Get_User_Type_user_types__user_type_id__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","User.All","User.ReadWrite","User.Read"]}],"parameters":[{"name":"user_type_id","in":"path","required":true,"schema":{"type":"integer","title":"User Type Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserTypeOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users":{"get":{"tags":["User"],"summary":"Retrieve Users","description":"Retrieve users based on filters and user access.\n\nAdmin, organization and workspace users (USER_READ) receive the full\nuser records scoped to their access. A regular host (USER_OWN scope,\n`own` flag) instead receives a minimal host-directory page bounded by\ntheir workspace memberships, exposing only directory fields (names,\ncontact details, picture) and never other users' profiles in full.\n\nThe filtering described below applies to the USER_READ branch. The\nregular-host (own) branch honors only `workspace_id` — and only to\nnarrow to one of the host's own workspaces; a non-member `workspace_id`\nreturns an empty page. `search` and the other filter params are ignored\non that branch.\n\nSupports filtering by first_name, last_name, email with exact\nor like operators. The search parameter provides a convenient way\nto search across name, email, phone number, organization name,\nand workspace name.","operationId":"Retrieve_users_users_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","User.All","User.ReadWrite","User.Read","User.Own"]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"description":"Filter users by workspace ID. If provided, only users associated with this workspace will be returned.","title":"Workspace Id"},"description":"Filter users by workspace ID. If provided, only users associated with this workspace will be returned."},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search users by name, email, phone number, organization name, or workspace name. Supports partial matching.","title":"Search"},"description":"Search users by name, email, phone number, organization name, or workspace name. Supports partial matching."},{"name":"first_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"First name filter","title":"First Name"},"description":"First name filter","example":{}},{"name":"first_name__like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"First name filter using like\n\nexample: first_name__like=es -> result name: Test","title":"First Name  Like"},"description":"First name filter using like\n\nexample: first_name__like=es -> result name: Test","example":{}},{"name":"last_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Last name filter","title":"Last Name"},"description":"Last name filter","example":{}},{"name":"last_name__like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Last name filter using like\n\nexample: last_name__like=es -> result name: Test","title":"Last Name  Like"},"description":"Last name filter using like\n\nexample: last_name__like=es -> result name: Test","example":{}},{"name":"username","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username filter","title":"Username"},"description":"Username filter","example":{}},{"name":"username__like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username filter using like\n\nexample: username__like=es -> result name: Test","title":"Username  Like"},"description":"Username filter using like\n\nexample: username__like=es -> result name: Test","example":{}},{"name":"email","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Email filter","title":"Email"},"description":"Email filter","example":{}},{"name":"email__like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Email filter using like\n\nexample: email__like=es -> result email: test.test@systam.fi","title":"Email  Like"},"description":"Email filter using like\n\nexample: email__like=es -> result email: test.test@systam.fi","example":{}},{"name":"order_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Change the direction of the sorting (ASC or DESC) by prefixing with - or + (Optional, it's the default behavior if omitted). It takes a list of string, separated by comma.\n\nSort options:\n\nfirst_name, last_name, username, email\n\nExample:\n\norder_by=last_name\n\norder_by=-last_name\n\norder_by=last_name,first_name","default":"first_name,last_name","title":"Order By"},"description":"Change the direction of the sorting (ASC or DESC) by prefixing with - or + (Optional, it's the default behavior if omitted). It takes a list of string, separated by comma.\n\nSort options:\n\nfirst_name, last_name, username, email\n\nExample:\n\norder_by=last_name\n\norder_by=-last_name\n\norder_by=last_name,first_name","example":{}},{"name":"role__name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Role filter\n\nexample: role__name=AdminUser","title":"Role  Name"},"description":"Role filter\n\nexample: role__name=AdminUser","example":{}},{"name":"role__name__like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Role filter using like\n\nexample: role__name__like=ad -> result role: AdminUser","title":"Role  Name  Like"},"description":"Role filter using like\n\nexample: role__name__like=ad -> result role: AdminUser","example":{}},{"name":"role__name__in","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Role filter using in\n\nexample: role__name__in=AdminUser,User","title":"Role  Name  In"},"description":"Role filter using in\n\nexample: role__name__in=AdminUser,User","example":{}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Size"}}],"responses":{"200":{"description":"Paginated users. USER_READ callers receive `UserDataOutForPage`; regular hosts receive the minimal `UserHostDataOut` host-directory shape.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_UserDataOutForPage_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["User"],"summary":"Create User","description":"Create a new user account within the organization.\n\nCreates a user with the specified organization, role, identity fields,\nand optional workspace assignments. The user receives a randomly\ngenerated password and can be assigned to one or more workspaces based\non their role type.\n\nRequired fields: `organization_id`, `role_id`, `first_name`,\n`last_name`, and either `email` or `username`.\n\nRole-based behavior:\n- Organization users can create organization or workspace users\n  within their org\n- Workspace users can only create workspace users in their accessible\n  workspaces\n\nReturns the complete user object including assigned workspaces\nand contact details.","operationId":"Create_user_users_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","User.All","User.ReadWrite"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRouteCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserDataOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/admins":{"get":{"tags":["User"],"summary":"Retrieve Admins","description":"Retrieve all admin users based on filters and user access.\n\nSupports filtering by first_name, last_name, email with exact\nor like operators. The search parameter provides a convenient way\nto search across name, email, phone number, organization name,\nand workspace name.","operationId":"Retrieve_admins_users_admins_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","User.All","User.ReadWrite","User.Read"]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"description":"Filter users by workspace ID. If provided, only users associated with this workspace will be returned.","title":"Workspace Id"},"description":"Filter users by workspace ID. If provided, only users associated with this workspace will be returned."},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search users by name, email, phone number, organization name, or workspace name. Supports partial matching.","title":"Search"},"description":"Search users by name, email, phone number, organization name, or workspace name. Supports partial matching."},{"name":"first_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"First name filter","title":"First Name"},"description":"First name filter","example":{}},{"name":"first_name__like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"First name filter using like\n\nexample: first_name__like=es -> result name: Test","title":"First Name  Like"},"description":"First name filter using like\n\nexample: first_name__like=es -> result name: Test","example":{}},{"name":"last_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Last name filter","title":"Last Name"},"description":"Last name filter","example":{}},{"name":"last_name__like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Last name filter using like\n\nexample: last_name__like=es -> result name: Test","title":"Last Name  Like"},"description":"Last name filter using like\n\nexample: last_name__like=es -> result name: Test","example":{}},{"name":"username","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username filter","title":"Username"},"description":"Username filter","example":{}},{"name":"username__like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username filter using like\n\nexample: username__like=es -> result name: Test","title":"Username  Like"},"description":"Username filter using like\n\nexample: username__like=es -> result name: Test","example":{}},{"name":"email","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Email filter","title":"Email"},"description":"Email filter","example":{}},{"name":"email__like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Email filter using like\n\nexample: email__like=es -> result email: test.test@systam.fi","title":"Email  Like"},"description":"Email filter using like\n\nexample: email__like=es -> result email: test.test@systam.fi","example":{}},{"name":"order_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Change the direction of the sorting (ASC or DESC) by prefixing with - or + (Optional, it's the default behavior if omitted). It takes a list of string, separated by comma.\n\nSort options:\n\nfirst_name, last_name, username, email\n\nExample:\n\norder_by=last_name\n\norder_by=-last_name\n\norder_by=last_name,first_name","default":"first_name,last_name","title":"Order By"},"description":"Change the direction of the sorting (ASC or DESC) by prefixing with - or + (Optional, it's the default behavior if omitted). It takes a list of string, separated by comma.\n\nSort options:\n\nfirst_name, last_name, username, email\n\nExample:\n\norder_by=last_name\n\norder_by=-last_name\n\norder_by=last_name,first_name","example":{}},{"name":"role__name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Role filter\n\nexample: role__name=AdminUser","title":"Role  Name"},"description":"Role filter\n\nexample: role__name=AdminUser","example":{}},{"name":"role__name__like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Role filter using like\n\nexample: role__name__like=ad -> result role: AdminUser","title":"Role  Name  Like"},"description":"Role filter using like\n\nexample: role__name__like=ad -> result role: AdminUser","example":{}},{"name":"role__name__in","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Role filter using in\n\nexample: role__name__in=AdminUser,User","title":"Role  Name  In"},"description":"Role filter using in\n\nexample: role__name__in=AdminUser,User","example":{}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Page size","default":50,"title":"Size"},"description":"Page size"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_UserDataOutForPage_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/all":{"get":{"tags":["User"],"summary":"Get Workspace With All Users","description":"Get a workspace along with all its associated users.\n\nThis endpoint retrieves detailed information about a specific\nworkspace identified by its ID, including all associated users.\nAccess is controlled based on the user's scope and permissions.","operationId":"Get_workspace_with_all_users_users_all_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","User.All","User.ReadWrite","User.Read"]}],"parameters":[{"name":"workspace_id","in":"query","required":true,"schema":{"type":"integer","minimum":0,"description":"The ID of the workspace to retrieve users from.","title":"Workspace Id"},"description":"The ID of the workspace to retrieve users from."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceWithUsersOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/validate-email":{"post":{"tags":["User"],"summary":"Validate User Email Availability","description":"Validate if an email is available for creating a new user.\n\nReturns information about email availability and context:\n\n- Case 1: Email not found ->\n    - available=True,\n    - same_organization=False,\n    - same_workspace=False,\n    - user_id and workspace_ids not provided\n- Case 2: User in same organization, different workspace ->\n    - available=False,\n    - same_organization=True,\n    - same_workspace=False,\n    - user_id and workspace_ids provided\n- Case 3: User in same workspace ->\n    - available=False,\n    - same_organization=True,\n    - same_workspace=True,\n    - user_id and workspace_ids provided\n- Case 4: User in different organization ->\n    - available=False,\n    - same_organization=False,\n    - same_workspace=False,\n    - user_id and workspace_ids not provided","operationId":"Validate_user_email_availability_users_validate_email_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","User.All","User.ReadWrite"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserEmailValidationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserEmailValidationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/me":{"get":{"tags":["User"],"summary":"Get Current User Data","description":"Retrieve authenticated user data for `GET /users/me`.\n\nReturns the persisted user record for standard `AdminUser`,\n`OrganizationUser`, and `WorkspaceUser` callers. For impersonated tokens\n(`user_id=0`), returns a synthetic user payload derived from the token\nscope: organization-scoped impersonation includes the scoped organization\nand its workspaces, workspace-scoped impersonation includes the scoped\nworkspace and owning organization, and admin-scoped impersonation keeps\norganization/workspaces null.","operationId":"Get_current_user_data_users_me_get","security":[{"OAuth2PasswordBearer":[]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserDataOut"}}}}}},"patch":{"tags":["User"],"summary":"Update Current User Data","description":"Update the authenticated user's data.","operationId":"Update_current_user_data_users_me_patch","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserInformationRouteUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserDataOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/me/signed-url":{"post":{"tags":["User","Signed URL"],"summary":"Get Signed Url For User","description":"Get a signed URL for the authenticated user.\nGenerates a signed URL to upload a picture for the authenticated user.","operationId":"Get_signed_URL_for_user_users_me_signed_url_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignedUrlRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignedUrlOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/{user_id}":{"delete":{"tags":["User"],"summary":"Delete User","description":"Delete a user by ID.","operationId":"Delete_user_users__user_id__delete","security":[{"OAuth2PasswordBearer":["All.All","User.All"]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["User"],"summary":"Get User By Id","description":"Retrieve a user's data by their ID.\n\nAdmin, organization and workspace users (USER_READ) may fetch any user\nwithin their access scope. A regular host (USER_OWN scope, `own` flag)\nmay fetch only their own profile; any other id is reported as not found.","operationId":"Get_user_by_ID_users__user_id__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","User.All","User.ReadWrite","User.Read","User.Own"]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserDataOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["User"],"summary":"Update User Data","description":"Update a user (`PATCH /users/{user_id}`).\n\nRequires `USER_READ_WRITE`. Accepts partial user fields, optional role\nchanges, optional workspace updates, and optional contact detail updates.\nReturns `200` with updated user data. Returns `404` when the target user is\noutside caller scope or missing, `422` for validation issues, and `500`\nfor unexpected failures.\n\nSide effects: updates user data, updates role and user type when role\nchanges, updates user-workspace mappings, and patches contact details.\nRole transitions are restricted to same-type changes plus\n`WorkspaceUser <-> OrganizationUser`, where those transitions can be\nperformed only by an `OrganizationUser` or `AdminUser` actor.\nFor `OrganizationUser -> WorkspaceUser`, workspace links are replaced only\nwhen `workspaces` is included in payload; otherwise existing links remain.","operationId":"Update_user_data_users__user_id__patch","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","User.All","User.ReadWrite"]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRouteUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserDataOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/{user_id}/signed-url":{"post":{"tags":["User","Signed URL"],"summary":"Get Signed Url For Specific User","description":"Get a signed URL for a specific user.\nGenerates a signed URL to upload a picture for the specified user.","operationId":"Get_signed_URL_for_specific_user_users__user_id__signed_url_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","User.All","User.ReadWrite"]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignedUrlRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignedUrlOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_uuid}/identifiers":{"post":{"tags":["Identifier","Workspace"],"summary":"Rotate Workspace Identifier","description":"Rotate a workspace self-service identifier.\n\nKey behavior\n------------\n- Path: POST `/workspaces/{workspace_uuid}/identifiers`\n- Auth: requires workspace read-write permission and access to the\n  requested workspace scope.\n- Inputs: workspace UUID in the path and an optional identifier\n  rotation payload in the request body.\n- Status codes: `201` on success, `404` when the workspace is missing or\n  hidden by scope checks, `422` when the supplied identifier value already\n  exists, `500` on unexpected rotation failures.\n- Idempotency: not idempotent.\n- Side effects: expires the current active workspace identifier after the\n  requested grace period and creates a new active identifier.\n- If `value` is omitted, a new UUID value is generated in the backend.\n\nRoute logic\n-----------\n- Resolves the workspace by UUID and verifies the caller has scope access.\n- Delegates rotation to the workspace identifier domain service.\n- Maps duplicate-value errors to `422` and unexpected runtime errors to\n  `500`.","operationId":"Rotate_workspace_identifier_workspaces__workspace_uuid__identifiers_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Workspace.All","Workspace.ReadWrite"]}],"parameters":[{"name":"workspace_uuid","in":"path","required":true,"schema":{"type":"string","title":"Workspace Uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceIdentifierRotateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceIdentifierResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/identifiers/{value}":{"get":{"tags":["Identifier","Workspace"],"summary":"Get Visitor Info By Identifier For Current Date","description":"Retrieve visitor identifier information within a specific workspace.\n\nKey behavior\n------------\n- Path: GET `/workspaces/{workspace_id}/identifiers/{value}`\n- Auth: requires the identifier-read permission and access to the\n  requested workspace scope.\n- Inputs: integer `workspace_id` and identifier `value` in the path; an\n  optional `induction_language_id` query parameter overrides the induction\n  content language.\n- Status codes: `200` on success; `404` when the workspace is inaccessible,\n  the identifier is not found, or more than one record matches.\n- Idempotency: yes; read-only.\n- Side effects: none persisted; populates agreement validity and the\n  induction result on the response only.\n\nRoute logic\n-----------\n- Verifies the caller can access the requested workspace.\n- Resolves a single match by identifier value within that workspace. Unlike\n  the global `/identifiers` route, this route does NOT validate the\n  identifier window / visit / visitor state (legacy parity); it then\n  attaches the induction result and populates agreement validity.","operationId":"Get_visitor_info_by_identifier_for_current_date_workspaces__workspace_id__identifiers__value__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Identifier.All","Identifier.ReadWrite","Identifier.Read"]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"value","in":"path","required":true,"schema":{"type":"string","title":"Value"}},{"name":"induction_language_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Induction Language Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentifierVisitorInstanceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/visits/{visit_id}/visitors":{"get":{"tags":["Visitor","Visit"],"summary":"Retrieve All Visitors Associated With A Specific Visit","description":"Retrieve all visitors associated with a specific visit.\n\nKey behavior\n------------\n- Path: GET `/visits/{visit_id}/visitors`.\n- Auth: requires visitor read (or own) permission and access to the visit\n  scope.\n- Inputs: visit id in the path and optional visitor filter query\n  parameters.\n- Status codes: `200` on success, `401` when unauthorized, `404` when the\n  caller is out of scope or the visit is missing.\n- Idempotency: idempotent; read-only.\n- Side effects: populates agreement validity for the response.","operationId":"Retrieve_all_visitors_associated_with_a_specific_visit_visits__visit_id__visitors_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Visitor.All","Visitor.ReadWrite","Visitor.Read","Visitor.Own"]}],"parameters":[{"name":"visit_id","in":"path","required":true,"schema":{"type":"integer","title":"Visit Id"}},{"name":"first_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor first name filter","title":"First Name"},"description":"Visitor first name filter","example":{}},{"name":"last_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor last name filter","title":"Last Name"},"description":"Visitor last name filter","example":{}},{"name":"first_name__like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor first name filter using like\n\nexample: name__like=es -> result name: Test","title":"First Name  Like"},"description":"Visitor first name filter using like\n\nexample: name__like=es -> result name: Test","example":{}},{"name":"last_name__like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor last name filter using like\n\nexample: name__like=es -> result name: Test","title":"Last Name  Like"},"description":"Visitor last name filter using like\n\nexample: name__like=es -> result name: Test","example":{}},{"name":"order_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"first_name,last_name","title":"Order By"}},{"name":"instance__state_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Visitors state filter: \n\n 1 = expected\n\n2 = signed_in\n\n3 = signed_out\n\nexample: instance__state_id=1","title":"Instance  State Id"},"description":"Visitors state filter: \n\n 1 = expected\n\n2 = signed_in\n\n3 = signed_out\n\nexample: instance__state_id=1","example":{}},{"name":"instance__state_id__in","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitors state filter by multi states: \n\n 1 = expected\n\n2 = signed_in\n\n3 = signed_out\n\nexample: instance_state_id__in=1,2","title":"Instance  State Id  In"},"description":"Visitors state filter by multi states: \n\n 1 = expected\n\n2 = signed_in\n\n3 = signed_out\n\nexample: instance_state_id__in=1,2","example":{}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Page size","default":50,"title":"Size"},"description":"Page size"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_VisitVisitorInstanceOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/visits/{visit_id}/visitors/{visitor_id}":{"get":{"tags":["Visitor","Visit"],"summary":"Retrieve A Specific Visitor Associated With A Visit","description":"Retrieve a specific visitor associated with a visit.\n\nKey behavior\n------------\n- Path: GET `/visits/{visit_id}/visitors/{visitor_id}`.\n- Auth: requires visitor read (or own) permission and access to the visit\n  and visitor scopes, checked in that order.\n- Inputs: visit id and visitor id in the path.\n- Status codes: `200` on success, `401` when unauthorized, `404` when the\n  caller is out of scope or the instance is missing.\n- Idempotency: idempotent; read-only.\n- Side effects: populates agreement validity and resolves Pass induction\n  data for the response.","operationId":"Retrieve_a_specific_visitor_associated_with_a_visit_visits__visit_id__visitors__visitor_id__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Visitor.All","Visitor.ReadWrite","Visitor.Read","Visitor.Own"]}],"parameters":[{"name":"visit_id","in":"path","required":true,"schema":{"type":"integer","title":"Visit Id"}},{"name":"visitor_id","in":"path","required":true,"schema":{"type":"integer","title":"Visitor Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitVisitorInstanceOutWithInduction"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Visitor","Visit"],"summary":"Update A Specific Visitor Within A Visit","description":"Update a specific visitor within a visit.\n\nKey behavior\n------------\n- Path: PATCH `/visits/{visit_id}/visitors/{visitor_id}`.\n- Auth: requires visitor read-write (or own) permission and access to the\n  visit and visitor scopes, checked in that order.\n- Inputs: visit id and visitor id in the path plus a partial visitor\n  instance update payload.\n- Status codes: `200` on success, `401` when unauthorized, `404` when\n  hidden by scope or the instance is missing, `422` for invalid update\n  data, and `500` for unexpected update failures.\n- Idempotency: not idempotent; state transitions may create state logs.\n- Side effects: updates instance data/state, refreshes identifiers when\n  required, populates agreement validity, and sends signed-in messages\n  when the visitor newly signs in.","operationId":"Update_a_specific_visitor_within_a_visit_visits__visit_id__visitors__visitor_id__patch","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Visitor.All","Visitor.ReadWrite","Visitor.Own"]}],"parameters":[{"name":"visit_id","in":"path","required":true,"schema":{"type":"integer","title":"Visit Id"}},{"name":"visitor_id","in":"path","required":true,"schema":{"type":"integer","title":"Visitor Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitorInstanceEndpointUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitorInstanceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/visits/{visit_id}/visitors/":{"post":{"tags":["Visitor","Visit"],"summary":"Add A New Visitor To An Existing Visit","description":"Add a new visitor to an existing visit.\n\nKey behavior\n------------\n- Path: POST `/visits/{visit_id}/visitors/`.\n- Auth: requires visit read-write (or own) permission and access to the\n  visit scope.\n- Inputs: visit id in the path and visitor-instance create payload in the\n  request body.\n- Status codes: `200` on success, `400` when the visitor could not be\n  added, `401` when unauthorized, `404` when hidden by scope or the visit\n  is missing, `422` for invalid arguments, and `500` for unexpected create\n  failures.\n- Idempotency: re-adding an existing visit visitor returns the existing\n  instance.\n- Side effects: creates visitor-instance data/identifiers, writes state\n  logs, populates agreement validity, and sends signed-in or expected\n  visitor messages when sync rules require them.","operationId":"Add_a_new_visitor_to_an_existing_visit_visits__visit_id__visitors__post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Visit.All","Visit.ReadWrite","Visit.Own"]}],"parameters":[{"name":"visit_id","in":"path","required":true,"schema":{"type":"integer","title":"Visit Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitorInstanceEndpointCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitorInstanceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/visits/{visit_id}/hosts/":{"get":{"tags":["Host","Visit"],"summary":"Get Hosts Of A Visit","description":"Retrieve all hosts associated with a visit.\n\nKey behavior\n------------\n- Path: GET `/visits/{visit_id}/hosts/`.\n- Auth: requires the visit read permission and access to the visit scope.\n- Inputs: visit id in the path.\n- Status codes: `200` on success, `404` when the caller is out of scope or\n  no visit was found.\n- Idempotency: idempotent; read-only.\n- Side effects: none.","operationId":"Get_Hosts_of_a_Visit_visits__visit_id__hosts__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Visit.All","Visit.ReadWrite","Visit.Read","Visit.Own"]}],"parameters":[{"name":"visit_id","in":"path","required":true,"schema":{"type":"integer","title":"Visit Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitHostsOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Host","Visit"],"summary":"Add Host To Visit","description":"Create or attach a host to a visit.\n\nKey behavior\n------------\n- Path: POST `/visits/{visit_id}/hosts/`.\n- Auth: requires the visit read-write permission and access to the visit\n  scope.\n- Inputs: visit id in the path and the host create payload in the body.\n- Status codes: `201` when a new host instance is created, `200` when the\n  host already existed, `404` when the caller is out of scope, `422` when\n  the user, visit, or workspace membership is invalid, `500` on an\n  unexpected error.\n- Idempotency: re-attaching an existing host returns the existing record.\n- Side effects: creates the host instance, its Auth Code, and its host\n  instance data on first attach.","operationId":"Add_Host_to_Visit_visits__visit_id__hosts__post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Visit.All","Visit.ReadWrite","Visit.Own"]}],"parameters":[{"name":"visit_id","in":"path","required":true,"schema":{"type":"integer","title":"Visit Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostInstanceRouteCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostInstanceOut"}}}},"200":{"description":"An existing host for the visit was found and returned.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostInstanceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/visits/{visit_id}/hosts/{user_id}":{"get":{"tags":["Host","Visit"],"summary":"Get Host Of Visit","description":"Retrieve a specific host from a visit.\n\nKey behavior\n------------\n- Path: GET `/visits/{visit_id}/hosts/{user_id}`.\n- Auth: requires the visit read permission and access to the visit scope.\n- Inputs: visit id and host user id in the path.\n- Status codes: `200` on success, `404` when the caller is out of scope or\n  the host is not found.\n- Idempotency: idempotent; read-only.\n- Side effects: none.","operationId":"Get_Host_of_Visit_visits__visit_id__hosts__user_id__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Visit.All","Visit.ReadWrite","Visit.Read","Visit.Own"]}],"parameters":[{"name":"visit_id","in":"path","required":true,"schema":{"type":"integer","title":"Visit Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostInstanceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Host","Visit"],"summary":"Remove Host From Visit","description":"Remove a host from a visit.\n\nKey behavior\n------------\n- Path: DELETE `/visits/{visit_id}/hosts/{user_id}`.\n- Auth: requires the visit read-write permission and access to the visit\n  scope.\n- Inputs: visit id and host user id in the path.\n- Status codes: `204` on success, `404` when the caller is out of scope or\n  the host is not found.\n- Idempotency: not idempotent; a second delete returns 404.\n- Side effects: marks the host instance removed and deletes its data.","operationId":"Remove_Host_from_Visit_visits__visit_id__hosts__user_id__delete","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Visit.All","Visit.ReadWrite","Visit.Own"]}],"parameters":[{"name":"visit_id","in":"path","required":true,"schema":{"type":"integer","title":"Visit Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/visits":{"get":{"tags":["Visit"],"summary":"Get Visits","description":"Get visits visible to the current user.\n\nKey behavior\n------------\n- Path: GET `/visits`.\n- Auth: requires the visit read (or own) permission; the result is scoped\n  to the user inside the service, with no endpoint scope check.\n- Inputs: optional visit filter query parameters.\n- Status codes: `200` on success, `401` when unauthorized. A retrieval\n  error degrades to an empty page rather than failing.\n- Idempotency: idempotent; read-only.\n- Side effects: none.","operationId":"Get_visits_visits_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Visit.All","Visit.ReadWrite","Visit.Read","Visit.Own"]}],"parameters":[{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visit name filter","title":"Name"},"description":"Visit name filter","example":{}},{"name":"name__like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visit name filter using like\n\nexample: name__like=es -> result name: Test","title":"Name  Like"},"description":"Visit name filter using like\n\nexample: name__like=es -> result name: Test","example":{}},{"name":"start_time__lte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visits start time filter -> less than or equal\n\nexamples:\n\nstart_time__lte=2022-10-26\n\nstart_time__lte=2022-10-26T08:00:00","title":"Start Time  Lte"},"description":"Visits start time filter -> less than or equal\n\nexamples:\n\nstart_time__lte=2022-10-26\n\nstart_time__lte=2022-10-26T08:00:00","example":{}},{"name":"start_time__gte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visits start time filter -> greater than or equal\n\nexamples:\n\nstart_time__gte=2022-10-26\n\nstart_time__gte=2022-10-26T08:00:00","title":"Start Time  Gte"},"description":"Visits start time filter -> greater than or equal\n\nexamples:\n\nstart_time__gte=2022-10-26\n\nstart_time__gte=2022-10-26T08:00:00","example":{}},{"name":"start_time__lt","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visits start time filter -> less than\n\nexamples:\n\nstart_time__lt=2022-10-26\n\nstart_time__lt=2022-10-26T08:00:00","title":"Start Time  Lt"},"description":"Visits start time filter -> less than\n\nexamples:\n\nstart_time__lt=2022-10-26\n\nstart_time__lt=2022-10-26T08:00:00","example":{}},{"name":"start_time__gt","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visits start time filter -> greater than\n\nexamples:\n\nstart_time__gt=2022-10-26\n\nstart_time__gt=2022-10-26T08:00:00","title":"Start Time  Gt"},"description":"Visits start time filter -> greater than\n\nexamples:\n\nstart_time__gt=2022-10-26\n\nstart_time__gt=2022-10-26T08:00:00","example":{}},{"name":"order_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Change the direction of the sorting (ASC or DESC) by prefixing with - or + (Optional, it's the default behavior if omitted). It takes a list of string, separated by comma.\n\nSort options:\n\nstart_time, name\n\nExample:\n\norder_by=start_time\n\norder_by=-start_time\n\norder_by=-start_time,name","default":"-start_time","title":"Order By"},"description":"Change the direction of the sorting (ASC or DESC) by prefixing with - or + (Optional, it's the default behavior if omitted). It takes a list of string, separated by comma.\n\nSort options:\n\nstart_time, name\n\nExample:\n\norder_by=start_time\n\norder_by=-start_time\n\norder_by=-start_time,name","example":{}},{"name":"visitor__state_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Visitors state filter: \n\n 1 = expected\n\n2 = signed_in\n\n3 = signed_out\n\nexample: state_id=1","title":"Visitor  State Id"},"description":"Visitors state filter: \n\n 1 = expected\n\n2 = signed_in\n\n3 = signed_out\n\nexample: state_id=1","example":{}},{"name":"visitor__state_id__in","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitors state filter by multi states: \n\n 1 = expected\n\n2 = signed_in\n\n3 = signed_out\n\nexample: state_id__in=1,2","title":"Visitor  State Id  In"},"description":"Visitors state filter by multi states: \n\n 1 = expected\n\n2 = signed_in\n\n3 = signed_out\n\nexample: state_id__in=1,2","example":{}},{"name":"visitor__first_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor first name filter","title":"Visitor  First Name"},"description":"Visitor first name filter","example":{}},{"name":"visitor__last_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor last name filter","title":"Visitor  Last Name"},"description":"Visitor last name filter","example":{}},{"name":"visitor__first_name__like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor first name filter using like\n\nexample: name__like=es -> result name: Test","title":"Visitor  First Name  Like"},"description":"Visitor first name filter using like\n\nexample: name__like=es -> result name: Test","example":{}},{"name":"visitor__last_name__like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor last name filter using like\n\nexample: name__like=es -> result name: Test","title":"Visitor  Last Name  Like"},"description":"Visitor last name filter using like\n\nexample: name__like=es -> result name: Test","example":{}},{"name":"visitor__company","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor company filter","title":"Visitor  Company"},"description":"Visitor company filter","example":{}},{"name":"visitor__company__like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor company filter using like\n\nexample: company__like=es -> result company: Test","title":"Visitor  Company  Like"},"description":"Visitor company filter using like\n\nexample: company__like=es -> result company: Test","example":{}},{"name":"visitor_contact_detail__value","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor contact detail value filter","title":"Visitor Contact Detail  Value"},"description":"Visitor contact detail value filter","example":{}},{"name":"visitor_contact_detail__value__like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor contact detail value filter using like\n\nexample: value__like=es -> result value: test@example.com","title":"Visitor Contact Detail  Value  Like"},"description":"Visitor contact detail value filter using like\n\nexample: value__like=es -> result value: test@example.com","example":{}},{"name":"visitor_contact_detail__type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor contact detail type filter","title":"Visitor Contact Detail  Type"},"description":"Visitor contact detail type filter","example":{}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Page size","default":50,"title":"Size"},"description":"Page size"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_VisitOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/visits/{visit_id}":{"get":{"tags":["Visit"],"summary":"Get Visit","description":"Retrieve a single visit with all related visitors.\n\nKey behavior\n------------\n- Path: GET `/visits/{visit_id}`.\n- Auth: requires the visit read (or own) permission and access to the visit\n  scope.\n- Inputs: visit id in the path.\n- Status codes: `200` on success, `401` when unauthorized, `404` when the\n  caller is out of scope or the visit is missing.\n- Idempotency: idempotent; read-only.\n- Side effects: populates agreement validity for the response.","operationId":"Get_visit_visits__visit_id__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Visit.All","Visit.ReadWrite","Visit.Read","Visit.Own"]}],"parameters":[{"name":"visit_id","in":"path","required":true,"schema":{"type":"integer","title":"Visit Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitAllVisitorsOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Visit"],"summary":"Update Visit","description":"Update an existing visit.\n\nKey behavior\n------------\n- Path: PATCH `/visits/{visit_id}`.\n- Auth: requires the visit read-write (or own) permission and access to the\n  visit scope.\n- Inputs: visit id in the path and the partial visit update payload.\n- Status codes: `200` on success, `401` when unauthorized, `404` when the\n  caller is out of scope or the visit is missing, `422` for invalid update\n  data, and `500` on an unexpected runtime error.\n- Idempotency: not idempotent; state transitions may create state logs.\n- Side effects: updates the visit, its visitors and hosts, modifies ASSA\n  ABLOY reservations when enabled, and sends the update messages.","operationId":"Update_Visit_visits__visit_id__patch","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Visit.All","Visit.ReadWrite","Visit.Own"]}],"parameters":[{"name":"visit_id","in":"path","required":true,"schema":{"type":"integer","title":"Visit Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitRouteUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Visit"],"summary":"Remove Visit","description":"Remove a visit and all associated records.\n\nKey behavior\n------------\n- Path: DELETE `/visits/{visit_id}`.\n- Auth: requires the visit all (delete) and own permissions and access to\n  the visit scope.\n- Inputs: visit id in the path.\n- Status codes: `204` on success, `401` when unauthorized, `404` when the\n  caller is out of scope or the visit is missing, and `500` on an\n  unexpected runtime error.\n- Idempotency: not idempotent; soft-deletes the visit.\n- Side effects: removes the visitor and host instances, sets the visit\n  state to REMOVED, and deletes ASSA ABLOY reservations. No messaging.","operationId":"Remove_visit_visits__visit_id__delete","security":[{"OAuth2PasswordBearer":["All.All","Visit.All","Visit.Own"]}],"parameters":[{"name":"visit_id","in":"path","required":true,"schema":{"type":"integer","title":"Visit Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/visits/":{"post":{"tags":["Visit"],"summary":"Add Visit","description":"Add a new visit.\n\nKey behavior\n------------\n- Path: POST `/visits/`.\n- Auth: requires the visit read-write (or own) permission and access to the\n  target workspace scope.\n- Inputs: the visit create payload in the request body.\n- Status codes: `200` on success, `401` when unauthorized, `404` when the\n  caller lacks access to the workspace, `422` for invalid create data, and\n  `500` on an unexpected runtime error.\n- Idempotency: not idempotent; creates a new visit.\n- Side effects: creates the visit with its hosts and visitors, publishes\n  ASSA ABLOY reservations when enabled, and sends the creation messages.","operationId":"Add_Visit_visits__post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Visit.All","Visit.ReadWrite","Visit.Own"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitRouteCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/visits/{visit_id}/sign-in-all":{"post":{"tags":["Visit"],"summary":"Sign In All Visitors For A Visit","description":"Sign in all expected visitors for a visit.\n\nKey behavior\n------------\n- Path: POST `/visits/{visit_id}/sign-in-all`.\n- Auth: requires the visit read-write (or own) permission and access to the\n  visit scope.\n- Inputs: visit id in the path.\n- Status codes: `200` on success, `401` when unauthorized, `404` when the\n  caller is out of scope, `422` for an invalid state transition, and `500`\n  on an unexpected runtime error.\n- Idempotency: not idempotent; transitions EXPECTED visitors to SIGNED_IN.\n- Side effects: writes group-action state logs and sends mobile badge plus\n  (host-gated) arrival messages.","operationId":"Sign_in_all_visitors_for_a_visit_visits__visit_id__sign_in_all_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Visit.All","Visit.ReadWrite","Visit.Own"]}],"parameters":[{"name":"visit_id","in":"path","required":true,"schema":{"type":"integer","title":"Visit Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitVisitorsStateChangeOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/visits/{visit_id}/sign-out-all":{"post":{"tags":["Visit"],"summary":"Sign Out All Visitors For A Visit","description":"Sign out all signed-in visitors for a visit.\n\nKey behavior\n------------\n- Path: POST `/visits/{visit_id}/sign-out-all`.\n- Auth: requires the visit read-write (or own) permission and access to the\n  visit scope.\n- Inputs: visit id in the path.\n- Status codes: `200` on success, `401` when unauthorized, `404` when the\n  caller is out of scope, `422` for an invalid state transition, and `500`\n  on an unexpected runtime error.\n- Idempotency: not idempotent; transitions SIGNED_IN visitors to\n  SIGNED_OUT.\n- Side effects: writes group-action state logs. No messaging.","operationId":"Sign_out_all_visitors_for_a_visit_visits__visit_id__sign_out_all_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Visit.All","Visit.ReadWrite","Visit.Own"]}],"parameters":[{"name":"visit_id","in":"path","required":true,"schema":{"type":"integer","title":"Visit Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitVisitorsStateChangeOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/visitors/flow":{"get":{"tags":["Visitor"],"summary":"Retrieve Visitor Flow Records","description":"Retrieve paginated visitor-flow records.\n\nKey behavior\n------------\n- Path: GET `/visitors/flow` (the trailing-slash form is also served\n  directly for clients that send it).\n- Auth: requires visit read or own permission.\n- Inputs: optional `workspace_id`, optional `search`, and the legacy\n  visitor-flow filter query parameters.\n- Status codes: `200` on success, `401` for unsupported callers.\n- Idempotency: idempotent read.\n- Side effects: none persisted; the returned page is enriched with visit\n  metadata and Pass induction results.","operationId":"Retrieve_Visitor_Flow_Records_visitors_flow_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Visit.All","Visit.ReadWrite","Visit.Read","Visit.Own"]}],"parameters":[{"name":"state_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Visitor state exact-match filter.\n\nstate mapping:\n\n1 = expected\n\n2 = signed_in\n\n3 = signed_out\n\nexamples:\n\nstate_id=1","title":"State Id"},"description":"Visitor state exact-match filter.\n\nstate mapping:\n\n1 = expected\n\n2 = signed_in\n\n3 = signed_out\n\nexamples:\n\nstate_id=1","example":{}},{"name":"state_id__in","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor state IN filter.\n\nstate mapping:\n\n1 = expected\n\n2 = signed_in\n\n3 = signed_out\n\nexamples:\n\nstate_id__in=1,2","title":"State Id  In"},"description":"Visitor state IN filter.\n\nstate mapping:\n\n1 = expected\n\n2 = signed_in\n\n3 = signed_out\n\nexamples:\n\nstate_id__in=1,2","example":{}},{"name":"start_time__lte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor start-time filter -> less than or equal.\n\nexamples:\n\nstart_time__lte=2026-03-25T18:00:00","title":"Start Time  Lte"},"description":"Visitor start-time filter -> less than or equal.\n\nexamples:\n\nstart_time__lte=2026-03-25T18:00:00","example":{}},{"name":"start_time__gte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor start-time filter -> greater than or equal.\n\nWhen combined with ``end_time__lte``, matches visits whose time range overlaps the requested window.\n\nexamples:\n\nstart_time__gte=2026-03-25T08:00:00","title":"Start Time  Gte"},"description":"Visitor start-time filter -> greater than or equal.\n\nWhen combined with ``end_time__lte``, matches visits whose time range overlaps the requested window.\n\nexamples:\n\nstart_time__gte=2026-03-25T08:00:00","example":{}},{"name":"start_time__lt","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor start-time filter -> less than.\n\nexamples:\n\nstart_time__lt=2026-03-25T18:00:00","title":"Start Time  Lt"},"description":"Visitor start-time filter -> less than.\n\nexamples:\n\nstart_time__lt=2026-03-25T18:00:00","example":{}},{"name":"start_time__gt","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor start-time filter -> greater than.\n\nexamples:\n\nstart_time__gt=2026-03-25T08:00:00","title":"Start Time  Gt"},"description":"Visitor start-time filter -> greater than.\n\nexamples:\n\nstart_time__gt=2026-03-25T08:00:00","example":{}},{"name":"end_time__gte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor effective end-time filter -> greater than or equal.\nUses ``coalesce(end_time, start_time)`` so instances with ``end_time=null`` are filtered by ``start_time``.\n\nexamples:\n\nend_time__gte=2026-03-25T08:00:00","title":"End Time  Gte"},"description":"Visitor effective end-time filter -> greater than or equal.\nUses ``coalesce(end_time, start_time)`` so instances with ``end_time=null`` are filtered by ``start_time``.\n\nexamples:\n\nend_time__gte=2026-03-25T08:00:00","example":{}},{"name":"end_time__lte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor effective end-time filter -> less than or equal.\nUses ``coalesce(end_time, start_time)`` so instances with ``end_time=null`` are filtered by ``start_time``.\n\nWhen combined with ``start_time__gte``, matches visits whose time range overlaps the requested window.\n\nexamples:\n\nend_time__lte=2026-03-25T18:00:00","title":"End Time  Lte"},"description":"Visitor effective end-time filter -> less than or equal.\nUses ``coalesce(end_time, start_time)`` so instances with ``end_time=null`` are filtered by ``start_time``.\n\nWhen combined with ``start_time__gte``, matches visits whose time range overlaps the requested window.\n\nexamples:\n\nend_time__lte=2026-03-25T18:00:00","example":{}},{"name":"order_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor flow sorting fields.\nPrefix with ``-`` for descending order.\n\nsort options:\n\nstart_time, name\n\nexamples:\n\norder_by=start_time\n\norder_by=-start_time\n\norder_by=start_time,name","default":"-start_time","title":"Order By"},"description":"Visitor flow sorting fields.\nPrefix with ``-`` for descending order.\n\nsort options:\n\nstart_time, name\n\nexamples:\n\norder_by=start_time\n\norder_by=-start_time\n\norder_by=start_time,name","example":{}},{"name":"details__first_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor first-name exact-match filter.\n\nexamples:\n\ndetails__first_name=Visitor1","title":"Details  First Name"},"description":"Visitor first-name exact-match filter.\n\nexamples:\n\ndetails__first_name=Visitor1","example":{}},{"name":"details__last_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor last-name exact-match filter.\n\nexamples:\n\ndetails__last_name=Test1","title":"Details  Last Name"},"description":"Visitor last-name exact-match filter.\n\nexamples:\n\ndetails__last_name=Test1","example":{}},{"name":"details__company","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor company exact-match filter.\n\nexamples:\n\ndetails__company=Systam Oy","title":"Details  Company"},"description":"Visitor company exact-match filter.\n\nexamples:\n\ndetails__company=Systam Oy","example":{}},{"name":"details__first_name__like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor first-name LIKE filter.\n\nexamples:\n\ndetails__first_name__like=%25sit%25","title":"Details  First Name  Like"},"description":"Visitor first-name LIKE filter.\n\nexamples:\n\ndetails__first_name__like=%25sit%25","example":{}},{"name":"details__last_name__like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor last-name LIKE filter.\n\nexamples:\n\ndetails__last_name__like=%25est%25","title":"Details  Last Name  Like"},"description":"Visitor last-name LIKE filter.\n\nexamples:\n\ndetails__last_name__like=%25est%25","example":{}},{"name":"details__company__like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor company LIKE filter.\n\nexamples:\n\ndetails__company__like=%25systam%25","title":"Details  Company  Like"},"description":"Visitor company LIKE filter.\n\nexamples:\n\ndetails__company__like=%25systam%25","example":{}},{"name":"details__search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor detail search across first name, last name, and company.\n\nexamples:\n\ndetails__search=visitor","title":"Details  Search"},"description":"Visitor detail search across first name, last name, and company.\n\nexamples:\n\ndetails__search=visitor","example":{}},{"name":"details__order_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Visitor detail sorting fields.\nPrefix with ``-`` for descending order.\n\nsort options:\n\nfirst_name, last_name, company\n\nexamples:\n\ndetails__order_by=last_name\n\ndetails__order_by=-last_name\n\ndetails__order_by=last_name,first_name","default":"first_name,last_name","title":"Details  Order By"},"description":"Visitor detail sorting fields.\nPrefix with ``-`` for descending order.\n\nsort options:\n\nfirst_name, last_name, company\n\nexamples:\n\ndetails__order_by=last_name\n\ndetails__order_by=-last_name\n\ndetails__order_by=last_name,first_name","example":{}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Identifier for the workspace to filter visitor records.","title":"Workspace Id"},"description":"Identifier for the workspace to filter visitor records."},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search by visitor or host names (first_name and/or last_name).","title":"Search"},"description":"Search by visitor or host names (first_name and/or last_name)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Page size","default":50,"title":"Size"},"description":"Page size"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_VisitorFlowResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/visitors/flow/expected":{"get":{"tags":["Visitor"],"summary":"Get Expected Visitor Flow Records","description":"Retrieve expected visitor-flow records.\n\nKey behavior\n------------\n- Path: GET `/visitors/flow/expected`.\n- Auth: requires visit read permission.\n- Inputs: optional `workspace_id`, optional `visit_type_id`, optional\n  `search`, and optional `visitor_search`.\n- Status codes: `200` on success, `401` for unauthorized callers.\n- Idempotency: idempotent read.\n- Side effects: none persisted; agreement validity is populated on the\n  returned rows.","operationId":"Get_Expected_Visitor_Flow_Records_visitors_flow_expected_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Visit.All","Visit.ReadWrite","Visit.Read"]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Identifier for the workspace to filter visitor records.","title":"Workspace Id"},"description":"Identifier for the workspace to filter visitor records."},{"name":"visit_type_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Identifier for the visit type to filter visitor records.","title":"Visit Type Id"},"description":"Identifier for the visit type to filter visitor records."},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search by visitor or host names (first_name and/or last_name).","title":"Search"},"description":"Search by visitor or host names (first_name and/or last_name)."},{"name":"visitor_search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search by visitor name (first_name and/or last_name) for device users with predictive search enabled.","title":"Visitor Search"},"description":"Search by visitor name (first_name and/or last_name) for device users with predictive search enabled."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/VisitorFlowExtendedResponse"},"title":"Response Get Expected Visitor Flow Records Visitors Flow Expected Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/visitors/flow/signed-in":{"get":{"tags":["Visitor"],"summary":"Get Signed-In Visitor Flow Records","description":"Retrieve signed-in visitor-flow records.\n\nKey behavior\n------------\n- Path: GET `/visitors/flow/signed-in`.\n- Auth: requires visit read permission.\n- Inputs: optional `workspace_id`, optional `visit_type_id`, optional\n  `search`, and optional `visitor_search`.\n- Status codes: `200` on success, `401` for unauthorized callers.\n- Idempotency: idempotent read.\n- Side effects: none persisted; agreement validity is populated on the\n  returned rows.","operationId":"Get_Signed_In_Visitor_Flow_Records_visitors_flow_signed_in_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Visit.All","Visit.ReadWrite","Visit.Read"]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Identifier for the workspace to filter visitor records.","title":"Workspace Id"},"description":"Identifier for the workspace to filter visitor records."},{"name":"visit_type_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Identifier for the visit type to filter visitor records.","title":"Visit Type Id"},"description":"Identifier for the visit type to filter visitor records."},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search by visitor or host names (first_name and/or last_name).","title":"Search"},"description":"Search by visitor or host names (first_name and/or last_name)."},{"name":"visitor_search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search by visitor name (first_name and/or last_name) for device users with predictive search enabled.","title":"Visitor Search"},"description":"Search by visitor name (first_name and/or last_name) for device users with predictive search enabled."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/VisitorFlowExtendedResponse"},"title":"Response Get Signed In Visitor Flow Records Visitors Flow Signed In Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/visitors/flow/assistant-notification":{"post":{"tags":["Visitor"],"summary":"Send Assistant Notification For Visitor Without Host","description":"Notify the lobby or assistants when a kiosk visitor signs in without a host.\n\nKey behavior\n------------\n- Path: POST `/visitors/flow/assistant-notification`.\n- Auth: requires visit read-write or own permission and is restricted to\n  authenticated device callers.\n- Inputs: `workspace_id`, `visitor_name`, and optional visitor contact or\n  company fields. The device name is resolved server-side.\n- Status codes: `204` on success, `403` when the caller is not a device or\n  the workspace forbids host-less sign-in, `404` when the workspace is not\n  accessible, `401` for missing auth.\n- Idempotency: not idempotent; each call dispatches a best-effort\n  notification.\n- Side effects: sends the assistant-notification message, no visit records\n  are created.","operationId":"Send_Assistant_Notification_For_Visitor_Without_Host_visitors_flow_assistant_notification_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Visit.All","Visit.ReadWrite","Visit.Own"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssistantNotificationRequest"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/feedback":{"get":{"tags":["Feedback"],"summary":"Get Feedback","description":"Get feedback.","operationId":"Get_feedback_feedback_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Type filter","title":"Type"},"description":"Type filter","example":{}},{"name":"rating","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Rating filter","title":"Rating"},"description":"Rating filter","example":{}},{"name":"rating__in","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Rating in filter\n\nexample: rating__in=1,2,3","title":"Rating  In"},"description":"Rating in filter\n\nexample: rating__in=1,2,3","example":{}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Workspace filter","title":"Workspace Id"},"description":"Workspace filter","example":{}},{"name":"device_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Device filter","title":"Device Id"},"description":"Device filter","example":{}},{"name":"user_type_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"User type filter","title":"User Type Id"},"description":"User type filter","example":{}},{"name":"order_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Change the direction of the sorting (ASC or DESC) by prefixing with - or + (Optional, it's the default behavior if omitted). It takes a list of string, separated by comma.\n\nSort options:\n\ntype, created\n\nExample:\n\norder_by=created\n\norder_by=-created\n\norder_by=type,created","default":"-created","title":"Order By"},"description":"Change the direction of the sorting (ASC or DESC) by prefixing with - or + (Optional, it's the default behavior if omitted). It takes a list of string, separated by comma.\n\nSort options:\n\ntype, created\n\nExample:\n\norder_by=created\n\norder_by=-created\n\norder_by=type,created","example":{}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Page size","default":50,"title":"Size"},"description":"Page size"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_FeedbackOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/feedback/":{"post":{"tags":["Feedback"],"summary":"Add Feedback","description":"Add feedback","operationId":"Add_feedback_feedback__post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackRouteCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/clients/register":{"post":{"tags":["Client"],"summary":"Register New Client","description":"Register a new client and set up the environment.\n\nThis endpoint creates a new client by setting up an organization,\nworkspace, lobby, devices (if provided), and the associated host user.","operationId":"Register_new_client_clients_register_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientRegisterRoute"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/visits/{visit_id}/messages/pre-arrival/email":{"post":{"tags":["Admin User","Messaging"],"summary":"Send a test email notification for an expected visitor visit","description":"Send a test pre-arrival email notification for a visit's expected visitors.","operationId":"Send_test_email_message_visits__visit_id__messages_pre_arrival_email_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Visit.All","Visit.ReadWrite","Visit.Own"]}],"parameters":[{"name":"visit_id","in":"path","required":true,"schema":{"type":"integer","title":"Visit Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/visits/{visit_id}/messages/pre-arrival/sms":{"post":{"tags":["Admin User","Messaging"],"summary":"Send a test SMS notification for an expected visitor visit","description":"Send a test pre-arrival SMS notification for a visit's expected visitors.","operationId":"Send_test_sms_message_visits__visit_id__messages_pre_arrival_sms_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Visit.All","Visit.ReadWrite","Visit.Own"]}],"parameters":[{"name":"visit_id","in":"path","required":true,"schema":{"type":"integer","title":"Visit Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/visits/{visit_id}/messages/reply":{"post":{"tags":["Admin User","Messaging"],"summary":"Send a reply message to visitors of a visit","description":"Send a reply message to a visit's visitors.","operationId":"Send_reply_message_to_visitors_visits__visit_id__messages_reply_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Visit.All","Visit.ReadWrite","Visit.Own"]}],"parameters":[{"name":"visit_id","in":"path","required":true,"schema":{"type":"integer","title":"Visit Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplyMessageRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/visit-types":{"get":{"tags":["Visit Type","Workspace"],"summary":"Get Workspace Visit Types","description":"List all visit types attached to a workspace.\n\nKey behavior\n------------\n- Path: GET `/workspaces/{workspace_id}/visit-types`.\n- Auth: requires workspace read permission and access to the workspace\n  scope.\n- Inputs: workspace id in the path.\n- Status codes: `200` on success, `404` when the workspace is missing or\n  hidden by scope.\n- Idempotency: idempotent; read-only.\n- Side effects: none.","operationId":"Get_Workspace_Visit_Types_workspaces__workspace_id__visit_types_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Workspace.All","Workspace.ReadWrite","Workspace.Read"]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceVisitTypesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Visit Type","Workspace"],"summary":"Create Workspace Visit Type","description":"Create a visit type within a workspace, seeded from the template.\n\nKey behavior\n------------\n- Path: POST `/workspaces/{workspace_id}/visit-types`.\n- Auth: requires workspace read-write permission and access to the\n  workspace scope.\n- Inputs: workspace id in the path and the create payload in the body.\n- Status codes: `201` on success, `404` when the workspace is missing or\n  hidden by scope, `422` when the workspace reached its `MaximumVisitTypes`\n  limit or the name already exists in the workspace.\n- Idempotency: not idempotent.\n- Side effects: creates the visit type, links its badge template, optionally\n  promotes it to primary, and seeds its settings, fields, and contact\n  details from the template workspace's first visit type.","operationId":"Create_Workspace_Visit_Type_workspaces__workspace_id__visit_types_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Workspace.All","Workspace.ReadWrite"]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitTypeCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitTypeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/visit-types/{visit_type_id}":{"patch":{"tags":["Visit Type"],"summary":"Update Visit Type","description":"Update details of a visit type.\n\nKey behavior\n------------\n- Path: PATCH `/visit-types/{visit_type_id}`.\n- Auth: requires workspace read-write permission and access to the visit\n  type scope.\n- Inputs: visit type id in the path and a partial update payload. A\n  client-sent `is_primary=false` is ignored; only `is_primary=true`\n  promotes the visit type to primary.\n- Status codes: `200` on success, `404` when the visit type is missing or\n  hidden by scope, `422` when disabling a primary or sole-enabled visit\n  type or promoting a disabled one.\n- Idempotency: not idempotent.\n- Side effects: updates the visit type and, when promoting, demotes the\n  previous primary.","operationId":"Update_Visit_Type_visit_types__visit_type_id__patch","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Workspace.All","Workspace.ReadWrite"]}],"parameters":[{"name":"visit_type_id","in":"path","required":true,"schema":{"type":"integer","title":"Visit Type Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitTypeModifyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitTypeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Visit Type"],"summary":"Delete Visit Type","description":"Delete a visit type when it exists and is visible in caller scope.\n\nKey behavior\n------------\n- Path: DELETE `/visit-types/{visit_type_id}`.\n- Auth: requires workspace read-write permission and access to the visit\n  type scope.\n- Inputs: visit type id in the path.\n- Status codes: `204` on success and when the visit type is missing or\n  out of scope (idempotent), `422` when the visit type is primary or the\n  only enabled visit type in its workspace.\n- Idempotency: idempotent.\n- Side effects: removes the visit type and its related rows.","operationId":"Delete_Visit_Type_visit_types__visit_type_id__delete","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Workspace.All","Workspace.ReadWrite"]}],"parameters":[{"name":"visit_type_id","in":"path","required":true,"schema":{"type":"integer","title":"Visit Type Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/visit-types/{visit_type_id}/primary":{"patch":{"tags":["Visit Type"],"summary":"Set Primary Visit Type","description":"Set a visit type as the workspace primary.\n\nKey behavior\n------------\n- Path: PATCH `/visit-types/{visit_type_id}/primary`.\n- Auth: requires workspace read-write permission and access to the visit\n  type scope.\n- Inputs: visit type id in the path.\n- Status codes: `200` on success, `404` when the visit type is missing or\n  hidden by scope, `422` when the visit type is disabled.\n- Idempotency: idempotent for an already-primary enabled visit type.\n- Side effects: promotes the visit type and demotes the previous primary.","operationId":"Set_Primary_Visit_Type_visit_types__visit_type_id__primary_patch","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Workspace.All","Workspace.ReadWrite"]}],"parameters":[{"name":"visit_type_id","in":"path","required":true,"schema":{"type":"integer","title":"Visit Type Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitTypeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/visit-types/{visit_type_id}/settings/{key}":{"get":{"tags":["Visit Type"],"summary":"Get Visit Type Setting","description":"Get a single visit type setting by its metadata key.\n\nKey behavior\n------------\n- Path: GET `/visit-types/{visit_type_id}/settings/{key}`.\n- Auth: requires workspace read permission and access to the visit type\n  scope.\n- Inputs: visit type id and setting metadata key in the path.\n- Status codes: `200` on success, `404` when the visit type is out of\n  scope or the setting does not exist.\n- Idempotency: idempotent; read-only.\n- Side effects: none.","operationId":"Get_Visit_Type_Setting_visit_types__visit_type_id__settings__key__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Workspace.All","Workspace.ReadWrite","Workspace.Read"]}],"parameters":[{"name":"visit_type_id","in":"path","required":true,"schema":{"type":"integer","title":"Visit Type Id"}},{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Visit Type"],"summary":"Update Visit Type Setting","description":"Update a visit type setting value.\n\nKey behavior\n------------\n- Path: PATCH `/visit-types/{visit_type_id}/settings/{key}`.\n- Auth: requires workspace read-write permission and access to the visit\n  type scope.\n- Inputs: visit type id and setting metadata key in the path, and the new\n  value in the body.\n- Status codes: `200` on success, `404` when the visit type is out of\n  scope or the setting does not exist.\n- Idempotency: idempotent for a repeated identical value.\n- Side effects: updates the setting value.","operationId":"Update_Visit_Type_Setting_visit_types__visit_type_id__settings__key__patch","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Workspace.All","Workspace.ReadWrite"]}],"parameters":[{"name":"visit_type_id","in":"path","required":true,"schema":{"type":"integer","title":"Visit Type Id"}},{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitTypeSettingModifyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitTypeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/visit-types/{visit_type_id}/fields/{field_id}":{"patch":{"tags":["Visit Type"],"summary":"Update Visit Type Field","description":"Update a visit type's field link flags.\n\nKey behavior\n------------\n- Path: PATCH `/visit-types/{visit_type_id}/fields/{field_id}`.\n- Auth: requires workspace read-write permission and access to the visit\n  type scope.\n- Inputs: visit type id and field id in the path, and the updated flags in\n  the body.\n- Status codes: `200` on success, `404` when the visit type is out of\n  scope or the field link does not exist.\n- Idempotency: idempotent for repeated identical flags.\n- Side effects: updates the field link.","operationId":"Update_Visit_Type_Field_visit_types__visit_type_id__fields__field_id__patch","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Workspace.All","Workspace.ReadWrite"]}],"parameters":[{"name":"visit_type_id","in":"path","required":true,"schema":{"type":"integer","title":"Visit Type Id"}},{"name":"field_id","in":"path","required":true,"schema":{"type":"integer","title":"Field Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitTypeWorkspaceFieldModifyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitTypeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/visit-types/{visit_type_id}/badge-template":{"patch":{"tags":["Visit Type"],"summary":"Update Visit Type Badge Template","description":"Set the badge template associated with a visit type.\n\nKey behavior\n------------\n- Path: PATCH `/visit-types/{visit_type_id}/badge-template`.\n- Auth: requires workspace read-write permission and access to the visit\n  type scope.\n- Inputs: visit type id in the path and the badge template UUID in the\n  body.\n- Status codes: `200` on success, `404` when the visit type is missing or\n  hidden by scope, `400` when no badge template matches the UUID, `422`\n  when the supplied value is not a UUID.\n- Idempotency: idempotent for a repeated identical badge template.\n- Side effects: creates or re-points the visit type's badge template link.","operationId":"Update_Visit_Type_Badge_Template_visit_types__visit_type_id__badge_template_patch","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Workspace.All","Workspace.ReadWrite"]}],"parameters":[{"name":"visit_type_id","in":"path","required":true,"schema":{"type":"integer","title":"Visit Type Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitTypeBadgeTemplateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitTypeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/visit-types/{visit_type_uuid}/documents/{document_type_name}/content":{"post":{"tags":["Visit Type"],"summary":"Create Visit Type Document Content","description":"Create a new localized content version for a visit type document.\n\nKey behavior\n------------\n- Path: POST `/visit-types/{visit_type_uuid}/documents/{document_type_name}/content`.\n- Auth: requires workspace read-write permission and access to the visit\n  type scope.\n- Inputs: `language_tag` and `content` in the request body.\n- Status codes: `201` on success, `401` for missing/invalid auth, `404`\n  when the visit type or document type is not visible, `422` when the\n  language tag is invalid.\n- Idempotency: not idempotent; each call inserts a new immutable version.\n- Side effects: creates the visit-type document row when needed and inserts\n  a new `document_content` row.","operationId":"Create_visit_type_document_content_visit_types__visit_type_uuid__documents__document_type_name__content_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Workspace.All","Workspace.ReadWrite"]}],"parameters":[{"name":"visit_type_uuid","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Visit Type Uuid"}},{"name":"document_type_name","in":"path","required":true,"schema":{"type":"string","title":"Document Type Name"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentContentCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentContentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Visit Type"],"summary":"Get Visit Type Document Content","description":"Get the latest localized content version for a visit type document.\n\nKey behavior\n------------\n- Path: GET `/visit-types/{visit_type_uuid}/documents/{document_type_name}/content`.\n- Auth: requires workspace read permission and access to the visit type\n  scope.\n- Inputs: optional `language_tag` query parameter.\n- Status codes: `200` on success, `401` for missing/invalid auth, `404`\n  when the visit type, document type, or any content row is unavailable,\n  `422` when a non-empty language tag is unknown.\n- Idempotency: fully idempotent read.\n- Side effects: none.","operationId":"Get_visit_type_document_content_visit_types__visit_type_uuid__documents__document_type_name__content_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Workspace.All","Workspace.ReadWrite","Workspace.Read"]}],"parameters":[{"name":"visit_type_uuid","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Visit Type Uuid"}},{"name":"document_type_name","in":"path","required":true,"schema":{"type":"string","title":"Document Type Name"}},{"name":"language_tag","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2,"maxLength":12},{"type":"null"}],"description":"Requested language tag. Falls back to English content when a localized version is not available.","title":"Language Tag"},"description":"Requested language tag. Falls back to English content when a localized version is not available."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentContentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/visit-types/{visit_type_uuid}/documents/{document_type_name}/content/versions":{"get":{"tags":["Visit Type"],"summary":"Get Visit Type Document Content Versions","description":"List version history for one language of a visit type document.\n\nKey behavior\n------------\n- Path: GET `/visit-types/{visit_type_uuid}/documents/{document_type_name}/content/versions`.\n- Auth: requires workspace read permission and access to the visit type\n  scope.\n- Inputs: required `language_tag` query parameter.\n- Status codes: `200` on success, `401` for missing/invalid auth, `404`\n  when the visit type or document type is not visible, `422` when the\n  language tag is invalid.\n- Idempotency: fully idempotent read.\n- Side effects: none.","operationId":"Get_visit_type_document_content_versions_visit_types__visit_type_uuid__documents__document_type_name__content_versions_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Workspace.All","Workspace.ReadWrite","Workspace.Read"]}],"parameters":[{"name":"visit_type_uuid","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Visit Type Uuid"}},{"name":"document_type_name","in":"path","required":true,"schema":{"type":"string","title":"Document Type Name"}},{"name":"language_tag","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":12,"description":"Language tag whose version history should be returned.","title":"Language Tag"},"description":"Language tag whose version history should be returned."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DocumentContentResponse"},"title":"Response Get Visit Type Document Content Versions Visit Types  Visit Type Uuid  Documents  Document Type Name  Content Versions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/emergency-alert":{"post":{"tags":["Emergency Alert","Messaging"],"summary":"Send Emergency Alert","description":"Send an emergency alert to the requested workspaces.\n\nKey behavior\n------------\n- Path: POST `/emergency-alert`.\n- Auth: requires workspace read-write scope; the user must have access to\n  every workspace in the request.\n- Returns: 202 Accepted on success.\n- Errors: 401 when the user lacks access to a requested workspace, 422 for\n  invalid payloads, 500 when the downstream send fails.","operationId":"Send_emergency_alert_emergency_alert_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Workspace.All","Workspace.ReadWrite"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmergencyAlert"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/fields":{"get":{"tags":["Field","Workspace"],"summary":"Retrieve All Fields Associated With A Workspace","description":"List all fields attached to a workspace.\n\nKey behavior\n------------\n- Path: GET `/workspaces/{workspace_id}/fields`.\n- Auth: requires workspace read permission and access to the workspace\n  scope.\n- Inputs: workspace id in the path.\n- Status codes: `200` on success, `404` when the workspace is missing or\n  hidden by scope.\n- Idempotency: idempotent; read-only.\n- Side effects: none.","operationId":"Retrieve_all_fields_associated_with_a_workspace_workspaces__workspace_id__fields_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Workspace.All","Workspace.ReadWrite","Workspace.Read"]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceFieldResponse"},"title":"Response Retrieve All Fields Associated With A Workspace Workspaces  Workspace Id  Fields Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Field","Workspace"],"summary":"Create Or Attach A Field To A Workspace","description":"Create or attach a field to a workspace.\n\nKey behavior\n------------\n- Path: POST `/workspaces/{workspace_id}/fields`.\n- Auth: requires workspace read-write permission and access to the\n  workspace scope.\n- Inputs: workspace id in the path and the field payload in the body.\n- Status codes: `201` when a new field is created, `200` when an existing\n  field with the same name is returned, `404` when the workspace is missing\n  or hidden by scope, `422` on invalid input.\n- Idempotency: re-posting the same field name returns the existing field\n  with `200`.\n- Side effects: creates the field, its optional multi-value group, and the\n  workspace link, then links the field to every visit type in the\n  workspace.","operationId":"Create_or_attach_a_field_to_a_workspace_workspaces__workspace_id__fields_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Workspace.All","Workspace.ReadWrite"]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceFieldCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceFieldResponse"}}}},"200":{"description":"An existing field with the same name was found and returned.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceFieldResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/fields/{field_id}":{"patch":{"tags":["Field","Workspace"],"summary":"Update A Workspace Field","description":"Update a workspace field and synchronize its multi-value options.\n\nKey behavior\n------------\n- Path: PATCH `/workspaces/{workspace_id}/fields/{field_id}`.\n- Auth: requires workspace read-write permission and access to the\n  workspace scope.\n- Inputs: workspace id and field id in the path, and the partial update\n  payload in the body.\n- Status codes: `200` on success, `404` when the workspace is out of scope\n  or the field link does not exist, `422` on invalid input.\n- Idempotency: idempotent for repeated identical payloads.\n- Side effects: updates the field and adds or removes its multi-value\n  options to match the payload.","operationId":"Update_a_workspace_field_workspaces__workspace_id__fields__field_id__patch","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Workspace.All","Workspace.ReadWrite"]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"field_id","in":"path","required":true,"schema":{"type":"integer","title":"Field Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceFieldModifyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceFieldResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Field","Workspace"],"summary":"Delete A Workspace Field","description":"Delete a workspace field link and clean up an orphaned field.\n\nKey behavior\n------------\n- Path: DELETE `/workspaces/{workspace_id}/fields/{field_id}`.\n- Auth: requires workspace read-write permission and access to the\n  workspace scope.\n- Inputs: workspace id and field id in the path.\n- Status codes: `204` on success, `404` when the workspace is out of scope\n  or the field link does not exist.\n- Idempotency: not idempotent; a missing field link returns `404`.\n- Side effects: removes the workspace link and deletes the underlying field\n  when no other workspace references it and it is not global.","operationId":"Delete_a_workspace_field_workspaces__workspace_id__fields__field_id__delete","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Workspace.All","Workspace.ReadWrite"]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"field_id","in":"path","required":true,"schema":{"type":"integer","title":"Field Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/visitors":{"get":{"tags":["Visitor"],"summary":"Get Visitors","description":"Retrieve a paginated list of visitors visible to the caller.\n\nKey behavior\n------------\n- Path: GET `/visitors`.\n- Auth: requires visitor read (or own) permission; the accessible scope\n  depends on the caller type (admin all, organization, workspace, device,\n  or own-hosted).\n- Inputs: optional `search` term and visitor filter query parameters.\n- Status codes: `200` on success, `401` when unauthorized.\n- Idempotency: yes; read-only.\n- Side effects: emits a visitor list or search audit entry.","operationId":"Get_visitors_visitors_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Visitor.All","Visitor.ReadWrite","Visitor.Read","Visitor.Own"]}],"parameters":[{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search term to filter visitors by name, email, phone, or custom fields","title":"Search"},"description":"Search term to filter visitors by name, email, phone, or custom fields"},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by workspace ID","title":"Workspace Id"},"description":"Filter by workspace ID","example":{}},{"name":"first_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by exact first name","title":"First Name"},"description":"Filter by exact first name","example":{}},{"name":"last_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by exact last name","title":"Last Name"},"description":"Filter by exact last name","example":{}},{"name":"first_name__like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by first name using LIKE pattern\n\nExample: first_name__like=%tor% matches 'Visitor'","title":"First Name  Like"},"description":"Filter by first name using LIKE pattern\n\nExample: first_name__like=%tor% matches 'Visitor'","example":{}},{"name":"last_name__like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by last name using LIKE pattern\n\nExample: last_name__like=%est% matches 'Test'","title":"Last Name  Like"},"description":"Filter by last name using LIKE pattern\n\nExample: last_name__like=%est% matches 'Test'","example":{}},{"name":"order_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Change the direction of the sorting (ASC or DESC) by prefixing with - or + (Optional, it's the default behavior if omitted). It takes a list of string, separated by comma.\n\nOptions: first_name, last_name\n\nExample: order_by=-last_name,first_name","default":"first_name,last_name","title":"Order By"},"description":"Change the direction of the sorting (ASC or DESC) by prefixing with - or + (Optional, it's the default behavior if omitted). It takes a list of string, separated by comma.\n\nOptions: first_name, last_name\n\nExample: order_by=-last_name,first_name","example":{}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Page size","default":50,"title":"Size"},"description":"Page size"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_VisitorResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Visitor"],"summary":"Create Visitor","description":"Create a new visitor or return an existing matching visitor.\n\nKey behavior\n------------\n- Path: POST `/visitors`.\n- Auth: requires visitor read-write (or own) permission and access to the\n  target workspace.\n- Inputs: visitor details including the `workspace_id`, with embedded\n  contact details and custom fields.\n- Status codes: `200` on success, `401` when the caller cannot access the\n  workspace, `422` when the workspace is missing or the payload (including\n  phone numbers) is invalid.\n- Idempotency: returns the existing visitor when one matches the identity.\n- Side effects: creates the visitor with its contact details and fields.","operationId":"Create_visitor_visitors_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Visitor.All","Visitor.ReadWrite","Visitor.Own"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitorCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/visitors/{visitor_id}":{"get":{"tags":["Visitor"],"summary":"Retrieve Visitor By Id","description":"Retrieve a single visitor by numeric id or UUID.\n\nKey behavior\n------------\n- Path: GET `/visitors/{visitor_id}` (accepts int or UUID).\n- Auth: requires visitor read (or own) permission and access to the\n  visitor scope.\n- Status codes: `200` on success, `404` when the visitor is missing or\n  hidden by scope.\n- Idempotency: yes; read-only.\n- Side effects: emits a visitor viewed audit entry, except when a visitor\n  views their own record.","operationId":"Retrieve_Visitor_by_ID_visitors__visitor_id__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Visitor.All","Visitor.ReadWrite","Visitor.Read","Visitor.Own"]}],"parameters":[{"name":"visitor_id","in":"path","required":true,"schema":{"anyOf":[{"type":"integer"},{"type":"string","format":"uuid"}],"title":"Visitor Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Visitor"],"summary":"Update Visitor","description":"Update an existing visitor.\n\nKey behavior\n------------\n- Path: PATCH `/visitors/{visitor_id}`.\n- Auth: requires visitor read-write (or own) permission and access to the\n  visitor scope.\n- Inputs: partial visitor update with embedded contacts, fields, and\n  accepted agreements.\n- Status codes: `200` on success, `404` when the visitor is missing or\n  hidden by scope, `422` when phone validation fails.\n- Idempotency: not idempotent.\n- Side effects: updates the visitor and propagates identity changes to its\n  expected visit instances.","operationId":"Update_visitor_visitors__visitor_id__patch","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Visitor.All","Visitor.ReadWrite","Visitor.Own"]}],"parameters":[{"name":"visitor_id","in":"path","required":true,"schema":{"type":"integer","title":"Visitor Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitorModifyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Visitor"],"summary":"Remove Visitor","description":"Delete a visitor.\n\nKey behavior\n------------\n- Path: DELETE `/visitors/{visitor_id}`.\n- Auth: requires visitor all (or own) permission and access to the visitor\n  scope.\n- Status codes: `204` on success and when the visitor does not exist\n  (idempotent), `404` when hidden by scope.\n- Idempotency: idempotent.\n- Side effects: removes the visitor and its visit instances.","operationId":"Remove_visitor_visitors__visitor_id__delete","security":[{"OAuth2PasswordBearer":["All.All","Visitor.All","Visitor.Own"]}],"parameters":[{"name":"visitor_id","in":"path","required":true,"schema":{"type":"integer","title":"Visitor Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/visitors":{"post":{"tags":["Visitor"],"summary":"Create Visitor","description":"Create a visitor in the given workspace.\n\nKey behavior\n------------\n- Path: POST `/workspaces/{workspace_id}/visitors` (the trailing-slash form\n  is also served directly for clients that send it).\n- Auth: requires visitor read-write (or own) permission and access to the\n  workspace scope.\n- Status codes: `200` on success, `404` when the workspace is inaccessible,\n  `422` when the payload (including phone numbers) is invalid.\n- Idempotency: returns the existing visitor when one matches the identity.\n- Side effects: creates the visitor with its contact details and fields.","operationId":"Create_Visitor_workspaces__workspace_id__visitors_post","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Visitor.All","Visitor.ReadWrite","Visitor.Own"]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitorCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Visitor"],"summary":"Create Or Update Visitor","description":"Create or update a visitor in the given workspace.\n\nKey behavior\n------------\n- Path: PUT `/workspaces/{workspace_id}/visitors` (the trailing-slash form\n  is also served directly for clients that send it).\n- Auth: requires visitor read-write (or own) permission and access to the\n  workspace scope.\n- Inputs: visitor details; when `visit_type_id` is provided and Pass\n  induction is enabled for it, the response includes induction details.\n- Status codes: `200` on success, `404` when the workspace is inaccessible,\n  `422` when the workspace or payload is invalid.\n- Idempotency: updates a matching visitor or creates a new one.\n- Side effects: writes the visitor, propagates identity changes to its\n  expected instances on update, and resolves Pass induction when requested.","operationId":"Create_or_Update_Visitor_workspaces__workspace_id__visitors_put","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","Visitor.All","Visitor.ReadWrite","Visitor.Own"]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitorCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitorWithInductionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/visitors/unused-since/{date_since}":{"delete":{"tags":["Visitor"],"summary":"Delete Unused Visitors","description":"Remove all visitors in a workspace unused since a date.\n\nKey behavior\n------------\n- Path: DELETE `/workspaces/{workspace_id}/visitors/unused-since/{date_since}`.\n- Auth: requires visitor all permission and access to the workspace scope.\n- Status codes: `204` regardless of how many visitors were removed\n  (idempotent), `404` when the workspace is inaccessible.\n- Idempotency: idempotent.\n- Side effects: removes visitors (and their instances) neither they nor\n  their instances were updated after the cutoff date.","operationId":"Delete_Unused_Visitors_workspaces__workspace_id__visitors_unused_since__date_since__delete","security":[{"OAuth2PasswordBearer":["All.All","Visitor.All"]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"date_since","in":"path","required":true,"schema":{"type":"string","format":"date","title":"Date Since"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sat/badge-templates":{"get":{"tags":["Badge Template"],"summary":"Get Badge Templates","description":"Retrieve all badge templates for admin users.\n\nKey behavior\n------------\n- Path: GET `/sat/badge-templates`\n- Auth: requires `Organization.All` permission and `AdminUser` type.\n- Inputs: none.\n- Status codes: `200` on success, `401` for missing/invalid auth or\n  non-admin tokens.\n- Idempotency: fully idempotent read.\n- Side effects: none.\n\nRoute logic\n-----------\n- Validates admin permission scope and user type via dependency.\n- Fetches badge templates and omits template content in list responses.\n- Converts unexpected runtime failures to `500`.","operationId":"Get_badge_templates_sat_badge_templates_get","security":[{"OAuth2PasswordBearer":["All.All","Organization.All"]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BadgeTemplateListResponse"},"title":"Response Get Badge Templates Sat Badge Templates Get"}}}}}},"post":{"tags":["Badge Template"],"summary":"Create Badge Template","description":"Create a badge template.\n\nKey behavior\n------------\n- Path: POST `/sat/badge-templates`\n- Auth: requires `Organization.All` permission and `AdminUser` type.\n- Inputs: badge template creation payload.\n- Status codes: `201` for new records, `200` when a template with the\n  same name already exists, `401` for missing/invalid auth or non-admin\n  tokens.\n- Idempotency: name-based create-or-get semantics.\n- Side effects: inserts a new badge template and may demote previous\n  primary templates when the new template is primary.\n\nRoute logic\n-----------\n- Validates admin permission scope and user type via dependency.\n- Delegates create-or-get logic to the badge template service.\n- Sets the HTTP response code based on whether a new record was created.\n- Converts unexpected runtime failures to `500`.","operationId":"Create_badge_template_sat_badge_templates_post","security":[{"OAuth2PasswordBearer":["All.All","Organization.All"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadgeTemplateCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__apis__sat__schemas__badge_template__BadgeTemplateResponse"}}}},"200":{"description":"An existing badge template with the same name was returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__apis__sat__schemas__badge_template__BadgeTemplateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sat/badge-templates/{badge_template_uuid}":{"get":{"tags":["Badge Template"],"summary":"Get Badge Template By Uuid","description":"Retrieve one badge template by UUID.\n\nKey behavior\n------------\n- Path: GET `/sat/badge-templates/{badge_template_uuid}`\n- Auth: requires `Organization.All` permission and `AdminUser` type.\n- Inputs: badge template UUID path parameter.\n- Status codes: `200` on success, `404` when missing, `401` for\n  missing/invalid auth or non-admin tokens.\n- Idempotency: fully idempotent read.\n- Side effects: none.\n\nRoute logic\n-----------\n- Validates admin permission scope and user type via dependency.\n- Resolves the badge template by UUID and returns the full template\n  payload including `value`.\n- Converts unexpected runtime failures to `500`.","operationId":"Get_badge_template_by_UUID_sat_badge_templates__badge_template_uuid__get","security":[{"OAuth2PasswordBearer":["All.All","Organization.All"]}],"parameters":[{"name":"badge_template_uuid","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Badge Template Uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__apis__sat__schemas__badge_template__BadgeTemplateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Badge Template"],"summary":"Update Badge Template","description":"Partially update a badge template.\n\nKey behavior\n------------\n- Path: PATCH `/sat/badge-templates/{badge_template_uuid}`\n- Auth: requires `Organization.All` permission and `AdminUser` type.\n- Inputs: badge template UUID path parameter and partial update payload.\n- Status codes: `200` on success, `404` when missing, `422` for invalid\n  primary-template updates, `401` for missing/invalid auth or non-admin\n  tokens.\n- Idempotency: conditionally idempotent for identical payloads.\n- Side effects: updates badge template fields and may demote previous\n  primary templates when the target becomes primary.\n\nRoute logic\n-----------\n- Validates admin permission scope and user type via dependency.\n- Resolves and updates the badge template through the API service.\n- Converts unexpected runtime failures to `500`.","operationId":"Update_badge_template_sat_badge_templates__badge_template_uuid__patch","security":[{"OAuth2PasswordBearer":["All.All","Organization.All"]}],"parameters":[{"name":"badge_template_uuid","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Badge Template Uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadgeTemplateUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__apis__sat__schemas__badge_template__BadgeTemplateResponse"}}}},"404":{"description":"No badge template with the specified UUID exists"},"422":{"description":"The update request is invalid (for example, trying to unset the only primary badge template)"}}},"delete":{"tags":["Badge Template"],"summary":"Delete Badge Template","description":"Delete a non-primary badge template.\n\nKey behavior\n------------\n- Path: DELETE `/sat/badge-templates/{badge_template_uuid}`\n- Auth: requires `Organization.All` permission and `AdminUser` type.\n- Inputs: badge template UUID path parameter.\n- Status codes: `204` on success, `404` when missing, `422` when the\n  target is primary, `401` for missing/invalid auth or non-admin tokens.\n- Idempotency: not idempotent after the first successful delete.\n- Side effects: permanently removes a badge template record.\n\nRoute logic\n-----------\n- Validates admin permission scope and user type via dependency.\n- Delegates delete validation and persistence to the badge template\n  service.\n- Converts unexpected runtime failures to `500`.","operationId":"Delete_badge_template_sat_badge_templates__badge_template_uuid__delete","security":[{"OAuth2PasswordBearer":["All.All","Organization.All"]}],"parameters":[{"name":"badge_template_uuid","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Badge Template Uuid"}}],"responses":{"204":{"description":"Successful Response"},"404":{"description":"No badge template with the specified UUID exists"},"422":{"description":"The delete request is invalid (for example, trying to delete the primary badge template)"}}}},"/sat/organizations/{organization_uuid}/comments":{"get":{"tags":["Organization"],"summary":"List Organization Comments (Sat)","description":"List all admin-only comments attached to an organization.\n\nKey behavior\n------------\n- Path: GET `/sat/organizations/{organization_uuid}/comments`\n- Auth: requires `Organization.All` permission and `AdminUser` type.\n- Inputs: organization UUID path parameter.\n- Status codes: `200` on success, `404` when the organization is missing,\n  `401` for missing/invalid auth or non-admin tokens.\n- Idempotency: fully idempotent read.\n- Side effects: none.\n\nRoute logic\n-----------\n- Validates admin permission scope and user type via dependency.\n- Resolves the organization by UUID and returns all of its admin comments.\n- Converts unexpected runtime failures to `500`.","operationId":"List_organization_comments__SAT__sat_organizations__organization_uuid__comments_get","security":[{"OAuth2PasswordBearer":["All.All","Organization.All"]}],"parameters":[{"name":"organization_uuid","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationCommentResponse"},"title":"Response List Organization Comments  Sat  Sat Organizations  Organization Uuid  Comments Get"}}}},"404":{"description":"No organization with the specified UUID exists"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Organization"],"summary":"Create Organization Comment (Sat)","description":"Create a new admin comment for an organization.\n\nKey behavior\n------------\n- Path: POST `/sat/organizations/{organization_uuid}/comments`\n- Auth: requires `Organization.All` permission and `AdminUser` type.\n- Inputs: organization UUID path parameter and comment creation payload.\n- Status codes: `201` on success, `404` when the organization is missing,\n  `401` for missing/invalid auth or non-admin tokens.\n- Idempotency: not idempotent; each call creates a new comment.\n- Side effects: inserts a new comment row.\n\nRoute logic\n-----------\n- Validates admin permission scope and user type via dependency.\n- Resolves the organization by UUID and inserts a new comment row.\n- Converts unexpected runtime failures to `500`.","operationId":"Create_organization_comment__SAT__sat_organizations__organization_uuid__comments_post","security":[{"OAuth2PasswordBearer":["All.All","Organization.All"]}],"parameters":[{"name":"organization_uuid","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationCommentCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationCommentResponse"}}}},"404":{"description":"No organization with the specified UUID exists"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sat/organizations/{organization_uuid}/comments/{comment_uuid}":{"patch":{"tags":["Organization"],"summary":"Update Organization Comment (Sat)","description":"Partially update an admin comment for an organization.\n\nKey behavior\n------------\n- Path: PATCH `/sat/organizations/{organization_uuid}/comments/{comment_uuid}`\n- Auth: requires `Organization.All` permission and `AdminUser` type.\n- Inputs: organization UUID, comment UUID, and partial update payload.\n- Status codes: `200` on success, `404` when the organization or comment\n  is missing, `401` for missing/invalid auth or non-admin tokens.\n- Idempotency: conditionally idempotent for identical payloads.\n- Side effects: updates the comment row.\n\nRoute logic\n-----------\n- Validates admin permission scope and user type via dependency.\n- Resolves the organization by UUID and locates the comment within scope.\n- Applies the partial update and returns the latest projection.\n- Converts unexpected runtime failures to `500`.","operationId":"Update_organization_comment__SAT__sat_organizations__organization_uuid__comments__comment_uuid__patch","security":[{"OAuth2PasswordBearer":["All.All","Organization.All"]}],"parameters":[{"name":"organization_uuid","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Uuid"}},{"name":"comment_uuid","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Comment Uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationCommentUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationCommentResponse"}}}},"404":{"description":"No organization or comment with the specified UUID exists"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Organization"],"summary":"Delete Organization Comment (Sat)","description":"Delete an admin comment for an organization.\n\nKey behavior\n------------\n- Path: DELETE `/sat/organizations/{organization_uuid}/comments/{comment_uuid}`\n- Auth: requires `Organization.All` permission and `AdminUser` type.\n- Inputs: organization UUID and comment UUID path parameters.\n- Status codes: `204` on success, `404` when the organization or comment\n  is missing, `401` for missing/invalid auth or non-admin tokens.\n- Idempotency: not idempotent after the first successful delete.\n- Side effects: removes the comment row.\n\nRoute logic\n-----------\n- Validates admin permission scope and user type via dependency.\n- Resolves the organization by UUID and locates the comment within scope.\n- Deletes the comment row.\n- Converts unexpected runtime failures to `500`.","operationId":"Delete_organization_comment__SAT__sat_organizations__organization_uuid__comments__comment_uuid__delete","security":[{"OAuth2PasswordBearer":["All.All","Organization.All"]}],"parameters":[{"name":"organization_uuid","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Uuid"}},{"name":"comment_uuid","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Comment Uuid"}}],"responses":{"204":{"description":"Successful Response"},"404":{"description":"No organization or comment with the specified UUID exists"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sat/settings/{key}":{"get":{"tags":["Setting"],"summary":"Get Global Setting (Sat)","description":"Retrieve a global setting by metadata key.\n\nKey behavior\n------------\n- Path: GET `/sat/settings/{key}`\n- Auth: requires `Organization.All` permission and `AdminUser` type.\n- Inputs: setting metadata key path parameter.\n- Status codes: `200` on success, `403` when the setting is flagged\n  as restricted or the caller is authenticated but not an admin user\n  type, `404` when no global setting exists with that key, `401` for\n  missing or invalid credentials.\n- Idempotency: fully idempotent read.\n- Side effects: none.\n\nRoute logic\n-----------\n- Validates admin permission scope and user type via dependency.\n- Resolves a global (non-tenant-scoped) setting metadata + value pair.\n- Rejects reads on restricted metadata without leaking the value.\n- Converts unexpected runtime failures to `500`.","operationId":"Get_global_setting__SAT__sat_settings__key__get","security":[{"OAuth2PasswordBearer":["All.All","Organization.All"]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettingSatOut"}}}},"403":{"description":"The setting is restricted and its value cannot be exposed via this endpoint"},"404":{"description":"No global setting with the specified key exists"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Setting"],"summary":"Update Global Setting (Sat)","description":"Partially update a global setting value by metadata key.\n\nKey behavior\n------------\n- Path: PATCH `/sat/settings/{key}`\n- Auth: requires `Organization.All` permission and `AdminUser` type.\n- Inputs: setting metadata key path parameter and ``{\"value\": ...}`` body.\n- Status codes: `200` with body for non-restricted settings, `204`\n  with no body for restricted settings, `403` when the caller is\n  authenticated but not an admin user type, `404` when no global\n  setting exists with that key, `401` for missing or invalid\n  credentials.\n- Idempotency: idempotent for identical payloads.\n- Side effects: updates the matching ``setting`` row's ``value``.\n\nRoute logic\n-----------\n- Validates admin permission scope and user type via dependency.\n- Resolves the global setting and updates its value.\n- Returns the updated projection for non-restricted settings.\n- Returns ``204`` with no body for restricted settings so the new\n  value is not echoed back (preserves the read-classification of\n  the GET endpoint).\n- Converts unexpected runtime failures to `500`.","operationId":"Update_global_setting__SAT__sat_settings__key__patch","security":[{"OAuth2PasswordBearer":["All.All","Organization.All"]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettingSatUpdate"}}}},"responses":{"200":{"description":"Setting updated; non-restricted body returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettingSatOut"}}}},"204":{"description":"Setting updated; value omitted because the setting is restricted"},"403":{"description":"Caller is authenticated but not an admin user type"},"404":{"description":"No global setting with the specified key exists"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sat/organizations/{organization_uuid}/extensions":{"get":{"tags":["Admin User"],"summary":"Get Sat Organization Extensions","description":"Retrieve the extension list for one organization from the SAT API.\n\nKey behavior\n------------\n- Path: GET `/sat/organizations/{organization_uuid}/extensions`\n- Auth: requires `Organization.All` permission and `AdminUser` type.\n- Inputs: organization UUID in the path.\n- Status codes: `200` on success, `401` for missing/invalid admin auth,\n  `404` when the organization does not exist.\n- Idempotency: fully idempotent read.\n- Side effects: none.\n\nRoute logic\n-----------\n- Validates admin permission scope and user type via dependency.\n- Resolves the organization UUID and lists extension enabled states.\n- Converts unexpected runtime failures to `500`.","operationId":"Get_SAT_organization_extensions_sat_organizations__organization_uuid__extensions_get","security":[{"OAuth2PasswordBearer":["All.All","Organization.All"]}],"parameters":[{"name":"organization_uuid","in":"path","required":true,"schema":{"type":"string","title":"Organization Uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationExtensionResponse"},"title":"Response Get Sat Organization Extensions Sat Organizations  Organization Uuid  Extensions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sat/organizations/{organization_uuid}/extensions/{application_uuid}":{"post":{"tags":["Admin User"],"summary":"Enable Sat Organization Extension","description":"Enable one organization extension from the SAT API.\n\nKey behavior\n------------\n- Path: POST `/sat/organizations/{organization_uuid}/extensions/{application_uuid}`\n- Auth: requires `Organization.All` permission and `AdminUser` type.\n- Inputs: organization UUID and application UUID in the path.\n- Status codes: `201` when enabled now, `200` when already enabled,\n  `401` for missing/invalid admin auth, `404` for unknown organization or\n  extension application, `422` for unprocessable extension state.\n- Idempotency: conditionally idempotent for repeated enable requests.\n- Side effects: may create extension-specific integration data.\n\nRoute logic\n-----------\n- Validates admin permission scope and user type via dependency.\n- Resolves the organization and extension application.\n- Enables the extension and returns the resulting status item.\n- Converts unexpected runtime failures to `500`.","operationId":"Enable_SAT_organization_extension_sat_organizations__organization_uuid__extensions__application_uuid__post","security":[{"OAuth2PasswordBearer":["All.All","Organization.All"]}],"parameters":[{"name":"organization_uuid","in":"path","required":true,"schema":{"type":"string","title":"Organization Uuid"}},{"name":"application_uuid","in":"path","required":true,"schema":{"type":"string","title":"Application Uuid"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationExtensionResponse"}}}},"200":{"description":"Extension was already enabled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationExtensionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Admin User"],"summary":"Disable Sat Organization Extension","description":"Disable one organization extension from the SAT API.\n\nKey behavior\n------------\n- Path: DELETE `/sat/organizations/{organization_uuid}/extensions/{application_uuid}`\n- Auth: requires `Organization.All` permission and `AdminUser` type.\n- Inputs: organization UUID and application UUID in the path.\n- Status codes: `204` on success, `401` for missing/invalid admin auth,\n  `404` for unknown organization or extension application, `422` for\n  unprocessable extension state.\n- Idempotency: idempotent when repeated against an already disabled item.\n- Side effects: may remove extension-specific integration data.\n\nRoute logic\n-----------\n- Validates admin permission scope and user type via dependency.\n- Resolves the organization and extension application.\n- Disables the extension and returns no content.\n- Converts unexpected runtime failures to `500`.","operationId":"Disable_SAT_organization_extension_sat_organizations__organization_uuid__extensions__application_uuid__delete","security":[{"OAuth2PasswordBearer":["All.All","Organization.All"]}],"parameters":[{"name":"organization_uuid","in":"path","required":true,"schema":{"type":"string","title":"Organization Uuid"}},{"name":"application_uuid","in":"path","required":true,"schema":{"type":"string","title":"Application Uuid"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sat/organizations/{organization_uuid}/extensions/entra-id/config":{"get":{"tags":["Admin User"],"summary":"Get Sat Organization Microsoft Entra Id Config","description":"Retrieve Microsoft Entra ID configuration for SAT.\n\nKey behavior\n------------\n- Path: GET `/sat/organizations/{organization_uuid}/extensions/entra-id/config`\n- Auth: requires `Organization.All` permission and `AdminUser` type.\n- Inputs: organization UUID in the path.\n- Status codes: `200` on success, `401` for missing/invalid admin auth,\n  `404` for unknown organization, disabled extension, or missing SCIM\n  configuration.\n- Idempotency: fully idempotent read.\n- Side effects: none.\n- Route logic: resolves the organization UUID and returns the current\n  Microsoft Entra ID SCIM configuration projection.","operationId":"Get_SAT_organization_Microsoft_Entra_ID_config_sat_organizations__organization_uuid__extensions_entra_id_config_get","security":[{"OAuth2PasswordBearer":["All.All","Organization.All"]}],"parameters":[{"name":"organization_uuid","in":"path","required":true,"schema":{"type":"string","title":"Organization Uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationEntraIdConfigResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Admin User"],"summary":"Patch Sat Organization Microsoft Entra Id Config","description":"Partially update Microsoft Entra ID configuration for SAT.\n\nKey behavior\n------------\n- Path: PATCH `/sat/organizations/{organization_uuid}/extensions/entra-id/config`\n- Auth: requires `Organization.All` permission and `AdminUser` type.\n- Inputs: organization UUID in the path and partial config in the body.\n- Status codes: `200` on success, `401` for missing/invalid admin auth,\n  `404` for unknown organization or disabled extension, and `422` when the\n  config payload cannot be applied.\n- Idempotency: conditionally idempotent for identical payloads.\n- Side effects: updates the tenant ID, workspace mappings, and optional API\n  secret for the Entra SCIM configuration.\n- Route logic: resolves the organization UUID, applies the partial update,\n  and returns the updated configuration projection.","operationId":"Patch_SAT_organization_Microsoft_Entra_ID_config_sat_organizations__organization_uuid__extensions_entra_id_config_patch","security":[{"OAuth2PasswordBearer":["All.All","Organization.All"]}],"parameters":[{"name":"organization_uuid","in":"path","required":true,"schema":{"type":"string","title":"Organization Uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationEntraIdUpsertRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationEntraIdConfigResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sat/organizations/{organization_uuid}/extensions/entra-id/secret":{"get":{"tags":["Admin User"],"summary":"Get Sat Organization Microsoft Entra Id Secret","description":"Retrieve the current SCIM API secret for SAT.\n\nKey behavior\n------------\n- Path: GET `/sat/organizations/{organization_uuid}/extensions/entra-id/secret`\n- Auth: requires `Organization.All` permission and `AdminUser` type.\n- Inputs: organization UUID in the path.\n- Status codes: `200` on success, `401` for missing/invalid admin auth,\n  `404` for unknown organization, disabled extension, or missing SCIM\n  configuration.\n- Idempotency: fully idempotent read.\n- Side effects: none. Response sets `Cache-Control: no-store`.\n- Route logic: resolves the organization UUID and returns the current SCIM\n  secret, which may be null when the config exists without an account row.","operationId":"Get_SAT_organization_Microsoft_Entra_ID_secret_sat_organizations__organization_uuid__extensions_entra_id_secret_get","security":[{"OAuth2PasswordBearer":["All.All","Organization.All"]}],"parameters":[{"name":"organization_uuid","in":"path","required":true,"schema":{"type":"string","title":"Organization Uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationEntraIdSecretResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Admin User"],"summary":"Regenerate Sat Organization Microsoft Entra Id Secret","description":"Generate a new SCIM API secret for SAT.\n\nKey behavior\n------------\n- Path: POST `/sat/organizations/{organization_uuid}/extensions/entra-id/secret`\n- Auth: requires `Organization.All` permission and `AdminUser` type.\n- Inputs: organization UUID in the path.\n- Status codes: `200` on success, `401` for missing/invalid admin auth,\n  `404` for unknown organization, disabled extension, or missing SCIM\n  configuration, and `422` when the secret cannot be regenerated.\n- Idempotency: not idempotent; each successful call returns a new secret.\n- Side effects: replaces the current SCIM secret and sets\n  `Cache-Control: no-store` on the response.\n- Route logic: resolves the organization UUID, regenerates the secret, and\n  returns the new secret payload.","operationId":"Regenerate_SAT_organization_Microsoft_Entra_ID_secret_sat_organizations__organization_uuid__extensions_entra_id_secret_post","security":[{"OAuth2PasswordBearer":["All.All","Organization.All"]}],"parameters":[{"name":"organization_uuid","in":"path","required":true,"schema":{"type":"string","title":"Organization Uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationEntraIdSecretResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sat/organizations/{organization_uuid}/extensions/entra-id/provisioning":{"get":{"tags":["Admin User"],"summary":"Get Sat Organization Microsoft Entra Id Provisioning Summary","description":"Retrieve Microsoft Entra ID provisioning summary counts for SAT.\n\nKey behavior\n------------\n- Path: GET `/sat/organizations/{organization_uuid}/extensions/entra-id/provisioning`\n- Auth: requires `Organization.All` permission and `AdminUser` type.\n- Inputs: organization UUID in the path.\n- Status codes: `200` on success, `401` for missing/invalid admin auth,\n  `404` for unknown organization, disabled extension, or missing SCIM\n  configuration.\n- Idempotency: fully idempotent read.\n- Side effects: none.\n- Route logic: resolves the organization UUID and returns provisioning\n  summary counts for users, groups, and memberships.","operationId":"Get_SAT_organization_Microsoft_Entra_ID_provisioning_summary_sat_organizations__organization_uuid__extensions_entra_id_provisioning_get","security":[{"OAuth2PasswordBearer":["All.All","Organization.All"]}],"parameters":[{"name":"organization_uuid","in":"path","required":true,"schema":{"type":"string","title":"Organization Uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationEntraIdProvisioningSummaryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sat/organizations/{organization_uuid}/extensions/entra-id/provisioning/users":{"get":{"tags":["Admin User"],"summary":"Get Sat Organization Microsoft Entra Id Provisioned Users","description":"Retrieve paginated provisioned users for SAT.\n\nKey behavior\n------------\n- Path: GET `/sat/organizations/{organization_uuid}/extensions/entra-id/provisioning/users`\n- Auth: requires `Organization.All` permission and `AdminUser` type.\n- Inputs: organization UUID in the path and limit/offset pagination params.\n- Status codes: `200` on success, `401` for missing/invalid admin auth,\n  `404` for unknown organization, disabled extension, or missing SCIM\n  configuration.\n- Idempotency: fully idempotent read.\n- Side effects: none.\n- Route logic: resolves the organization UUID and returns a paginated,\n  privacy-safe user list ordered by user UUID and SCIM external ID.","operationId":"Get_SAT_organization_Microsoft_Entra_ID_provisioned_users_sat_organizations__organization_uuid__extensions_entra_id_provisioning_users_get","security":[{"OAuth2PasswordBearer":["All.All","Organization.All"]}],"parameters":[{"name":"organization_uuid","in":"path","required":true,"schema":{"type":"string","title":"Organization Uuid"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Page size limit","default":50,"title":"Limit"},"description":"Page size limit"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Page offset","default":0,"title":"Offset"},"description":"Page offset"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LimitOffsetPage_OrganizationEntraIdProvisionedUserResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sat/organizations/{organization_uuid}/extensions/entra-id/provisioning/users-without-workspace":{"get":{"tags":["Admin User"],"summary":"Get Sat Organization Microsoft Entra Id Users Without Workspace","description":"Retrieve paginated provisioned users without workspaces for SAT.\n\nKey behavior\n------------\n- Path: GET `/sat/organizations/{organization_uuid}/extensions/entra-id/provisioning/users-without-workspace`\n- Auth: requires `Organization.All` permission and `AdminUser` type.\n- Inputs: organization UUID in the path and limit/offset pagination params.\n- Status codes: `200` on success, `401` for missing/invalid admin auth,\n  `404` for unknown organization, disabled extension, or missing SCIM\n  configuration.\n- Idempotency: fully idempotent read.\n- Side effects: none.\n- Route logic: resolves the organization UUID and returns the paginated\n  subset of provisioned users without workspace assignments.","operationId":"Get_SAT_organization_Microsoft_Entra_ID_users_without_workspace_sat_organizations__organization_uuid__extensions_entra_id_provisioning_users_without_workspace_get","security":[{"OAuth2PasswordBearer":["All.All","Organization.All"]}],"parameters":[{"name":"organization_uuid","in":"path","required":true,"schema":{"type":"string","title":"Organization Uuid"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Page size limit","default":50,"title":"Limit"},"description":"Page size limit"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Page offset","default":0,"title":"Offset"},"description":"Page offset"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LimitOffsetPage_OrganizationEntraIdProvisionedUserResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sat/organizations/{organization_uuid}/extensions/entra-id/provisioning/users-without-group":{"get":{"tags":["Admin User"],"summary":"Get Sat Organization Microsoft Entra Id Users Without Group","description":"Retrieve paginated provisioned users without groups for SAT.\n\nKey behavior\n------------\n- Path: GET `/sat/organizations/{organization_uuid}/extensions/entra-id/provisioning/users-without-group`\n- Auth: requires `Organization.All` permission and `AdminUser` type.\n- Inputs: organization UUID in the path and limit/offset pagination params.\n- Status codes: `200` on success, `401` for missing/invalid admin auth,\n  `404` for unknown organization, disabled extension, or missing SCIM\n  configuration.\n- Idempotency: fully idempotent read.\n- Side effects: none.\n- Route logic: resolves the organization UUID and returns the paginated\n  subset of provisioned users without group memberships.","operationId":"Get_SAT_organization_Microsoft_Entra_ID_users_without_group_sat_organizations__organization_uuid__extensions_entra_id_provisioning_users_without_group_get","security":[{"OAuth2PasswordBearer":["All.All","Organization.All"]}],"parameters":[{"name":"organization_uuid","in":"path","required":true,"schema":{"type":"string","title":"Organization Uuid"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Page size limit","default":50,"title":"Limit"},"description":"Page size limit"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Page offset","default":0,"title":"Offset"},"description":"Page offset"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LimitOffsetPage_OrganizationEntraIdProvisionedUserResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sat/organizations/{organization_uuid}/extensions/entra-id/provisioning/groups":{"get":{"tags":["Admin User"],"summary":"Get Sat Organization Microsoft Entra Id Provisioned Groups","description":"Retrieve paginated provisioned groups for SAT.\n\nKey behavior\n------------\n- Path: GET `/sat/organizations/{organization_uuid}/extensions/entra-id/provisioning/groups`\n- Auth: requires `Organization.All` permission and `AdminUser` type.\n- Inputs: organization UUID in the path and limit/offset pagination params.\n- Status codes: `200` on success, `401` for missing/invalid admin auth,\n  `404` for unknown organization, disabled extension, or missing SCIM\n  configuration.\n- Idempotency: fully idempotent read.\n- Side effects: none.\n- Route logic: resolves the organization UUID and returns a paginated group\n  list ordered by display name and group UUID.","operationId":"Get_SAT_organization_Microsoft_Entra_ID_provisioned_groups_sat_organizations__organization_uuid__extensions_entra_id_provisioning_groups_get","security":[{"OAuth2PasswordBearer":["All.All","Organization.All"]}],"parameters":[{"name":"organization_uuid","in":"path","required":true,"schema":{"type":"string","title":"Organization Uuid"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Page size limit","default":50,"title":"Limit"},"description":"Page size limit"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Page offset","default":0,"title":"Offset"},"description":"Page offset"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LimitOffsetPage_OrganizationEntraIdProvisionedGroupResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sat/organizations/{organization_uuid}/extensions/entra-id/provisioning/groups/{group_uuid}/members":{"get":{"tags":["Admin User"],"summary":"Get Sat Organization Microsoft Entra Id Group Members","description":"Retrieve paginated members for one provisioned group in SAT.\n\nKey behavior\n------------\n- Path: GET `/sat/organizations/{organization_uuid}/extensions/entra-id/provisioning/groups/{group_uuid}/members`\n- Auth: requires `Organization.All` permission and `AdminUser` type.\n- Inputs: organization UUID and group UUID in the path plus limit/offset\n  pagination params.\n- Status codes: `200` on success, `401` for missing/invalid admin auth,\n  `404` for unknown organization, disabled extension, or missing SCIM\n  configuration, and `422` for invalid group UUID format.\n- Idempotency: fully idempotent read.\n- Side effects: none.\n- Route logic: resolves the organization UUID and returns a paginated,\n  privacy-safe member list ordered by user UUID and SCIM external ID.","operationId":"Get_SAT_organization_Microsoft_Entra_ID_group_members_sat_organizations__organization_uuid__extensions_entra_id_provisioning_groups__group_uuid__members_get","security":[{"OAuth2PasswordBearer":["All.All","Organization.All"]}],"parameters":[{"name":"organization_uuid","in":"path","required":true,"schema":{"type":"string","title":"Organization Uuid"}},{"name":"group_uuid","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Uuid"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Page size limit","default":50,"title":"Limit"},"description":"Page size limit"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Page offset","default":0,"title":"Offset"},"description":"Page offset"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LimitOffsetPage_OrganizationEntraIdProvisionedUserResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/self-service/login":{"post":{"tags":["Self Service","Login","Authentication"],"summary":"Self-Service Login","description":"Authenticate a self-service session using a workspace identifier.","operationId":"Self_Service_Login_self_service_login_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SelfServiceLogin"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SelfServiceToken"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/self-service/users":{"get":{"tags":["Self Service","User"],"summary":"Get Self-Service Users","description":"Endpoint to retrieve self-service users based on a search term.\nThis endpoint allows users to search for self-service users by providing\na search term that matches either the user's name or email exactly.\nThe search is case-insensitive and returns a single user if found.\n\nExceptions:\n    - Unauthorized (401): If the user is not authenticated\n                          or lacks permissions.\n    - UnprocessableEntity (422): If the search term is missing or invalid.\n    - BadRequest (400): If an admin user does not provide workspace_id.\n    - NotFound (404): If no user is found.\n    - Forbidden (403): If multiple users are found.","operationId":"Get_self_service_users_self_service_users_get","security":[{"OAuth2PasswordBearer":["All.All","SelfService.All"]}],"parameters":[{"name":"search","in":"query","required":true,"schema":{"type":"string","description":"Search term to filter users by exact name or email.","title":"Search"},"description":"Search term to filter users by exact name or email."},{"name":"workspace_uuid","in":"query","required":false,"schema":{"type":"string","description":"UUID of the workspace to filter users by.","title":"Workspace Uuid"},"description":"UUID of the workspace to filter users by."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SelfServiceUserOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/self-service/workspaces/{workspace_uuid}":{"get":{"tags":["Self Service"],"summary":"Fetch Workspace By Uuid","description":"Fetch a self-service workspace bootstrap payload by UUID.\n\nKey behavior\n------------\n- Path: GET `/self-service/workspaces/{workspace_uuid}`\n- Auth: requires a self-service token with `SelfService.All`.\n- Inputs: workspace UUID in the path.\n- Status codes: `200` on success, `404` when the workspace is missing or\n  outside the token scope.\n- Idempotency: fully idempotent read.\n- Side effects: none.\n\nResponse summary\n----------------\n- Returns core workspace details together with languages and settings.\n- Includes workspace visit types and their self-service document payloads.\n- Each visit-type document exposes the latest localized content per\n  language, not historical versions.\n- Includes ``single_host_uuid``: the UUID of the workspace's sole\n  eligible host. Eligibility matches ``GET /self-service/users`` — any\n  user linked to the workspace via ``user_workspace`` with\n  ``allow_uninvited = True``, regardless of user type. Null when zero\n  or two or more users match.","operationId":"Fetch_workspace_by_uuid_self_service_workspaces__workspace_uuid__get","security":[{"OAuth2PasswordBearer":["All.All","SelfService.All"]}],"parameters":[{"name":"workspace_uuid","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Workspace Uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SelfServiceWorkspaceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/self-service/visits":{"post":{"tags":["Self Service","Visit"],"summary":"Add Self Service Visit","description":"Create a new visit via self-service.\n\nKey behavior\n------------\n- Path: POST `/self-service/visits`\n- Auth: requires `SelfService.All`.\n- Inputs: self-service visit create payload with workspace UUID, optional\n  visit type UUID, hosts, and visitors.\n- Status codes: `201` on success, `401` when unauthorized, `422` for\n  invalid UUID values, missing references, scope mismatch, or invalid\n  create data, and `400` for unexpected processing failures.\n- Idempotency: not idempotent; each successful call creates a visit.\n- Side effects: creates the visit, visitors, state logs, identifiers, and\n  triggers the standard visit creation side effects.","operationId":"Add_Self_Service_Visit_self_service_visits_post","security":[{"OAuth2PasswordBearer":["All.All","SelfService.All"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitSelfServiceCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SelfServiceVisitResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mobile/visitor":{"get":{"tags":["Mobile","Visit"],"summary":"Get Visits For Mobile Use","description":"Fetch the authenticated visitor's active mobile visit context.\n\nKey behavior\n------------\n- Path: GET `/mobile/visitor`\n- Auth: requires a visitor token with `VISIT_READ`.\n- Inputs: no request body; visit and visitor identity come from the token.\n- Status codes: `200` on success, `401` for non-visitor or invalid auth,\n  `404` when the visit is missing or mobile access has expired.\n- Idempotency: fully idempotent read.\n- Side effects: none.","operationId":"Get_Visits_for_Mobile_use_mobile_visitor_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Visit.All","Visit.ReadWrite","Visit.Read"]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MobileVisitorResponse"}}}}}}},"/mobile/visitor/pre-arrival-email":{"get":{"tags":["Mobile","Visit"],"summary":"Get Pre-Arrival Email Html For Mobile Use","description":"Render the authenticated visitor's pre-arrival email HTML.\n\nKey behavior\n------------\n- Path: GET `/mobile/visitor/pre-arrival-email`\n- Auth: requires a visitor token with `VISIT_READ`.\n- Inputs: optional `language` query parameter; visit and visitor identity\n  come from the token.\n- Status codes: `200` on success with `text/html`, `401` for non-visitor\n  or invalid auth, `404` when the visit is missing or mobile access has\n  expired, and `500` for renderer or configuration failures.\n- Idempotency: fully idempotent read.\n- Side effects: none.","operationId":"Get_pre_arrival_email_HTML_for_Mobile_use_mobile_visitor_pre_arrival_email_get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Visit.All","Visit.ReadWrite","Visit.Read"]}],"parameters":[{"name":"language","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional BCP-47 language tag overriding the visitor's stored language for this render.","title":"Language"},"description":"Optional BCP-47 language tag overriding the visitor's stored language for this render."}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/visit_types/{visit_type_id}/identifiers/{value}":{"get":{"tags":["Identifier","Visit Type"],"summary":"Get Visitor Info By Identifier For Current Date","description":"Retrieve one visitor instance by identifier within a visit type.\n\nKey behavior\n------------\n- Path: GET `/visit_types/{visit_type_id}/identifiers/{value}`\n- Auth: requires `IDENTIFIER_READ` and access to the visit-type scope.\n- Inputs: visit type id and identifier value in the path, plus optional\n  `induction_language_id` query parameter.\n- Status codes: `200` on success, `401` when unauthorized, `404` when the\n  visit type is out of scope or the identifier does not resolve to exactly\n  one visitor instance in that visit type.\n- Idempotency: fully idempotent read.\n- Side effects: populates agreement validity and optional induction data.","operationId":"Get_visitor_info_by_identifier_for_current_date_visit_types__visit_type_id__identifiers__value__get","security":[{"OAuth2PasswordBearer":["All.All","All.ReadWrite","All.Read","Identifier.All","Identifier.ReadWrite","Identifier.Read"]}],"parameters":[{"name":"visit_type_id","in":"path","required":true,"schema":{"type":"integer","title":"Visit Type Id"}},{"name":"value","in":"path","required":true,"schema":{"type":"string","title":"Value"}},{"name":"induction_language_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Induction Language Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitTypeIdentifierResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/oauth/token":{"post":{"tags":["Authentication"],"summary":"Issue Oauth Token","description":"Issue an OAuth 2.0 machine access token.\n\nPath: ``POST /oauth/token``.\nMethod: ``POST``.\nAuth: HTTP Basic client authentication or form-body client credentials.\nInputs: form-urlencoded ``grant_type``, optional ``scope``, and client\ncredentials.\nStatus codes: ``200``, ``400``, ``401``.\nIdempotency: not idempotent; each successful request mints a new JWT and\nupdates the client's ``last_used_at`` timestamp.\nSide effects: signs and returns a short-lived access token.\n\nRoute logic: parse one allowed client-authentication method, validate the\nOAuth client-credentials grant, issue a JWT via the shared signer, and\nformat OAuth-style success or error responses.","operationId":"Issue_OAuth_token_oauth_token_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_Issue_OAuth_token_oauth_token_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthTokenResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthTokenErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthTokenErrorResponse"}}},"description":"Unauthorized"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/scim/v2/ServiceProviderConfig":{"get":{"summary":"Get Service Provider Config","description":"Return SCIM service provider capability metadata.\n\nPath: ``GET /scim/v2/ServiceProviderConfig``.\nAuth: none.\nInputs: none.\nStatus codes: ``200``.\nIdempotency: idempotent read-only operation.\nSide effects: none.","operationId":"get_service_provider_config_scim_v2_ServiceProviderConfig_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceProviderConfigResponse"}}}}}}},"/scim/v2/ResourceTypes":{"get":{"summary":"List Resource Types","description":"Return available SCIM resource types.\n\nPath: ``GET /scim/v2/ResourceTypes``.\nAuth: none.\nInputs: none.\nStatus codes: ``200``.\nIdempotency: idempotent read-only operation.\nSide effects: none.","operationId":"list_resource_types_scim_v2_ResourceTypes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceTypeListResponse"}}}}}}},"/scim/v2/Schemas":{"get":{"summary":"List Schemas","description":"Return SCIM schema metadata.\n\nPath: ``GET /scim/v2/Schemas``.\nAuth: none.\nInputs: none.\nStatus codes: ``200``.\nIdempotency: idempotent read-only operation.\nSide effects: none.","operationId":"list_schemas_scim_v2_Schemas_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SchemaListResponse"}}}}}}},"/scim/v2/Groups":{"get":{"summary":"List Groups","description":"List groups in the authenticated SCIM tenant.\n\nPath: ``GET /scim/v2/Groups``.\nAuth: bearer token via SCIM dependency.\nInputs: pagination parameters and optional filter expression.\nStatus codes: ``200`` on success and SCIM-mapped error statuses on failure.\nIdempotency: idempotent resource-read operation.\nSide effects: none.","operationId":"list_groups_scim_v2_Groups_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"startIndex","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Startindex"}},{"name":"count","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Count"}},{"name":"filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":512},{"type":"null"}],"title":"Filter"}},{"name":"excludedAttributes","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":512},{"type":"null"}],"title":"Excludedattributes"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SCIMGroupListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Create Group","description":"Provision a group in the authenticated SCIM tenant.\n\nPath: ``POST /scim/v2/Groups``.\nAuth: bearer token via SCIM dependency.\nInputs: SCIM group payload with core schema.\nStatus codes: ``201`` for created groups and SCIM-mapped error statuses\non failure.\nIdempotency: not idempotent; duplicate externalId returns 409.\nSide effects: creates group row and optional member link rows.","operationId":"create_group_scim_v2_Groups_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SCIMGroupCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SCIMGroupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/scim/v2/Groups/{group_id}":{"get":{"summary":"Get Group","description":"Retrieve a single group in the authenticated SCIM tenant.\n\nPath: ``GET /scim/v2/Groups/{group_id}``.\nAuth: bearer token via SCIM dependency.\nInputs: SCIM group identifier in path.\nStatus codes: ``200`` on success and SCIM-mapped error statuses on failure.\nIdempotency: idempotent resource-read operation.\nSide effects: none.","operationId":"get_group_scim_v2_Groups__group_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","title":"Group Id"}},{"name":"excludedAttributes","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Excludedattributes"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SCIMGroupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"summary":"Patch Group","description":"Apply SCIM patch operations for one group in the tenant.\n\nPath: ``PATCH /scim/v2/Groups/{group_id}``.\nAuth: bearer token via SCIM dependency.\nInputs: SCIM patch operations payload via ``application/scim+json`` and\nSCIM group identifier.\nStatus codes: ``204`` on success and SCIM-mapped error statuses on failure.\nIdempotency: depends on patch payload and current state.\nSide effects: may update group metadata or add/remove members.","operationId":"patch_group_scim_v2_Groups__group_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","title":"Group Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SCIMGroupPatchRequest"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete Group","description":"Delete a group in the authenticated SCIM tenant.\n\nPath: ``DELETE /scim/v2/Groups/{group_id}``.\nAuth: bearer token via SCIM dependency.\nInputs: SCIM group identifier in path.\nStatus codes: ``204`` on success and SCIM-mapped error statuses on failure.\nIdempotency: idempotent delete operation.\nSide effects: removes group and FK-cascades member link rows. Does NOT\ntouch user workspace data.","operationId":"delete_group_scim_v2_Groups__group_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","title":"Group Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/scim/v2/Users":{"get":{"summary":"List Users","description":"List users in the authenticated SCIM tenant.\n\nPath: ``GET /scim/v2/Users``.\nAuth: bearer token via SCIM dependency.\nInputs: pagination parameters and optional filter expression.\nStatus codes: ``200`` on success and SCIM-mapped error statuses on failure.\nIdempotency: idempotent resource-read operation.\nSide effects: may persist transitional best-guess snapshot rows for legacy\nusers when snapshot data is missing.","operationId":"list_users_scim_v2_Users_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"startIndex","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Startindex"}},{"name":"count","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Count"}},{"name":"filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":512},{"type":"null"}],"title":"Filter"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SCIMUserListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Create User","description":"Provision or link a user in the authenticated SCIM tenant.\n\nPath: ``POST /scim/v2/Users``.\nAuth: bearer token via SCIM dependency.\nInputs: SCIM user payload with core schema and optional extension schema.\nStatus codes: ``201`` for created users, ``200`` for existing links, and\nSCIM-mapped error statuses on failure.\nIdempotency: conditionally idempotent based on external integration state.\nSide effects: may create users, contact details, workspace links,\nand integration links, and may upsert a user integration snapshot payload.","operationId":"create_user_scim_v2_Users_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SCIMUserCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SCIMUserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/scim/v2/Users/{user_id}":{"get":{"summary":"Get User","description":"Retrieve a single user in the authenticated SCIM tenant.\n\nPath: ``GET /scim/v2/Users/{user_id}``.\nAuth: bearer token via SCIM dependency.\nInputs: SCIM user identifier in path.\nStatus codes: ``200`` on success and SCIM-mapped error statuses on failure.\nIdempotency: idempotent resource-read operation.\nSide effects: may persist a transitional best-guess snapshot row when\nsnapshot data is missing.","operationId":"get_user_scim_v2_Users__user_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SCIMUserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"summary":"Update User","description":"Apply SCIM patch operations for one user in the tenant.\n\nPath: ``PATCH /scim/v2/Users/{user_id}``.\nAuth: bearer token via SCIM dependency.\nInputs: SCIM patch operations payload via ``application/scim+json`` and\nSCIM user identifier.\nStatus codes: ``200`` on update, ``204`` on deprovision, and SCIM-mapped\nerror statuses on failure.\nIdempotency: depends on patch payload and current state.\nSide effects: may update user/contact/workspace data or deprovision.","operationId":"update_user_scim_v2_Users__user_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SCIMUserPatchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/SCIMUserResponse"},{"type":"null"}],"title":"Response Update User Scim V2 Users  User Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete User","description":"Return not implemented for user deletion.\n\nPath: ``DELETE /scim/v2/Users/{user_id}``.\nAuth: bearer token via SCIM dependency.\nInputs: SCIM user identifier in path.\nStatus codes: ``501``.\nIdempotency: not applicable.\nSide effects: none.","operationId":"delete_user_scim_v2_Users__user_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"summary":"Replace User","description":"Return not implemented for full user replacement.\n\nPath: ``PUT /scim/v2/Users/{user_id}``.\nAuth: bearer token via SCIM dependency.\nInputs: SCIM user identifier and replacement payload.\nStatus codes: ``501``.\nIdempotency: not applicable.\nSide effects: none.","operationId":"replace_user_scim_v2_Users__user_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SCIMUserCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/SCIMUserResponse"},{"type":"null"}],"title":"Response Replace User Scim V2 Users  User Id  Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"summary":"Root","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/tests/trigger-runtime-error":{"get":{"summary":"Trigger Runtime Error","operationId":"trigger_runtime_error_tests_trigger_runtime_error_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/tests/trigger-exception":{"get":{"summary":"Trigger Exception","operationId":"trigger_exception_tests_trigger_exception_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/sentry-debug":{"get":{"summary":"Trigger Error","operationId":"trigger_error_sentry_debug_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AssistantNotificationRequest":{"properties":{"workspace_id":{"type":"integer","exclusiveMinimum":0.0,"title":"Workspace Id","description":"Identifier of the workspace the kiosk device belongs to."},"visitor_name":{"type":"string","maxLength":256,"minLength":1,"title":"Visitor Name","description":"Name the visitor entered at the kiosk."},"visitor_email":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Visitor Email","description":"Optional visitor email entered at the kiosk."},"visitor_phone":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Visitor Phone","description":"Optional visitor phone entered at the kiosk."},"visitor_company":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Visitor Company","description":"Optional visitor company entered at the kiosk."}},"type":"object","required":["workspace_id","visitor_name"],"title":"AssistantNotificationRequest","description":"Kiosk request to notify the lobby or assistant of a visitor without a host."},"AuthenticationScheme":{"properties":{"type":{"type":"string","maxLength":128,"minLength":1,"title":"Type","description":"Authentication scheme type."},"name":{"type":"string","maxLength":128,"minLength":1,"title":"Name","description":"Authentication scheme display name."},"description":{"type":"string","maxLength":512,"minLength":1,"title":"Description","description":"Authentication scheme description."},"primary":{"type":"boolean","title":"Primary","description":"Whether this is the primary authentication scheme.","default":false},"specUri":{"anyOf":[{"type":"string","maxLength":512,"minLength":1},{"type":"null"}],"title":"Specuri","description":"Specification URI for the authentication scheme."},"documentationUri":{"anyOf":[{"type":"string","maxLength":512,"minLength":1},{"type":"null"}],"title":"Documentationuri","description":"Documentation URI for the authentication scheme."}},"type":"object","required":["type","name","description"],"title":"AuthenticationScheme","description":"Authentication mechanism exposed by the SCIM surface."},"BadgeTemplateCreateRequest":{"properties":{"name":{"type":"string","maxLength":256,"minLength":1,"title":"Name","description":"Badge template display name."},"description":{"anyOf":[{"type":"string","maxLength":1024,"minLength":1},{"type":"null"}],"title":"Description","description":"Optional badge template description."},"is_primary":{"type":"boolean","title":"Is Primary","description":"Whether the template should become the primary default template.","default":false},"value":{"type":"string","minLength":1,"title":"Value","description":"Badge template content payload."}},"type":"object","required":["name","value"],"title":"BadgeTemplateCreateRequest","description":"Request schema for creating a badge template."},"BadgeTemplateFull":{"properties":{"uuid":{"type":"string","title":"Uuid"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"is_primary":{"type":"boolean","title":"Is Primary"},"value":{"type":"string","title":"Value"}},"type":"object","required":["uuid","name","description","is_primary","value"],"title":"BadgeTemplateFull","description":"Badge template response model with value."},"BadgeTemplateListResponse":{"properties":{"uuid":{"type":"string","maxLength":36,"minLength":36,"title":"Uuid","description":"Badge template UUID."},"name":{"type":"string","maxLength":256,"minLength":1,"title":"Name","description":"Badge template display name."},"description":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}],"title":"Description","description":"Optional badge template description."},"is_primary":{"type":"boolean","title":"Is Primary","description":"Whether the template is the primary default template."},"created":{"type":"string","format":"date-time","title":"Created","description":"Creation timestamp."},"updated":{"type":"string","format":"date-time","title":"Updated","description":"Last update timestamp."}},"type":"object","required":["uuid","name","is_primary","created","updated"],"title":"BadgeTemplateListResponse","description":"Badge template list response without template content."},"BadgeTemplateUpdateRequest":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Name","description":"Updated badge template display name."},"description":{"anyOf":[{"type":"string","maxLength":1024,"minLength":1},{"type":"null"}],"title":"Description","description":"Updated badge template description."},"is_primary":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Primary","description":"Updated primary-template flag."},"value":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Value","description":"Updated badge template content payload."}},"type":"object","title":"BadgeTemplateUpdateRequest","description":"Request schema for partially updating a badge template."},"Body_Issue_OAuth_token_oauth_token_post":{"properties":{"grant_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Grant Type","description":"OAuth grant type."},"scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope","description":"Optional requested scope subset."},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id","description":"Optional client_id when authenticating in the form body."},"client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Secret","description":"Optional client_secret when authenticating in the form body."}},"type":"object","title":"Body_Issue_OAuth_token_oauth_token_post"},"Body_Login_adminusers_login_post":{"properties":{"grant_type":{"anyOf":[{"type":"string","pattern":"^password$"},{"type":"null"}],"title":"Grant Type"},"username":{"type":"string","title":"Username"},"password":{"type":"string","format":"password","title":"Password"},"scope":{"type":"string","title":"Scope","default":""},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"},"client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"format":"password","title":"Client Secret"}},"type":"object","required":["username","password"],"title":"Body_Login_adminusers_login_post"},"Body_Login_device_login_post":{"properties":{"grant_type":{"anyOf":[{"type":"string","pattern":"^password$"},{"type":"null"}],"title":"Grant Type"},"username":{"type":"string","title":"Username"},"password":{"type":"string","format":"password","title":"Password"},"scope":{"type":"string","title":"Scope","default":""},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"},"client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"format":"password","title":"Client Secret"}},"type":"object","required":["username","password"],"title":"Body_Login_device_login_post"},"Body_Login_users_login_post":{"properties":{"grant_type":{"anyOf":[{"type":"string","pattern":"^password$"},{"type":"null"}],"title":"Grant Type"},"username":{"type":"string","title":"Username"},"password":{"type":"string","format":"password","title":"Password"},"scope":{"type":"string","title":"Scope","default":""},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"},"client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"format":"password","title":"Client Secret"}},"type":"object","required":["username","password"],"title":"Body_Login_users_login_post"},"BulkConfig":{"properties":{"supported":{"type":"boolean","title":"Supported","description":"Indicates whether the feature is supported."},"maxOperations":{"type":"integer","minimum":0.0,"title":"Maxoperations","description":"Maximum operations per bulk request."},"maxPayloadSize":{"type":"integer","minimum":0.0,"title":"Maxpayloadsize","description":"Maximum payload size for bulk requests."}},"type":"object","required":["supported","maxOperations","maxPayloadSize"],"title":"BulkConfig","description":"Bulk operation configuration."},"CalendarActivate":{"properties":{"integration_type":{"type":"string","maxLength":256,"minLength":1,"title":"Integration Type"},"username":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Username"},"id_token":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Id Token"},"code":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Code"}},"type":"object","required":["integration_type"],"title":"CalendarActivate","description":"Calendar activate model"},"CalendarCreate":{"properties":{"integration_type":{"type":"string","maxLength":256,"minLength":1,"title":"Integration Type"},"username":{"type":"string","maxLength":256,"minLength":1,"title":"Username"},"external_tenant_id":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"External Tenant Id"}},"type":"object","required":["integration_type","username"],"title":"CalendarCreate","description":"Calendar create model"},"CalendarEventOut":{"properties":{"id":{"type":"string","title":"Id"},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"organizer":{"$ref":"#/components/schemas/EventOrganizer"},"attendees":{"anyOf":[{"items":{"$ref":"#/components/schemas/EventAttendee"},"type":"array"},{"type":"null"}],"title":"Attendees"},"start":{"$ref":"#/components/schemas/EventDateTime"},"end":{"$ref":"#/components/schemas/EventDateTime"}},"type":"object","required":["id","organizer","start","end"],"title":"CalendarEventOut"},"CalendarEventsOut":{"properties":{"items":{"items":{"$ref":"#/components/schemas/CalendarEventOut"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"CalendarEventsOut"},"CalendarProvidersOut":{"properties":{"id":{"type":"integer","title":"Id"},"uuid":{"type":"string","title":"Uuid"},"integration":{"$ref":"#/components/schemas/IntegrationOut"},"username":{"type":"string","title":"Username"},"access_token_expire":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Access Token Expire"},"refresh_token_expire":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Refresh Token Expire"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"}},"type":"object","required":["id","uuid","integration","username","created","updated"],"title":"CalendarProvidersOut","description":"Calendar providers response model"},"ChangePassword":{"properties":{"current_password":{"type":"string","maxLength":256,"title":"Current Password","description":"Current password of the user."},"new_password":{"type":"string","maxLength":256,"minLength":8,"title":"New Password","description":"New password for the user account."},"verify_new_password":{"type":"string","maxLength":256,"minLength":8,"title":"Verify New Password","description":"Confirmation of the new password."}},"type":"object","required":["current_password","new_password","verify_new_password"],"title":"ChangePassword","description":"Model for changing a user's password."},"ClientOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"},"devices":{"anyOf":[{"items":{"$ref":"#/components/schemas/DeviceClientRegisterOut"},"type":"array"},{"type":"null"}],"title":"Devices"}},"type":"object","required":["id","name","created","updated","created_by","updated_by","devices"],"title":"ClientOut","description":"Client response base model "},"ClientRegisterModules":{"properties":{"visit":{"type":"boolean","title":"Visit","default":true},"rooms":{"type":"boolean","title":"Rooms","default":true}},"type":"object","title":"ClientRegisterModules","description":"Client register modules"},"ClientRegisterRoute":{"properties":{"organization":{"type":"string","maxLength":256,"minLength":1,"title":"Organization"},"address":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Address"},"first_name":{"type":"string","maxLength":256,"minLength":1,"title":"First Name"},"last_name":{"type":"string","maxLength":256,"minLength":1,"title":"Last Name"},"email":{"type":"string","format":"email","title":"Email"},"phone":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Phone"},"password":{"type":"string","maxLength":256,"minLength":4,"title":"Password"},"verify_password":{"type":"string","maxLength":256,"minLength":4,"title":"Verify Password"},"modules":{"anyOf":[{"$ref":"#/components/schemas/ClientRegisterModules"},{"type":"null"}]},"devices":{"anyOf":[{"items":{"$ref":"#/components/schemas/DeviceRouteCreate"},"type":"array"},{"type":"null"}],"title":"Devices"}},"type":"object","required":["organization","first_name","last_name","email","password","verify_password"],"title":"ClientRegisterRoute","description":"Client register route model"},"ContactDetailOut":{"properties":{"type":{"type":"string","title":"Type"},"value":{"type":"string","title":"Value"},"primary":{"type":"boolean","title":"Primary"},"notifications":{"type":"boolean","title":"Notifications"},"id":{"type":"integer","title":"Id"},"uuid":{"type":"string","title":"Uuid"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"}},"type":"object","required":["type","value","primary","notifications","id","uuid","created","updated","created_by","updated_by"],"title":"ContactDetailOut","description":"Contact detail response model"},"ContactDetailResponse":{"properties":{"type":{"type":"string","title":"Type","description":"Contact detail type name."},"value":{"type":"string","title":"Value","description":"Contact detail value."},"primary":{"type":"boolean","title":"Primary","description":"Whether this is the primary value."},"notifications":{"type":"boolean","title":"Notifications","description":"Whether this contact receives notifications."},"id":{"type":"integer","exclusiveMinimum":0.0,"title":"Id","description":"Contact detail id."},"uuid":{"type":"string","title":"Uuid","description":"Contact detail UUID."},"created":{"type":"string","format":"date-time","title":"Created","description":"Creation timestamp."},"updated":{"type":"string","format":"date-time","title":"Updated","description":"Last update timestamp."},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By","description":"Audit identity id that created the contact detail."},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By","description":"Audit identity id that last updated the contact detail."}},"type":"object","required":["type","value","primary","notifications","id","uuid","created","updated","created_by","updated_by"],"title":"ContactDetailResponse","description":"Contact detail projection inside a visitor response."},"ContactDetailSimpleOut":{"properties":{"type":{"type":"string","title":"Type"},"value":{"type":"string","title":"Value"},"primary":{"type":"boolean","title":"Primary"},"notifications":{"type":"boolean","title":"Notifications"}},"type":"object","required":["type","value","primary","notifications"],"title":"ContactDetailSimpleOut","description":"Contact detail simple response model"},"DataTypeOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"}},"type":"object","required":["id","name"],"title":"DataTypeOut","description":"Data type response model."},"DataTypeResponse":{"properties":{"id":{"type":"integer","exclusiveMinimum":0.0,"title":"Id","description":"Data type id."},"name":{"type":"string","title":"Name","description":"Data type name."}},"type":"object","required":["id","name"],"title":"DataTypeResponse","description":"Data type projection inside a setting's metadata."},"DeviceClientRegisterOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"pin_code":{"type":"string","title":"Pin Code"}},"type":"object","required":["id","name","pin_code"],"title":"DeviceClientRegisterOut"},"DeviceDataModel":{"properties":{"organizationRoomsLogoUrl":{"type":"string","title":"Organizationroomslogourl"},"organizationRoomsBackgroundUrl":{"type":"string","title":"Organizationroomsbackgroundurl"},"organizationDefaultLanguage":{"type":"string","title":"Organizationdefaultlanguage"},"defaultLanguage":{"type":"string","title":"Defaultlanguage"},"disableAdHocReservation":{"type":"boolean","title":"Disableadhocreservation"},"hideEventName":{"type":"boolean","title":"Hideeventname"},"hideEventOrganizer":{"type":"boolean","title":"Hideeventorganizer"},"OTAUpdate":{"type":"boolean","title":"Otaupdate"},"workspaceDefaultLanguage":{"type":"string","title":"Workspacedefaultlanguage"},"workspaceOTAUpdate":{"type":"boolean","title":"Workspaceotaupdate"},"confirmBooking":{"type":"boolean","title":"Confirmbooking"},"adHocReservation":{"type":"boolean","title":"Adhocreservation"},"eventNameVisible":{"type":"boolean","title":"Eventnamevisible"},"eventOrganizerVisible":{"type":"boolean","title":"Eventorganizervisible"},"debug":{"type":"boolean","title":"Debug","default":false},"deliveryChannel":{"type":"string","title":"Deliverychannel","default":"production"},"workingHours":{"type":"boolean","title":"Workinghours","default":false},"workingHoursStart":{"type":"string","title":"Workinghoursstart","default":"06:00"},"workingHoursEnd":{"type":"string","title":"Workinghoursend","default":"18:00"}},"type":"object","required":["organizationRoomsLogoUrl","organizationRoomsBackgroundUrl","organizationDefaultLanguage","defaultLanguage","disableAdHocReservation","hideEventName","hideEventOrganizer","OTAUpdate","workspaceDefaultLanguage","workspaceOTAUpdate","confirmBooking","adHocReservation","eventNameVisible","eventOrganizerVisible"],"title":"DeviceDataModel","description":"Device settings response model for Rooms\nFIX: Temporary"},"DeviceDataSuccessOut":{"properties":{"data":{"$ref":"#/components/schemas/DeviceDataModel"}},"type":"object","required":["data"],"title":"DeviceDataSuccessOut","description":"Device response model for Rooms"},"DeviceLinkForDeviceOut":{"properties":{"id":{"type":"integer","title":"Id"},"device_id":{"type":"integer","title":"Device Id"},"device_name":{"type":"string","title":"Device Name"},"model_name":{"type":"string","title":"Model Name"},"type_name":{"type":"string","title":"Type Name"},"connection_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Connection Name"},"host_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Host Name"},"mac_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mac Address"},"serial_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Serial Number"}},"type":"object","required":["id","device_id","device_name","model_name","type_name","connection_name","host_name","mac_address","serial_number"],"title":"DeviceLinkForDeviceOut"},"DeviceLinkOut":{"properties":{"id":{"type":"integer","title":"Id"},"device_id":{"type":"integer","title":"Device Id"},"link_device_id":{"type":"integer","title":"Link Device Id"},"connection_type_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Connection Type Id"},"connection_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Connection Name"}},"type":"object","required":["id","device_id","link_device_id","connection_type_id","connection_name"],"title":"DeviceLinkOut"},"DeviceLinkRouteCreate":{"properties":{"connection_type_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Connection Type Id"},"link_device_id":{"type":"integer","exclusiveMinimum":0.0,"title":"Link Device Id"}},"type":"object","required":["link_device_id"],"title":"DeviceLinkRouteCreate","description":"Device link create route model."},"DeviceLinkUpdate":{"properties":{"connection_type_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Connection Type Id"}},"type":"object","title":"DeviceLinkUpdate","description":"Device link update model."},"DeviceLogin":{"properties":{"sn":{"type":"string","maxLength":256,"title":"Sn"},"password":{"type":"string","maxLength":256,"title":"Password"}},"type":"object","required":["sn","password"],"title":"DeviceLogin","description":"FIX: Temporary"},"DeviceLoginOut":{"properties":{"data":{"$ref":"#/components/schemas/TokenOut"}},"type":"object","required":["data"],"title":"DeviceLoginOut","description":"Wrapper for device login result containing token data.\n\nAttributes:\n    data: TokenOut model with token details."},"DeviceModelCreate":{"properties":{"device_type_id":{"type":"integer","exclusiveMinimum":0.0,"title":"Device Type Id"},"name":{"type":"string","maxLength":256,"minLength":1,"title":"Name"},"template_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Template Id"}},"type":"object","required":["device_type_id","name"],"title":"DeviceModelCreate"},"DeviceModelOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type"}},"type":"object","required":["id","name","type"],"title":"DeviceModelOut"},"DeviceOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"workspace_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Workspace Id"},"lobby_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Lobby Id"},"model":{"$ref":"#/components/schemas/DeviceModelOut"},"host_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Host Name"},"mac_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mac Address"},"audit_identity_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Audit Identity Id"},"template":{"type":"boolean","title":"Template"},"uuid":{"type":"string","title":"Uuid"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"},"workspace":{"anyOf":[{"$ref":"#/components/schemas/WorkspaceOut"},{"type":"null"}]},"serial_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Serial Number"},"pin_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pin Code"},"rooms":{"anyOf":[{"items":{"$ref":"#/components/schemas/DeviceRoomOut"},"type":"array"},{"type":"null"}],"title":"Rooms"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version"},"platform_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Platform Version"}},"type":"object","required":["id","name","workspace_id","lobby_id","model","host_name","mac_address","audit_identity_id","template","uuid","created","updated","created_by","updated_by","workspace","serial_number","pin_code","rooms","version","platform_version"],"title":"DeviceOut","description":"Device default response model."},"DeviceRegister":{"properties":{"pincode":{"type":"string","maxLength":6,"minLength":6,"title":"Pincode"},"sn":{"type":"string","maxLength":256,"title":"Sn"},"version":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Version"},"platform_version":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Platform Version"}},"type":"object","required":["pincode","sn"],"title":"DeviceRegister","description":"FIX: Temporary"},"DeviceRoomForRoomOut":{"additionalProperties":true,"type":"object"},"DeviceRoomOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"resources":{"anyOf":[{"items":{"$ref":"#/components/schemas/OrganizationRoomForRoomOut"},"type":"array"},{"type":"null"}],"title":"Resources"}},"type":"object","required":["name","resources"],"title":"DeviceRoomOut","description":"Represents the response structure for a device associated\nwith a room, including linked resources.\n\nAttributes:\n----------\nroom_id : int\n    The unique identifier of the room where the device\n    is located. This field is aliased as 'id'.\nname : str\n    The name of the device or the room where the device is placed.\nresources : list[OrganizationRoomForRoomOut] | None\n    An optional list of organization-room specific data models\n    detailing additional resources linked to this device room.\n\nNotes:\n-----\nThis model is primarily used to represent the output data\nstructure for API responses that detail devices within\nspecific rooms, including any related organizational resources."},"DeviceRoomRouteCreate":{"properties":{"resource_address":{"type":"string","maxLength":256,"minLength":1,"title":"Resource Address"},"organization_integration_account_id":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Organization Integration Account Id"}},"type":"object","required":["resource_address"],"title":"DeviceRoomRouteCreate","description":"Device room route create model "},"DeviceRouteCreate":{"properties":{"lobby_id":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Lobby Id"},"serial_number":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Serial Number"},"template":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Template","default":false},"host_name":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Host Name"},"mac_address":{"anyOf":[{"type":"string","maxLength":17,"minLength":17},{"type":"null"}],"title":"Mac Address"},"resource_address":{"anyOf":[{"type":"string","maxLength":256,"minLength":10},{"type":"null"}],"title":"Resource Address"},"resource_account_id":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Resource Account Id"},"room_id":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Room Id"},"workspace_id":{"type":"integer","minimum":0.0,"title":"Workspace Id"},"device_model_id":{"type":"integer","minimum":0.0,"title":"Device Model Id"},"name":{"type":"string","maxLength":256,"minLength":1,"title":"Name"},"password":{"anyOf":[{"type":"string","maxLength":256,"minLength":6},{"type":"null"}],"title":"Password"}},"type":"object","required":["workspace_id","device_model_id","name"],"title":"DeviceRouteCreate","description":"Device create model for\ndatabase queries."},"DeviceRouteUpdate":{"properties":{"lobby_id":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Lobby Id"},"serial_number":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Serial Number"},"template":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Template","default":false},"host_name":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Host Name"},"mac_address":{"anyOf":[{"type":"string","maxLength":17,"minLength":17},{"type":"null"}],"title":"Mac Address"},"resource_address":{"anyOf":[{"type":"string","maxLength":256,"minLength":10},{"type":"null"}],"title":"Resource Address"},"resource_account_id":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Resource Account Id"},"room_id":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Room Id"},"workspace_id":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Workspace Id"},"device_model_id":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Device Model Id"},"name":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Name"},"password":{"anyOf":[{"type":"string","maxLength":256,"minLength":6},{"type":"null"}],"title":"Password"},"version":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Version"},"platform_version":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Platform Version"}},"type":"object","title":"DeviceRouteUpdate","description":"Device route update model "},"DeviceSettingDBUpdate":{"properties":{"value":{"type":"string","title":"Value"}},"type":"object","required":["value"],"title":"DeviceSettingDBUpdate","description":"Model for device setting update in database."},"DeviceSettingRouteCreateWithKey":{"properties":{"value":{"type":"string","title":"Value"},"setting_metadata_key":{"type":"string","maxLength":50,"minLength":2,"title":"Setting Metadata Key"}},"type":"object","required":["value","setting_metadata_key"],"title":"DeviceSettingRouteCreateWithKey","description":"Model for device setting creation in route\nwith setting metadata key."},"DeviceTemplateOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"model":{"$ref":"#/components/schemas/DeviceModelOut"},"settings":{"items":{"$ref":"#/components/schemas/SettingSimpleOut"},"type":"array","title":"Settings"}},"type":"object","required":["id","name","model","settings"],"title":"DeviceTemplateOut","description":"Template device model."},"DeviceTypeCreate":{"properties":{"name":{"type":"string","maxLength":256,"minLength":1,"title":"Name"}},"type":"object","required":["name"],"title":"DeviceTypeCreate"},"DeviceTypeOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"}},"type":"object","required":["id","name"],"title":"DeviceTypeOut"},"DeviceWithSettingsOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"workspace_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Workspace Id"},"lobby_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Lobby Id"},"model":{"$ref":"#/components/schemas/DeviceModelOut"},"host_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Host Name"},"mac_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mac Address"},"audit_identity_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Audit Identity Id"},"template":{"type":"boolean","title":"Template"},"uuid":{"type":"string","title":"Uuid"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"},"settings":{"items":{"$ref":"#/components/schemas/SettingOut"},"type":"array","title":"Settings"}},"type":"object","required":["id","name","workspace_id","lobby_id","model","host_name","mac_address","audit_identity_id","template","uuid","created","updated","created_by","updated_by","settings"],"title":"DeviceWithSettingsOut","description":"Reponse model for Settings of a Device."},"DeviceWithWorkspaceOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"workspace_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Workspace Id"},"lobby_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Lobby Id"},"model":{"$ref":"#/components/schemas/DeviceModelOut"},"host_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Host Name"},"mac_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mac Address"},"audit_identity_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Audit Identity Id"},"template":{"type":"boolean","title":"Template"},"uuid":{"type":"string","title":"Uuid"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"},"lobby_workspaces":{"items":{"$ref":"#/components/schemas/WorkspaceForDeviceOut"},"type":"array","title":"Lobby Workspaces"}},"type":"object","required":["id","name","workspace_id","lobby_id","model","host_name","mac_address","audit_identity_id","template","uuid","created","updated","created_by","updated_by","lobby_workspaces"],"title":"DeviceWithWorkspaceOut","description":"Reponse model for Workspacess of a Device."},"DocumentContentCreateRequest":{"properties":{"language_tag":{"type":"string","maxLength":12,"minLength":2,"title":"Language Tag","description":"Language tag for the new localized content version."},"content":{"type":"string","maxLength":65535,"minLength":1,"title":"Content","description":"Localized document content body."}},"type":"object","required":["language_tag","content"],"title":"DocumentContentCreateRequest","description":"Request body for creating a localized document content version."},"DocumentContentResponse":{"properties":{"id":{"type":"integer","exclusiveMinimum":0.0,"title":"Id","description":"Document content identifier."},"language":{"type":"string","title":"Language","description":"Language tag for this localized content version."},"content":{"type":"string","title":"Content","description":"Localized document content body."},"created":{"type":"string","format":"date-time","title":"Created","description":"Timestamp when this content version was created."}},"type":"object","required":["id","language","content","created"],"title":"DocumentContentResponse","description":"Response model for a single localized document content version."},"EmergencyAlert":{"properties":{"workspaces":{"items":{"type":"integer"},"type":"array","title":"Workspaces","description":"List of workspace IDs where the emergency alert should be sent."},"hosts_with_visitors":{"type":"boolean","title":"Hosts With Visitors","description":"Flag indicating whether the alert should be sent to hosts with visitors.","default":true},"all_hosts":{"type":"boolean","title":"All Hosts","description":"Flag indicating whether the alert should be sent to all hosts in the workspace.","default":false},"current_visitors":{"type":"boolean","title":"Current Visitors","description":"Flag indicating whether the alert should be sent to current visitors in the workspace.","default":true},"email_content":{"type":"string","title":"Email Content","description":"The content of the emergency alert email to be sent to recipients."},"sms_content":{"type":"string","title":"Sms Content","description":"The content of the emergency alert SMS to be sent to recipients."}},"type":"object","required":["workspaces","email_content","sms_content"],"title":"EmergencyAlert","description":"Represents an emergency alert base request model."},"EventAttendee":{"properties":{"type":{"type":"string","title":"Type"},"email_address":{"$ref":"#/components/schemas/EventEmailAddress"}},"type":"object","required":["type","email_address"],"title":"EventAttendee"},"EventDateTime":{"properties":{"date_time":{"type":"string","format":"date-time","title":"Date Time"},"time_zone":{"type":"string","title":"Time Zone"}},"type":"object","required":["date_time","time_zone"],"title":"EventDateTime"},"EventEmailAddress":{"properties":{"name":{"type":"string","title":"Name"},"address":{"type":"string","title":"Address"}},"type":"object","required":["name","address"],"title":"EventEmailAddress"},"EventOrganizer":{"properties":{"email_address":{"$ref":"#/components/schemas/EventEmailAddress"}},"type":"object","required":["email_address"],"title":"EventOrganizer"},"FeedbackOut":{"properties":{"id":{"type":"integer","title":"Id"},"uuid":{"type":"string","title":"Uuid"},"workspace_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Workspace Id"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"user_type_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Type Id"},"device_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Device Id"},"type":{"type":"string","title":"Type"},"rating":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rating"},"comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comment"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"}},"type":"object","required":["id","uuid","workspace_id","user_id","user_type_id","device_id","type","rating","comment","created","updated","created_by","updated_by"],"title":"FeedbackOut","description":"Feedback response model"},"FeedbackRouteCreate":{"properties":{"rating":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Rating"},"comment":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}],"title":"Comment"},"workspace_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Workspace Id"},"anonymous":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Anonymous","default":true}},"type":"object","title":"FeedbackRouteCreate"},"FieldOut":{"properties":{"id":{"type":"integer","title":"Id"},"uuid":{"type":"string","title":"Uuid"},"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type"},"description":{"type":"string","title":"Description"},"is_unique":{"type":"boolean","title":"Is Unique"},"is_global":{"type":"boolean","title":"Is Global"}},"type":"object","required":["id","uuid","name","type","description","is_unique","is_global"],"title":"FieldOut","description":"Field response model."},"FilterConfig":{"properties":{"supported":{"type":"boolean","title":"Supported","description":"Indicates whether the feature is supported."},"maxResults":{"type":"integer","minimum":0.0,"title":"Maxresults","description":"Maximum number of resources returned for filtered queries."}},"type":"object","required":["supported","maxResults"],"title":"FilterConfig","description":"Filter operation configuration."},"ForgotPassword":{"properties":{"username":{"type":"string","maxLength":256,"minLength":1,"title":"Username","description":"Username or email of the user requesting password reset."},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language","description":"Preferred language for the password reset email."}},"type":"object","required":["username"],"title":"ForgotPassword","description":"Model for initiating a password reset request."},"ForgotPasswordOut":{"properties":{"success":{"type":"boolean","title":"Success"}},"type":"object","required":["success"],"title":"ForgotPasswordOut"},"GraphCalendarEventCreate":{"properties":{"start":{"$ref":"#/components/schemas/GraphDateTime"},"end":{"$ref":"#/components/schemas/GraphDateTime"},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject","default":""}},"type":"object","required":["start","end"],"title":"GraphCalendarEventCreate"},"GraphCalendarEventUpdate":{"properties":{"start":{"$ref":"#/components/schemas/GraphDateTime"},"end":{"$ref":"#/components/schemas/GraphDateTime"}},"type":"object","required":["start","end"],"title":"GraphCalendarEventUpdate"},"GraphDateTime":{"properties":{"date_time":{"type":"string","format":"date-time","title":"Date Time"},"time_zone":{"type":"string","title":"Time Zone"}},"type":"object","required":["date_time","time_zone"],"title":"GraphDateTime","description":"A single point of time in a combined\ndate and time representation (date)T(time).\nFor example: 2022-10-26T08:00:00"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HostInstanceDataOut":{"properties":{"first_name":{"type":"string","title":"First Name"},"last_name":{"type":"string","title":"Last Name"},"picture":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Picture"},"id":{"type":"integer","title":"Id"},"uuid":{"type":"string","title":"Uuid"},"language":{"anyOf":[{"$ref":"#/components/schemas/LanguageOut"},{"type":"null"}]},"contact_details":{"anyOf":[{"items":{"$ref":"#/components/schemas/ContactDetailOut"},"type":"array"},{"type":"null"}],"title":"Contact Details"}},"type":"object","required":["first_name","last_name","picture","id","uuid","language","contact_details"],"title":"HostInstanceDataOut","description":"Host instance data default response model."},"HostInstanceDataSimpleOut":{"properties":{"first_name":{"type":"string","title":"First Name"},"last_name":{"type":"string","title":"Last Name"},"picture":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Picture"},"language":{"anyOf":[{"$ref":"#/components/schemas/LanguageSimpleOut"},{"type":"null"}]},"contact_details":{"anyOf":[{"items":{"$ref":"#/components/schemas/ContactDetailSimpleOut"},"type":"array"},{"type":"null"}],"title":"Contact Details"}},"type":"object","required":["first_name","last_name","picture","language","contact_details"],"title":"HostInstanceDataSimpleOut","description":"Host instance data simple response model."},"HostInstanceOut":{"properties":{"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"state":{"$ref":"#/components/schemas/StateOut"},"start_time":{"type":"string","format":"date-time","title":"Start Time"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"},"id":{"type":"integer","title":"Id"},"uuid":{"type":"string","title":"Uuid"},"details":{"anyOf":[{"$ref":"#/components/schemas/HostInstanceDataOut"},{"type":"null"}]},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"}},"type":"object","required":["user_id","state","start_time","end_time","id","uuid","details","created","updated","created_by","updated_by"],"title":"HostInstanceOut","description":"Host instance default response model"},"HostInstanceRouteCreate":{"properties":{"organizer":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Organizer","description":"Whether this host is the organizer of the visit"},"start_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time","description":"Start time of the host instance"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time","description":"End time of the host instance"},"user_id":{"type":"integer","exclusiveMinimum":0.0,"title":"User Id","description":"Unique identifier of the user associated with this host instance"}},"type":"object","required":["user_id"],"title":"HostInstanceRouteCreate","description":"Host instance route create model."},"HostInstanceRouteUpdate":{"properties":{"organizer":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Organizer","description":"Whether this host is the organizer of the visit"},"start_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time","description":"Start time of the host instance"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time","description":"End time of the host instance"},"user_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"User Id","description":"Unique identifier of the user associated with this host instance"},"state":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"State","description":"State name of the host instance"}},"type":"object","title":"HostInstanceRouteUpdate","description":"Host instance route update model."},"HostInstanceSelfServiceCreate":{"properties":{"user_uuid":{"type":"string","maxLength":36,"minLength":36,"title":"User Uuid","description":"UUID of the host user."}},"type":"object","required":["user_uuid"],"title":"HostInstanceSelfServiceCreate","description":"Self-service host payload."},"HostInstanceSimpleOut":{"properties":{"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"state":{"$ref":"#/components/schemas/StateOut"},"start_time":{"type":"string","format":"date-time","title":"Start Time"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"},"details":{"anyOf":[{"$ref":"#/components/schemas/HostInstanceDataSimpleOut"},{"type":"null"}]}},"type":"object","required":["user_id","state","start_time","end_time","details"],"title":"HostInstanceSimpleOut","description":"Host instance simple response model"},"HostLogin":{"properties":{"code":{"type":"string","minLength":1,"title":"Code","description":"Unique code used for host authentication (UUID associated with a HostInstance or VisitorInstance)"},"code_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Type","description":"Type of login code: 'host' for HostInstance UUID, 'visitor' for VisitorInstance UUID","default":"host"}},"type":"object","required":["code"],"title":"HostLogin","description":"Host instance login model."},"HostTokenOut":{"properties":{"access_token":{"type":"string","title":"Access Token"},"access_token_expire":{"type":"integer","title":"Access Token Expire"},"visit_uuid":{"type":"string","title":"Visit Uuid"},"visit_id":{"type":"integer","title":"Visit Id"},"host_instance_uuid":{"type":"string","title":"Host Instance Uuid"},"visitor_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Visitor Id"}},"type":"object","required":["access_token","access_token_expire","visit_uuid","visit_id","host_instance_uuid"],"title":"HostTokenOut","description":"Token model specifically for host login.\n\nAttributes:\n    access_token: JWT access token string.\n    access_token_expire: Expiration time of the access token.\n    visit_uuid: Unique identifier for the visit session.\n    visit_id: ID of the visit associated with the token.\n    host_instance_uuid: Unique identifier for the host instance.\n    visitor_id: ID of the visitor associated with the token."},"IdentifierInductionResponse":{"properties":{"is_valid":{"type":"boolean","title":"Is Valid","description":"Whether the visitor's induction is currently valid."},"content_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Url","description":"Induction content URL, when one is available."}},"type":"object","required":["is_valid"],"title":"IdentifierInductionResponse","description":"Induction result for an identifier lookup."},"IdentifierOut":{"properties":{"value":{"type":"string","title":"Value"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"id":{"type":"integer","title":"Id"},"uuid":{"type":"string","title":"Uuid"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"}},"type":"object","required":["value","type","id","uuid","created","updated"],"title":"IdentifierOut","description":"Identifier default response model"},"IdentifierSimpleOut":{"properties":{"value":{"type":"string","title":"Value"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"}},"type":"object","required":["value","type"],"title":"IdentifierSimpleOut","description":"Identifier simple response model"},"IdentifierVisitorInstanceResponse":{"properties":{"visitor_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Visitor Id"},"id":{"type":"integer","title":"Id"},"uuid":{"type":"string","title":"Uuid"},"state":{"$ref":"#/components/schemas/StateOut"},"start_time":{"type":"string","format":"date-time","title":"Start Time"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"},"sign_in":{"anyOf":[{"$ref":"#/components/schemas/VisitorInstanceStateLogOut"},{"type":"null"}]},"sign_out":{"anyOf":[{"$ref":"#/components/schemas/VisitorInstanceStateLogOut"},{"type":"null"}]},"details":{"anyOf":[{"$ref":"#/components/schemas/VisitorInstanceDataOut"},{"type":"null"}]},"visitor":{"$ref":"#/components/schemas/VisitorForVisitorFlowOut"},"identifiers":{"items":{"$ref":"#/components/schemas/VisitorInstanceIdentifierBaseOut"},"type":"array","title":"Identifiers"},"agreements":{"anyOf":[{"items":{"$ref":"#/components/schemas/VisitorDocumentOut"},"type":"array"},{"type":"null"}],"title":"Agreements"},"send_message":{"type":"boolean","title":"Send Message"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"},"visit_id":{"type":"integer","title":"Visit Id"},"induction":{"anyOf":[{"$ref":"#/components/schemas/IdentifierInductionResponse"},{"type":"null"}],"description":"Induction result, when it could be resolved."}},"type":"object","required":["visitor_id","id","uuid","state","start_time","end_time","sign_in","sign_out","details","visitor","identifiers","agreements","send_message","created","updated","created_by","updated_by","visit_id"],"title":"IdentifierVisitorInstanceResponse","description":"Visitor-instance information for an identifier, with induction result.\n\nMirrors the legacy ``VisitVisitorInstanceOutWithInduction`` contract: the\nfull visitor-instance tree plus an optional induction result."},"ImpersonatedToken":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type"},"access_token_expire":{"type":"integer","title":"Access Token Expire"}},"type":"object","required":["access_token","token_type","access_token_expire"],"title":"ImpersonatedToken","description":"Token structure returned when impersonating a user.\n\nAttributes:\n    access_token: JWT token for impersonated user.\n    token_type: Typically \"bearer\".\n    access_token_expire: Expiration time of the access token."},"Impersonation":{"properties":{"organization_id":{"type":"integer","exclusiveMinimum":0.0,"title":"Organization Id","description":"ID of the organization to impersonate into."},"expiry_length":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Expiry Length","description":"Duration in seconds for the impersonation token.","default":7200}},"type":"object","required":["organization_id"],"title":"Impersonation","description":"Model for impersonating a user in another organization."},"InductionResult":{"properties":{"is_valid":{"type":"boolean","title":"Is Valid"},"content_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Url"}},"type":"object","required":["is_valid"],"title":"InductionResult","description":"A model class representing the result of a check induction request."},"IntegrationOut":{"properties":{"type":{"type":"string","title":"Type"},"name":{"type":"string","title":"Name"}},"type":"object","required":["type","name"],"title":"IntegrationOut","description":"Integration response model"},"IntegrationResponse":{"properties":{"id":{"type":"integer","exclusiveMinimum":0.0,"title":"Id","description":"Integration identifier."},"uuid":{"type":"string","maxLength":36,"minLength":36,"title":"Uuid","description":"Integration UUID."},"name":{"type":"string","maxLength":256,"minLength":1,"title":"Name","description":"Integration display name."},"integration_type":{"type":"string","maxLength":256,"minLength":1,"title":"Integration Type","description":"Integration type name."},"external_id":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"External Id","description":"External identifier used by the provider."},"created":{"type":"string","format":"date-time","title":"Created","description":"Creation timestamp."},"updated":{"type":"string","format":"date-time","title":"Updated","description":"Last update timestamp."},"created_by":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Created By","description":"Audit identity id of creator."},"updated_by":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Updated By","description":"Audit identity id of latest updater."},"secret_expire":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Secret Expire","description":"Datetime when secret expires."},"enable_secret_update":{"type":"boolean","title":"Enable Secret Update","description":"Whether secret updates are allowed."}},"type":"object","required":["id","uuid","name","integration_type","created","updated","enable_secret_update"],"title":"IntegrationResponse","description":"Integration response schema."},"IntegrationScimOut":{"properties":{"type":{"type":"string","title":"Type"},"name":{"type":"string","title":"Name"},"uri":{"type":"string","title":"Uri"}},"type":"object","required":["type","name","uri"],"title":"IntegrationScimOut","description":"Integration SCIM response model "},"IntegrationSecretUpdateRequest":{"properties":{"secret":{"type":"string","maxLength":512,"minLength":1,"title":"Secret","description":"Updated integration secret."},"secret_expire":{"type":"string","format":"date-time","title":"Secret Expire","description":"Datetime when the updated secret expires."}},"type":"object","required":["secret","secret_expire"],"title":"IntegrationSecretUpdateRequest","description":"Request schema for updating integration secret values."},"IntegrationUpdateRequest":{"properties":{"integration_type_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Integration Type Id","description":"Updated integration type id."},"external_id":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"External Id","description":"Updated external provider identifier."},"secret_expire":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Secret Expire","description":"Updated secret expiration datetime."}},"type":"object","title":"IntegrationUpdateRequest","description":"Request schema for updating integration metadata."},"InviteAddressOut":{"properties":{"workspaces":{"items":{"$ref":"#/components/schemas/InviteAddressWorkspaceOut"},"type":"array","title":"Workspaces"}},"type":"object","required":["workspaces"],"title":"InviteAddressOut","description":"Invite address response model"},"InviteAddressVisitTypeOut":{"properties":{"visit_type_id":{"type":"integer","title":"Visit Type Id"},"visit_type_name":{"type":"string","title":"Visit Type Name"},"primary":{"type":"boolean","title":"Primary"},"address":{"type":"string","format":"email","title":"Address"}},"type":"object","required":["visit_type_id","visit_type_name","primary","address"],"title":"InviteAddressVisitTypeOut","description":"Invite address visit type response model"},"InviteAddressWorkspaceOut":{"properties":{"workspace_id":{"type":"integer","title":"Workspace Id"},"workspace_name":{"type":"string","title":"Workspace Name"},"primary":{"type":"boolean","title":"Primary"},"visit_types":{"anyOf":[{"items":{"$ref":"#/components/schemas/InviteAddressVisitTypeOut"},"type":"array"},{"type":"null"}],"title":"Visit Types","default":[]}},"type":"object","required":["workspace_id","workspace_name","primary"],"title":"InviteAddressWorkspaceOut","description":"Invite address workspace response model"},"LanguageOut":{"properties":{"tag":{"type":"string","title":"Tag","description":"Language tag in the form `en-US`."},"name":{"type":"string","title":"Name","description":"Human-readable language name."},"id":{"type":"integer","exclusiveMinimum":0.0,"title":"Id","description":"Language identifier."},"uuid":{"type":"string","title":"Uuid","description":"Language UUID."}},"type":"object","required":["tag","name","id","uuid"],"title":"LanguageOut","description":"Language default response schema."},"LanguageSimpleOut":{"properties":{"tag":{"type":"string","title":"Tag","description":"Language tag in the form `en-US`."},"name":{"type":"string","title":"Name","description":"Human-readable language name."}},"type":"object","required":["tag","name"],"title":"LanguageSimpleOut","description":"Language simple response schema."},"LimitOffsetPage_OrganizationEntraIdProvisionedGroupResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/OrganizationEntraIdProvisionedGroupResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"limit":{"type":"integer","minimum":1.0,"title":"Limit"},"offset":{"type":"integer","minimum":0.0,"title":"Offset"}},"type":"object","required":["items","total","limit","offset"],"title":"LimitOffsetPage[OrganizationEntraIdProvisionedGroupResponse]"},"LimitOffsetPage_OrganizationEntraIdProvisionedUserResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/OrganizationEntraIdProvisionedUserResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"limit":{"type":"integer","minimum":1.0,"title":"Limit"},"offset":{"type":"integer","minimum":0.0,"title":"Offset"}},"type":"object","required":["items","total","limit","offset"],"title":"LimitOffsetPage[OrganizationEntraIdProvisionedUserResponse]"},"LobbyCreate":{"properties":{"name":{"type":"string","maxLength":256,"minLength":1,"title":"Name"}},"type":"object","required":["name"],"title":"LobbyCreate"},"LobbyOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"uuid":{"type":"string","title":"Uuid"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"}},"type":"object","required":["id","name","uuid","created","updated","created_by","updated_by"],"title":"LobbyOut"},"LobbyVisitsOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"uuid":{"type":"string","title":"Uuid"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"},"visits":{"items":{"$ref":"#/components/schemas/VisitOut"},"type":"array","title":"Visits"}},"type":"object","required":["id","name","uuid","created","updated","created_by","updated_by","visits"],"title":"LobbyVisitsOut"},"LobbyWithWorkspaceOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"uuid":{"type":"string","title":"Uuid"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"},"workspaces":{"anyOf":[{"items":{"$ref":"#/components/schemas/WorkspaceForLobbyOut"},"type":"array"},{"type":"null"}],"title":"Workspaces"}},"type":"object","required":["id","name","uuid","created","updated","created_by","updated_by","workspaces"],"title":"LobbyWithWorkspaceOut","description":"Reponse model for Lobby with workspaces."},"LobbyWorkspaceDBCreate":{"properties":{"workspace_id":{"type":"integer","exclusiveMinimum":0.0,"title":"Workspace Id"},"lobby_id":{"type":"integer","exclusiveMinimum":0.0,"title":"Lobby Id"}},"type":"object","required":["workspace_id","lobby_id"],"title":"LobbyWorkspaceDBCreate"},"LobbyWorkspaceOut":{"properties":{"id":{"type":"integer","title":"Id"},"lobby":{"$ref":"#/components/schemas/LobbyOut"},"workspace":{"$ref":"#/components/schemas/WorkspaceOut"},"uuid":{"type":"string","title":"Uuid"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"}},"type":"object","required":["id","lobby","workspace","uuid","created","updated","created_by","updated_by"],"title":"LobbyWorkspaceOut"},"LobbyWorkspaceRouteCreate":{"properties":{"workspace_id":{"type":"integer","exclusiveMinimum":0.0,"title":"Workspace Id"}},"type":"object","required":["workspace_id"],"title":"LobbyWorkspaceRouteCreate"},"LogVisitorOut":{"properties":{"time":{"type":"string","format":"date-time","title":"Time","description":"Timestamp of the visitor state-log entry."},"visit_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visit Type","description":"Visit type name associated with the visitor log row."},"application":{"type":"string","title":"Application","description":"Application or channel that created the state-log row."},"duration_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Seconds","description":"Optional sign-in duration captured for analytics."},"identification_method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Identification Method","description":"Optional stable analytics identification-method value."},"visitor_type":{"anyOf":[{"type":"string","enum":["expected","adhoc"]},{"type":"null"}],"title":"Visitor Type","description":"Visitor classification derived from visitor-instance state-log history."},"device_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Device Id","description":"Device identifier recorded for the state-log detail row."},"device_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Device Name","description":"Device display name when the device still exists and was recorded on the state-log detail row."}},"type":"object","required":["time","application"],"title":"LogVisitorOut","description":"Visitor log response model."},"MobileVisitResponse":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"state":{"$ref":"#/components/schemas/StateOut"},"start_time":{"type":"string","format":"date-time","title":"Start Time"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"},"workspace":{"anyOf":[{"$ref":"#/components/schemas/WorkspaceSimpleWithOrganizationOut"},{"type":"null"}]},"info":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Info"},"visitors_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Visitors Count"},"hosts_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Hosts Count"},"host":{"anyOf":[{"$ref":"#/components/schemas/HostInstanceSimpleOut"},{"type":"null"}]},"visit_type":{"anyOf":[{"$ref":"#/components/schemas/VisitTypeOutBase"},{"type":"null"}]}},"type":"object","required":["id","name","state","start_time","end_time","workspace","info","visitors_count","hosts_count","host","visit_type"],"title":"MobileVisitResponse","description":"Visit payload returned by the mobile visitor endpoints."},"MobileVisitorResponse":{"properties":{"visitor_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Visitor Id"},"visitor_uuid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visitor Uuid"},"state":{"$ref":"#/components/schemas/StateOut"},"start_time":{"type":"string","format":"date-time","title":"Start Time"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"},"sign_in":{"anyOf":[{"$ref":"#/components/schemas/VisitorInstanceStateLogOut"},{"type":"null"}]},"details":{"anyOf":[{"$ref":"#/components/schemas/VisitorInstanceDataSimpleOut"},{"type":"null"}]},"identifiers":{"items":{"$ref":"#/components/schemas/VisitorInstanceIdentifierSimpleOut"},"type":"array","title":"Identifiers"},"induction":{"anyOf":[{"$ref":"#/components/schemas/InductionResult"},{"type":"null"}]},"agreements":{"items":{"$ref":"#/components/schemas/VisitorDocumentOut"},"type":"array","title":"Agreements"},"visit":{"anyOf":[{"$ref":"#/components/schemas/MobileVisitResponse"},{"type":"null"}]}},"type":"object","required":["visitor_id","visitor_uuid","state","start_time","end_time","sign_in","details","identifiers","agreements","visit"],"title":"MobileVisitorResponse","description":"Visitor payload returned by the mobile visitor endpoints."},"OAuthTokenErrorResponse":{"properties":{"error":{"type":"string","minLength":1,"title":"Error","description":"OAuth 2.0 error code."},"error_description":{"type":"string","minLength":1,"title":"Error Description","description":"Human-readable OAuth error description."}},"type":"object","required":["error","error_description"],"title":"OAuthTokenErrorResponse","description":"OAuth 2.0 token error response."},"OAuthTokenResponse":{"properties":{"access_token":{"type":"string","minLength":1,"title":"Access Token","description":"Signed JWT access token."},"token_type":{"type":"string","minLength":1,"title":"Token Type","description":"OAuth token type."},"expires_in":{"type":"integer","exclusiveMinimum":0.0,"title":"Expires In","description":"Token lifetime in seconds."},"scope":{"type":"string","minLength":1,"title":"Scope","description":"Space-delimited scope string granted to the token."}},"type":"object","required":["access_token","token_type","expires_in","scope"],"title":"OAuthTokenResponse","description":"OAuth 2.0 token response for machine clients."},"OrganizationApplicationExtensionRequest":{"properties":{"application_uuid":{"type":"string","maxLength":36,"minLength":36,"title":"Application Uuid","description":"UUID of the extension application to enable or disable."}},"type":"object","required":["application_uuid"],"title":"OrganizationApplicationExtensionRequest","description":"Request schema for enabling or disabling an extension for an organization."},"OrganizationApplicationExtensionResponse":{"properties":{"uuid":{"type":"string","title":"Uuid","description":"Extension application UUID."},"name":{"type":"string","title":"Name","description":"Extension application name."},"enabled":{"type":"boolean","title":"Enabled","description":"Whether the extension is enabled for the organization."}},"type":"object","required":["uuid","name","enabled"],"title":"OrganizationApplicationExtensionResponse","description":"Organization application extension response schema."},"OrganizationBaseOut":{"properties":{"id":{"type":"integer","title":"Id"},"uuid":{"type":"string","title":"Uuid"},"name":{"type":"string","title":"Name"}},"type":"object","required":["id","uuid","name"],"title":"OrganizationBaseOut","description":"Organization base model."},"OrganizationCommentCreateRequest":{"properties":{"content":{"type":"string","maxLength":1024,"minLength":1,"title":"Content","description":"Comment content."},"author":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Author","description":"Display name of the admin creating the comment. Optional; stored verbatim and returned on subsequent reads."}},"type":"object","required":["content"],"title":"OrganizationCommentCreateRequest","description":"Request schema for creating an organization comment."},"OrganizationCommentResponse":{"properties":{"uuid":{"type":"string","maxLength":36,"minLength":36,"title":"Uuid","description":"Organization comment UUID."},"content":{"type":"string","maxLength":1024,"minLength":1,"title":"Content","description":"Comment content."},"created":{"type":"string","format":"date-time","title":"Created","description":"Creation timestamp."},"updated":{"type":"string","format":"date-time","title":"Updated","description":"Last update timestamp."},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By","description":"Audit identifier of the admin who created the comment."},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By","description":"Audit identifier of the admin who last updated the comment."},"author":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Author","description":"Display name of the admin who created the comment. Null when the frontend did not supply one (e.g. comments created before this field shipped)."},"editor":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Editor","description":"Display name of the admin who last updated the comment. Null for comments that have never been edited."}},"type":"object","required":["uuid","content","created","updated"],"title":"OrganizationCommentResponse","description":"Admin-only organization comment response payload."},"OrganizationCommentUpdateRequest":{"properties":{"content":{"anyOf":[{"type":"string","maxLength":1024,"minLength":1},{"type":"null"}],"title":"Content","description":"Updated comment content."},"editor":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Editor","description":"Display name of the admin performing this edit. Optional; stored verbatim and returned on subsequent reads."}},"type":"object","title":"OrganizationCommentUpdateRequest","description":"Request schema for partially updating an organization comment."},"OrganizationCreate":{"properties":{"name":{"type":"string","maxLength":256,"minLength":1,"title":"Name"},"template":{"anyOf":[{"type":"integer","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Template"},"created":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created"}},"type":"object","required":["name"],"title":"OrganizationCreate","description":"Organization create model."},"OrganizationDeviceResetOut":{"properties":{"device_id":{"type":"integer","title":"Device Id"},"pin_code":{"type":"string","title":"Pin Code"},"device_name":{"type":"string","title":"Device Name"},"workspace_id":{"type":"integer","title":"Workspace Id"}},"type":"object","required":["device_id","pin_code","device_name","workspace_id"],"title":"OrganizationDeviceResetOut","description":"Model for organization device reset response.\n\nAttributes:\n    device_id: ID of the device that was reset.\n    pincode: New PIN code for the device.\n    device_name: Name of the device.\n    workspace_id: ID of the workspace associated with the device."},"OrganizationEntraIdConfigResponse":{"properties":{"uuid":{"type":"string","maxLength":36,"minLength":36,"title":"Uuid","description":"Organization integration UUID."},"external_tenant_id":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"External Tenant Id","description":"External tenant identifier."},"integration":{"$ref":"#/components/schemas/OrganizationEntraIdIntegrationResponse","description":"Shared integration metadata."},"workspaces":{"items":{"$ref":"#/components/schemas/OrganizationEntraIdWorkspaceResponse"},"type":"array","title":"Workspaces","description":"Workspace mappings for the SCIM integration."},"created":{"type":"string","format":"date-time","title":"Created","description":"Creation timestamp."},"updated":{"type":"string","format":"date-time","title":"Updated","description":"Last update timestamp."}},"type":"object","required":["uuid","integration","created","updated"],"title":"OrganizationEntraIdConfigResponse","description":"Response schema for Microsoft Entra ID configuration data."},"OrganizationEntraIdIntegrationResponse":{"properties":{"type":{"type":"string","maxLength":256,"minLength":1,"title":"Type","description":"Integration type name."},"name":{"type":"string","maxLength":256,"minLength":1,"title":"Name","description":"Integration display name."},"uri":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Uri","description":"Integration URI used by the provider."}},"type":"object","required":["type","name"],"title":"OrganizationEntraIdIntegrationResponse","description":"SCIM integration metadata exposed to SAT."},"OrganizationEntraIdProvisionedGroupResponse":{"properties":{"group_uuid":{"type":"string","maxLength":36,"minLength":36,"title":"Group Uuid","description":"Provisioned group UUID."},"external_id":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"External Id","description":"External provider group identifier."},"display_name":{"type":"string","maxLength":256,"minLength":1,"title":"Display Name","description":"Provisioned group display name."},"members_count":{"type":"integer","minimum":0.0,"title":"Members Count","description":"Number of provisioned users linked to the group."}},"type":"object","required":["group_uuid","display_name","members_count"],"title":"OrganizationEntraIdProvisionedGroupResponse","description":"Privacy-safe provisioned-group projection for SAT."},"OrganizationEntraIdProvisionedUserResponse":{"properties":{"user_uuid":{"type":"string","maxLength":36,"minLength":36,"title":"User Uuid","description":"Internal user UUID."},"scim_external_id":{"type":"string","maxLength":256,"minLength":1,"title":"Scim External Id","description":"External SCIM user identifier."}},"type":"object","required":["user_uuid","scim_external_id"],"title":"OrganizationEntraIdProvisionedUserResponse","description":"Privacy-safe provisioned-user projection for SAT."},"OrganizationEntraIdProvisioningSummaryResponse":{"properties":{"users_count":{"type":"integer","minimum":0.0,"title":"Users Count","description":"Total number of provisioned users."},"users_without_workspace_count":{"type":"integer","minimum":0.0,"title":"Users Without Workspace Count","description":"Total number of provisioned users without workspaces."},"users_without_group_count":{"type":"integer","minimum":0.0,"title":"Users Without Group Count","description":"Total number of provisioned users without groups."},"groups_count":{"type":"integer","minimum":0.0,"title":"Groups Count","description":"Total number of provisioned groups."},"memberships_count":{"type":"integer","minimum":0.0,"title":"Memberships Count","description":"Total number of group memberships."}},"type":"object","required":["users_count","users_without_workspace_count","users_without_group_count","groups_count","memberships_count"],"title":"OrganizationEntraIdProvisioningSummaryResponse","description":"Summary counts for Microsoft Entra ID provisioning diagnostics."},"OrganizationEntraIdSecretResponse":{"properties":{"api_secret":{"anyOf":[{"type":"string","maxLength":2048,"minLength":1},{"type":"null"}],"title":"Api Secret","description":"Current or regenerated SCIM API secret. May be null when the SCIM config exists but no account row has been created yet."}},"type":"object","title":"OrganizationEntraIdSecretResponse","description":"Response schema for the current or regenerated SCIM API secret."},"OrganizationEntraIdUpsertRequest":{"properties":{"external_tenant_id":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"External Tenant Id","description":"Updated external tenant identifier."},"api_secret":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Api Secret","description":"Updated SCIM API secret."},"workspaces":{"anyOf":[{"items":{"$ref":"#/components/schemas/OrganizationEntraIdWorkspaceRequest"},"type":"array"},{"type":"null"}],"title":"Workspaces","description":"Replacement workspace mapping list."}},"type":"object","title":"OrganizationEntraIdUpsertRequest","description":"Request schema for Microsoft Entra ID create or update operations."},"OrganizationEntraIdWorkspaceRequest":{"properties":{"workspace_id":{"type":"integer","exclusiveMinimum":0.0,"title":"Workspace Id","description":"Workspace identifier."},"external_id":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}],"title":"External Id","description":"External workspace identifier."},"external_id_type":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"External Id Type","description":"External workspace identifier type."}},"type":"object","required":["workspace_id"],"title":"OrganizationEntraIdWorkspaceRequest","description":"Request schema for one Microsoft Entra ID workspace mapping."},"OrganizationEntraIdWorkspaceResponse":{"properties":{"workspace_id":{"type":"integer","exclusiveMinimum":0.0,"title":"Workspace Id","description":"Workspace identifier."},"external_id":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}],"title":"External Id","description":"External workspace identifier."},"external_id_type":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"External Id Type","description":"External workspace identifier type."}},"type":"object","required":["workspace_id"],"title":"OrganizationEntraIdWorkspaceResponse","description":"Response schema for one Microsoft Entra ID workspace mapping."},"OrganizationExtensionResponse":{"properties":{"uuid":{"type":"string","maxLength":36,"minLength":36,"title":"Uuid","description":"Extension application UUID."},"name":{"type":"string","maxLength":256,"minLength":1,"title":"Name","description":"Extension application name."},"enabled":{"type":"boolean","title":"Enabled","description":"Whether the extension is enabled for the organization."}},"type":"object","required":["uuid","name","enabled"],"title":"OrganizationExtensionResponse","description":"Organization extension status response schema."},"OrganizationForOrganizationRoomOut":{"properties":{"id":{"type":"integer","title":"Id"},"user":{"type":"string","title":"User"},"organization":{"$ref":"#/components/schemas/OrganizationOut"},"uuid":{"type":"string","title":"Uuid"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"}},"type":"object","required":["id","user","organization","uuid","created","updated","created_by","updated_by"],"title":"OrganizationForOrganizationRoomOut"},"OrganizationIntegrationAccountOut":{"properties":{"id":{"type":"integer","title":"Id"},"organization_integration_id":{"type":"integer","title":"Organization Integration Id"},"username":{"type":"string","title":"Username"},"uuid":{"type":"string","title":"Uuid"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"}},"type":"object","required":["id","organization_integration_id","username","uuid","created","updated","created_by","updated_by"],"title":"OrganizationIntegrationAccountOut","description":"Organization integration account response model "},"OrganizationIntegrationRouteCreate":{"properties":{"external_tenant_id":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"External Tenant Id"},"integration_id":{"type":"integer","exclusiveMinimum":0.0,"title":"Integration Id"},"username":{"type":"string","maxLength":256,"minLength":1,"title":"Username"}},"type":"object","required":["integration_id","username"],"title":"OrganizationIntegrationRouteCreate","description":"Model for creating an organization integration via API routes.\n\nAttributes\n----------\nintegration_id : int\n    The ID of the integration.\nusername : str\n    The username for the integration, with a minimum length of 1 and\n    a maximum length of 256 characters.\nexternal_tenant_id : str, optional\n    The external tenant ID of the integration, with a maximum length of\n    256 characters."},"OrganizationIntegrationScimOut":{"properties":{"id":{"type":"integer","title":"Id"},"uuid":{"type":"string","title":"Uuid"},"organization_id":{"type":"integer","title":"Organization Id"},"external_tenant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Tenant Id"},"api_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Secret"},"integration":{"$ref":"#/components/schemas/IntegrationScimOut"},"workspaces":{"anyOf":[{"items":{"$ref":"#/components/schemas/WorkspaceIntegrationOut"},"type":"array"},{"type":"null"}],"title":"Workspaces"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"}},"type":"object","required":["id","uuid","organization_id","integration","created","updated","created_by","updated_by"],"title":"OrganizationIntegrationScimOut","description":"Organization integration account response model "},"OrganizationIntegrationScimRoute":{"properties":{"external_tenant_id":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"External Tenant Id"},"workspaces":{"anyOf":[{"items":{"$ref":"#/components/schemas/WorkspaceIntegrationRouteCreate"},"type":"array"},{"type":"null"}],"title":"Workspaces"},"api_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Secret"}},"type":"object","title":"OrganizationIntegrationScimRoute","description":"Model for creating a SCIM organization integration via API routes.\n\nAttributes\n----------\nworkspaces : list[WorkspaceIntegrationRouteCreate], optional\n    The list of workspace integrations associated with\n    the organization integration.\nexternal_tenant_id : str, optional\n    The external tenant ID of the integration, with a maximum length\n    of 256 characters."},"OrganizationOut":{"properties":{"id":{"type":"integer","title":"Id"},"uuid":{"type":"string","title":"Uuid"},"name":{"type":"string","title":"Name"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"}},"type":"object","required":["id","uuid","name","created","updated","created_by","updated_by"],"title":"OrganizationOut","description":"Organization default response model."},"OrganizationRoomForRoomOut":{"properties":{"id":{"type":"integer","title":"Id"},"address":{"type":"string","title":"Address"},"account_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Account Id"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"account":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account"},"subscription_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subscription Id"},"subscription_expire":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Subscription Expire"}},"type":"object","required":["id","address","account_id","type","account","subscription_id","subscription_expire"],"title":"OrganizationRoomForRoomOut","description":"Organization room for room response model "},"OrganizationRoomOut":{"properties":{"id":{"type":"integer","title":"Id"},"address":{"type":"string","title":"Address"},"account_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Account Id"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"account":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account"},"organization":{"$ref":"#/components/schemas/OrganizationOut"},"uuid":{"type":"string","title":"Uuid"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"}},"type":"object","required":["id","address","account_id","type","account","organization","uuid","created","updated","created_by","updated_by"],"title":"OrganizationRoomOut","description":"Organization room response model "},"OrganizationRoomRouteCreate":{"properties":{"room_id":{"type":"integer","exclusiveMinimum":0.0,"title":"Room Id"},"user":{"type":"string","maxLength":256,"minLength":1,"title":"User"}},"type":"object","required":["room_id","user"],"title":"OrganizationRoomRouteCreate","description":"Organization room endpoint create model "},"OrganizationRoomRouteUpdate":{"properties":{"user":{"type":"string","maxLength":256,"minLength":1,"title":"User"}},"type":"object","required":["user"],"title":"OrganizationRoomRouteUpdate","description":"Organization room endpoint update model "},"OrganizationSettingCreateWithKey":{"properties":{"value":{"type":"string","title":"Value","description":"The setting value"},"setting_metadata_key":{"type":"string","maxLength":50,"title":"Setting Metadata Key","description":"The setting metadata key"}},"type":"object","required":["value","setting_metadata_key"],"title":"OrganizationSettingCreateWithKey","description":"Organization setting create model by setting key."},"OrganizationSettingDBUpdate":{"properties":{"value":{"type":"string","title":"Value","description":"The setting value"}},"type":"object","required":["value"],"title":"OrganizationSettingDBUpdate","description":"Organization setting update model for\ndatabase queries."},"OrganizationSimpleOut":{"properties":{"id":{"type":"integer","title":"Id"},"uuid":{"type":"string","title":"Uuid"},"name":{"type":"string","title":"Name"}},"type":"object","required":["id","uuid","name"],"title":"OrganizationSimpleOut","description":"Organization simple response model."},"OrganizationSimpleResponse":{"properties":{"id":{"type":"integer","exclusiveMinimum":0.0,"title":"Id","description":"Organization id."},"uuid":{"type":"string","title":"Uuid","description":"Organization UUID."},"name":{"type":"string","title":"Name","description":"Organization name."}},"type":"object","required":["id","uuid","name"],"title":"OrganizationSimpleResponse","description":"Organization projection inside a visitor response."},"OrganizationUpdate":{"properties":{"name":{"type":"string","maxLength":256,"minLength":1,"title":"Name"}},"type":"object","required":["name"],"title":"OrganizationUpdate","description":"Organization update model."},"OrganizationUsageOut":{"properties":{"hosts":{"$ref":"#/components/schemas/ProductUsageOut"},"kiosks":{"$ref":"#/components/schemas/ProductUsageOut"},"room_displays":{"$ref":"#/components/schemas/ProductUsageOut"}},"type":"object","required":["hosts","kiosks","room_displays"],"title":"OrganizationUsageOut","description":"Organization-wide active usage counts, summed across all workspaces.\n\nEach product is a nested object so additional products (e.g. a future\n``info_displays`` count, once that device type exists) and additional\nper-product fields (e.g. licensed amounts) can be added later without\nbreaking existing consumers."},"OrganizationWithRoomsOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"uuid":{"type":"string","title":"Uuid"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"},"rooms":{"anyOf":[{"items":{"$ref":"#/components/schemas/RoomForOrganizationRoomOut"},"type":"array"},{"type":"null"}],"title":"Rooms"}},"type":"object","required":["id","name","uuid","created","updated","created_by","updated_by","rooms"],"title":"OrganizationWithRoomsOut"},"OrganizationWithSettingsOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"uuid":{"type":"string","title":"Uuid"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"},"settings":{"anyOf":[{"items":{"$ref":"#/components/schemas/SettingOut"},"type":"array"},{"type":"null"}],"title":"Settings"}},"type":"object","required":["id","name","uuid","created","updated","created_by","updated_by","settings"],"title":"OrganizationWithSettingsOut"},"OrganizationWithWorkspaceOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"uuid":{"type":"string","title":"Uuid"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"},"workspaces":{"anyOf":[{"items":{"$ref":"#/components/schemas/WorkspaceBaseOut"},"type":"array"},{"type":"null"}],"title":"Workspaces"}},"type":"object","required":["id","name","uuid","created","updated","created_by","updated_by","workspaces"],"title":"OrganizationWithWorkspaceOut","description":"Organization with workspace response model "},"Page_FeedbackOut_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/FeedbackOut"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[FeedbackOut]"},"Page_RoomOut_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/RoomOut"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[RoomOut]"},"Page_SettingMetadataOut_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SettingMetadataOut"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[SettingMetadataOut]"},"Page_UserDataOutForPage_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/UserDataOutForPage"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[UserDataOutForPage]"},"Page_VisitOut_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/VisitOut"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[VisitOut]"},"Page_VisitVisitorInstanceOut_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/VisitVisitorInstanceOut"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[VisitVisitorInstanceOut]"},"Page_VisitorFlowResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/VisitorFlowResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[VisitorFlowResponse]"},"Page_VisitorResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/VisitorResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[VisitorResponse]"},"PermissionForUserOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type"},"value":{"type":"string","title":"Value"}},"type":"object","required":["id","name","type","value"],"title":"PermissionForUserOut"},"PermissionOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type"},"value":{"type":"string","title":"Value"},"uuid":{"type":"string","title":"Uuid"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"}},"type":"object","required":["id","name","type","value","uuid","created","updated"],"title":"PermissionOut"},"PermissionTypeOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"uuid":{"type":"string","title":"Uuid"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"}},"type":"object","required":["id","name","uuid","created","updated"],"title":"PermissionTypeOut"},"PermissionValueOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"uuid":{"type":"string","title":"Uuid"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"}},"type":"object","required":["id","name","uuid","created","updated"],"title":"PermissionValueOut"},"PrinterBadgeCount":{"properties":{"count":{"type":"integer","minimum":0.0,"title":"Count"}},"type":"object","required":["count"],"title":"PrinterBadgeCount","description":"Printer badge count model."},"ProductUsageOut":{"properties":{"active":{"type":"integer","title":"Active"}},"type":"object","required":["active"],"title":"ProductUsageOut","description":"Usage counts for a single product within an organization.\n\nA per-product object (rather than a flat scalar) is used so the payload can\ngrow without a breaking change: future steps add a licensed/entitled amount\nhere (e.g. ``licensed``) alongside the current ``active`` count."},"ProvisionedByOut":{"properties":{"integration_name":{"type":"string","maxLength":256,"title":"Integration Name","description":"Name of the integration that provisioned the user, as stored on the integration record."}},"type":"object","required":["integration_name"],"title":"ProvisionedByOut","description":"Provisioning origin of a user.\n\nDerived from the user's integration links (``user_integration`` rows).\nA user with multiple integration links surfaces only the first one\nby ``user_integration.id`` ascending; change this to a list if a\nfuture requirement needs all of them."},"RegisterSuccessOut":{"properties":{"data":{"$ref":"#/components/schemas/TokenOut"}},"type":"object","required":["data"],"title":"RegisterSuccessOut","description":"Response model for successful client/device registration.\n\nAttributes:\n    data: Contains token information."},"ReplyMessageRequest":{"properties":{"visitors":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Visitors","description":"List of visitor UUIDs to send replies to"},"message":{"type":"string","title":"Message","description":"Reply message content"},"custom_message":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Custom Message","description":"Whether to send a custom message","default":false},"email":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Email","description":"Whether to send the reply via email","default":true},"sms":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Sms","description":"Whether to send the reply via SMS","default":true}},"type":"object","required":["visitors","message"],"title":"ReplyMessageRequest","description":"Request model for sending reply messages."},"ResetDeviceSuccessOut":{"properties":{"data":{"$ref":"#/components/schemas/ResetResponse"}},"type":"object","required":["data"],"title":"ResetDeviceSuccessOut","description":"Wrapper for successful device reset result.\n\nAttributes:\n    data: ResetResponse containing device information."},"ResetResponse":{"properties":{"device_id":{"type":"integer","title":"Device Id"},"pincode":{"type":"string","title":"Pincode"}},"type":"object","required":["device_id","pincode"],"title":"ResetResponse","description":"Model returned upon successful device reset.\n\nAttributes:\n    device_id: ID of the device that was reset.\n    pincode: New PIN code for the device."},"ResourceType":{"properties":{"id":{"type":"string","maxLength":128,"minLength":1,"title":"Id","description":"Resource type id."},"name":{"type":"string","maxLength":128,"minLength":1,"title":"Name","description":"Resource type display name."},"endpoint":{"type":"string","maxLength":256,"minLength":1,"title":"Endpoint","description":"Endpoint path for the resource type."},"schema":{"type":"string","maxLength":256,"minLength":1,"title":"Schema","description":"Primary schema URN for the resource type."},"schemaExtensions":{"anyOf":[{"items":{"$ref":"#/components/schemas/SchemaExtension"},"type":"array"},{"type":"null"}],"title":"Schemaextensions","description":"Optional schema extensions for the resource type."}},"type":"object","required":["id","name","endpoint","schema"],"title":"ResourceType","description":"Metadata describing a SCIM resource type."},"ResourceTypeListResponse":{"properties":{"schemas":{"items":{"type":"string"},"type":"array","title":"Schemas","description":"Response schema URNs."},"totalResults":{"type":"integer","minimum":0.0,"title":"Totalresults","description":"Total number of resource types."},"startIndex":{"type":"integer","minimum":1.0,"title":"Startindex","description":"1-based index of the first returned resource."},"itemsPerPage":{"type":"integer","minimum":0.0,"title":"Itemsperpage","description":"Number of resources in this page."},"Resources":{"items":{"$ref":"#/components/schemas/ResourceType"},"type":"array","title":"Resources","description":"Returned resource types."}},"type":"object","required":["schemas","totalResults","startIndex","itemsPerPage","Resources"],"title":"ResourceTypeListResponse","description":"List wrapper for SCIM resource types."},"RoleForUserOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"permissions":{"items":{"$ref":"#/components/schemas/RolePermissionForUserOut"},"type":"array","title":"Permissions"}},"type":"object","required":["id","name","permissions"],"title":"RoleForUserOut"},"RoleOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"permissions":{"items":{"$ref":"#/components/schemas/RolePermissionOut"},"type":"array","title":"Permissions"},"user_type":{"$ref":"#/components/schemas/UserTypeOut"},"uuid":{"type":"string","title":"Uuid"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"}},"type":"object","required":["id","name","permissions","user_type","uuid","created","updated","created_by","updated_by"],"title":"RoleOut"},"RoleOutBase":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"}},"type":"object","required":["id","name"],"title":"RoleOutBase"},"RolePermissionForUserOut":{"properties":{"id":{"type":"integer","title":"Id"},"permission":{"$ref":"#/components/schemas/PermissionForUserOut"}},"type":"object","required":["id","permission"],"title":"RolePermissionForUserOut"},"RolePermissionOut":{"properties":{"id":{"type":"integer","title":"Id"},"permission":{"$ref":"#/components/schemas/PermissionOut"},"uuid":{"type":"string","title":"Uuid"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"}},"type":"object","required":["id","permission","uuid","created","updated"],"title":"RolePermissionOut"},"RoomForOrganizationRoomOut":{"properties":{"id":{"type":"integer","title":"Id"},"user":{"type":"string","title":"User"},"room":{"$ref":"#/components/schemas/RoomOut"},"uuid":{"type":"string","title":"Uuid"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"}},"type":"object","required":["id","user","room","uuid","created","updated","created_by","updated_by"],"title":"RoomForOrganizationRoomOut","description":"Model representing the association between a room\nand a user within an organization context.\n\nAttributes:\n----------\nid : int\n    The unique identifier for this specific organization-room association.\nuser : str\n    The user identifier associated with this room\n    in the context of the organization.\nroom : RoomOut\n    The detailed room information as defined by the RoomOut model.\nuuid : str\n    The universally unique identifier\n    for the organization-room association.\ncreated : datetime\n    The timestamp when this association was created.\nupdated : datetime\n    The timestamp when this association was last updated."},"RoomListCreateIssue":{"properties":{"item_index":{"type":"integer","minimum":0.0,"title":"Item Index","description":"Zero-based index of the payload item."},"room_name":{"type":"string","maxLength":256,"minLength":1,"title":"Room Name","description":"Room name from the payload item."},"workspace_uuid":{"type":"string","format":"uuid","title":"Workspace Uuid","description":"Workspace UUID from the payload item."},"organization_integration_account_uuid":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Organization Integration Account Uuid","description":"Organization integration account UUID from payload item."},"resource_address":{"anyOf":[{"type":"string","maxLength":256,"format":"email"},{"type":"null"}],"title":"Resource Address","description":"Resource email from the payload item."},"device_name":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Device Name","description":"Device name from the payload item."},"create_device":{"type":"boolean","title":"Create Device","description":"create_device value from the payload item."},"reason":{"type":"string","minLength":1,"title":"Reason","description":"Reason for skip or failure."}},"type":"object","required":["item_index","room_name","workspace_uuid","create_device","reason"],"title":"RoomListCreateIssue","description":"Details for a skipped or failed bulk item."},"RoomListCreateResponse":{"properties":{"created_rooms_count":{"type":"integer","minimum":0.0,"title":"Created Rooms Count","description":"Number of newly created rooms."},"created_devices_count":{"type":"integer","minimum":0.0,"title":"Created Devices Count","description":"Number of newly created devices."},"skipped_count":{"type":"integer","minimum":0.0,"title":"Skipped Count","description":"Number of skipped payload items."},"failed_count":{"type":"integer","minimum":0.0,"title":"Failed Count","description":"Number of failed payload items."},"skipped":{"items":{"$ref":"#/components/schemas/RoomListCreateIssue"},"type":"array","title":"Skipped","description":"Skipped items with reasons."},"failed":{"items":{"$ref":"#/components/schemas/RoomListCreateIssue"},"type":"array","title":"Failed","description":"Failed items with reasons."}},"type":"object","required":["created_rooms_count","created_devices_count","skipped_count","failed_count"],"title":"RoomListCreateResponse","description":"Aggregate result for bulk room creation."},"RoomListRouteCreate":{"properties":{"room_name":{"type":"string","maxLength":256,"minLength":1,"title":"Room Name","description":"Name of the room to create or resolve."},"workspace_uuid":{"type":"string","format":"uuid","title":"Workspace Uuid","description":"Workspace UUID where the room belongs."},"organization_integration_account_uuid":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Organization Integration Account Uuid","description":"Optional organization integration account UUID used for resource linkage."},"resource_address":{"anyOf":[{"type":"string","maxLength":256,"format":"email"},{"type":"null"}],"title":"Resource Address","description":"Optional resource email address to link with the room."},"device_name":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Device Name","description":"Optional device name used when create_device is true."},"create_device":{"type":"boolean","title":"Create Device","description":"When true, creates a room-display device linked to room."}},"type":"object","required":["room_name","workspace_uuid","create_device"],"title":"RoomListRouteCreate","description":"Payload item for creating rooms and optional devices in bulk."},"RoomListRouteUpdate":{"properties":{"room_uuid":{"type":"string","format":"uuid","title":"Room Uuid","description":"Room UUID to update."},"name":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Name","description":"Optional new room name."},"workspace_uuid":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Workspace Uuid","description":"Optional target workspace UUID."},"organization_integration_account_uuid":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Organization Integration Account Uuid","description":"Optional organization integration account UUID for room resource linking."},"resource_address":{"anyOf":[{"type":"string","maxLength":256,"format":"email"},{"type":"null"}],"title":"Resource Address","description":"Optional resource email address for room linkage."}},"type":"object","required":["room_uuid"],"title":"RoomListRouteUpdate","description":"Payload item for updating rooms in bulk."},"RoomListUpdateIssue":{"properties":{"item_index":{"type":"integer","minimum":0.0,"title":"Item Index","description":"Zero-based index of the payload item."},"room_uuid":{"type":"string","format":"uuid","title":"Room Uuid","description":"Room UUID from the payload item."},"name":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Name","description":"Updated room name from the payload item."},"workspace_uuid":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Workspace Uuid","description":"Updated workspace UUID from the payload item."},"organization_integration_account_uuid":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Organization Integration Account Uuid","description":"Updated organization integration account UUID from the payload item."},"resource_address":{"anyOf":[{"type":"string","maxLength":256,"format":"email"},{"type":"null"}],"title":"Resource Address","description":"Updated resource email from the payload item."},"reason":{"type":"string","minLength":1,"title":"Reason","description":"Reason for skip or failure."}},"type":"object","required":["item_index","room_uuid","reason"],"title":"RoomListUpdateIssue","description":"Details for a skipped or failed bulk update item."},"RoomListUpdateResponse":{"properties":{"updated_rooms_count":{"type":"integer","minimum":0.0,"title":"Updated Rooms Count","description":"Number of successfully updated rooms."},"updated_devices_count":{"type":"integer","minimum":0.0,"title":"Updated Devices Count","description":"Number of related devices moved to updated workspaces."},"skipped_count":{"type":"integer","minimum":0.0,"title":"Skipped Count","description":"Number of skipped payload items."},"failed_count":{"type":"integer","minimum":0.0,"title":"Failed Count","description":"Number of failed payload items."},"skipped":{"items":{"$ref":"#/components/schemas/RoomListUpdateIssue"},"type":"array","title":"Skipped","description":"Skipped items with reasons."},"failed":{"items":{"$ref":"#/components/schemas/RoomListUpdateIssue"},"type":"array","title":"Failed","description":"Failed items with reasons."}},"type":"object","required":["updated_rooms_count","updated_devices_count","skipped_count","failed_count"],"title":"RoomListUpdateResponse","description":"Aggregate result for bulk room updates."},"RoomOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"workspace_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Workspace Id"},"uuid":{"type":"string","title":"Uuid"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"devices":{"anyOf":[{"items":{"$ref":"#/components/schemas/DeviceRoomForRoomOut"},"type":"array"},{"type":"null"}],"title":"Devices"},"resources":{"anyOf":[{"items":{"$ref":"#/components/schemas/OrganizationRoomForRoomOut"},"type":"array"},{"type":"null"}],"title":"Resources"}},"type":"object","required":["id","name","uuid","created","updated","devices","resources"],"title":"RoomOut","description":"Extended model for room output that includes creation\nand update timestamps along with a UUID.\n\nInherits:\n---------\nRoomOutBase : BaseModel\n    Inherits base attributes from RoomOutBase,\n    adding additional details specific to this model.\n\nAttributes:\n----------\nuuid : str\n    The universally unique identifier for the room.\ncreated : datetime\n    The timestamp indicating when the room was created.\nupdated : datetime\n    The timestamp indicating when the room was last updated."},"RoomRouteCreate":{"properties":{"resource_address":{"anyOf":[{"type":"string","maxLength":256,"minLength":10},{"type":"null"}],"title":"Resource Address"},"resource_account_id":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Resource Account Id"},"workspace_id":{"type":"integer","exclusiveMinimum":0.0,"title":"Workspace Id"},"name":{"type":"string","maxLength":256,"minLength":1,"title":"Name"}},"type":"object","required":["workspace_id","name"],"title":"RoomRouteCreate","description":"Room create model "},"RoomRouteUpdate":{"properties":{"resource_address":{"anyOf":[{"type":"string","maxLength":256,"minLength":10},{"type":"null"}],"title":"Resource Address"},"resource_account_id":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Resource Account Id"},"workspace_id":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Workspace Id"},"name":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Name"}},"type":"object","title":"RoomRouteUpdate","description":"Room update model "},"RoomWithOrganizationsOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"workspace_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Workspace Id"},"uuid":{"type":"string","title":"Uuid"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"devices":{"anyOf":[{"items":{"$ref":"#/components/schemas/DeviceRoomForRoomOut"},"type":"array"},{"type":"null"}],"title":"Devices"},"resources":{"anyOf":[{"items":{"$ref":"#/components/schemas/OrganizationRoomForRoomOut"},"type":"array"},{"type":"null"}],"title":"Resources"},"organizations":{"anyOf":[{"items":{"$ref":"#/components/schemas/OrganizationForOrganizationRoomOut"},"type":"array"},{"type":"null"}],"title":"Organizations"}},"type":"object","required":["id","name","uuid","created","updated","devices","resources","organizations"],"title":"RoomWithOrganizationsOut","description":"Room model that includes a list of associated organizations.\n\nInherits:\n---------\nRoomOut : BaseModel\n    Inherits attributes from RoomOut,\n    adding a list of associated organizations.\n\nAttributes:\n----------\norganizations : Optional[List[OrganizationForOrganizationRoomOut]]\n    A list of organizations associated with the room.\n    Can be empty if no organizations are linked."},"RuleOut":{"properties":{"id":{"type":"integer","title":"Id"},"uuid":{"type":"string","title":"Uuid"},"data_type":{"$ref":"#/components/schemas/DataTypeOut"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["id","uuid","data_type","name","description"],"title":"RuleOut","description":"Model for the Rule response."},"SCIMContact":{"properties":{"value":{"type":"string","maxLength":256,"minLength":1,"title":"Value","description":"Contact value."},"type":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Type","description":"SCIM contact type, typically work or other."}},"type":"object","required":["value"],"title":"SCIMContact","description":"SCIM contact entry used for ``emails`` and ``phoneNumbers`` arrays."},"SCIMGroupCreateRequest":{"properties":{"schemas":{"items":{"type":"string"},"type":"array","title":"Schemas","description":"SCIM schema URNs included in this request."},"externalId":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Externalid","description":"Optional client-defined identifier."},"displayName":{"type":"string","maxLength":256,"minLength":1,"title":"Displayname","description":"Human-readable name for the group."},"members":{"items":{"$ref":"#/components/schemas/SCIMGroupMemberRequest"},"type":"array","title":"Members","description":"Initial group member entries."}},"type":"object","required":["displayName"],"title":"SCIMGroupCreateRequest","description":"SCIM POST /Groups request payload."},"SCIMGroupListResponse":{"properties":{"schemas":{"items":{"type":"string"},"type":"array","title":"Schemas","description":"SCIM ListResponse schema URN."},"Resources":{"items":{"$ref":"#/components/schemas/SCIMGroupResponse"},"type":"array","title":"Resources","description":"SCIM resources for the current page."},"totalResults":{"type":"integer","minimum":0.0,"title":"Totalresults","description":"Total number of resources before pagination."},"startIndex":{"type":"integer","minimum":1.0,"title":"Startindex","description":"1-based start index echoed from the request."},"itemsPerPage":{"type":"integer","minimum":0.0,"title":"Itemsperpage","description":"Number of resources returned in this page."}},"type":"object","required":["totalResults","startIndex","itemsPerPage"],"title":"SCIMGroupListResponse","description":"SCIM ListResponse wrapper for Group resources."},"SCIMGroupMemberRequest":{"properties":{"value":{"type":"string","maxLength":256,"minLength":1,"title":"Value","description":"User identifier for the group member."}},"type":"object","required":["value"],"title":"SCIMGroupMemberRequest","description":"Inbound member entry for SCIM group payloads.\n\nUses ``extra=\"ignore\"`` to silently drop ``$ref: null`` sent by\nsome identity providers."},"SCIMGroupMemberResponse":{"properties":{"value":{"type":"string","maxLength":256,"minLength":1,"title":"Value","description":"User identifier for the group member."},"display":{"anyOf":[{"type":"string","maxLength":512,"minLength":1},{"type":"null"}],"title":"Display","description":"Display name for the group member."}},"type":"object","required":["value"],"title":"SCIMGroupMemberResponse","description":"Outbound member entry in SCIM group responses."},"SCIMGroupPatchOperation":{"properties":{"op":{"type":"string","maxLength":16,"minLength":1,"title":"Op","description":"SCIM patch operation verb."},"path":{"anyOf":[{"type":"string","maxLength":512,"minLength":1},{"type":"null"}],"title":"Path","description":"SCIM patch path."},"value":{"anyOf":[{},{"type":"null"}],"title":"Value","description":"SCIM patch operation value."}},"type":"object","required":["op"],"title":"SCIMGroupPatchOperation","description":"Representation of one SCIM PATCH operation for group mutations."},"SCIMGroupPatchRequest":{"properties":{"schemas":{"items":{"type":"string"},"type":"array","title":"Schemas","description":"SCIM schema URNs included in this request."},"externalId":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Externalid","description":"Optional client-defined identifier."},"Operations":{"items":{"$ref":"#/components/schemas/SCIMGroupPatchOperation"},"type":"array","title":"Operations","description":"Ordered list of SCIM patch operations."}},"type":"object","required":["Operations"],"title":"SCIMGroupPatchRequest","description":"SCIM PATCH request wrapper for /Groups/{id}."},"SCIMGroupResponse":{"properties":{"schemas":{"items":{"type":"string"},"type":"array","title":"Schemas","description":"SCIM schemas for this response resource."},"id":{"type":"string","maxLength":36,"minLength":1,"title":"Id","description":"SCIM group identifier."},"displayName":{"type":"string","maxLength":256,"minLength":1,"title":"Displayname","description":"Human-readable name for the group."},"externalId":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Externalid","description":"Client-defined external identifier."},"members":{"anyOf":[{"items":{"$ref":"#/components/schemas/SCIMGroupMemberResponse"},"type":"array"},{"type":"null"}],"title":"Members","description":"Group member entries."},"meta":{"$ref":"#/components/schemas/SCIMMeta","description":"SCIM resource metadata."}},"type":"object","required":["id","displayName","meta"],"title":"SCIMGroupResponse","description":"Canonical SCIM Group representation."},"SCIMMeta":{"properties":{"resourceType":{"type":"string","title":"Resourcetype","description":"SCIM resource type."},"created":{"type":"string","format":"date-time","title":"Created","description":"Resource creation timestamp."},"lastModified":{"type":"string","format":"date-time","title":"Lastmodified","description":"Resource last update timestamp."},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location","description":"Absolute SCIM resource URL."},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version","description":"Weak ETag value."}},"type":"object","required":["resourceType","created","lastModified"],"title":"SCIMMeta","description":"Metadata block emitted with every SCIM resource."},"SCIMPatchOperation":{"properties":{"op":{"type":"string","maxLength":16,"minLength":1,"title":"Op","description":"SCIM patch operation verb."},"path":{"anyOf":[{"type":"string","maxLength":512,"minLength":1},{"type":"null"}],"title":"Path","description":"SCIM patch path."},"value":{"anyOf":[{},{"type":"null"}],"title":"Value","description":"SCIM patch operation value."}},"type":"object","required":["op"],"title":"SCIMPatchOperation","description":"Representation of one SCIM PATCH operation."},"SCIMUserCreateRequest":{"properties":{"schemas":{"items":{"type":"string"},"type":"array","title":"Schemas","description":"SCIM schema URNs included in this request."},"externalId":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Externalid","description":"Optional client-defined identifier."},"userName":{"type":"string","maxLength":256,"minLength":1,"title":"Username","description":"Tenant-scoped unique SCIM username."},"name":{"$ref":"#/components/schemas/SCIMUserName","description":"User name object."},"emails":{"items":{"$ref":"#/components/schemas/SCIMContact"},"type":"array","title":"Emails","description":"User email entries."},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Active","description":"Whether the user is active.","default":true},"preferredLanguage":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Preferredlanguage","description":"Optional preferred language tag."},"phoneNumbers":{"items":{"$ref":"#/components/schemas/SCIMContact"},"type":"array","title":"Phonenumbers","description":"User phone entries."},"urn:ietf:params:scim:schemas:extension:systam:2.0:User":{"anyOf":[{"$ref":"#/components/schemas/SCIMUserExtension"},{"type":"null"}],"description":"Custom SCIM extension payload."}},"type":"object","required":["userName","name","emails"],"title":"SCIMUserCreateRequest","description":"Minimal subset of the SCIM User resource needed for POST /Users."},"SCIMUserExtension":{"properties":{"primaryWorkspace":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Primaryworkspace","description":"External identifier for the user's primary workspace."}},"type":"object","title":"SCIMUserExtension","description":"Custom extension payload for user workspace mapping."},"SCIMUserListResponse":{"properties":{"schemas":{"items":{"type":"string"},"type":"array","title":"Schemas","description":"SCIM ListResponse schema URN."},"Resources":{"items":{"$ref":"#/components/schemas/SCIMUserResponse"},"type":"array","title":"Resources","description":"SCIM resources for the current page."},"totalResults":{"type":"integer","minimum":0.0,"title":"Totalresults","description":"Total number of resources before pagination."},"startIndex":{"type":"integer","minimum":1.0,"title":"Startindex","description":"1-based start index echoed from the request."},"itemsPerPage":{"type":"integer","minimum":0.0,"title":"Itemsperpage","description":"Number of resources returned in this page."}},"type":"object","required":["totalResults","startIndex","itemsPerPage"],"title":"SCIMUserListResponse","description":"SCIM ListResponse wrapper for User resources."},"SCIMUserName":{"properties":{"givenName":{"type":"string","maxLength":256,"minLength":1,"title":"Givenname","description":"Given name for the user."},"familyName":{"type":"string","maxLength":256,"minLength":1,"title":"Familyname","description":"Family name for the user."}},"type":"object","required":["givenName","familyName"],"title":"SCIMUserName","description":"Representation of the SCIM ``name`` attribute."},"SCIMUserPatchRequest":{"properties":{"schemas":{"items":{"type":"string"},"type":"array","title":"Schemas","description":"SCIM schema URNs included in this request."},"externalId":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Externalid","description":"Optional client-defined identifier."},"Operations":{"items":{"$ref":"#/components/schemas/SCIMPatchOperation"},"type":"array","title":"Operations","description":"Ordered list of SCIM patch operations."}},"type":"object","required":["Operations"],"title":"SCIMUserPatchRequest","description":"SCIM PATCH request wrapper for /Users/{id}."},"SCIMUserResponse":{"properties":{"schemas":{"items":{"type":"string"},"type":"array","title":"Schemas","description":"SCIM schemas for this response resource."},"id":{"type":"string","maxLength":36,"minLength":1,"title":"Id","description":"SCIM user identifier."},"userName":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Username","description":"SCIM userName value."},"name":{"anyOf":[{"$ref":"#/components/schemas/SCIMUserName"},{"type":"null"}],"description":"SCIM name payload."},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Active","description":"Whether the user is active.","default":true},"preferredLanguage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preferredlanguage","description":"Preferred language tag."},"emails":{"anyOf":[{"items":{"$ref":"#/components/schemas/SCIMContact"},"type":"array"},{"type":"null"}],"title":"Emails","description":"SCIM email contact list."},"phoneNumbers":{"anyOf":[{"items":{"$ref":"#/components/schemas/SCIMContact"},"type":"array"},{"type":"null"}],"title":"Phonenumbers","description":"SCIM phone contact list."},"meta":{"$ref":"#/components/schemas/SCIMMeta","description":"SCIM resource metadata."},"urn:ietf:params:scim:schemas:extension:systam:2.0:User":{"anyOf":[{"$ref":"#/components/schemas/SCIMUserExtension"},{"type":"null"}],"description":"Custom SCIM extension data."}},"type":"object","required":["id","meta"],"title":"SCIMUserResponse","description":"Canonical SCIM User representation."},"SchemaAttribute":{"properties":{"name":{"type":"string","maxLength":128,"minLength":1,"title":"Name","description":"Attribute name."},"type":{"type":"string","maxLength":64,"minLength":1,"title":"Type","description":"SCIM attribute type."},"multiValued":{"type":"boolean","title":"Multivalued","description":"Whether the attribute is multi-valued."},"required":{"type":"boolean","title":"Required","description":"Whether the attribute is required."},"subAttributes":{"anyOf":[{"items":{"$ref":"#/components/schemas/SchemaAttribute"},"type":"array"},{"type":"null"}],"title":"Subattributes","description":"Nested sub-attributes for complex attributes."}},"type":"object","required":["name","type","multiValued","required"],"title":"SchemaAttribute","description":"Description of one attribute within a SCIM schema."},"SchemaDefinition":{"properties":{"schemas":{"items":{"type":"string"},"type":"array","title":"Schemas","description":"Schema envelope URNs."},"id":{"type":"string","maxLength":256,"minLength":1,"title":"Id","description":"Schema identifier URN."},"name":{"type":"string","maxLength":256,"minLength":1,"title":"Name","description":"Schema display name."},"attributes":{"items":{"$ref":"#/components/schemas/SchemaAttribute"},"type":"array","title":"Attributes","description":"Attributes defined by the schema."}},"type":"object","required":["schemas","id","name","attributes"],"title":"SchemaDefinition","description":"SCIM schema description."},"SchemaExtension":{"properties":{"schema":{"type":"string","maxLength":256,"minLength":1,"title":"Schema","description":"Schema extension URN."},"required":{"type":"boolean","title":"Required","description":"Whether the extension is required."}},"type":"object","required":["schema","required"],"title":"SchemaExtension","description":"Extension metadata attached to a SCIM resource type."},"SchemaListResponse":{"properties":{"schemas":{"items":{"type":"string"},"type":"array","title":"Schemas","description":"Response schema URNs."},"totalResults":{"type":"integer","minimum":0.0,"title":"Totalresults","description":"Total number of schemas."},"startIndex":{"type":"integer","minimum":1.0,"title":"Startindex","description":"1-based index of the first returned schema."},"itemsPerPage":{"type":"integer","minimum":0.0,"title":"Itemsperpage","description":"Number of schemas in this page."},"Resources":{"items":{"$ref":"#/components/schemas/SchemaDefinition"},"type":"array","title":"Resources","description":"Returned schema definitions."}},"type":"object","required":["schemas","totalResults","startIndex","itemsPerPage","Resources"],"title":"SchemaListResponse","description":"List wrapper for SCIM schema definitions."},"SelfServiceDocumentContentResponse":{"properties":{"language":{"type":"string","maxLength":12,"minLength":1,"title":"Language","description":"Language tag for the localized content."},"content":{"type":"string","minLength":1,"title":"Content","description":"Localized document content body."},"created":{"type":"string","format":"date-time","title":"Created","description":"Timestamp when this content version was created."}},"type":"object","required":["language","content","created"],"title":"SelfServiceDocumentContentResponse","description":"Localized self-service document content."},"SelfServiceDocumentResponse":{"properties":{"name":{"type":"string","minLength":1,"title":"Name","description":"Document type name."},"validity_days":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Validity Days","description":"Optional validity period in days for accepted content."},"contents":{"items":{"$ref":"#/components/schemas/SelfServiceDocumentContentResponse"},"type":"array","title":"Contents","description":"Latest localized content version for each language."}},"type":"object","required":["name"],"title":"SelfServiceDocumentResponse","description":"Visit-type document exposed to self-service clients."},"SelfServiceLogin":{"properties":{"identifier":{"type":"string","minLength":1,"title":"Identifier"}},"type":"object","required":["identifier"],"title":"SelfServiceLogin","description":"Self-service login model."},"SelfServiceSettingResponse":{"properties":{"id":{"type":"integer","title":"Id"},"setting_metadata":{"$ref":"#/components/schemas/SettingMetadataOut"},"value":{"type":"string","title":"Value"},"uuid":{"type":"string","title":"Uuid"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"}},"type":"object","required":["id","setting_metadata","value","uuid","created","updated","created_by","updated_by"],"title":"SelfServiceSettingResponse","description":"Model for the self-service setting response."},"SelfServiceToken":{"properties":{"access_token":{"type":"string","title":"Access Token"},"access_token_expire":{"type":"integer","title":"Access Token Expire"},"token_type":{"type":"string","title":"Token Type"},"workspace_id":{"type":"integer","title":"Workspace Id"},"workspace_uuid":{"type":"string","title":"Workspace Uuid"}},"type":"object","required":["access_token","access_token_expire","token_type","workspace_id","workspace_uuid"],"title":"SelfServiceToken","description":"Self-service token output model.\n\nAttributes:\n    access_token: Same as access_token but for legacy support or frontend.\n    access_token_expire: Expiration time of the access token.\n    workspace_id: ID of the workspace.\n    workspace_uuid: UUID of the workspace."},"SelfServiceUserOut":{"properties":{"id":{"type":"integer","title":"Id"},"uuid":{"type":"string","title":"Uuid"}},"type":"object","required":["id","uuid"],"title":"SelfServiceUserOut","description":"User self-service output model.\n\nAttributes:\n    id: ID of the user.\n    uuid: UUID of the user."},"SelfServiceVisitResponse":{"properties":{"id":{"type":"integer","exclusiveMinimum":0.0,"title":"Id","description":"Created visit identifier."},"uuid":{"type":"string","maxLength":36,"minLength":36,"title":"Uuid","description":"Created visit UUID."},"visitor_qr_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visitor Qr Code","description":"Primary visitor QR code identifier for the created visit."}},"type":"object","required":["id","uuid"],"title":"SelfServiceVisitResponse","description":"Minimal self-service visit creation response."},"SelfServiceVisitTypeResponse":{"properties":{"id":{"type":"integer","title":"Id"},"uuid":{"type":"string","title":"Uuid","description":"Visit type UUID."},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"is_enabled":{"type":"boolean","title":"Is Enabled"},"is_primary":{"type":"boolean","title":"Is Primary"},"settings":{"anyOf":[{"items":{"$ref":"#/components/schemas/SelfServiceSettingResponse"},"type":"array"},{"type":"null"}],"title":"Settings","description":"Visit-type settings visible to self-service clients."},"fields":{"items":{"$ref":"#/components/schemas/VisitTypeWorkspaceFieldOut"},"type":"array","title":"Fields"},"visitor_badge_template":{"anyOf":[{"$ref":"#/components/schemas/BadgeTemplateFull"},{"type":"null"}]},"documents":{"items":{"$ref":"#/components/schemas/SelfServiceDocumentResponse"},"type":"array","title":"Documents","description":"Visit-type documents with current localized content."}},"type":"object","required":["id","uuid","name","description","is_enabled","is_primary","fields","visitor_badge_template"],"title":"SelfServiceVisitTypeResponse","description":"Base model for the visit type response."},"SelfServiceWorkspaceResponse":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"physical_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Physical Address"},"uuid":{"type":"string","title":"Uuid","description":"Workspace UUID."},"languages":{"anyOf":[{"items":{"$ref":"#/components/schemas/WorkspaceLanguageOut"},"type":"array"},{"type":"null"}],"title":"Languages","description":"Languages configured for the workspace."},"settings":{"anyOf":[{"items":{"$ref":"#/components/schemas/SelfServiceSettingResponse"},"type":"array"},{"type":"null"}],"title":"Settings","description":"Workspace settings exposed to self-service clients."},"visit_types":{"anyOf":[{"items":{"$ref":"#/components/schemas/SelfServiceVisitTypeResponse"},"type":"array"},{"type":"null"}],"title":"Visit Types","description":"Workspace visit types exposed to self-service clients."},"single_host_uuid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Single Host Uuid","description":"UUID of the workspace's sole eligible host. Eligibility matches GET /self-service/users: any user linked to the workspace via user_workspace with allow_uninvited = True, regardless of user type. Null when zero or two or more users match."}},"type":"object","required":["id","name","logo_url","physical_address","uuid"],"title":"SelfServiceWorkspaceResponse","description":"Self-service workspace response model."},"ServiceProviderConfigResponse":{"properties":{"schemas":{"items":{"type":"string"},"type":"array","title":"Schemas","description":"Response schema URNs."},"patch":{"$ref":"#/components/schemas/SupportedToggle","description":"PATCH capability details."},"bulk":{"$ref":"#/components/schemas/BulkConfig","description":"Bulk capability details."},"filter":{"$ref":"#/components/schemas/FilterConfig","description":"Filter capability details."},"changePassword":{"$ref":"#/components/schemas/SupportedToggle","description":"Change password capability details."},"sort":{"$ref":"#/components/schemas/SupportedToggle","description":"Sort capability details."},"etag":{"$ref":"#/components/schemas/SupportedToggle","description":"ETag capability details."},"authenticationSchemes":{"items":{"$ref":"#/components/schemas/AuthenticationScheme"},"type":"array","title":"Authenticationschemes","description":"Supported authentication schemes."}},"type":"object","required":["schemas","patch","bulk","filter","changePassword","sort","etag","authenticationSchemes"],"title":"ServiceProviderConfigResponse","description":"Response model for /ServiceProviderConfig."},"SettingMetadataOut":{"properties":{"id":{"type":"integer","title":"Id"},"data_type":{"$ref":"#/components/schemas/DataTypeOut"},"key":{"type":"string","title":"Key"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"restricted":{"type":"integer","title":"Restricted"},"uuid":{"type":"string","title":"Uuid"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"}},"type":"object","required":["id","data_type","key","description","restricted","uuid","created","updated"],"title":"SettingMetadataOut"},"SettingMetadataResponse":{"properties":{"id":{"type":"integer","exclusiveMinimum":0.0,"title":"Id","description":"Setting metadata id."},"data_type":{"$ref":"#/components/schemas/DataTypeResponse","description":"Data type describing the setting value."},"key":{"type":"string","title":"Key","description":"Setting metadata key."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Setting metadata description."},"restricted":{"type":"integer","title":"Restricted","description":"Whether the setting is restricted."},"uuid":{"type":"string","title":"Uuid","description":"Setting metadata UUID."},"created":{"type":"string","format":"date-time","title":"Created","description":"Creation timestamp."},"updated":{"type":"string","format":"date-time","title":"Updated","description":"Last update timestamp."}},"type":"object","required":["id","data_type","key","description","restricted","uuid","created","updated"],"title":"SettingMetadataResponse","description":"Setting metadata projection inside a visit type setting."},"SettingOut":{"properties":{"id":{"type":"integer","title":"Id"},"setting_metadata":{"$ref":"#/components/schemas/SettingMetadataOut"},"value":{"type":"string","title":"Value"},"uuid":{"type":"string","title":"Uuid"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"}},"type":"object","required":["id","setting_metadata","value","uuid","created","updated","created_by","updated_by"],"title":"SettingOut"},"SettingResponse":{"properties":{"id":{"type":"integer","exclusiveMinimum":0.0,"title":"Id","description":"Setting id."},"setting_metadata":{"$ref":"#/components/schemas/SettingMetadataResponse","description":"Setting metadata describing the setting."},"value":{"type":"string","title":"Value","description":"Setting value."},"uuid":{"type":"string","title":"Uuid","description":"Setting UUID."},"created":{"type":"string","format":"date-time","title":"Created","description":"Creation timestamp."},"updated":{"type":"string","format":"date-time","title":"Updated","description":"Last update timestamp."},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By","description":"Audit identity id that created the setting."},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By","description":"Audit identity id that last updated the setting."}},"type":"object","required":["id","setting_metadata","value","uuid","created","updated","created_by","updated_by"],"title":"SettingResponse","description":"Visit type setting projection."},"SettingSatOut":{"properties":{"key":{"type":"string","maxLength":50,"minLength":1,"title":"Key","description":"Setting metadata key."},"value":{"type":"string","title":"Value","description":"Setting value. Empty string when not yet populated."},"restricted":{"type":"boolean","const":false,"title":"Restricted","description":"Always ``False`` on this endpoint — restricted settings are filtered out before this schema is constructed (GET → 403, PATCH → 204)."},"updated":{"type":"string","format":"date-time","title":"Updated","description":"Last update timestamp of the setting row."}},"type":"object","required":["key","value","restricted","updated"],"title":"SettingSatOut","description":"Response payload for SAT global setting reads/writes.\n\n``restricted`` is typed as ``Literal[False]`` because this surface\nnever serialises a restricted setting: GET responds 403 for\nrestricted keys and PATCH responds 204 (no body) — the schema only\never materialises on the non-restricted path. Encoding the invariant\nin the type keeps the generated OpenAPI honest while still\ndocumenting the security boundary explicitly."},"SettingSatUpdate":{"properties":{"value":{"type":"string","maxLength":65535,"title":"Value","description":"New global setting value. Capped at 65535 characters to match the underlying ``TEXT`` column and to prevent a misconfigured caller from pushing multi-MB payloads."}},"type":"object","required":["value"],"title":"SettingSatUpdate","description":"Request schema for partially updating a global setting via SAT."},"SettingSimpleOut":{"properties":{"id":{"type":"integer","title":"Id"},"key":{"type":"string","title":"Key"},"value":{"type":"string","title":"Value"},"type":{"type":"string","title":"Type"},"description":{"type":"string","title":"Description"}},"type":"object","required":["id","key","value","type","description"],"title":"SettingSimpleOut"},"SignedUrlOut":{"properties":{"signed_url":{"type":"string","title":"Signed Url"},"public_url":{"type":"string","title":"Public Url"}},"type":"object","required":["signed_url","public_url"],"title":"SignedUrlOut","description":"Reponse model for signed url."},"SignedUrlRequest":{"properties":{"blob":{"type":"string","title":"Blob","description":"Blob identifier for the signed URL."}},"type":"object","required":["blob"],"title":"SignedUrlRequest","description":"Model for requesting a signed URL for file upload."},"StateOut":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"}},"type":"object","required":["name","description"],"title":"StateOut","description":"Generic state response model."},"SupportedToggle":{"properties":{"supported":{"type":"boolean","title":"Supported","description":"Indicates whether the feature is supported."}},"type":"object","required":["supported"],"title":"SupportedToggle","description":"Simple capability toggle."},"Token":{"properties":{"access_token":{"type":"string","title":"Access Token"},"refresh_token":{"type":"string","title":"Refresh Token"},"token_type":{"type":"string","title":"Token Type"},"access_token_expire":{"type":"integer","title":"Access Token Expire"},"user":{"$ref":"#/components/schemas/UserPayloadOut"}},"type":"object","required":["access_token","refresh_token","token_type","access_token_expire","user"],"title":"Token","description":"Represents a full token response including user info.\n\nAttributes:\n    access_token: JWT access token string.\n    refresh_token: Token used to refresh access.\n    token_type: Typically \"bearer\".\n    access_token_expire: Expiration time of the access token\n                         (epoch timestamp).\n    user: Detailed payload of the authenticated user."},"TokenOut":{"properties":{"accessToken":{"type":"string","title":"Accesstoken"},"access_token":{"type":"string","title":"Access Token"},"refresh_token":{"type":"string","title":"Refresh Token"},"access_token_expire":{"type":"integer","title":"Access Token Expire"}},"type":"object","required":["accessToken","access_token","refresh_token","access_token_expire"],"title":"TokenOut","description":"Basic token information without user payload.\n\nAttributes:\n    accessToken: Same as access_token but for legacy support or frontend.\n    access_token: JWT access token string.\n    refresh_token: Token used to refresh access.\n    access_token_expire: Expiration time of the access token."},"UpdatePassword":{"properties":{"token":{"type":"string","title":"Token","description":"Password reset token."},"password":{"type":"string","maxLength":256,"minLength":8,"title":"Password","description":"New password for the user account."},"confirm_password":{"type":"string","maxLength":256,"minLength":8,"title":"Confirm Password","description":"Confirmation of the new password."}},"type":"object","required":["token","password","confirm_password"],"title":"UpdatePassword","description":"Model for updating a user's password using a reset token."},"UpdatePasswordOut":{"properties":{"success":{"type":"boolean","title":"Success"}},"type":"object","required":["success"],"title":"UpdatePasswordOut"},"UserBulkContactRequest":{"properties":{"value":{"type":"string","maxLength":256,"minLength":1,"title":"Value","description":"Contact detail value."},"primary":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Primary","description":"Whether this contact detail should be primary. When omitted, the existing primary is kept when one exists; otherwise the first effective contact detail becomes primary."},"notifications":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Notifications","description":"Whether notifications are enabled for this contact detail. When omitted, newly created effective primary details default to true and newly created same-type secondary details default to false. Existing stored values are preserved."}},"type":"object","required":["value"],"title":"UserBulkContactRequest","description":"Contact detail request for bulk user upsert."},"UserBulkUpsertFailedResponse":{"properties":{"item_index":{"type":"integer","minimum":0.0,"title":"Item Index","description":"Zero-based index of the failed payload item."},"email":{"type":"string","title":"Email","description":"Root email from the failed payload item."},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username","description":"Username from the failed payload item, when provided."},"organization_uuid":{"type":"string","format":"uuid","title":"Organization Uuid","description":"Organization UUID from the failed payload item."},"reason":{"type":"string","minLength":1,"title":"Reason","description":"Failure reason for the payload item."}},"type":"object","required":["item_index","email","organization_uuid","reason"],"title":"UserBulkUpsertFailedResponse","description":"Failed bulk user upsert item."},"UserBulkUpsertRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email","description":"Email address used as the bulk upsert key."},"picture":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Picture","description":"Optional profile picture URL."},"language_uuid":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Language Uuid","description":"Optional preferred language UUID."},"role_uuid":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Role Uuid","description":"Optional role UUID. Defaults to BasicUser when omitted."},"username":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Username","description":"Optional username. Defaults to the root email when omitted."},"password":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Password","description":"Optional password. A random password is generated for new users when omitted."},"workspaces":{"anyOf":[{"items":{"$ref":"#/components/schemas/UserBulkWorkspaceRequest"},"type":"array"},{"type":"null"}],"title":"Workspaces","description":"Optional workspace assignments for the user. Required for new WorkspaceUser targets."},"primary_workspace_uuid":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Primary Workspace Uuid","description":"Optional primary workspace UUID. For new users, the first workspace is used when omitted."},"first_name":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"First Name","description":"User first name. Required when a new user is created."},"last_name":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Last Name","description":"User last name. Required when a new user is created."},"organization_uuid":{"type":"string","format":"uuid","title":"Organization Uuid","description":"Organization UUID that owns the user."},"emails":{"anyOf":[{"items":{"$ref":"#/components/schemas/UserBulkContactRequest"},"type":"array"},{"type":"null"}],"title":"Emails","description":"Optional email contact details for the user. The root email is always present in the final email contact detail set."},"phones":{"anyOf":[{"items":{"$ref":"#/components/schemas/UserBulkContactRequest"},"type":"array"},{"type":"null"}],"title":"Phones","description":"Optional phone contact details for the user."}},"type":"object","required":["email","organization_uuid"],"title":"UserBulkUpsertRequest","description":"One bulk user upsert payload item."},"UserBulkUpsertResponse":{"properties":{"created_new_users_count":{"type":"integer","minimum":0.0,"title":"Created New Users Count","description":"Number of newly created users."},"updated_users_count":{"type":"integer","minimum":0.0,"title":"Updated Users Count","description":"Number of existing users updated by email match."},"created_workspace_links_count":{"type":"integer","minimum":0.0,"title":"Created Workspace Links Count","description":"Number of newly created user-workspace links."},"failed":{"items":{"$ref":"#/components/schemas/UserBulkUpsertFailedResponse"},"type":"array","title":"Failed","description":"Payload items that failed validation or processing."}},"type":"object","required":["created_new_users_count","updated_users_count","created_workspace_links_count"],"title":"UserBulkUpsertResponse","description":"Aggregate response for bulk user upsert."},"UserBulkWorkspaceRequest":{"properties":{"workspace_uuid":{"type":"string","format":"uuid","title":"Workspace Uuid","description":"Workspace UUID to link to the user."},"allow_uninvited":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Allow Uninvited","description":"Whether uninvited visitors are allowed in this workspace. Defaults to true when omitted."}},"type":"object","required":["workspace_uuid"],"title":"UserBulkWorkspaceRequest","description":"Workspace request for bulk user upsert."},"UserContactDetailRouteCreate":{"properties":{"primary":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Primary"},"notifications":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Notifications"},"value":{"anyOf":[{"type":"string","maxLength":256,"minLength":0},{"type":"null"}],"title":"Value"}},"type":"object","title":"UserContactDetailRouteCreate","description":"Model for creating user contact details via API."},"UserContactDetailRouteUpdate":{"properties":{"primary":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Primary"},"notifications":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Notifications"},"value":{"anyOf":[{"type":"string","maxLength":256,"minLength":0},{"type":"null"}],"title":"Value"}},"type":"object","title":"UserContactDetailRouteUpdate","description":"Model for updating user contact details via API."},"UserDataOut":{"properties":{"id":{"type":"integer","title":"Id"},"uuid":{"type":"string","title":"Uuid"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"},"username":{"type":"string","title":"Username"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"picture":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Picture"},"user_type_name":{"type":"string","title":"User Type Name"},"audit_identity_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Audit Identity Id"},"organization":{"anyOf":[{"$ref":"#/components/schemas/OrganizationSimpleOut"},{"type":"null"}]},"workspaces":{"anyOf":[{"items":{"$ref":"#/components/schemas/UserWorkspaceOut"},"type":"array"},{"type":"null"}],"title":"Workspaces"},"contact_details":{"anyOf":[{"items":{"$ref":"#/components/schemas/ContactDetailOut"},"type":"array"},{"type":"null"}],"title":"Contact Details"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"},"provisioned_by":{"anyOf":[{"$ref":"#/components/schemas/ProvisionedByOut"},{"type":"null"}],"description":"Integration that provisioned the user via a directory integration; null for manually created users."},"role":{"anyOf":[{"$ref":"#/components/schemas/RoleForUserOut"},{"type":"null"}]}},"type":"object","required":["id","uuid","first_name","last_name","username","email","phone","picture","user_type_name","audit_identity_id","organization","workspaces","contact_details","created","updated","created_by","updated_by","role"],"title":"UserDataOut","description":"User response model with additional fields."},"UserDataOutForPage":{"properties":{"id":{"type":"integer","title":"Id"},"uuid":{"type":"string","title":"Uuid"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"},"username":{"type":"string","title":"Username"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"picture":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Picture"},"user_type_name":{"type":"string","title":"User Type Name"},"audit_identity_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Audit Identity Id"},"organization":{"anyOf":[{"$ref":"#/components/schemas/OrganizationSimpleOut"},{"type":"null"}]},"workspaces":{"anyOf":[{"items":{"$ref":"#/components/schemas/UserWorkspaceOut"},"type":"array"},{"type":"null"}],"title":"Workspaces"},"contact_details":{"anyOf":[{"items":{"$ref":"#/components/schemas/ContactDetailOut"},"type":"array"},{"type":"null"}],"title":"Contact Details"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"},"provisioned_by":{"anyOf":[{"$ref":"#/components/schemas/ProvisionedByOut"},{"type":"null"}],"description":"Integration that provisioned the user via a directory integration; null for manually created users."},"role":{"anyOf":[{"$ref":"#/components/schemas/RoleOutBase"},{"type":"null"}]}},"type":"object","required":["id","uuid","first_name","last_name","username","email","phone","picture","user_type_name","audit_identity_id","organization","workspaces","contact_details","created","updated","created_by","updated_by","role"],"title":"UserDataOutForPage","description":"User response model for pagination."},"UserEmailContactDetailRouteCreate":{"properties":{"primary":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Primary"},"notifications":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Notifications"},"value":{"anyOf":[{"type":"string","maxLength":256,"minLength":0,"format":"email"},{"type":"null"}],"title":"Value"}},"type":"object","title":"UserEmailContactDetailRouteCreate","description":"Model for creating user email contact details via API."},"UserEmailContactDetailRouteUpdate":{"properties":{"primary":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Primary"},"notifications":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Notifications"},"value":{"anyOf":[{"type":"string","maxLength":256,"minLength":0,"format":"email"},{"type":"null"}],"title":"Value"}},"type":"object","title":"UserEmailContactDetailRouteUpdate","description":"Model for updating user email contact details via API."},"UserEmailValidationOut":{"properties":{"email":{"type":"string","title":"Email"},"available":{"type":"boolean","title":"Available"},"same_organization":{"type":"boolean","title":"Same Organization"},"same_workspace":{"type":"boolean","title":"Same Workspace"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"workspace_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Workspace Ids"}},"type":"object","required":["email","available","same_organization","same_workspace"],"title":"UserEmailValidationOut","description":"Response model for email validation endpoint.\n\nIndicates whether an email is available for creating a new user,\nand provides context when the email is already in use."},"UserEmailValidationRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email","description":"Email address to validate."},"workspace_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Workspace Id","description":"Optional workspace context for validation."}},"type":"object","required":["email"],"title":"UserEmailValidationRequest","description":"Model for validating an email address."},"UserForWorkspaceOut":{"properties":{"id":{"type":"integer","title":"Id"},"user":{"$ref":"#/components/schemas/UserHostDataOut"},"allow_uninvited":{"type":"boolean","title":"Allow Uninvited"},"uuid":{"type":"string","title":"Uuid"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"}},"type":"object","required":["id","user","allow_uninvited","uuid","created","updated","created_by","updated_by"],"title":"UserForWorkspaceOut","description":"User response for workspace response model"},"UserHostDataOut":{"properties":{"id":{"type":"integer","title":"Id"},"uuid":{"type":"string","title":"Uuid"},"first_name":{"type":"string","title":"First Name"},"last_name":{"type":"string","title":"Last Name"},"contact_details":{"anyOf":[{"items":{"$ref":"#/components/schemas/ContactDetailOut"},"type":"array"},{"type":"null"}],"title":"Contact Details"},"picture":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Picture"},"language":{"anyOf":[{"$ref":"#/components/schemas/LanguageOut"},{"type":"null"}]},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"}},"type":"object","required":["id","uuid","first_name","last_name","contact_details","picture","language","created","updated","created_by","updated_by"],"title":"UserHostDataOut","description":"User host information response model"},"UserInformationRouteUpdate":{"properties":{"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email","description":"Email address of the user for login."},"phone":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Phone","description":"Phone number of the user."},"username":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Username","description":"Unique username for the user."},"picture":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Picture","description":"URL to the user's profile picture."},"first_name":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"First Name","description":"First name of the user."},"last_name":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Last Name","description":"Last name of the user."},"emails":{"anyOf":[{"items":{"$ref":"#/components/schemas/UserEmailContactDetailRouteUpdate"},"type":"array"},{"type":"null"}],"title":"Emails","description":"List of email contact details for the user."},"phones":{"anyOf":[{"items":{"$ref":"#/components/schemas/UserContactDetailRouteUpdate"},"type":"array"},{"type":"null"}],"title":"Phones","description":"List of phone contact details for the user."}},"type":"object","title":"UserInformationRouteUpdate","description":"Model for updating user information via API route."},"UserNotification":{"properties":{"workspace_id":{"type":"integer","exclusiveMinimum":0.0,"title":"Workspace Id","description":"ID of the workspace where the user for the notification is located."},"user_id":{"type":"integer","exclusiveMinimum":0.0,"title":"User Id","description":"ID of the user to be notified."},"notification_content":{"type":"string","title":"Notification Content","description":"Content of the notification to be sent to the user."}},"type":"object","required":["workspace_id","user_id","notification_content"],"title":"UserNotification","description":"Represents a user notification request model."},"UserPayloadOut":{"properties":{"id":{"type":"integer","title":"Id"},"type":{"type":"string","title":"Type"},"scope_id":{"type":"integer","title":"Scope Id"},"role":{"anyOf":[{"$ref":"#/components/schemas/RoleForUserOut"},{"type":"null"}]}},"type":"object","required":["id","type","scope_id","role"],"title":"UserPayloadOut"},"UserRouteCreate":{"properties":{"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email","description":"Email address of the user for login."},"phone":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Phone","description":"Phone number of the user."},"picture":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Picture","description":"URL to the user's profile picture."},"language_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Language Id","description":"ID of the user's preferred language."},"role_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Role Id","description":"ID of the role assigned to the user."},"username":{"anyOf":[{"type":"string","maxLength":256,"minLength":2},{"type":"null"}],"title":"Username","description":"Unique username for the user."},"password":{"anyOf":[{"type":"string","maxLength":256,"minLength":8},{"type":"null"}],"title":"Password","description":"Password for the user account."},"workspaces":{"anyOf":[{"items":{"$ref":"#/components/schemas/UserWorkspaceRouteCreate"},"type":"array"},{"type":"null"}],"title":"Workspaces","description":"List of workspaces to assign to the user."},"primary_workspace_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Primary Workspace Id","description":"ID of the user's primary workspace."},"first_name":{"type":"string","maxLength":256,"minLength":1,"title":"First Name","description":"First name of the user."},"last_name":{"type":"string","maxLength":256,"minLength":1,"title":"Last Name","description":"Last name of the user."},"organization_id":{"type":"integer","exclusiveMinimum":0.0,"title":"Organization Id","description":"ID of the organization the user belongs to."},"audit_identity_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Audit Identity Id","description":"ID of the audit identity for tracking changes."},"emails":{"anyOf":[{"items":{"$ref":"#/components/schemas/UserEmailContactDetailRouteCreate"},"type":"array"},{"type":"null"}],"title":"Emails","description":"List of email contact details for the user."},"phones":{"anyOf":[{"items":{"$ref":"#/components/schemas/UserContactDetailRouteCreate"},"type":"array"},{"type":"null"}],"title":"Phones","description":"List of phone contact details for the user."}},"type":"object","required":["first_name","last_name","organization_id"],"title":"UserRouteCreate","description":"Model for creating a user via API route."},"UserRouteUpdate":{"properties":{"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email","description":"Email address of the user for login."},"phone":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Phone","description":"Phone number of the user."},"picture":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Picture","description":"URL to the user's profile picture."},"language_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Language Id","description":"ID of the user's preferred language."},"role_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Role Id","description":"ID of the role assigned to the user."},"username":{"anyOf":[{"type":"string","maxLength":256,"minLength":2},{"type":"null"}],"title":"Username","description":"Unique username for the user."},"password":{"anyOf":[{"type":"string","maxLength":256,"minLength":8},{"type":"null"}],"title":"Password","description":"Password for the user account."},"first_name":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"First Name","description":"First name of the user."},"last_name":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Last Name","description":"Last name of the user."},"workspaces":{"anyOf":[{"items":{"$ref":"#/components/schemas/UserWorkspaceRouteCreate"},"type":"array"},{"type":"null"}],"title":"Workspaces","description":"List of workspaces to assign to the user."},"primary_workspace_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Primary Workspace Id","description":"ID of the user's primary workspace."},"emails":{"anyOf":[{"items":{"$ref":"#/components/schemas/UserEmailContactDetailRouteUpdate"},"type":"array"},{"type":"null"}],"title":"Emails","description":"List of email contact details for the user."},"phones":{"anyOf":[{"items":{"$ref":"#/components/schemas/UserContactDetailRouteUpdate"},"type":"array"},{"type":"null"}],"title":"Phones","description":"List of phone contact details for the user."}},"type":"object","title":"UserRouteUpdate","description":"Model for updating a user via API route."},"UserTypeOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"}},"type":"object","required":["id","name","description"],"title":"UserTypeOut","description":"User type response model."},"UserWorkspaceAddUserRoute":{"properties":{"user_id":{"type":"integer","exclusiveMinimum":0.0,"title":"User Id","description":"ID of the user to add to workspace. Required."},"allow_uninvited":{"type":"boolean","title":"Allow Uninvited","description":"Allow users to have uninvited visitors","default":true},"is_assistant":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Assistant","description":"Indicates if the user handles unhosted arrivals for this workspace. When omitted, an existing membership keeps its current value and a new membership defaults to False."}},"type":"object","required":["user_id"],"title":"UserWorkspaceAddUserRoute","description":"User workspace add user route model"},"UserWorkspaceOut":{"properties":{"id":{"type":"integer","title":"Id"},"uuid":{"type":"string","title":"Uuid"},"workspace_id":{"type":"integer","title":"Workspace Id"},"workspace_name":{"type":"string","title":"Workspace Name"},"is_primary":{"type":"boolean","title":"Is Primary"},"allow_uninvited":{"type":"boolean","title":"Allow Uninvited"},"is_assistant":{"type":"boolean","title":"Is Assistant"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"}},"type":"object","required":["id","uuid","workspace_id","workspace_name","is_primary","allow_uninvited","is_assistant","created","updated"],"title":"UserWorkspaceOut","description":"User workspace response model"},"UserWorkspaceRouteCreate":{"properties":{"workspace_id":{"type":"integer","exclusiveMinimum":0.0,"title":"Workspace Id","description":"ID of the workspace. Required."},"allow_uninvited":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Allow Uninvited","description":"Allow users to have uninvited visitors"}},"type":"object","required":["workspace_id"],"title":"UserWorkspaceRouteCreate","description":"User workspace route create model"},"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"},"VisitAllVisitorsOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"state":{"$ref":"#/components/schemas/StateOut"},"start_time":{"type":"string","format":"date-time","title":"Start Time"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"},"visit_type":{"anyOf":[{"$ref":"#/components/schemas/VisitTypeOutBase"},{"type":"null"}]},"lobby_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Lobby Id"},"workspace":{"anyOf":[{"$ref":"#/components/schemas/WorkspaceOut"},{"type":"null"}]},"info":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Info"},"visitors_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Visitors Count"},"visitor":{"anyOf":[{"$ref":"#/components/schemas/VisitorInstanceOut"},{"type":"null"}]},"hosts_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Hosts Count"},"host":{"anyOf":[{"$ref":"#/components/schemas/HostInstanceOut"},{"type":"null"}]},"visitors":{"anyOf":[{"items":{"$ref":"#/components/schemas/VisitorInstanceOut"},"type":"array"},{"type":"null"}],"title":"Visitors"}},"type":"object","required":["id","name","state","start_time","end_time","visit_type","lobby_id","workspace","info","visitors_count","visitor","hosts_count","host","visitors"],"title":"VisitAllVisitorsOut","description":"Visit all visitors data response model."},"VisitHostsOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"state":{"$ref":"#/components/schemas/StateOut"},"start_time":{"type":"string","format":"date-time","title":"Start Time"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"},"visit_type":{"anyOf":[{"$ref":"#/components/schemas/VisitTypeOutBase"},{"type":"null"}]},"hosts":{"items":{"$ref":"#/components/schemas/HostInstanceOut"},"type":"array","title":"Hosts"}},"type":"object","required":["id","name","state","start_time","end_time","visit_type","hosts"],"title":"VisitHostsOut","description":"Reponse model for Hosts of a Visit."},"VisitOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"state":{"$ref":"#/components/schemas/StateOut"},"start_time":{"type":"string","format":"date-time","title":"Start Time"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"},"visit_type":{"anyOf":[{"$ref":"#/components/schemas/VisitTypeOutBase"},{"type":"null"}]},"lobby_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Lobby Id"},"workspace":{"anyOf":[{"$ref":"#/components/schemas/WorkspaceOut"},{"type":"null"}]},"info":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Info"},"visitors_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Visitors Count"},"visitor":{"anyOf":[{"$ref":"#/components/schemas/VisitorInstanceOut"},{"type":"null"}]},"hosts_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Hosts Count"},"host":{"anyOf":[{"$ref":"#/components/schemas/HostInstanceOut"},{"type":"null"}]}},"type":"object","required":["id","name","state","start_time","end_time","visit_type","lobby_id","workspace","info","visitors_count","visitor","hosts_count","host"],"title":"VisitOut","description":"Visit default response model."},"VisitRouteCreate":{"properties":{"lobby_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Lobby Id"},"start_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"},"name":{"anyOf":[{"type":"string","maxLength":256,"minLength":0},{"type":"null"}],"title":"Name"},"info":{"anyOf":[{"type":"string","maxLength":1028,"minLength":0},{"type":"null"}],"title":"Info"},"visit_type_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Visit Type Id"},"workspace_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Workspace Id"},"visitors":{"anyOf":[{"items":{"$ref":"#/components/schemas/VisitorInstanceEndpointCreate"},"type":"array"},{"type":"null"}],"title":"Visitors"},"hosts":{"anyOf":[{"items":{"$ref":"#/components/schemas/HostInstanceRouteCreate"},"type":"array"},{"type":"null"}],"title":"Hosts"}},"type":"object","title":"VisitRouteCreate","description":"Visit route create model."},"VisitRouteUpdate":{"properties":{"lobby_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Lobby Id"},"start_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"},"name":{"anyOf":[{"type":"string","maxLength":256,"minLength":0},{"type":"null"}],"title":"Name"},"info":{"anyOf":[{"type":"string","maxLength":1028,"minLength":0},{"type":"null"}],"title":"Info"},"visit_type_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Visit Type Id"},"visitors":{"anyOf":[{"items":{"$ref":"#/components/schemas/VisitorInstanceEndpointUpdate"},"type":"array"},{"type":"null"}],"title":"Visitors"},"hosts":{"anyOf":[{"items":{"$ref":"#/components/schemas/HostInstanceRouteUpdate"},"type":"array"},{"type":"null"}],"title":"Hosts"}},"type":"object","title":"VisitRouteUpdate","description":"Visit route update model."},"VisitSelfServiceCreateRequest":{"properties":{"workspace_uuid":{"type":"string","maxLength":36,"minLength":36,"title":"Workspace Uuid","description":"UUID of the workspace where the visit is created."},"visit_type_uuid":{"anyOf":[{"type":"string","maxLength":36,"minLength":36},{"type":"null"}],"title":"Visit Type Uuid","description":"Optional UUID of the visit type."},"visitors":{"items":{"$ref":"#/components/schemas/VisitorInstanceSelfServiceCreate"},"type":"array","title":"Visitors","description":"Visitors created for the self-service visit."},"hosts":{"items":{"$ref":"#/components/schemas/HostInstanceSelfServiceCreate"},"type":"array","title":"Hosts","description":"Hosts attached to the self-service visit."}},"type":"object","required":["workspace_uuid","visitors","hosts"],"title":"VisitSelfServiceCreateRequest","description":"Self-service visit create request."},"VisitTypeBadgeTemplateRequest":{"properties":{"badge_template_uuid":{"type":"string","format":"uuid","title":"Badge Template Uuid","description":"UUID of the badge template to associate."}},"type":"object","required":["badge_template_uuid"],"title":"VisitTypeBadgeTemplateRequest","description":"Request body for setting a visit type's badge template."},"VisitTypeCreateRequest":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name","description":"Visit type name, unique within the workspace."},"description":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}],"title":"Description","description":"Visit type description."},"is_primary":{"type":"boolean","title":"Is Primary","description":"When True, the new visit type becomes the workspace primary, replacing any existing primary.","default":false}},"type":"object","required":["name"],"title":"VisitTypeCreateRequest","description":"Request body for creating a visit type within a workspace.\n\nThe workspace id is taken from the URL path, not the request body."},"VisitTypeIdentifierResponse":{"properties":{"visitor_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Visitor Id"},"id":{"type":"integer","title":"Id"},"uuid":{"type":"string","title":"Uuid"},"state":{"$ref":"#/components/schemas/StateOut"},"start_time":{"type":"string","format":"date-time","title":"Start Time"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"},"sign_in":{"anyOf":[{"$ref":"#/components/schemas/VisitorInstanceStateLogOut"},{"type":"null"}]},"sign_out":{"anyOf":[{"$ref":"#/components/schemas/VisitorInstanceStateLogOut"},{"type":"null"}]},"details":{"anyOf":[{"$ref":"#/components/schemas/VisitorInstanceDataOut"},{"type":"null"}]},"visitor":{"$ref":"#/components/schemas/VisitorForVisitorFlowOut"},"identifiers":{"items":{"$ref":"#/components/schemas/VisitorInstanceIdentifierBaseOut"},"type":"array","title":"Identifiers"},"agreements":{"anyOf":[{"items":{"$ref":"#/components/schemas/VisitorDocumentOut"},"type":"array"},{"type":"null"}],"title":"Agreements"},"send_message":{"type":"boolean","title":"Send Message"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"},"visit_id":{"type":"integer","title":"Visit Id"},"induction":{"anyOf":[{"$ref":"#/components/schemas/InductionResult"},{"type":"null"}],"description":"Induction result, when one can be resolved."}},"type":"object","required":["visitor_id","id","uuid","state","start_time","end_time","sign_in","sign_out","details","visitor","identifiers","agreements","send_message","created","updated","created_by","updated_by","visit_id"],"title":"VisitTypeIdentifierResponse","description":"Visitor-instance information returned by visit-type identifier lookups."},"VisitTypeModifyRequest":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Name","description":"Updated visit type name."},"description":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}],"title":"Description","description":"Updated visit type description."},"is_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Enabled","description":"Updated enabled flag."},"is_primary":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Primary","description":"Updated primary flag. A client-sent ``false`` is ignored; promotion to primary uses the dedicated primary endpoint logic."}},"type":"object","title":"VisitTypeModifyRequest","description":"Request body for updating a visit type."},"VisitTypeOutBase":{"properties":{"id":{"type":"integer","title":"Id"},"uuid":{"type":"string","title":"Uuid"},"name":{"type":"string","title":"Name"}},"type":"object","required":["id","uuid","name"],"title":"VisitTypeOutBase","description":"Base model for the visit type response."},"VisitTypeResponse":{"properties":{"id":{"type":"integer","exclusiveMinimum":0.0,"title":"Id","description":"Visit type id."},"uuid":{"type":"string","title":"Uuid","description":"Visit type UUID."},"name":{"type":"string","title":"Name","description":"Visit type name."},"description":{"type":"string","title":"Description","description":"Visit type description."},"is_enabled":{"type":"boolean","title":"Is Enabled","description":"Whether the visit type is enabled."},"is_primary":{"type":"boolean","title":"Is Primary","description":"Whether the visit type is the workspace primary."},"settings":{"items":{"$ref":"#/components/schemas/SettingResponse"},"type":"array","title":"Settings","description":"Visit type settings."},"fields":{"items":{"$ref":"#/components/schemas/VisitTypeWorkspaceFieldResponse"},"type":"array","title":"Fields","description":"Visit type workspace field links."},"visitor_badge_template":{"anyOf":[{"$ref":"#/components/schemas/app__apis__common__schemas__visit_type__BadgeTemplateResponse"},{"type":"null"}],"description":"Associated badge template, when present."}},"type":"object","required":["id","uuid","name","description","is_enabled","is_primary","settings","fields","visitor_badge_template"],"title":"VisitTypeResponse","description":"Visit type response with its related settings, fields, and badge template."},"VisitTypeSettingModifyRequest":{"properties":{"value":{"type":"string","title":"Value","description":"New setting value."}},"type":"object","required":["value"],"title":"VisitTypeSettingModifyRequest","description":"Request body for updating a visit type setting value."},"VisitTypeWorkspaceFieldModifyRequest":{"properties":{"is_optional":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Optional","description":"Updated optional flag."},"is_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Enabled","description":"Updated enabled flag."}},"type":"object","title":"VisitTypeWorkspaceFieldModifyRequest","description":"Request body for updating a visit type workspace field link."},"VisitTypeWorkspaceFieldOut":{"properties":{"id":{"type":"integer","title":"Id"},"uuid":{"type":"string","title":"Uuid"},"field":{"$ref":"#/components/schemas/FieldOut"},"is_enabled":{"type":"boolean","title":"Is Enabled"},"is_optional":{"type":"boolean","title":"Is Optional"},"values":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Values"}},"type":"object","required":["id","uuid","field","is_enabled","is_optional"],"title":"VisitTypeWorkspaceFieldOut","description":"VisitTypeWorkspaceField response model.\nThis model represents the response structure\nfor VisitTypeWorkspaceField."},"VisitTypeWorkspaceFieldResponse":{"properties":{"id":{"type":"integer","exclusiveMinimum":0.0,"title":"Id","description":"Visit type workspace field link id."},"uuid":{"type":"string","title":"Uuid","description":"Visit type workspace field link UUID."},"field":{"$ref":"#/components/schemas/app__apis__common__schemas__visit_type__FieldResponse","description":"Linked field."},"is_enabled":{"type":"boolean","title":"Is Enabled","description":"Whether the field link is enabled."},"is_optional":{"type":"boolean","title":"Is Optional","description":"Whether the field is optional."},"values":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Values","description":"Multi-value options for the field, when present."}},"type":"object","required":["id","uuid","field","is_enabled","is_optional"],"title":"VisitTypeWorkspaceFieldResponse","description":"Visit type workspace field link projection."},"VisitVisitorInstanceOut":{"properties":{"visitor_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Visitor Id"},"id":{"type":"integer","title":"Id"},"uuid":{"type":"string","title":"Uuid"},"state":{"$ref":"#/components/schemas/StateOut"},"start_time":{"type":"string","format":"date-time","title":"Start Time"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"},"sign_in":{"anyOf":[{"$ref":"#/components/schemas/VisitorInstanceStateLogOut"},{"type":"null"}]},"sign_out":{"anyOf":[{"$ref":"#/components/schemas/VisitorInstanceStateLogOut"},{"type":"null"}]},"details":{"anyOf":[{"$ref":"#/components/schemas/VisitorInstanceDataOut"},{"type":"null"}]},"visitor":{"$ref":"#/components/schemas/VisitorForVisitorFlowOut"},"identifiers":{"items":{"$ref":"#/components/schemas/VisitorInstanceIdentifierBaseOut"},"type":"array","title":"Identifiers"},"agreements":{"anyOf":[{"items":{"$ref":"#/components/schemas/VisitorDocumentOut"},"type":"array"},{"type":"null"}],"title":"Agreements"},"send_message":{"type":"boolean","title":"Send Message"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"},"visit_id":{"type":"integer","title":"Visit Id"}},"type":"object","required":["visitor_id","id","uuid","state","start_time","end_time","sign_in","sign_out","details","visitor","identifiers","agreements","send_message","created","updated","created_by","updated_by","visit_id"],"title":"VisitVisitorInstanceOut","description":"Visitor instance response model that includes visit ID information."},"VisitVisitorInstanceOutWithInduction":{"properties":{"visitor_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Visitor Id"},"id":{"type":"integer","title":"Id"},"uuid":{"type":"string","title":"Uuid"},"state":{"$ref":"#/components/schemas/StateOut"},"start_time":{"type":"string","format":"date-time","title":"Start Time"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"},"sign_in":{"anyOf":[{"$ref":"#/components/schemas/VisitorInstanceStateLogOut"},{"type":"null"}]},"sign_out":{"anyOf":[{"$ref":"#/components/schemas/VisitorInstanceStateLogOut"},{"type":"null"}]},"details":{"anyOf":[{"$ref":"#/components/schemas/VisitorInstanceDataOut"},{"type":"null"}]},"visitor":{"$ref":"#/components/schemas/VisitorForVisitorFlowOut"},"identifiers":{"items":{"$ref":"#/components/schemas/VisitorInstanceIdentifierBaseOut"},"type":"array","title":"Identifiers"},"agreements":{"anyOf":[{"items":{"$ref":"#/components/schemas/VisitorDocumentOut"},"type":"array"},{"type":"null"}],"title":"Agreements"},"send_message":{"type":"boolean","title":"Send Message"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"},"visit_id":{"type":"integer","title":"Visit Id"},"induction":{"anyOf":[{"$ref":"#/components/schemas/InductionResult"},{"type":"null"}]}},"type":"object","required":["visitor_id","id","uuid","state","start_time","end_time","sign_in","sign_out","details","visitor","identifiers","agreements","send_message","created","updated","created_by","updated_by","visit_id"],"title":"VisitVisitorInstanceOutWithInduction","description":"Visitor instance response model with additional induction result data."},"VisitVisitorsStateChangeOut":{"properties":{"visit_id":{"type":"integer","title":"Visit Id"},"updated_visitors":{"items":{"$ref":"#/components/schemas/VisitorStateChangeOut"},"type":"array","title":"Updated Visitors"}},"type":"object","required":["visit_id","updated_visitors"],"title":"VisitVisitorsStateChangeOut","description":"Visit state change response model."},"VisitorAgreementRequest":{"properties":{"name":{"type":"string","maxLength":256,"minLength":1,"title":"Name","description":"Name of the accepted document/agreement."}},"type":"object","required":["name"],"title":"VisitorAgreementRequest","description":"A document agreement accepted by the visitor."},"VisitorContactDetailRouteCreate":{"properties":{"primary":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Primary","description":"Indicates if this is the primary contact detail for the visitor. Optional."},"notifications":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Notifications","description":"Flag indicating whether this contact detail should receive notifications (e.g., visit confirmations, mobile badges). Optional."},"value":{"type":"string","title":"Value","description":"Contact detail value (e.g., phone number). Required."}},"type":"object","required":["value"],"title":"VisitorContactDetailRouteCreate"},"VisitorContactDetailRouteUpdate":{"properties":{"primary":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Primary","description":"Indicates if this is the primary contact detail for the visitor. Optional."},"notifications":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Notifications","description":"Flag indicating whether this contact detail should receive notifications (e.g., visit confirmations, mobile badges). Optional."},"value":{"type":"string","title":"Value","description":"Updated contact detail value (e.g., phone number). Required."}},"type":"object","required":["value"],"title":"VisitorContactDetailRouteUpdate"},"VisitorCreateRequest":{"properties":{"first_name":{"type":"string","maxLength":256,"minLength":1,"title":"First Name","description":"Visitor's first name (trimmed of whitespace)."},"last_name":{"type":"string","maxLength":256,"minLength":1,"title":"Last Name","description":"Visitor's last name (trimmed of whitespace)."},"uuid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uuid","description":"Optional UUID for the visitor; generated when omitted."},"workspace_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Workspace Id","description":"ID of the workspace the visitor is created in."},"visit_type_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Visit Type Id","description":"Visit type for the Pass induction check."},"language_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Language Id","description":"ID of the visitor's preferred language."},"picture":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Picture","description":"URL or path to the visitor's picture."},"company":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Company","description":"Company the visitor represents."},"email":{"anyOf":[{"items":{"$ref":"#/components/schemas/VisitorEmailRequest"},"type":"array"},{"type":"null"}],"title":"Email","description":"Email contact details for the visitor."},"phone":{"anyOf":[{"items":{"$ref":"#/components/schemas/VisitorPhoneRequest"},"type":"array"},{"type":"null"}],"title":"Phone","description":"Phone contact details for the visitor."},"fields":{"anyOf":[{"items":{"$ref":"#/components/schemas/VisitorFieldRequest"},"type":"array"},{"type":"null"}],"title":"Fields","description":"Custom field values for the visitor."}},"type":"object","required":["first_name","last_name"],"title":"VisitorCreateRequest","description":"Request body for creating a visitor."},"VisitorDocumentEndpointCreate":{"properties":{"name":{"type":"string","maxLength":256,"minLength":1,"title":"Name","description":"Name of the document/agreement being accepted (e.g., 'NDA', 'Privacy Policy', 'Terms of Visit'). Must be 1-256 characters. Required."}},"type":"object","required":["name"],"title":"VisitorDocumentEndpointCreate","description":"Visitor document endpoint create model"},"VisitorDocumentOut":{"properties":{"document_content_id":{"type":"integer","exclusiveMinimum":0.0,"title":"Document Content Id","description":"ID of the exact accepted document content version."},"name":{"type":"string","title":"Name"},"valid":{"type":"boolean","title":"Valid","default":false}},"type":"object","required":["document_content_id","name"],"title":"VisitorDocumentOut","description":"Visitor Document response model.\n\nNote! Valid field must be populated manually\nby VisitorDocument.populate_agreement_validity,\notherwise it will always be False"},"VisitorEmailContactDetailRouteCreate":{"properties":{"primary":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Primary","description":"Indicates if this is the primary contact detail for the visitor. Optional."},"notifications":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Notifications","description":"Flag indicating whether this contact detail should receive notifications (e.g., visit confirmations, mobile badges). Optional."},"value":{"type":"string","format":"email","title":"Value","description":"Valid email address for the visitor. Must be a properly formatted email address. Required."}},"type":"object","required":["value"],"title":"VisitorEmailContactDetailRouteCreate"},"VisitorEmailContactDetailRouteUpdate":{"properties":{"primary":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Primary","description":"Indicates if this is the primary contact detail for the visitor. Optional."},"notifications":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Notifications","description":"Flag indicating whether this contact detail should receive notifications (e.g., visit confirmations, mobile badges). Optional."},"value":{"type":"string","format":"email","title":"Value","description":"Updated valid email address for the visitor. Must be a properly formatted email address. Required."}},"type":"object","required":["value"],"title":"VisitorEmailContactDetailRouteUpdate"},"VisitorEmailRequest":{"properties":{"value":{"type":"string","format":"email","title":"Value","description":"Email address."},"primary":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Primary","description":"Whether this is the primary email."},"notifications":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Notifications","description":"Whether this email receives notifications."}},"type":"object","required":["value"],"title":"VisitorEmailRequest","description":"Email contact detail supplied with a visitor."},"VisitorEndpointCreate":{"properties":{"language_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Language Id","description":"ID of the visitor's preferred language for communications"},"picture":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Picture","description":"URL or path to the visitor's profile picture"},"company":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Company","description":"Name of the company the visitor represents"},"first_name":{"type":"string","maxLength":256,"minLength":1,"title":"First Name","description":"Visitor's first name (automatically trimmed of whitespace)"},"last_name":{"type":"string","maxLength":256,"minLength":1,"title":"Last Name","description":"Visitor's last name (automatically trimmed of whitespace)"},"uuid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uuid","description":"Optional UUID for the visitor, auto-generated if not provided"},"workspace_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Workspace Id","description":"ID of the workspace this visitor is being created in"},"visit_type_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Visit Type Id","description":"Type of visit for pass induction check (required for access control)"},"email":{"anyOf":[{"items":{"$ref":"#/components/schemas/VisitorEmailContactDetailRouteCreate"},"type":"array"},{"type":"null"}],"title":"Email","description":"List of email addresses for the visitor"},"phone":{"anyOf":[{"items":{"$ref":"#/components/schemas/VisitorContactDetailRouteCreate"},"type":"array"},{"type":"null"}],"title":"Phone","description":"List of phone numbers for the visitor"},"fields":{"anyOf":[{"items":{"$ref":"#/components/schemas/VisitorFieldRouteCreateUpdate"},"type":"array"},{"type":"null"}],"title":"Fields","description":"Custom field values specific to the workspace"}},"type":"object","required":["first_name","last_name"],"title":"VisitorEndpointCreate","description":"Visitor create model for endpoint."},"VisitorEndpointUpdate":{"properties":{"language_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Language Id","description":"ID of the visitor's preferred language for communications"},"picture":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Picture","description":"URL or path to the visitor's profile picture"},"company":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Company","description":"Name of the company the visitor represents"},"first_name":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"First Name","description":"Visitor's first name (automatically trimmed of whitespace)"},"last_name":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Last Name","description":"Visitor's last name (automatically trimmed of whitespace)"},"email":{"anyOf":[{"items":{"$ref":"#/components/schemas/VisitorEmailContactDetailRouteUpdate"},"type":"array"},{"type":"null"}],"title":"Email","description":"Updated list of email addresses for the visitor"},"phone":{"anyOf":[{"items":{"$ref":"#/components/schemas/VisitorContactDetailRouteUpdate"},"type":"array"},{"type":"null"}],"title":"Phone","description":"Updated list of phone numbers for the visitor"},"fields":{"anyOf":[{"items":{"$ref":"#/components/schemas/VisitorFieldRouteCreateUpdate"},"type":"array"},{"type":"null"}],"title":"Fields","description":"Updated custom field values specific to the workspace"},"accepted_agreements":{"anyOf":[{"items":{"$ref":"#/components/schemas/VisitorDocumentEndpointCreate"},"type":"array"},{"type":"null"}],"title":"Accepted Agreements","description":"List of documents and agreements accepted by the visitor"}},"type":"object","title":"VisitorEndpointUpdate","description":"Visitor update model for endpoint."},"VisitorFieldOut":{"properties":{"id":{"type":"integer","title":"Id"},"uuid":{"type":"string","title":"Uuid"},"field":{"$ref":"#/components/schemas/FieldOut"},"value":{"type":"string","title":"Value"}},"type":"object","required":["id","uuid","field","value"],"title":"VisitorFieldOut","description":"Visitor field response model."},"VisitorFieldRequest":{"properties":{"field_id":{"type":"integer","exclusiveMinimum":0.0,"title":"Field Id","description":"ID of the custom field definition."},"value":{"type":"string","title":"Value","description":"Value for the custom field."}},"type":"object","required":["field_id","value"],"title":"VisitorFieldRequest","description":"Custom field value supplied with a visitor."},"VisitorFieldResponse":{"properties":{"id":{"type":"integer","exclusiveMinimum":0.0,"title":"Id","description":"Visitor field id."},"uuid":{"type":"string","title":"Uuid","description":"Visitor field UUID."},"field":{"$ref":"#/components/schemas/app__apis__common__schemas__visitor__FieldResponse","description":"The custom field definition."},"value":{"type":"string","title":"Value","description":"The visitor's value for the field."}},"type":"object","required":["id","uuid","field","value"],"title":"VisitorFieldResponse","description":"Custom field value projection inside a visitor response."},"VisitorFieldRouteCreateUpdate":{"properties":{"value":{"type":"string","title":"Value","description":"Value of the custom field for the visitor (e.g., company name, badge number, employee ID). Required."},"field_id":{"type":"integer","exclusiveMinimum":0.0,"title":"Field Id","description":"ID of the custom field definition. Must be a positive integer."}},"type":"object","required":["value","field_id"],"title":"VisitorFieldRouteCreateUpdate","description":"VisitorField route create model."},"VisitorFieldSelfServiceCreate":{"properties":{"field_uuid":{"type":"string","maxLength":36,"minLength":36,"title":"Field Uuid","description":"UUID of the custom field definition."},"value":{"type":"string","title":"Value","description":"Value for the custom field."}},"type":"object","required":["field_uuid","value"],"title":"VisitorFieldSelfServiceCreate","description":"Self-service visitor custom-field value."},"VisitorFlowExtendedResponse":{"properties":{"visitor_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Visitor Id","description":"Visitor id."},"id":{"type":"integer","exclusiveMinimum":0.0,"title":"Id","description":"Visitor-instance id."},"state":{"$ref":"#/components/schemas/StateOut","description":"Visitor-instance state."},"start_time":{"type":"string","format":"date-time","title":"Start Time","description":"Visitor-instance start time."},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time","description":"Visitor-instance end time."},"sign_in":{"anyOf":[{"$ref":"#/components/schemas/VisitorInstanceStateLogOut"},{"type":"null"}],"description":"Latest sign-in log, when present."},"sign_out":{"anyOf":[{"$ref":"#/components/schemas/VisitorInstanceStateLogOut"},{"type":"null"}],"description":"Latest sign-out log, when present."},"details":{"anyOf":[{"$ref":"#/components/schemas/VisitorInstanceDataOut"},{"type":"null"}],"description":"Visitor-instance detail row."},"identifiers":{"items":{"$ref":"#/components/schemas/VisitorInstanceIdentifierBaseOut"},"type":"array","title":"Identifiers","description":"Visitor-instance identifiers."},"visitor":{"$ref":"#/components/schemas/VisitorForVisitorFlowOut","description":"Long-term visitor record."},"visit":{"anyOf":[{"$ref":"#/components/schemas/VisitorFlowVisitResponse"},{"type":"null"}],"description":"Visit projection."},"induction":{"anyOf":[{"$ref":"#/components/schemas/app__apis__common__schemas__visitor_flow__InductionResponse"},{"type":"null"}],"description":"Optional Pass induction result."},"created":{"type":"string","format":"date-time","title":"Created","description":"Creation timestamp."},"updated":{"type":"string","format":"date-time","title":"Updated","description":"Update timestamp."},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By","description":"Created-by audit id."},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By","description":"Updated-by audit id."},"agreements":{"anyOf":[{"items":{"$ref":"#/components/schemas/VisitorDocumentOut"},"type":"array"},{"type":"null"}],"title":"Agreements","description":"Accepted agreements relevant to the visit type."}},"type":"object","required":["visitor_id","id","state","start_time","end_time","sign_in","sign_out","details","visitor","visit","created","updated","created_by","updated_by","agreements"],"title":"VisitorFlowExtendedResponse","description":"Expected/signed-in visitor-flow list item with agreements."},"VisitorFlowResponse":{"properties":{"visitor_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Visitor Id","description":"Visitor id."},"id":{"type":"integer","exclusiveMinimum":0.0,"title":"Id","description":"Visitor-instance id."},"state":{"$ref":"#/components/schemas/StateOut","description":"Visitor-instance state."},"start_time":{"type":"string","format":"date-time","title":"Start Time","description":"Visitor-instance start time."},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time","description":"Visitor-instance end time."},"sign_in":{"anyOf":[{"$ref":"#/components/schemas/VisitorInstanceStateLogOut"},{"type":"null"}],"description":"Latest sign-in log, when present."},"sign_out":{"anyOf":[{"$ref":"#/components/schemas/VisitorInstanceStateLogOut"},{"type":"null"}],"description":"Latest sign-out log, when present."},"details":{"anyOf":[{"$ref":"#/components/schemas/VisitorInstanceDataOut"},{"type":"null"}],"description":"Visitor-instance detail row."},"identifiers":{"items":{"$ref":"#/components/schemas/VisitorInstanceIdentifierBaseOut"},"type":"array","title":"Identifiers","description":"Visitor-instance identifiers."},"visitor":{"$ref":"#/components/schemas/VisitorForVisitorFlowOut","description":"Long-term visitor record."},"visit":{"anyOf":[{"$ref":"#/components/schemas/VisitorFlowVisitResponse"},{"type":"null"}],"description":"Visit projection."},"induction":{"anyOf":[{"$ref":"#/components/schemas/app__apis__common__schemas__visitor_flow__InductionResponse"},{"type":"null"}],"description":"Optional Pass induction result."},"created":{"type":"string","format":"date-time","title":"Created","description":"Creation timestamp."},"updated":{"type":"string","format":"date-time","title":"Updated","description":"Update timestamp."},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By","description":"Created-by audit id."},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By","description":"Updated-by audit id."}},"type":"object","required":["visitor_id","id","state","start_time","end_time","sign_in","sign_out","details","visitor","visit","created","updated","created_by","updated_by"],"title":"VisitorFlowResponse","description":"Paginated visitor-flow list item."},"VisitorFlowVisitResponse":{"properties":{"id":{"type":"integer","exclusiveMinimum":0.0,"title":"Id","description":"Visit id."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Visit name."},"state":{"$ref":"#/components/schemas/StateOut","description":"Visit state."},"start_time":{"type":"string","format":"date-time","title":"Start Time","description":"Visit start time."},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time","description":"Visit end time."},"workspace":{"anyOf":[{"$ref":"#/components/schemas/WorkspaceSimpleWithOrganizationResponse"},{"type":"null"}],"description":"Visit workspace."},"visit_type":{"anyOf":[{"$ref":"#/components/schemas/VisitTypeOutBase"},{"type":"null"}],"description":"Visit type."},"info":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Info","description":"Visit info text."},"visitors_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Visitors Count","description":"Visitor count for the visit."},"hosts_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Hosts Count","description":"Host count for the visit."},"host":{"anyOf":[{"$ref":"#/components/schemas/HostInstanceOut"},{"type":"null"}],"description":"Primary host for the visit."}},"type":"object","required":["id","name","state","start_time","end_time","workspace","visit_type","info","visitors_count","hosts_count","host"],"title":"VisitorFlowVisitResponse","description":"Visit projection embedded in visitor-flow responses."},"VisitorForVisitorFlowOut":{"properties":{"id":{"type":"integer","title":"Id"},"uuid":{"type":"string","title":"Uuid"},"first_name":{"type":"string","title":"First Name"},"last_name":{"type":"string","title":"Last Name"},"workspace_id":{"type":"integer","title":"Workspace Id"},"language":{"anyOf":[{"$ref":"#/components/schemas/LanguageOut"},{"type":"null"}]}},"type":"object","required":["id","uuid","first_name","last_name","workspace_id","language"],"title":"VisitorForVisitorFlowOut","description":"Visitor response model for visitor flow."},"VisitorInstanceDataOut":{"properties":{"first_name":{"type":"string","title":"First Name"},"last_name":{"type":"string","title":"Last Name"},"picture":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Picture"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"},"fields":{"items":{"$ref":"#/components/schemas/VisitorFieldOut"},"type":"array","title":"Fields"},"id":{"type":"integer","title":"Id"},"uuid":{"type":"string","title":"Uuid"},"contact_details":{"anyOf":[{"items":{"$ref":"#/components/schemas/ContactDetailOut"},"type":"array"},{"type":"null"}],"title":"Contact Details"},"language":{"anyOf":[{"$ref":"#/components/schemas/LanguageOut"},{"type":"null"}]}},"type":"object","required":["first_name","last_name","picture","company","id","uuid","contact_details","language"],"title":"VisitorInstanceDataOut","description":"Visitor instance data default response model."},"VisitorInstanceDataSimpleOut":{"properties":{"first_name":{"type":"string","title":"First Name"},"last_name":{"type":"string","title":"Last Name"},"picture":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Picture"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"},"fields":{"items":{"$ref":"#/components/schemas/VisitorFieldOut"},"type":"array","title":"Fields"},"contact_details":{"anyOf":[{"items":{"$ref":"#/components/schemas/ContactDetailSimpleOut"},"type":"array"},{"type":"null"}],"title":"Contact Details"},"language":{"anyOf":[{"$ref":"#/components/schemas/LanguageSimpleOut"},{"type":"null"}]}},"type":"object","required":["first_name","last_name","picture","company","contact_details","language"],"title":"VisitorInstanceDataSimpleOut","description":"Visitor instance data simple response model."},"VisitorInstanceEndpointCreate":{"properties":{"visitor_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Visitor Id","description":"ID of an existing visitor to associate with this instance. Either visitor_id or visitor_data must be provided. Must be a positive integer if provided."},"visitor_data":{"anyOf":[{"$ref":"#/components/schemas/VisitorEndpointCreate"},{"type":"null"}],"description":"Data for creating a new visitor alongside this instance. Either visitor_id or visitor_data must be provided. Used when creating both visitor and instance in one request."},"state":{"type":"string","maxLength":128,"minLength":1,"title":"State","description":"State name of the visitor (e.g., 'expected', 'signed_in', 'signed_out'). Required field with 1-128 characters. Required."},"start_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time","description":"Timestamp when the visitor instance starts (typically sign-in time). Optional."},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time","description":"Timestamp when the visitor instance ends (typically sign-out time). Optional."},"accepted_agreements":{"anyOf":[{"items":{"$ref":"#/components/schemas/VisitorDocumentEndpointCreate"},"type":"array"},{"type":"null"}],"title":"Accepted Agreements","description":"List of visitor documents/agreements that the visitor has accepted (e.g., NDAs, terms of service). Optional."},"send_message":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Send Message","description":"Flag indicating whether to send notification messages to the visitor (e.g., mobile visitor badge via email/SMS). Optional."},"qr_code":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Qr Code","description":"QR code identifier for the visitor instance, used for check-in/check-out operations. Must be 1-64 characters if provided. Optional."},"state_log_detail":{"anyOf":[{"$ref":"#/components/schemas/VisitorInstanceStateLogDetailCreate"},{"type":"null"}],"description":"Optional analytics metadata stored on the sign-in/sign-out state-log row created for this visitor instance."}},"type":"object","required":["state"],"title":"VisitorInstanceEndpointCreate","description":"Visitor instance endpoint create model."},"VisitorInstanceEndpointUpdate":{"properties":{"visitor_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Visitor Id","description":"ID of the visitor to associate with this instance. Must be a positive integer if provided. Optional."},"visitor_data":{"anyOf":[{"$ref":"#/components/schemas/VisitorEndpointUpdate"},{"type":"null"}],"description":"Data for updating the associated visitor's information. Optional."},"state":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"State","description":"Updated state name of the visitor (e.g., 'expected', 'signed_in', 'signed_out'). Must be 1-128 characters if provided. Optional."},"start_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time","description":"Updated timestamp for when the visitor instance started. Optional."},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time","description":"Updated timestamp for when the visitor instance ended. Optional."},"accepted_agreements":{"anyOf":[{"items":{"$ref":"#/components/schemas/VisitorDocumentEndpointCreate"},"type":"array"},{"type":"null"}],"title":"Accepted Agreements","description":"Updated list of visitor documents/agreements accepted by the visitor. Optional."},"send_message":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Send Message","description":"Flag to control whether notification messages should be sent to the visitor. Optional."},"state_log_detail":{"anyOf":[{"$ref":"#/components/schemas/VisitorInstanceStateLogDetailCreate"},{"type":"null"}],"description":"Optional analytics metadata stored on the sign-in/sign-out state-log row created for this visitor instance update."}},"type":"object","title":"VisitorInstanceEndpointUpdate","description":"Visitor instance endpoint update model."},"VisitorInstanceIdentifierBaseOut":{"properties":{"id":{"type":"integer","title":"Id"},"uuid":{"type":"string","title":"Uuid"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"identifier":{"$ref":"#/components/schemas/IdentifierOut"}},"type":"object","required":["id","uuid","created","updated","identifier"],"title":"VisitorInstanceIdentifierBaseOut","description":"Identifier base response model"},"VisitorInstanceIdentifierSimpleOut":{"properties":{"identifier":{"$ref":"#/components/schemas/IdentifierSimpleOut"}},"type":"object","required":["identifier"],"title":"VisitorInstanceIdentifierSimpleOut","description":"Identifier simple response model"},"VisitorInstanceOut":{"properties":{"visitor_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Visitor Id"},"id":{"type":"integer","title":"Id"},"uuid":{"type":"string","title":"Uuid"},"state":{"$ref":"#/components/schemas/StateOut"},"start_time":{"type":"string","format":"date-time","title":"Start Time"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"},"sign_in":{"anyOf":[{"$ref":"#/components/schemas/VisitorInstanceStateLogOut"},{"type":"null"}]},"sign_out":{"anyOf":[{"$ref":"#/components/schemas/VisitorInstanceStateLogOut"},{"type":"null"}]},"details":{"anyOf":[{"$ref":"#/components/schemas/VisitorInstanceDataOut"},{"type":"null"}]},"visitor":{"$ref":"#/components/schemas/VisitorForVisitorFlowOut"},"identifiers":{"items":{"$ref":"#/components/schemas/VisitorInstanceIdentifierBaseOut"},"type":"array","title":"Identifiers"},"agreements":{"anyOf":[{"items":{"$ref":"#/components/schemas/VisitorDocumentOut"},"type":"array"},{"type":"null"}],"title":"Agreements"},"send_message":{"type":"boolean","title":"Send Message"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"}},"type":"object","required":["visitor_id","id","uuid","state","start_time","end_time","sign_in","sign_out","details","visitor","identifiers","agreements","send_message","created","updated","created_by","updated_by"],"title":"VisitorInstanceOut","description":"Standard visitor instance response model extending the base model."},"VisitorInstanceSelfServiceCreate":{"properties":{"visitor_data":{"$ref":"#/components/schemas/VisitorSelfServiceCreate","description":"Visitor data used to create or update the visitor."},"accepted_agreements":{"anyOf":[{"items":{"$ref":"#/components/schemas/VisitorDocumentEndpointCreate"},"type":"array"},{"type":"null"}],"title":"Accepted Agreements","description":"Optional agreements accepted during self-service sign-in."},"state_log_detail":{"anyOf":[{"$ref":"#/components/schemas/VisitorInstanceSelfServiceStateLogDetailCreate"},{"type":"null"}],"description":"Optional analytics metadata stored on the created sign-in state-log row."}},"type":"object","required":["visitor_data"],"title":"VisitorInstanceSelfServiceCreate","description":"Self-service visitor-instance create payload."},"VisitorInstanceSelfServiceStateLogDetailCreate":{"properties":{"duration_seconds":{"anyOf":[{"type":"integer","maximum":3600.0,"minimum":0.0},{"type":"null"}],"title":"Duration Seconds","description":"Optional sign-in duration in seconds for analytics."},"identification_method":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Identification Method","description":"Stable sign-in identification method lookup value."},"was_expected":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Was Expected","description":"Whether the sign-in was for an expected visitor."}},"type":"object","title":"VisitorInstanceSelfServiceStateLogDetailCreate","description":"Self-service analytics metadata for the created sign-in state log."},"VisitorInstanceStateLogDetailCreate":{"properties":{"duration_seconds":{"anyOf":[{"type":"integer","maximum":3600.0,"minimum":0.0},{"type":"null"}],"title":"Duration Seconds","description":"Optional sign-in duration in seconds for analytics."},"identification_method":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Identification Method","description":"Stable sign-in identification method lookup value."},"was_expected":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Was Expected","description":"Whether the sign-in was for an expected visitor."},"is_group_action":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Group Action","description":"Whether the action was part of a group or bulk flow."},"group_size":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Group Size","description":"Number of visitors included in the group action."}},"type":"object","title":"VisitorInstanceStateLogDetailCreate","description":"Optional analytics metadata stored for sign-in and sign-out logs."},"VisitorInstanceStateLogOut":{"properties":{"time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Time","description":"Timestamp of the state-log entry."},"application":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Application","description":"Application or channel that triggered the state change."},"duration_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Seconds","description":"Optional sign-in duration in seconds for analytics."},"identification_method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Identification Method","description":"Optional stable sign-in identification method value."},"was_expected":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Was Expected","description":"Whether the sign-in was for an expected visitor."},"is_group_action":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Group Action","description":"Whether the action was part of a group or bulk flow."},"group_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Group Size","description":"Number of visitors included in the group action."},"device_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Device Id","description":"Self-service/kiosk device that performed the sign-in or sign-out, when the action was done on a device."}},"type":"object","title":"VisitorInstanceStateLogOut","description":"Visitor instance state log response model."},"VisitorLogin":{"properties":{"identifier":{"type":"string","minLength":1,"title":"Identifier","description":"Unique identifier used for visitor authentication (e.g., QR code, email, or visitor code)"}},"type":"object","required":["identifier"],"title":"VisitorLogin","description":"Visitor login model."},"VisitorModifyRequest":{"properties":{"first_name":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"First Name","description":"Updated first name (trimmed of whitespace)."},"last_name":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Last Name","description":"Updated last name (trimmed of whitespace)."},"language_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Language Id","description":"Updated preferred language."},"picture":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Picture","description":"Updated picture."},"company":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Company","description":"Updated company."},"email":{"anyOf":[{"items":{"$ref":"#/components/schemas/VisitorEmailRequest"},"type":"array"},{"type":"null"}],"title":"Email","description":"Replacement email contact details."},"phone":{"anyOf":[{"items":{"$ref":"#/components/schemas/VisitorPhoneRequest"},"type":"array"},{"type":"null"}],"title":"Phone","description":"Replacement phone contact details."},"fields":{"anyOf":[{"items":{"$ref":"#/components/schemas/VisitorFieldRequest"},"type":"array"},{"type":"null"}],"title":"Fields","description":"Custom field values to create or update."},"accepted_agreements":{"anyOf":[{"items":{"$ref":"#/components/schemas/VisitorAgreementRequest"},"type":"array"},{"type":"null"}],"title":"Accepted Agreements","description":"Document agreements accepted by the visitor."}},"type":"object","title":"VisitorModifyRequest","description":"Request body for updating a visitor."},"VisitorPhoneRequest":{"properties":{"value":{"type":"string","title":"Value","description":"Phone number."},"primary":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Primary","description":"Whether this is the primary phone."},"notifications":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Notifications","description":"Whether this phone receives notifications."}},"type":"object","required":["value"],"title":"VisitorPhoneRequest","description":"Phone contact detail supplied with a visitor."},"VisitorResponse":{"properties":{"id":{"type":"integer","exclusiveMinimum":0.0,"title":"Id","description":"Visitor id."},"uuid":{"type":"string","title":"Uuid","description":"Visitor UUID."},"first_name":{"type":"string","title":"First Name","description":"Visitor's first name."},"last_name":{"type":"string","title":"Last Name","description":"Visitor's last name."},"workspace":{"$ref":"#/components/schemas/WorkspaceSimpleResponse","description":"Workspace the visitor belongs to."},"organization":{"$ref":"#/components/schemas/OrganizationSimpleResponse","description":"Organization the visitor's workspace belongs to."},"contact_details":{"anyOf":[{"items":{"$ref":"#/components/schemas/ContactDetailResponse"},"type":"array"},{"type":"null"}],"title":"Contact Details","description":"The visitor's contact details."},"fields":{"items":{"$ref":"#/components/schemas/VisitorFieldResponse"},"type":"array","title":"Fields","description":"The visitor's custom field values.","default":[]},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company","description":"The visitor's company."},"picture":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Picture","description":"The visitor's picture."},"language":{"anyOf":[{"$ref":"#/components/schemas/LanguageOut"},{"type":"null"}],"description":"The visitor's preferred language."},"created":{"type":"string","format":"date-time","title":"Created","description":"Creation timestamp."},"updated":{"type":"string","format":"date-time","title":"Updated","description":"Last update timestamp."},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By","description":"Audit identity id that created the visitor."},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By","description":"Audit identity id that last updated the visitor."}},"type":"object","required":["id","uuid","first_name","last_name","workspace","organization","contact_details","company","picture","language","created","updated","created_by","updated_by"],"title":"VisitorResponse","description":"Visitor response with its workspace, organization, contacts, and fields."},"VisitorSelfServiceCreate":{"properties":{"first_name":{"type":"string","maxLength":256,"minLength":1,"title":"First Name","description":"Visitor first name."},"last_name":{"type":"string","maxLength":256,"minLength":1,"title":"Last Name","description":"Visitor last name."},"language_uuid":{"anyOf":[{"type":"string","maxLength":36,"minLength":36},{"type":"null"}],"title":"Language Uuid","description":"Optional language UUID for the visitor."},"picture":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Picture","description":"Optional visitor picture URL or identifier."},"email":{"anyOf":[{"items":{"$ref":"#/components/schemas/VisitorEmailContactDetailRouteCreate"},"type":"array"},{"type":"null"}],"title":"Email","description":"Optional visitor email contact details."},"phone":{"anyOf":[{"items":{"$ref":"#/components/schemas/VisitorContactDetailRouteCreate"},"type":"array"},{"type":"null"}],"title":"Phone","description":"Optional visitor phone contact details."},"fields":{"anyOf":[{"items":{"$ref":"#/components/schemas/VisitorFieldSelfServiceCreate"},"type":"array"},{"type":"null"}],"title":"Fields","description":"Optional visitor custom field values."}},"type":"object","required":["first_name","last_name"],"title":"VisitorSelfServiceCreate","description":"Self-service visitor payload."},"VisitorStateChangeOut":{"properties":{"visitor_id":{"type":"integer","title":"Visitor Id"},"visitor_instance_id":{"type":"integer","title":"Visitor Instance Id"},"old_state":{"type":"string","title":"Old State"},"new_state":{"type":"string","title":"New State"}},"type":"object","required":["visitor_id","visitor_instance_id","old_state","new_state"],"title":"VisitorStateChangeOut","description":"Visitor state change response model."},"VisitorWithInductionResponse":{"properties":{"id":{"type":"integer","exclusiveMinimum":0.0,"title":"Id","description":"Visitor id."},"uuid":{"type":"string","title":"Uuid","description":"Visitor UUID."},"first_name":{"type":"string","title":"First Name","description":"Visitor's first name."},"last_name":{"type":"string","title":"Last Name","description":"Visitor's last name."},"workspace":{"$ref":"#/components/schemas/WorkspaceSimpleResponse","description":"Workspace the visitor belongs to."},"organization":{"$ref":"#/components/schemas/OrganizationSimpleResponse","description":"Organization the visitor's workspace belongs to."},"contact_details":{"anyOf":[{"items":{"$ref":"#/components/schemas/ContactDetailResponse"},"type":"array"},{"type":"null"}],"title":"Contact Details","description":"The visitor's contact details."},"fields":{"items":{"$ref":"#/components/schemas/VisitorFieldResponse"},"type":"array","title":"Fields","description":"The visitor's custom field values.","default":[]},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company","description":"The visitor's company."},"picture":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Picture","description":"The visitor's picture."},"language":{"anyOf":[{"$ref":"#/components/schemas/LanguageOut"},{"type":"null"}],"description":"The visitor's preferred language."},"created":{"type":"string","format":"date-time","title":"Created","description":"Creation timestamp."},"updated":{"type":"string","format":"date-time","title":"Updated","description":"Last update timestamp."},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By","description":"Audit identity id that created the visitor."},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By","description":"Audit identity id that last updated the visitor."},"induction":{"anyOf":[{"$ref":"#/components/schemas/app__apis__common__schemas__workspace_visitor__InductionResponse"},{"type":"null"}],"description":"Induction details when a visit type triggers a check."}},"type":"object","required":["id","uuid","first_name","last_name","workspace","organization","contact_details","company","picture","language","created","updated","created_by","updated_by"],"title":"VisitorWithInductionResponse","description":"Visitor response including optional Pass induction details."},"WorkspaceBaseOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"uuid":{"type":"string","title":"Uuid"},"parent_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Id"},"child_workspaces":{"anyOf":[{"items":{"$ref":"#/components/schemas/WorkspaceChildOut"},"type":"array"},{"type":"null"}],"title":"Child Workspaces"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"}},"type":"object","required":["id","name","logo_url","uuid","parent_id","child_workspaces","created","updated","created_by","updated_by"],"title":"WorkspaceBaseOut","description":"Workspace for organization response model."},"WorkspaceChildOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"uuid":{"type":"string","title":"Uuid"},"organization":{"$ref":"#/components/schemas/OrganizationOut"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"}},"type":"object","required":["id","name","logo_url","uuid","organization","created","updated","created_by","updated_by"],"title":"WorkspaceChildOut","description":"Workspace child response model."},"WorkspaceCreate":{"properties":{"parent_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Parent Id"},"name":{"type":"string","maxLength":256,"minLength":1,"title":"Name"},"organization_id":{"type":"integer","exclusiveMinimum":0.0,"title":"Organization Id"},"template":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Template"}},"type":"object","required":["name","organization_id"],"title":"WorkspaceCreate","description":"Model for creating a new workspace.\n\nThis model extends `WorkspaceBase` and includes additional attributes \nrequired for creating a workspace.\n\nAttributes\n----------\nname : str\n    The name of the workspace (1-256 characters).\norganization_id : int\n    The ID of the organization to which the workspace belongs.\ntemplate : int | None, optional\n    The ID of a template workspace, if applicable."},"WorkspaceDetailOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"uuid":{"type":"string","title":"Uuid"},"parent_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Id"},"child_workspaces":{"anyOf":[{"items":{"$ref":"#/components/schemas/WorkspaceChildOut"},"type":"array"},{"type":"null"}],"title":"Child Workspaces"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"},"organization":{"$ref":"#/components/schemas/OrganizationOut"},"self_service_identifier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Self Service Identifier","description":"Value of the workspace's last currently-valid QR Code identifier, or null when no such identifier exists."},"self_service_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Self Service Url","description":"Full self-service URL of the form {BASE_MOBILE_URL}/signin/{identifier}. Null when no valid QR Code identifier exists or when BASE_MOBILE_URL is empty."},"single_host_uuid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Single Host Uuid","description":"UUID of the workspace's sole eligible host. Eligibility matches GET /self-service/users: any user linked to the workspace via user_workspace with allow_uninvited = True, regardless of user type. Null when zero or two or more users match."}},"type":"object","required":["id","name","logo_url","uuid","parent_id","child_workspaces","created","updated","created_by","updated_by","organization"],"title":"WorkspaceDetailOut","description":"Workspace detail response model.\n\nExtends WorkspaceOut with single-fetch-only fields exposed by\nGET /workspaces/{workspace_id}. The list endpoint keeps returning\nWorkspaceOut and must not include these fields."},"WorkspaceFieldCreateRequest":{"properties":{"name":{"type":"string","maxLength":256,"minLength":1,"title":"Name","description":"Field name, unique within the workspace."},"description":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}],"title":"Description","description":"Field description; defaults to the name when omitted."},"data_type_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Data Type Id","description":"Data type id; defaults to the text data type when omitted."},"is_unique":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Unique","description":"Whether the field value must be unique."},"values":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Values","description":"Multi-value options to attach to the field."}},"type":"object","required":["name"],"title":"WorkspaceFieldCreateRequest","description":"Request body for creating or attaching a field to a workspace."},"WorkspaceFieldModifyRequest":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Name","description":"Updated field name."},"description":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}],"title":"Description","description":"Updated field description."},"data_type_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Data Type Id","description":"Updated data type id."},"is_unique":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Unique","description":"Updated uniqueness flag."},"values":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Values","description":"Updated multi-value options. Omitting the key leaves the existing options unchanged; an empty list removes them."}},"type":"object","title":"WorkspaceFieldModifyRequest","description":"Request body for updating a workspace field and its multi-value options."},"WorkspaceFieldResponse":{"properties":{"field":{"$ref":"#/components/schemas/app__apis__common__schemas__workspace_field__FieldResponse","description":"Linked field."},"values":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Values","description":"Multi-value options for the field, when present."}},"type":"object","required":["field"],"title":"WorkspaceFieldResponse","description":"Workspace field link projection with its optional multi-value options."},"WorkspaceForDeviceOut":{"properties":{"id":{"type":"integer","title":"Id"},"uuid":{"type":"string","title":"Uuid"},"lobby_workspace":{"$ref":"#/components/schemas/LobbyWorkspaceOut"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"}},"type":"object","required":["id","uuid","lobby_workspace","created","updated","created_by","updated_by"],"title":"WorkspaceForDeviceOut"},"WorkspaceForLobbyOut":{"properties":{"id":{"type":"integer","title":"Id"},"uuid":{"type":"string","title":"Uuid"},"workspace":{"$ref":"#/components/schemas/WorkspaceOut"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"}},"type":"object","required":["id","uuid","workspace","created","updated","created_by","updated_by"],"title":"WorkspaceForLobbyOut"},"WorkspaceIdentifierResponse":{"properties":{"id":{"type":"integer","exclusiveMinimum":0.0,"title":"Id","description":"Workspace identifier link id."},"uuid":{"type":"string","maxLength":36,"minLength":36,"title":"Uuid","description":"Workspace identifier link UUID."},"valid_from":{"type":"string","format":"date-time","title":"Valid From","description":"Validity start timestamp."},"valid_to":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Valid To","description":"Validity end timestamp (null when open-ended)."},"identifier":{"$ref":"#/components/schemas/WorkspaceIdentifierValueResponse","description":"Underlying identifier value and type."}},"type":"object","required":["id","uuid","valid_from","identifier"],"title":"WorkspaceIdentifierResponse","description":"Response schema for a workspace identifier link."},"WorkspaceIdentifierRotateRequest":{"properties":{"value":{"anyOf":[{"type":"string","maxLength":36,"minLength":36},{"type":"null"}],"title":"Value","description":"Optional new identifier value as a UUID string. When omitted, the backend generates a new UUID value."},"previous_identifier_valid_for_seconds":{"type":"integer","minimum":0.0,"title":"Previous Identifier Valid For Seconds","description":"How long the previous active identifier remains valid after rotation.","default":60}},"type":"object","title":"WorkspaceIdentifierRotateRequest","description":"Request schema for rotating a workspace identifier."},"WorkspaceIdentifierValueResponse":{"properties":{"value":{"type":"string","title":"Value","description":"Identifier value string."},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type","description":"Identifier type name (for example, ``QR Code``)."}},"type":"object","required":["value"],"title":"WorkspaceIdentifierValueResponse","description":"Response schema for the underlying identifier value and type."},"WorkspaceIntegrationOut":{"properties":{"workspace_id":{"type":"integer","title":"Workspace Id"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id"},"external_id_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id Type","description":"Type classification for the external workspace identifier."}},"type":"object","required":["workspace_id"],"title":"WorkspaceIntegrationOut","description":"Model for the WorkspaceIntegration response."},"WorkspaceIntegrationRouteCreate":{"properties":{"external_id":{"anyOf":[{"type":"string","maxLength":1024,"minLength":1},{"type":"null"}],"title":"External Id"},"external_id_type":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"External Id Type","description":"Type classification for the external workspace identifier."},"workspace_id":{"type":"integer","exclusiveMinimum":0.0,"title":"Workspace Id"}},"type":"object","required":["workspace_id"],"title":"WorkspaceIntegrationRouteCreate","description":"Workspace integration route create model"},"WorkspaceLanguageBase":{"properties":{"language_id":{"type":"integer","exclusiveMinimum":0.0,"title":"Language Id"},"is_primary":{"type":"boolean","title":"Is Primary"}},"type":"object","required":["language_id","is_primary"],"title":"WorkspaceLanguageBase","description":"Workspace language base request model.\n\nAttributes:\n    language_id (int): The ID of the language.\n    is_primary (bool): Whether the language is the primary"},"WorkspaceLanguageOut":{"properties":{"is_primary":{"type":"boolean","title":"Is Primary"},"language":{"$ref":"#/components/schemas/LanguageOut"}},"type":"object","required":["is_primary","language"],"title":"WorkspaceLanguageOut","description":"Model for the WorkspaceLanguages response."},"WorkspaceLanguageRouteUpdate":{"properties":{"values":{"items":{"$ref":"#/components/schemas/WorkspaceLanguageBase"},"type":"array","title":"Values"}},"type":"object","required":["values"],"title":"WorkspaceLanguageRouteUpdate","description":"Workspace language route request model."},"WorkspaceLanguagesOut":{"properties":{"id":{"type":"integer","title":"Id"},"languages":{"anyOf":[{"items":{"$ref":"#/components/schemas/WorkspaceLanguageOut"},"type":"array"},{"type":"null"}],"title":"Languages"}},"type":"object","required":["id"],"title":"WorkspaceLanguagesOut","description":"Model for the WorkspaceLanguages response."},"WorkspaceOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"uuid":{"type":"string","title":"Uuid"},"parent_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Id"},"child_workspaces":{"anyOf":[{"items":{"$ref":"#/components/schemas/WorkspaceChildOut"},"type":"array"},{"type":"null"}],"title":"Child Workspaces"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"},"organization":{"$ref":"#/components/schemas/OrganizationOut"}},"type":"object","required":["id","name","logo_url","uuid","parent_id","child_workspaces","created","updated","created_by","updated_by","organization"],"title":"WorkspaceOut","description":"Workspace default response model."},"WorkspaceRuleOut":{"properties":{"rule":{"$ref":"#/components/schemas/RuleOut"},"values":{"items":{"$ref":"#/components/schemas/WorkspaceRuleValueOut"},"type":"array","title":"Values"},"workspace_id":{"type":"integer","title":"Workspace Id"}},"type":"object","required":["rule","values","workspace_id"],"title":"WorkspaceRuleOut","description":"Model for the WorkspaceRule response."},"WorkspaceRuleOutBase":{"properties":{"rule":{"$ref":"#/components/schemas/RuleOut"},"values":{"items":{"$ref":"#/components/schemas/WorkspaceRuleValueOut"},"type":"array","title":"Values"}},"type":"object","required":["rule","values"],"title":"WorkspaceRuleOutBase","description":"Model for the WorkspaceRule response."},"WorkspaceRuleRouteUpdate":{"properties":{"values":{"items":{"type":"string"},"type":"array","title":"Values"}},"type":"object","required":["values"],"title":"WorkspaceRuleRouteUpdate","description":"Model for updating a WorkspaceRule in the route.\n\nAttributes:\n    values (list[str]): The list of values for the rule."},"WorkspaceRuleValueOut":{"properties":{"value":{"type":"string","title":"Value"}},"type":"object","required":["value"],"title":"WorkspaceRuleValueOut","description":"Model for the WorkspaceRuleValue response."},"WorkspaceRulesOut":{"properties":{"id":{"type":"integer","title":"Id"},"rules":{"anyOf":[{"items":{"$ref":"#/components/schemas/WorkspaceRuleOutBase"},"type":"array"},{"type":"null"}],"title":"Rules"}},"type":"object","required":["id"],"title":"WorkspaceRulesOut","description":"Model for the WorkspaceRules response."},"WorkspaceSettingCreateWithKey":{"properties":{"value":{"type":"string","title":"Value","description":"The setting value"},"setting_metadata_key":{"type":"string","maxLength":50,"title":"Setting Metadata Key","description":"The setting metadata key"}},"type":"object","required":["value","setting_metadata_key"],"title":"WorkspaceSettingCreateWithKey","description":"Model for workspace setting creation in route\nwith setting metadata key."},"WorkspaceSettingDBUpdate":{"properties":{"value":{"type":"string","title":"Value","description":"The setting value"}},"type":"object","required":["value"],"title":"WorkspaceSettingDBUpdate","description":"Model for workspace setting update in database."},"WorkspaceSettingsOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"settings":{"items":{"$ref":"#/components/schemas/SettingOut"},"type":"array","title":"Settings"}},"type":"object","required":["id","name","logo_url","settings"],"title":"WorkspaceSettingsOut","description":"Reponse model for Workspace Visitors."},"WorkspaceSimpleResponse":{"properties":{"id":{"type":"integer","exclusiveMinimum":0.0,"title":"Id","description":"Workspace id."},"name":{"type":"string","title":"Name","description":"Workspace name."},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url","description":"Workspace logo URL."},"physical_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Physical Address","description":"Workspace physical address."}},"type":"object","required":["id","name","logo_url","physical_address"],"title":"WorkspaceSimpleResponse","description":"Workspace projection inside a visitor response."},"WorkspaceSimpleWithOrganizationOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"physical_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Physical Address"},"organization":{"$ref":"#/components/schemas/OrganizationSimpleOut"}},"type":"object","required":["id","name","logo_url","physical_address","organization"],"title":"WorkspaceSimpleWithOrganizationOut","description":"Workspace simple with organization response model."},"WorkspaceSimpleWithOrganizationResponse":{"properties":{"id":{"type":"integer","exclusiveMinimum":0.0,"title":"Id","description":"Workspace id."},"name":{"type":"string","title":"Name","description":"Workspace name."},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url","description":"Workspace logo URL."},"physical_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Physical Address","description":"Workspace physical address."},"organization":{"$ref":"#/components/schemas/OrganizationBaseOut","description":"Workspace organization."}},"type":"object","required":["id","name","logo_url","physical_address","organization"],"title":"WorkspaceSimpleWithOrganizationResponse","description":"Workspace projection used inside visitor-flow visit responses."},"WorkspaceUpdate":{"properties":{"parent_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Parent Id"},"name":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Name"},"organization_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Organization Id"}},"type":"object","title":"WorkspaceUpdate","description":"Model for updating an existing workspace.\n\nExtends `WorkspaceBase` and allows for partial updates to a workspace.\n\nAttributes\n----------\nname : str | None, optional\n    The name of the workspace (1-256 characters).\norganization_id : int | None, optional\n    The ID of the organization associated with the workspace."},"WorkspaceVisitTypesResponse":{"properties":{"id":{"type":"integer","exclusiveMinimum":0.0,"title":"Id","description":"Workspace id."},"name":{"type":"string","title":"Name","description":"Workspace name."},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url","description":"Workspace square-logo URL, or null when unset."},"visit_types":{"items":{"$ref":"#/components/schemas/VisitTypeResponse"},"type":"array","title":"Visit Types","description":"Visit types belonging to the workspace."}},"type":"object","required":["id","name","logo_url","visit_types"],"title":"WorkspaceVisitTypesResponse","description":"Workspace projection listing its visit types.\n\nMirrors the legacy ``WorkspaceVisitTypeOut``: the workspace identity plus\nthe ``logo_url`` derived from the workspace's square-logo setting, followed\nby the workspace's visit types with their full response tree."},"WorkspaceWithUsersOut":{"properties":{"id":{"type":"integer","title":"Id"},"organization":{"$ref":"#/components/schemas/OrganizationOut"},"name":{"type":"string","title":"Name"},"uuid":{"type":"string","title":"Uuid"},"created":{"type":"string","format":"date-time","title":"Created"},"updated":{"type":"string","format":"date-time","title":"Updated"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"},"users":{"anyOf":[{"items":{"$ref":"#/components/schemas/UserForWorkspaceOut"},"type":"array"},{"type":"null"}],"title":"Users"}},"type":"object","required":["id","organization","name","uuid","created","updated","created_by","updated_by"],"title":"WorkspaceWithUsersOut","description":"Workspace with users response model\nThis model includes the workspace details along\nwith the users associated with it."},"app__apis__common__schemas__visit_type__BadgeTemplateResponse":{"properties":{"uuid":{"type":"string","title":"Uuid","description":"Badge template UUID."},"name":{"type":"string","title":"Name","description":"Badge template name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Badge template description."},"is_primary":{"type":"boolean","title":"Is Primary","description":"Whether this is the primary badge template."},"value":{"type":"string","title":"Value","description":"Badge template value."}},"type":"object","required":["uuid","name","description","is_primary","value"],"title":"BadgeTemplateResponse","description":"Badge template projection associated with a visit type."},"app__apis__common__schemas__visit_type__FieldResponse":{"properties":{"id":{"type":"integer","exclusiveMinimum":0.0,"title":"Id","description":"Field id."},"uuid":{"type":"string","title":"Uuid","description":"Field UUID."},"name":{"type":"string","title":"Name","description":"Field name."},"type":{"type":"string","title":"Type","description":"Field data type name."},"description":{"type":"string","title":"Description","description":"Field description."},"is_unique":{"type":"boolean","title":"Is Unique","description":"Whether the field value must be unique."},"is_global":{"type":"boolean","title":"Is Global","description":"Whether the field is global rather than organization-scoped."}},"type":"object","required":["id","uuid","name","type","description","is_unique","is_global"],"title":"FieldResponse","description":"Field projection inside a visit type field link."},"app__apis__common__schemas__visitor__FieldResponse":{"properties":{"id":{"type":"integer","exclusiveMinimum":0.0,"title":"Id","description":"Field id."},"uuid":{"type":"string","title":"Uuid","description":"Field UUID."},"name":{"type":"string","title":"Name","description":"Field name."},"type":{"type":"string","title":"Type","description":"Field data type name."},"description":{"type":"string","title":"Description","description":"Field description."},"is_unique":{"type":"boolean","title":"Is Unique","description":"Whether the field value must be unique."},"is_global":{"type":"boolean","title":"Is Global","description":"Whether the field is global rather than org-scoped."}},"type":"object","required":["id","uuid","name","type","description","is_unique","is_global"],"title":"FieldResponse","description":"Field projection inside a visitor field response."},"app__apis__common__schemas__visitor_flow__InductionResponse":{"properties":{"is_valid":{"type":"boolean","title":"Is Valid","description":"Whether the induction is valid."},"content_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Url","description":"Resolved induction content URL, when available."}},"type":"object","required":["is_valid"],"title":"InductionResponse","description":"Pass induction result attached to the paginated visitor-flow list."},"app__apis__common__schemas__workspace_field__FieldResponse":{"properties":{"id":{"type":"integer","exclusiveMinimum":0.0,"title":"Id","description":"Field id."},"uuid":{"type":"string","title":"Uuid","description":"Field UUID."},"name":{"type":"string","title":"Name","description":"Field name."},"type":{"type":"string","title":"Type","description":"Field data type name."},"description":{"type":"string","title":"Description","description":"Field description."},"is_unique":{"type":"boolean","title":"Is Unique","description":"Whether the field value must be unique."},"is_global":{"type":"boolean","title":"Is Global","description":"Whether the field is global rather than organization-scoped."}},"type":"object","required":["id","uuid","name","type","description","is_unique","is_global"],"title":"FieldResponse","description":"Field projection inside a workspace field link."},"app__apis__common__schemas__workspace_visitor__InductionResponse":{"properties":{"is_valid":{"type":"boolean","title":"Is Valid","description":"Whether the visitor's induction is valid."},"content_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Url","description":"URL of the induction content, when applicable."}},"type":"object","required":["is_valid"],"title":"InductionResponse","description":"Pass induction result projection."},"app__apis__sat__schemas__badge_template__BadgeTemplateResponse":{"properties":{"uuid":{"type":"string","maxLength":36,"minLength":36,"title":"Uuid","description":"Badge template UUID."},"name":{"type":"string","maxLength":256,"minLength":1,"title":"Name","description":"Badge template display name."},"description":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}],"title":"Description","description":"Optional badge template description."},"is_primary":{"type":"boolean","title":"Is Primary","description":"Whether the template is the primary default template."},"created":{"type":"string","format":"date-time","title":"Created","description":"Creation timestamp."},"updated":{"type":"string","format":"date-time","title":"Updated","description":"Last update timestamp."},"value":{"type":"string","minLength":1,"title":"Value","description":"Badge template content payload."}},"type":"object","required":["uuid","name","is_primary","created","updated","value"],"title":"BadgeTemplateResponse","description":"Full badge template response including content payload."}},"securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"adminusers/login"}}},"APIKeyHeader":{"type":"apiKey","in":"header","name":"X-API-Key"},"HTTPBearer":{"type":"http","scheme":"bearer"}}},"tags":[{"name":"Authentication"},{"name":"Admin User"},{"name":"Badge Template"},{"name":"Calendar"},{"name":"Client"},{"name":"Device"},{"name":"Emergency Alert"},{"name":"Feedback"},{"name":"Field"},{"name":"Identifier"},{"name":"Invite Address"},{"name":"Language"},{"name":"Lobby"},{"name":"Log"},{"name":"Login"},{"name":"Host"},{"name":"Internal"},{"name":"Messaging"},{"name":"Mobile"},{"name":"Permission"},{"name":"Organization"},{"name":"Role"},{"name":"Room"},{"name":"Rule"},{"name":"Self Service"},{"name":"Setting"},{"name":"Signed URL"},{"name":"Update"},{"name":"User"},{"name":"User Type"},{"name":"Visit"},{"name":"Visit Type"},{"name":"Visitor"},{"name":"Workspace"}]}