{"openapi":"3.1.0","info":{"title":"Salesforce Sales Cloud Replacement","version":"0.1.0"},"paths":{"/api/v1/auth/debug-login":{"post":{"tags":["auth"],"summary":"Debug Login","description":"Passwordless login for E2E tests.\n\nGated by two explicit opt-in flags, both required:\n- ``DEBUG=True``\n- ``ENABLE_DEBUG_LOGIN=True`` (separate flag, never default-on)\n\nThese flags must never be set in production. The double opt-in is the\nsecurity gate; no additional IP restriction is applied so that tests\nrunning against a Docker-hosted backend also work.","operationId":"debug_login_api_v1_auth_debug_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/google/client-id":{"get":{"tags":["auth"],"summary":"Google Client Id","description":"Return the Google client ID for the frontend to initialize Google Sign-In.\n\nDeprecated: prefer reading google_client_id from the tenant public-config endpoint.\nFalls back to the GOOGLE_CLIENT_ID env var for backwards compatibility.","operationId":"google_client_id_api_v1_auth_google_client_id_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Google Client Id Api V1 Auth Google Client Id Get"}}}}}}},"/api/v1/auth/login":{"post":{"tags":["auth"],"summary":"Login","description":"Authenticate with username and password, returning JWT token pair.\n\nThe 'tenant' field in the request body specifies which tenant to log into\n(slug or numeric ID). If not provided, the token has no tenant context.","operationId":"login_api_v1_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/google":{"post":{"tags":["auth"],"summary":"Google Login","description":"Authenticate via Google SSO with optional tenant context.","operationId":"google_login_api_v1_auth_google_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleLoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/refresh":{"post":{"tags":["auth"],"summary":"Refresh","description":"Exchange a valid refresh token for a new access token.\n\nPreserves the tenant context from the original token.","operationId":"refresh_api_v1_auth_refresh_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/logout":{"post":{"tags":["auth"],"summary":"Logout","description":"Invalidate the provided refresh token.","operationId":"logout_api_v1_auth_logout_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Logout Api V1 Auth Logout Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/me/preferences":{"put":{"tags":["auth"],"summary":"Update My Preferences","description":"Update the current user's preferences for the active tenant.\n\nCurrently supports timezone. Requires an active tenant context.","operationId":"update_my_preferences_api_v1_auth_me_preferences_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPreferencesUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update My Preferences Api V1 Auth Me Preferences Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/me":{"get":{"tags":["auth"],"summary":"Get Me","description":"Return the current authenticated user's information and permissions.","operationId":"get_me_api_v1_auth_me_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Me Api V1 Auth Me Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/me/tour-state":{"patch":{"tags":["auth"],"summary":"Patch Tour State","description":"Merge partial tour-state updates into the user's stored tour progress.","operationId":"patch_tour_state_api_v1_auth_me_tour_state_patch","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TourStateUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Patch Tour State Api V1 Auth Me Tour State Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/me/tour-state/reset":{"post":{"tags":["auth"],"summary":"Reset Tour State","description":"Reset tour state to not_started, clearing progress and completed segments.","operationId":"reset_tour_state_api_v1_auth_me_tour_state_reset_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reset Tour State Api V1 Auth Me Tour State Reset Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/api-keys":{"get":{"tags":["admin-api-keys"],"summary":"List Api Keys","operationId":"list_api_keys_api_v1_admin_api_keys_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ApiKeyResponse"},"title":"Response List Api Keys Api V1 Admin Api Keys Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin-api-keys"],"summary":"Create Api Key","operationId":"create_api_key_api_v1_admin_api_keys_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/api-keys/{api_key_id}/revoke":{"post":{"tags":["admin-api-keys"],"summary":"Revoke Api Key","operationId":"revoke_api_key_api_v1_admin_api_keys__api_key_id__revoke_post","parameters":[{"name":"api_key_id","in":"path","required":true,"schema":{"type":"integer","title":"Api Key Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/api-keys/rate-limits":{"get":{"tags":["admin-api-keys"],"summary":"List Rate Limits","description":"Every override in the tenant, plus the tenant default.","operationId":"list_rate_limits_api_v1_admin_api_keys_rate_limits_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantRateLimits"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/api-keys/rate-limits/default":{"put":{"tags":["admin-api-keys"],"summary":"Update Rate Limit Default","description":"Set the tenant-wide default, ``enabled`` included.\n\nThis is the kill switch. Turning enforcement off is this same PUT with\n``enabled: false`` — no deploy, no revert, and it bites immediately\nbecause the write invalidates every cached context on the way out.","operationId":"update_rate_limit_default_api_v1_admin_api_keys_rate_limits_default_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitDefaultUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitDefault"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/api-keys/rate-limits/{user_id}":{"put":{"tags":["admin-api-keys"],"summary":"Upsert Rate Limit Override","description":"Set one user's override. ``note`` is required and is the audit story.","operationId":"upsert_rate_limit_override_api_v1_admin_api_keys_rate_limits__user_id__put","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitOverrideUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitOverride"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-api-keys"],"summary":"Delete Rate Limit Override","description":"Drop a user's override so they fall back to the tenant default.","operationId":"delete_rate_limit_override_api_v1_admin_api_keys_rate_limits__user_id__delete","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/api-keys/rate-limit":{"get":{"tags":["api-keys"],"summary":"Get My Rate Limit","description":"The caller's own effective limit, and which layer supplied the numbers.\n\nReports ``enabled`` alongside the numbers so \"is this actually on?\" is\none curl rather than a code read. The live budget comes from a peek,\nwhich does not spend a token — checking your budget must not consume it.","operationId":"get_my_rate_limit_api_v1_api_keys_rate_limit_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EffectiveRateLimit"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/api-keys":{"get":{"tags":["api-keys"],"summary":"List My Api Keys","description":"The caller's own keys, active and dead.\n\nRevoked and expired rows are included on purpose — \"my key stopped\nworking\" is answered by the status column, and hiding the row leaves\nthe caller staring at a 401 with nothing to read.","operationId":"list_my_api_keys_api_v1_api_keys_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ApiKeyResponse"},"title":"Response List My Api Keys Api V1 Api Keys Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["api-keys"],"summary":"Create My Api Key","description":"Issue the caller a key. Plaintext is in this response and nowhere else.\n\n``user_id`` and ``created_by`` are both the caller, which is the whole\ndifference from the admin route — every limit underneath (one live key,\nthe maximum lifetime, tenant membership) is the same code.","operationId":"create_my_api_key_api_v1_api_keys_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeySelfCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/api-keys/{api_key_id}/revoke":{"post":{"tags":["api-keys"],"summary":"Revoke My Api Key","description":"Revoke one of the caller's own keys.\n\nOwnership is enforced in the UPDATE predicate, not by a preceding\nread — someone else's key comes back as a 404, the same as an id that\nwas never issued.","operationId":"revoke_my_api_key_api_v1_api_keys__api_key_id__revoke_post","parameters":[{"name":"api_key_id","in":"path","required":true,"schema":{"type":"integer","title":"Api Key Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/{slug}/public-config":{"get":{"tags":["tenant-config"],"summary":"Get Public Config","description":"Return public feature configuration for a tenant.\n\nReturns 404 for non-existent or inactive tenants (combined to avoid\nleaking tenant existence information).","operationId":"get_public_config_api_v1_tenants__slug__public_config_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantPublicConfig"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/lookup":{"get":{"tags":["users"],"summary":"Lookup Users","description":"Lightweight user lookup for owner/lookup fields. Any authenticated user.","operationId":"lookup_users_api_v1_users_lookup_get","parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string","minLength":2,"default":"","title":"Search"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Page Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Lookup Users Api V1 Users Lookup Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/resolve":{"get":{"tags":["users"],"summary":"Resolve User","description":"Resolve a user ID to a display name. Any authenticated user.","operationId":"resolve_user_api_v1_users_resolve_get","parameters":[{"name":"id","in":"query","required":true,"schema":{"type":"integer","title":"Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Resolve User Api V1 Users Resolve Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users":{"get":{"tags":["users"],"summary":"List Users","description":"List all users with pagination and optional filters. Requires System Admin.","operationId":"list_users_api_v1_users_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Page Size"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"is_active","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedUsers"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["users"],"summary":"Create User","description":"Create a new user. Requires System Admin.\n\nIf a user with the same email already exists globally but is not in the\ncurrent tenant, they are added to the tenant instead of being rejected.","operationId":"create_user_api_v1_users_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserListItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/{user_id}":{"get":{"tags":["users"],"summary":"Get User","description":"Get a single user by ID. Requires System Admin.","operationId":"get_user_api_v1_users__user_id__get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserListItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["users"],"summary":"Update User","description":"Update an existing user. Requires System Admin.","operationId":"update_user_api_v1_users__user_id__put","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserListItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/{user_id}/reset-password":{"put":{"tags":["users"],"summary":"Reset Password","description":"Reset a user's password. Requires System Admin.","operationId":"reset_password_api_v1_users__user_id__reset_password_put","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordReset"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reset Password Api V1 Users  User Id  Reset Password Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/{user_id}/permission-sets":{"get":{"tags":["users"],"summary":"Get User Permission Sets","description":"Get all permission sets assigned to a user. Requires System Admin.","operationId":"get_user_permission_sets_api_v1_users__user_id__permission_sets_get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Get User Permission Sets Api V1 Users  User Id  Permission Sets Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/{user_id}/groups":{"get":{"tags":["users"],"summary":"Get User Groups","description":"Get all security groups a user belongs to.\n\nAccessible by the user themselves or a System Admin.","operationId":"get_user_groups_api_v1_users__user_id__groups_get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Get User Groups Api V1 Users  User Id  Groups Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/sharing-rules":{"get":{"tags":["admin-sharing"],"summary":"List Sharing Rules","description":"List sharing rules, optionally filtered by object.","operationId":"list_sharing_rules_api_v1_admin_sharing_rules_get","parameters":[{"name":"object_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Object Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SharingRuleResponse"},"title":"Response List Sharing Rules Api V1 Admin Sharing Rules Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin-sharing"],"summary":"Create Sharing Rule","description":"Create a new sharing rule and trigger incremental grant computation.","operationId":"create_sharing_rule_api_v1_admin_sharing_rules_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharingRuleCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharingRuleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/sharing-rules/{rule_id}":{"put":{"tags":["admin-sharing"],"summary":"Update Sharing Rule","description":"Update a sharing rule and trigger grant recomputation.","operationId":"update_sharing_rule_api_v1_admin_sharing_rules__rule_id__put","parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"integer","title":"Rule Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharingRuleUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharingRuleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-sharing"],"summary":"Delete Sharing Rule","description":"Delete a sharing rule and remove its associated grants.","operationId":"delete_sharing_rule_api_v1_admin_sharing_rules__rule_id__delete","parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"integer","title":"Rule Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Sharing Rule Api V1 Admin Sharing Rules  Rule Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/owd":{"get":{"tags":["admin-owd"],"summary":"Get Owd","description":"Get organization-wide defaults for all objects.","operationId":"get_owd_api_v1_admin_owd_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/owd/{object_id}":{"put":{"tags":["admin-owd"],"summary":"Update Owd","description":"Update the OWD for an object.\n\nChanging OWD triggers a full access grant rebuild for the object type.\nFor example, changing from 'Public Read/Write' to 'Private' will\ncompute owner grants for all existing records.","operationId":"update_owd_api_v1_admin_owd__object_id__put","parameters":[{"name":"object_id","in":"path","required":true,"schema":{"type":"integer","title":"Object Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/objects/{object_type}/records/{record_id}/share":{"post":{"tags":["records"],"summary":"Share Record","description":"Share a record manually with a user or group.","operationId":"share_record_api_v1_objects__object_type__records__record_id__share_post","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManualShareRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/sharing/summary/{object_type}":{"get":{"tags":["admin-sharing"],"summary":"Get Sharing Summary","description":"Get a summary of the sharing configuration for an object.\n\nReturns OWD level, active sharing rule count, and total access grant count.\nUsed by the admin UI to show sharing model complexity at a glance.","operationId":"get_sharing_summary_api_v1_admin_sharing_summary__object_type__get","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Sharing Summary Api V1 Admin Sharing Summary  Object Type  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/maintenance/rebuild":{"post":{"tags":["admin-maintenance"],"summary":"Rebuild Seeded Records","description":"Queue a background ``rebuild_seeded`` job for the current tenant.\n\nReturns 202 with the job row; poll ``GET .../jobs/{id}`` for progress.","operationId":"rebuild_seeded_records_api_v1_admin_maintenance_rebuild_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RebuildSeededRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MaintenanceJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/maintenance/jobs/{job_id}":{"get":{"tags":["admin-maintenance"],"summary":"Get Maintenance Job","operationId":"get_maintenance_job_api_v1_admin_maintenance_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MaintenanceJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/maintenance/jobs":{"get":{"tags":["admin-maintenance"],"summary":"List Maintenance Jobs","operationId":"list_maintenance_jobs_api_v1_admin_maintenance_jobs_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MaintenanceJobResponse"},"title":"Response List Maintenance Jobs Api V1 Admin Maintenance Jobs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/maintenance/jobs/{job_id}/cancel":{"post":{"tags":["admin-maintenance"],"summary":"Cancel Maintenance Job","description":"Request cancellation of a queued or running job. The worker checks the\nrow's status between batches and exits cleanly.","operationId":"cancel_maintenance_job_api_v1_admin_maintenance_jobs__job_id__cancel_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MaintenanceJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/objects/{object_type}/records":{"post":{"tags":["records"],"summary":"Create Record","description":"Create a new record of the given object type.\n\nValidates can_create on the role AND that record_type_id is in the\nuser's role's record type groups.","operationId":"create_record_api_v1_objects__object_type__records_post","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["records"],"summary":"List Records","description":"List records with visibility-enforced filtering and pagination.\n\nDefault mode shows records the user has effective level >= read.\nWhen a search term is provided, expands to include scope-level\nrecords (effective level >= list).","operationId":"list_records_api_v1_objects__object_type__records_get","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Page Size"}},{"name":"sort_field","in":"query","required":false,"schema":{"type":"string","default":"created_at","title":"Sort Field"}},{"name":"sort_dir","in":"query","required":false,"schema":{"type":"string","default":"desc","title":"Sort Dir"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/objects/{object_type}/records/{record_id}":{"get":{"tags":["records"],"summary":"Get Record","description":"Get a single record with access check and FLS. Tracks recent item access.\n\nRequires effective level >= READ on the record. Returns access info\n(can_edit, can_delete, can_manage_team, effective_level) along with\nthe record data.","operationId":"get_record_api_v1_objects__object_type__records__record_id__get","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["records"],"summary":"Update Record","description":"Update a record with optimistic concurrency control and FLS enforcement.\n\nRequires effective level >= EDIT on the record.","operationId":"update_record_api_v1_objects__object_type__records__record_id__put","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["records"],"summary":"Delete Record","description":"Delete a record. Requires effective level >= FULL on the record.","operationId":"delete_record_api_v1_objects__object_type__records__record_id__delete","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/objects/{object_type}/record-types":{"get":{"tags":["admin-record-types"],"summary":"Get Active Record Types","description":"Return active record types for the frontend RT selection flow.\n\nUsed by ListViewPage to determine the RT selection UX:\n0 RTs -> error toast, 1 RT -> auto-select, 2+ -> show modal.","operationId":"get_active_record_types_api_v1_objects__object_type__record_types_get","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Active Record Types Api V1 Objects  Object Type  Record Types Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/objects/Account/records/{record_id}/hierarchy":{"get":{"tags":["records"],"summary":"Get Account Hierarchy","description":"Get the parent/child hierarchy for an Account record.\n\nReturns the parent chain (ancestors), the current account, and its\ndirect children.  Requires read access on the record.","operationId":"get_account_hierarchy_api_v1_objects_Account_records__record_id__hierarchy_get","parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/objects/{object_type}/records/{record_id}/transfer":{"post":{"tags":["records"],"summary":"Transfer Ownership","description":"Transfer record ownership. Only the current owner or a System Administrator can transfer.","operationId":"transfer_ownership_api_v1_objects__object_type__records__record_id__transfer_post","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferOwnershipRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/objects/{object_type}/records/{record_id}/summarize":{"post":{"tags":["records"],"summary":"Summarize Record","description":"Return a short markdown TL;DR of the record + its recent activity.\n\nRequires effective level >= READ. Obeys FLS (hidden fields are not sent to\nthe LLM). Rate-limited + audited via the shared AI plumbing.","operationId":"summarize_record_api_v1_objects__object_type__records__record_id__summarize_post","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/objects/{object_type}/records/{record_id}/draft-email":{"post":{"tags":["records"],"summary":"Draft Email For Record","description":"Return a drafted email (subject + body) personalized to the record.\n\nDoes NOT send. The caller decides what to do with the draft.","operationId":"draft_email_for_record_api_v1_objects__object_type__records__record_id__draft_email_post","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DraftEmailRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DraftEmailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/objects/{object_type}/records/{record_id}/next-best-action":{"post":{"tags":["records"],"summary":"Next Best Action Endpoint","description":"Return a short ranked list of next actions for this record.","operationId":"next_best_action_endpoint_api_v1_objects__object_type__records__record_id__next_best_action_post","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NextBestActionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/objects/{object_type}/records/{record_id}/activity-digest":{"post":{"tags":["records"],"summary":"Activity Digest","description":"Return a short markdown digest of this record's recent activity trail.\n\nComplements `/summarize` — use this when the reader cares about \"what\nhappened lately?\" rather than \"what is this record?\". Same rate-limit\n+ audit plumbing.","operationId":"activity_digest_api_v1_objects__object_type__records__record_id__activity_digest_post","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/objects/{object_type}/records/{record_id}/tasks":{"get":{"tags":["records"],"summary":"Get Task Timeline","description":"Get the task timeline for a record. Requires read access.","operationId":"get_task_timeline_api_v1_objects__object_type__records__record_id__tasks_get","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/objects/{object_type}/records/{record_id}/history":{"get":{"tags":["records"],"summary":"Get Audit History","description":"Get the audit trail for a record. Requires read access to the record.","operationId":"get_audit_history_api_v1_objects__object_type__records__record_id__history_get","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/records/resolve-names":{"post":{"tags":["records"],"summary":"Resolve Names","description":"Batch-resolve record IDs to display names.\n\nAccepts up to 50 items. Groups by object type and fetches each group\nin a single SQL query (WHERE id = ANY($1)), so a form with 10 lookup\nfields across 3 object types costs only 3 DB queries instead of 10.\n\nEach item may set `display_field` to override the default name waterfall —\nuseful when the lookup label should show e.g. `account_number` instead of\n`name`. Response keys are `<ObjectType>:<id>:<display_field or \"\">`.","operationId":"resolve_names_api_v1_records_resolve_names_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LookupResolveRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/objects/{object_type}/records/{record_id}/send-email":{"post":{"tags":["records"],"summary":"Send Email For Record","operationId":"send_email_for_record_api_v1_objects__object_type__records__record_id__send_email_post","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordSendEmailRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordSendEmailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mass-email":{"post":{"tags":["mass-email"],"summary":"Create Job","operationId":"create_job_api_v1_mass_email_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MassEmailJobCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MassEmailJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["mass-email"],"summary":"List Jobs","operationId":"list_jobs_api_v1_mass_email_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MassEmailJobResponse"},"title":"Response List Jobs Api V1 Mass Email Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mass-email/{job_id}":{"get":{"tags":["mass-email"],"summary":"Get Job","operationId":"get_job_api_v1_mass_email__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MassEmailJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mass-email/{job_id}/recipients":{"get":{"tags":["mass-email"],"summary":"List Recipients","operationId":"list_recipients_api_v1_mass_email__job_id__recipients_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MassEmailRecipientResponse"},"title":"Response List Recipients Api V1 Mass Email  Job Id  Recipients Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mass-email/{job_id}/cancel":{"post":{"tags":["mass-email"],"summary":"Cancel Job","operationId":"cancel_job_api_v1_mass_email__job_id__cancel_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MassEmailJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/events/metadata":{"get":{"tags":["events"],"summary":"Metadata Event Stream","description":"Stream metadata-invalidation events for the calling user's tenant.\n\n``Last-Event-ID`` is accepted for protocol completeness but v1 doesn't\nreplay history — the client falls back to a full ``metadataStore``\nrefresh when it notices a missed event (via the monotonic version jump).","operationId":"metadata_event_stream_api_v1_events_metadata_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","description":"access token (EventSource can't set headers)","title":"Token"},"description":"access token (EventSource can't set headers)"},{"name":"Last-Event-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last-Event-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/public/unsubscribe":{"get":{"tags":["public"],"summary":"Unsubscribe","description":"Validate the token and record the unsubscribe. Returns an HTML page.","operationId":"unsubscribe_api_v1_public_unsubscribe_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","description":"signed unsubscribe token","title":"Token"},"description":"signed unsubscribe token"}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/activities/calendar":{"get":{"tags":["activity-calendar"],"summary":"Get Calendar Activities","description":"Return all activities owned by the requesting user within [start, end).","operationId":"get_calendar_activities_api_v1_activities_calendar_get","parameters":[{"name":"start","in":"query","required":true,"schema":{"type":"string","description":"Inclusive start of window (ISO-8601)","title":"Start"},"description":"Inclusive start of window (ISO-8601)"},{"name":"end","in":"query","required":true,"schema":{"type":"string","description":"Exclusive end of window (ISO-8601)","title":"End"},"description":"Exclusive end of window (ISO-8601)"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/leads":{"get":{"tags":["leads"],"summary":"List Alias","operationId":"list_alias_api_v1_leads_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Page Size"}},{"name":"sort_field","in":"query","required":false,"schema":{"type":"string","default":"created_at","title":"Sort Field"}},{"name":"sort_dir","in":"query","required":false,"schema":{"type":"string","default":"desc","title":"Sort Dir"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["leads"],"summary":"Create Alias","operationId":"create_alias_api_v1_leads_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/leads/{record_id}":{"get":{"tags":["leads"],"summary":"Get Alias","operationId":"get_alias_api_v1_leads__record_id__get","parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["leads"],"summary":"Update Alias","operationId":"update_alias_api_v1_leads__record_id__put","parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["leads"],"summary":"Delete Alias","operationId":"delete_alias_api_v1_leads__record_id__delete","parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/accounts":{"get":{"tags":["accounts"],"summary":"List Alias","operationId":"list_alias_api_v1_accounts_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Page Size"}},{"name":"sort_field","in":"query","required":false,"schema":{"type":"string","default":"created_at","title":"Sort Field"}},{"name":"sort_dir","in":"query","required":false,"schema":{"type":"string","default":"desc","title":"Sort Dir"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["accounts"],"summary":"Create Alias","operationId":"create_alias_api_v1_accounts_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/accounts/{record_id}":{"get":{"tags":["accounts"],"summary":"Get Alias","operationId":"get_alias_api_v1_accounts__record_id__get","parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["accounts"],"summary":"Update Alias","operationId":"update_alias_api_v1_accounts__record_id__put","parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["accounts"],"summary":"Delete Alias","operationId":"delete_alias_api_v1_accounts__record_id__delete","parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/contacts":{"get":{"tags":["contacts"],"summary":"List Alias","operationId":"list_alias_api_v1_contacts_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Page Size"}},{"name":"sort_field","in":"query","required":false,"schema":{"type":"string","default":"created_at","title":"Sort Field"}},{"name":"sort_dir","in":"query","required":false,"schema":{"type":"string","default":"desc","title":"Sort Dir"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["contacts"],"summary":"Create Alias","operationId":"create_alias_api_v1_contacts_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/contacts/{record_id}":{"get":{"tags":["contacts"],"summary":"Get Alias","operationId":"get_alias_api_v1_contacts__record_id__get","parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["contacts"],"summary":"Update Alias","operationId":"update_alias_api_v1_contacts__record_id__put","parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["contacts"],"summary":"Delete Alias","operationId":"delete_alias_api_v1_contacts__record_id__delete","parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/opportunities":{"get":{"tags":["opportunities"],"summary":"List Alias","operationId":"list_alias_api_v1_opportunities_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Page Size"}},{"name":"sort_field","in":"query","required":false,"schema":{"type":"string","default":"created_at","title":"Sort Field"}},{"name":"sort_dir","in":"query","required":false,"schema":{"type":"string","default":"desc","title":"Sort Dir"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["opportunities"],"summary":"Create Alias","operationId":"create_alias_api_v1_opportunities_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/opportunities/{record_id}":{"get":{"tags":["opportunities"],"summary":"Get Alias","operationId":"get_alias_api_v1_opportunities__record_id__get","parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["opportunities"],"summary":"Update Alias","operationId":"update_alias_api_v1_opportunities__record_id__put","parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["opportunities"],"summary":"Delete Alias","operationId":"delete_alias_api_v1_opportunities__record_id__delete","parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tasks":{"get":{"tags":["tasks"],"summary":"List Alias","operationId":"list_alias_api_v1_tasks_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Page Size"}},{"name":"sort_field","in":"query","required":false,"schema":{"type":"string","default":"created_at","title":"Sort Field"}},{"name":"sort_dir","in":"query","required":false,"schema":{"type":"string","default":"desc","title":"Sort Dir"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["tasks"],"summary":"Create Alias","operationId":"create_alias_api_v1_tasks_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tasks/{record_id}":{"get":{"tags":["tasks"],"summary":"Get Alias","operationId":"get_alias_api_v1_tasks__record_id__get","parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["tasks"],"summary":"Update Alias","operationId":"update_alias_api_v1_tasks__record_id__put","parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["tasks"],"summary":"Delete Alias","operationId":"delete_alias_api_v1_tasks__record_id__delete","parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/activities":{"get":{"tags":["activities"],"summary":"List Alias","operationId":"list_alias_api_v1_activities_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Page Size"}},{"name":"sort_field","in":"query","required":false,"schema":{"type":"string","default":"created_at","title":"Sort Field"}},{"name":"sort_dir","in":"query","required":false,"schema":{"type":"string","default":"desc","title":"Sort Dir"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["activities"],"summary":"Create Alias","operationId":"create_alias_api_v1_activities_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/activities/{record_id}":{"get":{"tags":["activities"],"summary":"Get Alias","operationId":"get_alias_api_v1_activities__record_id__get","parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["activities"],"summary":"Update Alias","operationId":"update_alias_api_v1_activities__record_id__put","parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["activities"],"summary":"Delete Alias","operationId":"delete_alias_api_v1_activities__record_id__delete","parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/metadata/objects":{"get":{"tags":["metadata"],"summary":"List Objects","description":"List all active object definitions for the current tenant.","operationId":"list_objects_api_v1_metadata_objects_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/metadata/objects/{object_id}/fields":{"get":{"tags":["metadata"],"summary":"List Fields","description":"List all active fields for an object.","operationId":"list_fields_api_v1_metadata_objects__object_id__fields_get","parameters":[{"name":"object_id","in":"path","required":true,"schema":{"type":"integer","title":"Object Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/objects":{"get":{"tags":["admin-schema"],"summary":"List Objects","description":"List all object definitions.","operationId":"list_objects_api_v1_admin_objects_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/objects/{object_id}":{"get":{"tags":["admin-schema"],"summary":"Get Object","description":"Get a single object definition by ID.","operationId":"get_object_api_v1_admin_objects__object_id__get","parameters":[{"name":"object_id","in":"path","required":true,"schema":{"type":"integer","title":"Object Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin-schema"],"summary":"Update Object","description":"Update an object definition (currently supports status_field_id).","operationId":"update_object_api_v1_admin_objects__object_id__put","parameters":[{"name":"object_id","in":"path","required":true,"schema":{"type":"integer","title":"Object Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/objects/{object_type}/fields":{"get":{"tags":["admin-schema"],"summary":"List Fields","description":"List all active fields for an object.","operationId":"list_fields_api_v1_admin_objects__object_type__fields_get","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/fields/validate-formula":{"post":{"tags":["admin-schema"],"summary":"Validate Formula","description":"Compile a formula expression against an object's current schema and\nreport whether it's valid.\n\nThe Setup → Fields → Formula editor calls this on every \"Check syntax\"\nclick — it lets admins surface compile errors (unknown field, type\nmismatch, bad syntax) before submitting the create-field form, where\nthe same compile would also run but rejects the whole save instead of\njust inlining a hint.\n\nRequest body::\n\n    {\"object_type\": \"Opportunity\",\n     \"formula_expression\": \"TODAY() - close_date\",\n     \"return_type\": \"number\"}            # optional — when present, the\n                                         # endpoint also checks that\n                                         # the inferred type matches.\n\nResponse on success::\n\n    {\"valid\": true,\n     \"return_type\": \"number\",            # inferred from the formula\n     \"referenced_fields\": [\"close_date\"]}\n\nResponse on failure (HTTP 200 with valid=false, so the UI can show the\nerror inline)::\n\n    {\"valid\": false, \"error\": \"Unknown field reference: close_dat\"}","operationId":"validate_formula_api_v1_admin_fields_validate_formula_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/fields":{"post":{"tags":["admin-schema"],"summary":"Add Field","description":"Add a custom field to an object.","operationId":"add_field_api_v1_admin_fields_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/fields/{field_id}":{"put":{"tags":["admin-schema"],"summary":"Update Field","description":"Update a field definition (label, sort_order, config, etc.).","operationId":"update_field_api_v1_admin_fields__field_id__put","parameters":[{"name":"field_id","in":"path","required":true,"schema":{"type":"integer","title":"Field Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-schema"],"summary":"Remove Field","description":"Soft-delete a custom field.","operationId":"remove_field_api_v1_admin_fields__field_id__delete","parameters":[{"name":"field_id","in":"path","required":true,"schema":{"type":"integer","title":"Field Id"}},{"name":"confirm","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Confirm"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/picklists/{field_id}/values":{"get":{"tags":["admin-schema"],"summary":"Get Picklist Values","description":"Get picklist values for a field (including inactive ones for admin).","operationId":"get_picklist_values_api_v1_admin_picklists__field_id__values_get","parameters":[{"name":"field_id","in":"path","required":true,"schema":{"type":"integer","title":"Field Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin-schema"],"summary":"Bulk Save Picklist Values","description":"Bulk save picklist values for a field.\n\nAccepts { values: [...] }. Each value may have an optional 'id' for updates.\nValues without 'id' are created. Existing values not in the list are deactivated.","operationId":"bulk_save_picklist_values_api_v1_admin_picklists__field_id__values_put","parameters":[{"name":"field_id","in":"path","required":true,"schema":{"type":"integer","title":"Field Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/objects/{object_type}/dependencies":{"get":{"tags":["admin-schema"],"summary":"List Dependencies","description":"List all active field dependencies for an object, enriched with field api_name/label.","operationId":"list_dependencies_api_v1_admin_objects__object_type__dependencies_get","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/dependencies":{"put":{"tags":["admin-schema"],"summary":"Upsert Dependency","description":"Create or update a field dependency (dependent picklist mapping).","operationId":"upsert_dependency_api_v1_admin_dependencies_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/dependencies/{dependency_id}":{"delete":{"tags":["admin-schema"],"summary":"Delete Dependency","description":"Delete a field dependency.","operationId":"delete_dependency_api_v1_admin_dependencies__dependency_id__delete","parameters":[{"name":"dependency_id","in":"path","required":true,"schema":{"type":"integer","title":"Dependency Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/objects/{object_type}/sections":{"get":{"tags":["admin-sections"],"summary":"List Sections","description":"List all active sections for an object.","operationId":"list_sections_api_v1_admin_objects__object_type__sections_get","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/sections/reorder":{"put":{"tags":["admin-sections"],"summary":"Reorder Sections","description":"Reorder sections. Body: { section_ids: [1, 3, 2] }","operationId":"reorder_sections_api_v1_admin_sections_reorder_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/sections":{"post":{"tags":["admin-sections"],"summary":"Create Section","description":"Create a new form section.","operationId":"create_section_api_v1_admin_sections_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/sections/{section_id}":{"put":{"tags":["admin-sections"],"summary":"Update Section","description":"Update a form section.","operationId":"update_section_api_v1_admin_sections__section_id__put","parameters":[{"name":"section_id","in":"path","required":true,"schema":{"type":"integer","title":"Section Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-sections"],"summary":"Delete Section","description":"Delete (deactivate) a form section. Fields are unassigned.","operationId":"delete_section_api_v1_admin_sections__section_id__delete","parameters":[{"name":"section_id","in":"path","required":true,"schema":{"type":"integer","title":"Section Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/sections/{section_id}/fields/reorder":{"put":{"tags":["admin-sections"],"summary":"Reorder Fields In Section","description":"Reorder fields within a section. Body: { field_ids: [3, 1, 2] }","operationId":"reorder_fields_in_section_api_v1_admin_sections__section_id__fields_reorder_put","parameters":[{"name":"section_id","in":"path","required":true,"schema":{"type":"integer","title":"Section Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/fields/{field_id}/section":{"put":{"tags":["admin-sections"],"summary":"Assign Field To Section","description":"Assign a field to a section. Body: { section_id: 1 } or { section_id: null } to unassign.","operationId":"assign_field_to_section_api_v1_admin_fields__field_id__section_put","parameters":[{"name":"field_id","in":"path","required":true,"schema":{"type":"integer","title":"Field Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/layouts/resolve":{"get":{"tags":["layouts"],"summary":"Resolve Layout","description":"Resolve the form layout for the current user and object type.\n\nBuilds layout from form_sections + field_definitions. When record_type_id\nis provided, field visibility is filtered via record_type_field_assignments.","operationId":"resolve_layout_api_v1_layouts_resolve_get","parameters":[{"name":"object_type","in":"query","required":true,"schema":{"type":"string","description":"Object api_name, e.g. 'Lead'","title":"Object Type"},"description":"Object api_name, e.g. 'Lead'"},{"name":"record_type_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Optional RT for RT-specific field filtering","title":"Record Type Id"},"description":"Optional RT for RT-specific field filtering"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Resolve Layout Api V1 Layouts Resolve Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pipeline/processes":{"get":{"tags":["pipeline"],"summary":"List Processes","description":"List all sales processes.","operationId":"list_processes_api_v1_pipeline_processes_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["pipeline"],"summary":"Create Process","description":"Create a new sales process with optional stages.","operationId":"create_process_api_v1_pipeline_processes_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pipeline/processes/{process_id}/stages":{"get":{"tags":["pipeline"],"summary":"List Stages","description":"List stages for a sales process.","operationId":"list_stages_api_v1_pipeline_processes__process_id__stages_get","parameters":[{"name":"process_id","in":"path","required":true,"schema":{"type":"integer","title":"Process Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["pipeline"],"summary":"Create Stage","description":"Create a new pipeline stage.","operationId":"create_stage_api_v1_pipeline_processes__process_id__stages_post","parameters":[{"name":"process_id","in":"path","required":true,"schema":{"type":"integer","title":"Process Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pipeline/kanban":{"get":{"tags":["pipeline"],"summary":"Get Kanban Data","description":"Get kanban board data with sharing-filtered opportunities.","operationId":"get_kanban_data_api_v1_pipeline_kanban_get","parameters":[{"name":"process_id","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Process Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pipeline/opportunities/{opportunity_id}/stage":{"patch":{"tags":["pipeline"],"summary":"Move Stage","description":"Move an opportunity to a new stage (kanban drag-drop).\n\nUpdates probability, is_won, is_closed based on stage config.\nLogs the change in the audit trail.","operationId":"move_stage_api_v1_pipeline_opportunities__opportunity_id__stage_patch","parameters":[{"name":"opportunity_id","in":"path","required":true,"schema":{"type":"integer","title":"Opportunity Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/permission-sets":{"get":{"tags":["admin-permission-sets"],"summary":"List Permission Sets","description":"List all permission sets.","operationId":"list_permission_sets_api_v1_admin_permission_sets_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin-permission-sets"],"summary":"Create Permission Set","description":"Create a new permission set.","operationId":"create_permission_set_api_v1_admin_permission_sets_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/permission-sets/{ps_id}":{"get":{"tags":["admin-permission-sets"],"summary":"Get Permission Set","description":"Get a single permission set by ID.","operationId":"get_permission_set_api_v1_admin_permission_sets__ps_id__get","parameters":[{"name":"ps_id","in":"path","required":true,"schema":{"type":"integer","title":"Ps Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin-permission-sets"],"summary":"Update Permission Set","description":"Update a permission set's name and description.","operationId":"update_permission_set_api_v1_admin_permission_sets__ps_id__put","parameters":[{"name":"ps_id","in":"path","required":true,"schema":{"type":"integer","title":"Ps Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/permission-sets/{ps_id}/users":{"get":{"tags":["admin-permission-sets"],"summary":"List Assigned Users","description":"List all users assigned to a permission set.","operationId":"list_assigned_users_api_v1_admin_permission_sets__ps_id__users_get","parameters":[{"name":"ps_id","in":"path","required":true,"schema":{"type":"integer","title":"Ps Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/permission-sets/{ps_id}/object-permissions":{"get":{"tags":["admin-permission-sets"],"summary":"Get Object Permissions","description":"Get all object-level permissions for a permission set.","operationId":"get_object_permissions_api_v1_admin_permission_sets__ps_id__object_permissions_get","parameters":[{"name":"ps_id","in":"path","required":true,"schema":{"type":"integer","title":"Ps Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin-permission-sets"],"summary":"Update Object Permissions","description":"Update object-level permissions for a permission set (additive only).\n\nAfter updating, invalidates ALL permission caches.","operationId":"update_object_permissions_api_v1_admin_permission_sets__ps_id__object_permissions_put","parameters":[{"name":"ps_id","in":"path","required":true,"schema":{"type":"integer","title":"Ps Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/permission-sets/{ps_id}/field-permissions":{"get":{"tags":["admin-permission-sets"],"summary":"Get Field Permissions","description":"Get all field-level security for a permission set.","operationId":"get_field_permissions_api_v1_admin_permission_sets__ps_id__field_permissions_get","parameters":[{"name":"ps_id","in":"path","required":true,"schema":{"type":"integer","title":"Ps Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin-permission-sets"],"summary":"Update Field Permissions","description":"Update field-level security for a permission set (additive only).\n\nAfter updating, invalidates ALL permission caches.","operationId":"update_field_permissions_api_v1_admin_permission_sets__ps_id__field_permissions_put","parameters":[{"name":"ps_id","in":"path","required":true,"schema":{"type":"integer","title":"Ps Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/permission-sets/{ps_id}/assign":{"post":{"tags":["admin-permission-sets"],"summary":"Assign To User","description":"Assign a permission set to a user.\n\nAfter assignment, invalidates ALL permission caches so the user's\nresolved permissions (profile + all PS, additive merge) are refreshed.","operationId":"assign_to_user_api_v1_admin_permission_sets__ps_id__assign_post","parameters":[{"name":"ps_id","in":"path","required":true,"schema":{"type":"integer","title":"Ps Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/permission-sets/{ps_id}/users/{user_id}":{"delete":{"tags":["admin-permission-sets"],"summary":"Unassign From User","description":"Remove a permission set assignment from a user.\n\nAfter removal, invalidates ALL permission caches so the user's\nresolved permissions no longer include this PS.","operationId":"unassign_from_user_api_v1_admin_permission_sets__ps_id__users__user_id__delete","parameters":[{"name":"ps_id","in":"path","required":true,"schema":{"type":"integer","title":"Ps Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/list-views":{"get":{"tags":["list-views"],"summary":"List Views","description":"Get list views for an object (private + public + system).","operationId":"list_views_api_v1_list_views_get","parameters":[{"name":"object_type","in":"query","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["list-views"],"summary":"Create List View","description":"Create a new list view.","operationId":"create_list_view_api_v1_list_views_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListViewCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/list-views/{view_id}":{"put":{"tags":["list-views"],"summary":"Update List View","description":"Update an existing list view.","operationId":"update_list_view_api_v1_list_views__view_id__put","parameters":[{"name":"view_id","in":"path","required":true,"schema":{"type":"integer","title":"View Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListViewUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["list-views"],"summary":"Delete List View","description":"Delete a list view.","operationId":"delete_list_view_api_v1_list_views__view_id__delete","parameters":[{"name":"view_id","in":"path","required":true,"schema":{"type":"integer","title":"View Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/list-views/{view_id}/execute":{"get":{"tags":["list-views"],"summary":"Execute List View","description":"Execute a list view query with sharing enforcement and pagination.","operationId":"execute_list_view_api_v1_list_views__view_id__execute_get","parameters":[{"name":"view_id","in":"path","required":true,"schema":{"type":"integer","title":"View Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Page Size"}},{"name":"sort_field","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort Field"}},{"name":"sort_dir","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort Dir"}},{"name":"filters","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filters"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/search":{"get":{"tags":["search"],"summary":"Global Search","description":"Global search across all objects the user has read access to.\n\nWith a query of 2+ characters, performs full-text search.\nEmpty or short queries return recent items as suggestions.","operationId":"global_search_api_v1_search_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","minLength":0,"default":"","title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/recent-items":{"get":{"tags":["search"],"summary":"Get Recent Items","description":"Get the current user's recently viewed records.","operationId":"get_recent_items_api_v1_recent_items_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":20,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bulk/update":{"post":{"tags":["bulk"],"summary":"Mass Update","description":"Mass update records. Batch size capped at 200.","operationId":"mass_update_api_v1_bulk_update_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bulk/delete":{"post":{"tags":["bulk"],"summary":"Mass Delete","description":"Mass delete records. Batch size capped at 200.","operationId":"mass_delete_api_v1_bulk_delete_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__schemas__bulk__BulkDeleteRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bulk/transfer":{"post":{"tags":["bulk"],"summary":"Mass Transfer","description":"Mass transfer record ownership. Batch size capped at 200.","operationId":"mass_transfer_api_v1_bulk_transfer_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkTransferRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/audit/{object_type}/{record_id}":{"get":{"tags":["audit"],"summary":"Get History","description":"Get the full audit trail for a record.\n\nEach entry includes the user who made the change, timestamp, action type,\nand field-level changes with display labels. Respects object read permission\nand record-level access.","operationId":"get_history_api_v1_audit__object_type___record_id__get","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/setup-audit":{"get":{"tags":["admin-setup-audit"],"summary":"List Setup Audit","operationId":"list_setup_audit_api_v1_admin_setup_audit_get","parameters":[{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"}},{"name":"entity_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Type"}},{"name":"action","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date To"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search entity_name (case-insensitive)","title":"Q"},"description":"Search entity_name (case-insensitive)"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Page Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetupAuditListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/setup-audit/entity-types":{"get":{"tags":["admin-setup-audit"],"summary":"List Entity Types","description":"Return the distinct entity_types observed for this tenant — used to populate filter dropdowns.","operationId":"list_entity_types_api_v1_admin_setup_audit_entity_types_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/setup-audit/{entry_id}":{"get":{"tags":["admin-setup-audit"],"summary":"Get Setup Audit","operationId":"get_setup_audit_api_v1_admin_setup_audit__entry_id__get","parameters":[{"name":"entry_id","in":"path","required":true,"schema":{"type":"integer","title":"Entry Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetupAuditEntry"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/data-export-log":{"get":{"tags":["admin-data-export-log"],"summary":"List Data Exports","operationId":"list_data_exports_api_v1_admin_data_export_log_get","parameters":[{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"}},{"name":"object_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object Type"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"'list_view' or 'nlq'","title":"Source"},"description":"'list_view' or 'nlq'"},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date To"}},{"name":"min_rows","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Min Rows"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","pattern":"^(created_at|row_count)$","default":"created_at","title":"Sort"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Page Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataExportListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/data-export-log/object-types":{"get":{"tags":["admin-data-export-log"],"summary":"List Object Types","description":"Distinct object_types in the log — for filter dropdowns.","operationId":"list_object_types_api_v1_admin_data_export_log_object_types_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/data-export-log/stats":{"get":{"tags":["admin-data-export-log"],"summary":"Get Stats","description":"Top-line numbers + top exporters over the trailing window.","operationId":"get_stats_api_v1_admin_data_export_log_stats_get","parameters":[{"name":"window_days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":7,"title":"Window Days"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataExportStatsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/data-export-log/{entry_id}":{"get":{"tags":["admin-data-export-log"],"summary":"Get Data Export","operationId":"get_data_export_api_v1_admin_data_export_log__entry_id__get","parameters":[{"name":"entry_id","in":"path","required":true,"schema":{"type":"integer","title":"Entry Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataExportEntry"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/objects/{object_type}/records/{record_id}/stage-durations":{"get":{"tags":["stage-history"],"summary":"Get Stage Durations","description":"Get time spent in each stage/status value for a record.\n\nReturns a map of stage values to {days, is_current}.","operationId":"get_stage_durations_api_v1_objects__object_type__records__record_id__stage_durations_get","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"field","in":"query","required":false,"schema":{"type":"string","description":"The status/stage field API name","default":"stage","title":"Field"},"description":"The status/stage field API name"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/objects/{object_type}/records/{record_id}/team":{"get":{"tags":["record-team"],"summary":"List Team Members","description":"List all team members for a record. Requires read access.","operationId":"list_team_members_api_v1_objects__object_type__records__record_id__team_get","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordTeamListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["record-team"],"summary":"Add Team Member","description":"Add a team member. Requires 'full' access on the record.\n\nValidates that the target user's role is in the same record type group\nas the record. Access level accepts: 'read', 'edit', 'full'.","operationId":"add_team_member_api_v1_objects__object_type__records__record_id__team_post","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordTeamMemberCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/objects/{object_type}/records/{record_id}/team/candidates":{"get":{"tags":["record-team"],"summary":"Search Team Candidates","description":"Search for users eligible to be team members.\n\nReturns users whose role is in the same record type group as the record.\nExcludes the record owner and users already on the team.\nRequires read access to the record.","operationId":"search_team_candidates_api_v1_objects__object_type__records__record_id__team_candidates_get","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}],"title":"Search"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamCandidateListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/objects/{object_type}/records/{record_id}/team/{member_id}":{"put":{"tags":["record-team"],"summary":"Update Team Member","description":"Update a team member's role or access level. Requires 'full' access.","operationId":"update_team_member_api_v1_objects__object_type__records__record_id__team__member_id__put","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"member_id","in":"path","required":true,"schema":{"type":"integer","title":"Member Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordTeamMemberUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["record-team"],"summary":"Remove Team Member","description":"Remove a team member. Requires 'full' access on the record.","operationId":"remove_team_member_api_v1_objects__object_type__records__record_id__team__member_id__delete","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"member_id","in":"path","required":true,"schema":{"type":"integer","title":"Member Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/workflows":{"get":{"tags":["admin-workflows"],"summary":"List Workflows","operationId":"list_workflows_api_v1_admin_workflows_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin-workflows"],"summary":"Create Workflow","operationId":"create_workflow_api_v1_admin_workflows_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/workflows/{rule_id}":{"get":{"tags":["admin-workflows"],"summary":"Get Workflow","operationId":"get_workflow_api_v1_admin_workflows__rule_id__get","parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"integer","title":"Rule Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-workflows"],"summary":"Delete Workflow","operationId":"delete_workflow_api_v1_admin_workflows__rule_id__delete","parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"integer","title":"Rule Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin-workflows"],"summary":"Update Workflow","operationId":"update_workflow_api_v1_admin_workflows__rule_id__put","parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"integer","title":"Rule Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/approvals/dry-run":{"post":{"tags":["approvals"],"summary":"Dry Run","description":"Return active approval processes that WOULD fire if *proposed_data* were\nsaved to the given record. Does not persist anything.","operationId":"dry_run_api_v1_approvals_dry_run_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApprovalDryRunRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/approvals/submit":{"post":{"tags":["approvals"],"summary":"Submit","operationId":"submit_api_v1_approvals_submit_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitApprovalRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/approvals/{request_id}/approve":{"post":{"tags":["approvals"],"summary":"Approve","operationId":"approve_api_v1_approvals__request_id__approve_post","parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"integer","title":"Request Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveRejectRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/approvals/{request_id}/reject":{"post":{"tags":["approvals"],"summary":"Reject","operationId":"reject_api_v1_approvals__request_id__reject_post","parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"integer","title":"Request Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveRejectRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/approvals/{request_id}/recall":{"post":{"tags":["approvals"],"summary":"Recall","operationId":"recall_api_v1_approvals__request_id__recall_post","parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"integer","title":"Request Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/approvals/pending":{"get":{"tags":["approvals"],"summary":"Pending","operationId":"pending_api_v1_approvals_pending_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/approvals/status/{object_type}/{record_id}":{"get":{"tags":["approvals"],"summary":"Approval Status","operationId":"approval_status_api_v1_approvals_status__object_type___record_id__get","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/approvals/completed":{"get":{"tags":["approvals"],"summary":"Completed","operationId":"completed_api_v1_approvals_completed_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/approval-processes":{"get":{"tags":["admin-approvals"],"summary":"List Processes","operationId":"list_processes_api_v1_admin_approval_processes_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin-approvals"],"summary":"Create Process","operationId":"create_process_api_v1_admin_approval_processes_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/approval-processes/{process_id}":{"get":{"tags":["admin-approvals"],"summary":"Get Process","operationId":"get_process_api_v1_admin_approval_processes__process_id__get","parameters":[{"name":"process_id","in":"path","required":true,"schema":{"type":"integer","title":"Process Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin-approvals"],"summary":"Update Process","operationId":"update_process_api_v1_admin_approval_processes__process_id__put","parameters":[{"name":"process_id","in":"path","required":true,"schema":{"type":"integer","title":"Process Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-approvals"],"summary":"Delete Process","operationId":"delete_process_api_v1_admin_approval_processes__process_id__delete","parameters":[{"name":"process_id","in":"path","required":true,"schema":{"type":"integer","title":"Process Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/criteria/validate-formula":{"post":{"tags":["admin-criteria"],"summary":"Validate Formula Endpoint","description":"Compile-check a formula against an object's field metadata.\n\nWhen ``object_type`` is provided, the formula is validated against the\nobject's declared fields so unknown field references are flagged up-front.\nOtherwise the check is purely syntactic (operators, keywords, literals).","operationId":"validate_formula_endpoint_api_v1_admin_criteria_validate_formula_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateFormulaBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateFormulaResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notifications":{"get":{"tags":["notifications"],"summary":"List Notifications","operationId":"list_notifications_api_v1_notifications_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"default":30,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notifications/unread-count":{"get":{"tags":["notifications"],"summary":"Unread Count","operationId":"unread_count_api_v1_notifications_unread_count_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notifications/{notification_id}/read":{"post":{"tags":["notifications"],"summary":"Mark Read","operationId":"mark_read_api_v1_notifications__notification_id__read_post","parameters":[{"name":"notification_id","in":"path","required":true,"schema":{"type":"integer","title":"Notification Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notifications/read-all":{"post":{"tags":["notifications"],"summary":"Mark All Read","operationId":"mark_all_read_api_v1_notifications_read_all_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notebook/entries":{"post":{"tags":["notebook"],"summary":"Create Entry","operationId":"create_entry_api_v1_notebook_entries_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotebookEntryCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["notebook"],"summary":"List Entries","operationId":"list_entries_api_v1_notebook_entries_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"object_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object Type"}},{"name":"record_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Record Id"}},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated list of countries","title":"Country"},"description":"Comma-separated list of countries"},{"name":"created_by","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Page Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotebookEntryListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notebook/upload-file":{"post":{"tags":["notebook"],"summary":"Upload File","description":"Upload a source file for a Notebook entry. Returns {file_id, name, ...}.","operationId":"upload_file_api_v1_notebook_upload_file_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_file_api_v1_notebook_upload_file_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notebook/entries/export":{"post":{"tags":["notebook"],"summary":"Export Entries","description":"Export selected entries (metadata + full AI summary) as CSV.\n\nNever includes raw source text, uploaded files, or suggestions. Logged to\n``data_export_log`` before the body is returned so a logging failure\naborts the download.","operationId":"export_entries_api_v1_notebook_entries_export_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotebookExportRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notebook/pending-reviews/count":{"get":{"tags":["notebook"],"summary":"Pending Reviews Count","operationId":"pending_reviews_count_api_v1_notebook_pending_reviews_count_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notebook/pending-reviews/record-count":{"get":{"tags":["notebook"],"summary":"Pending Reviews Record Count","operationId":"pending_reviews_record_count_api_v1_notebook_pending_reviews_record_count_get","parameters":[{"name":"object_type","in":"query","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"record_id","in":"query","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notebook/entries/{entry_id}":{"get":{"tags":["notebook"],"summary":"Get Entry","operationId":"get_entry_api_v1_notebook_entries__entry_id__get","parameters":[{"name":"entry_id","in":"path","required":true,"schema":{"type":"integer","title":"Entry Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["notebook"],"summary":"Delete Entry","description":"Soft-delete an entry. Allowed for the creator, users above the creator\nin the role hierarchy, or admins.","operationId":"delete_entry_api_v1_notebook_entries__entry_id__delete","parameters":[{"name":"entry_id","in":"path","required":true,"schema":{"type":"integer","title":"Entry Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notebook/entries/{entry_id}/raw":{"get":{"tags":["notebook"],"summary":"Get Raw","description":"Admin-only raw source (text, consolidated, file list).","operationId":"get_raw_api_v1_notebook_entries__entry_id__raw_get","parameters":[{"name":"entry_id","in":"path","required":true,"schema":{"type":"integer","title":"Entry Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notebook/entries/{entry_id}/files/{file_id}":{"get":{"tags":["notebook"],"summary":"Download Raw File","description":"Admin-only download of a source file attached to an entry.","operationId":"download_raw_file_api_v1_notebook_entries__entry_id__files__file_id__get","parameters":[{"name":"entry_id","in":"path","required":true,"schema":{"type":"integer","title":"Entry Id"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notebook/entries/{entry_id}/suggestions/{suggestion_id}":{"patch":{"tags":["notebook"],"summary":"Patch Suggestion","operationId":"patch_suggestion_api_v1_notebook_entries__entry_id__suggestions__suggestion_id__patch","parameters":[{"name":"entry_id","in":"path","required":true,"schema":{"type":"integer","title":"Entry Id"}},{"name":"suggestion_id","in":"path","required":true,"schema":{"type":"string","title":"Suggestion Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuggestionPatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notebook/entries/{entry_id}/apply":{"post":{"tags":["notebook"],"summary":"Apply Entry","operationId":"apply_entry_api_v1_notebook_entries__entry_id__apply_post","parameters":[{"name":"entry_id","in":"path","required":true,"schema":{"type":"integer","title":"Entry Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplyResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/me/email-preferences":{"get":{"tags":["me"],"summary":"List Preferences","operationId":"list_preferences_api_v1_me_email_preferences_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EmailPreferenceItem"},"title":"Response List Preferences Api V1 Me Email Preferences Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["me"],"summary":"Update Preferences","operationId":"update_preferences_api_v1_me_email_preferences_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailPreferenceUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EmailPreferenceItem"},"title":"Response Update Preferences Api V1 Me Email Preferences Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports":{"get":{"tags":["reports"],"summary":"List Reports","operationId":"list_reports_api_v1_reports_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ReportOut"},"title":"Response List Reports Api V1 Reports Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["reports"],"summary":"Create Report","operationId":"create_report_api_v1_reports_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports/{report_id}":{"get":{"tags":["reports"],"summary":"Get Report","operationId":"get_report_api_v1_reports__report_id__get","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"integer","title":"Report Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["reports"],"summary":"Update Report","operationId":"update_report_api_v1_reports__report_id__patch","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"integer","title":"Report Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["reports"],"summary":"Delete Report","operationId":"delete_report_api_v1_reports__report_id__delete","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"integer","title":"Report Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports/preview":{"post":{"tags":["reports"],"summary":"Preview Report","description":"Run a draft spec without persisting a report or execution history.\n\nPowers the builder's live preview. Applies the caller's visibility and\nfield-level security just like a saved report's manual execution would,\nso what the user sees here is exactly what they'll get after saving.\n\nReturns the same snapshot shape as POST /{report_id}/execute so the\nfrontend renderer can be reused.","operationId":"preview_report_api_v1_reports_preview_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports/bulk/delete":{"post":{"tags":["reports"],"summary":"Bulk Delete Reports","description":"Delete many reports in one call — non-admins only delete what they own.\n\nSilently skips anything the caller can't touch so a partial mistake\ndoesn't fail the whole batch. The ``affected`` count is the honest\nnumber deleted, not the number requested.","operationId":"bulk_delete_reports_api_v1_reports_bulk_delete_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__schemas__report__BulkDeleteRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports/bulk/move":{"post":{"tags":["reports"],"summary":"Bulk Move Reports","description":"Move many reports to a folder (or clear it with ``folder=null``).","operationId":"bulk_move_reports_api_v1_reports_bulk_move_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkMoveRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports/{report_id}/preview":{"post":{"tags":["reports"],"summary":"Preview Saved Report","description":"Run a saved report on demand and return the result. Nothing is kept.\n\nThis is the only way results reach the screen. It writes no execution\nhistory and no snapshot: rows are computed with the caller's visibility,\nhanded back once, and forgotten. Use /execute to record a run.","operationId":"preview_saved_report_api_v1_reports__report_id__preview_post","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"integer","title":"Report Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ExecuteOptions"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports/{report_id}/exports":{"post":{"tags":["reports"],"summary":"Start Export","description":"Queue an export and return immediately.\n\nA run of a real report takes minutes, which is longer than a request\nshould live, so the work is handed to a worker and the caller watches the\nrun's status instead. The chosen format is fixed now rather than at\ndownload time: it decides how the report executes — CSV streams every\nmatching row, XLSX and PDF are bounded by what those formats can hold — so\none run cannot serve all three.\n\nExports always use the report's saved spec. Downloading a file whose\nperiod depended on what someone had on screen when they clicked would make\nthe same button mean different things at different times.","operationId":"start_export_api_v1_reports__report_id__exports_post","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"integer","title":"Report Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportCreate"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports/{report_id}/runs":{"get":{"tags":["reports"],"summary":"List Runs","description":"List manual export runs on this report.\n\nDefaults to the caller's own runs. A run's file holds rows fetched under\nthe visibility of whoever triggered it, so showing everyone's runs to\neveryone would advertise results the reader may have no claim to. Admins\ncan opt into the full list, and a non-admin asking for it is told no\nrather than quietly handed their own runs back.","operationId":"list_runs_api_v1_reports__report_id__runs_get","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"integer","title":"Report Id"}},{"name":"scope","in":"query","required":false,"schema":{"type":"string","pattern":"^(mine|all)$","default":"mine","title":"Scope"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RunOut"},"title":"Response List Runs Api V1 Reports  Report Id  Runs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports/{report_id}/executions/{execution_id}":{"get":{"tags":["reports"],"summary":"Get Execution","description":"Fetch a single run's audit metadata.\n\nResult rows are not part of this response and never were — to see data,\npreview the report or download a finished export.","operationId":"get_execution_api_v1_reports__report_id__executions__execution_id__get","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"integer","title":"Report Id"}},{"name":"execution_id","in":"path","required":true,"schema":{"type":"integer","title":"Execution Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecutionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports/{report_id}/exports/{execution_id}/download":{"get":{"tags":["reports"],"summary":"Download Export","description":"Stream the file this run produced.\n\nNothing is re-queried: the bytes were rendered when the run completed, so\nthe download is exactly what the run produced and costs no database work\nno matter how large the report is.","operationId":"download_export_api_v1_reports__report_id__exports__execution_id__download_get","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"integer","title":"Report Id"}},{"name":"execution_id","in":"path","required":true,"schema":{"type":"integer","title":"Execution Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports/{report_id}/schedules":{"get":{"tags":["reports"],"summary":"List Schedules","description":"List the report's mass email schedules.\n\nRestricted to the report's owner and admins — the same people who may\ncreate one. A schedule names its recipients and its cadence, which is\ninformation about how the organisation communicates rather than something\nevery viewer of the report has a reason to see.\n\nEach schedule carries its most recent run inline: a schedule is a cadence\nthat sends email, so what a reader needs is whether the last send worked.","operationId":"list_schedules_api_v1_reports__report_id__schedules_get","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"integer","title":"Report Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ScheduleOut"},"title":"Response List Schedules Api V1 Reports  Report Id  Schedules Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["reports"],"summary":"Create Schedule","operationId":"create_schedule_api_v1_reports__report_id__schedules_post","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"integer","title":"Report Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduleCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports/schedules/{schedule_id}":{"patch":{"tags":["reports"],"summary":"Update Schedule","operationId":"update_schedule_api_v1_reports_schedules__schedule_id__patch","parameters":[{"name":"schedule_id","in":"path","required":true,"schema":{"type":"integer","title":"Schedule Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduleUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["reports"],"summary":"Delete Schedule","operationId":"delete_schedule_api_v1_reports_schedules__schedule_id__delete","parameters":[{"name":"schedule_id","in":"path","required":true,"schema":{"type":"integer","title":"Schedule Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports/digests":{"get":{"tags":["reports"],"summary":"List Digests","description":"List the caller's digests. Each digest belongs to its owner;\nnon-owners can't see them even if they'd receive the resulting email.","operationId":"list_digests_api_v1_reports_digests_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DigestOut"},"title":"Response List Digests Api V1 Reports Digests Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["reports"],"summary":"Create Digest","description":"Create a digest. Requires `can_create_reports` since a digest is\neffectively a scheduled deliverable — same gate as a schedule.","operationId":"create_digest_api_v1_reports_digests_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DigestCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DigestOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports/digests/{digest_id}":{"patch":{"tags":["reports"],"summary":"Update Digest","operationId":"update_digest_api_v1_reports_digests__digest_id__patch","parameters":[{"name":"digest_id","in":"path","required":true,"schema":{"type":"integer","title":"Digest Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DigestUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DigestOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["reports"],"summary":"Delete Digest","operationId":"delete_digest_api_v1_reports_digests__digest_id__delete","parameters":[{"name":"digest_id","in":"path","required":true,"schema":{"type":"integer","title":"Digest Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports/digests/unsubscribe":{"get":{"tags":["reports"],"summary":"Pause Digest Via Token","description":"Pause a digest via one-click link — same signed-token scheme as\nsingle-report schedules, just flipping `report_digests.is_active`.","operationId":"pause_digest_via_token_api_v1_reports_digests_unsubscribe_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","description":"Signed pause token from a digest email footer.","title":"Token"},"description":"Signed pause token from a digest email footer."}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports/schedules/unsubscribe":{"get":{"tags":["reports"],"summary":"Pause Schedule Via Token","description":"Flip ``is_active = FALSE`` on the schedule referenced by ``token``.\n\nResponse is a minimal self-contained HTML page so the recipient sees\nconfirmation even if they click from a mobile mail client that strips\nscripts. Idempotent: re-clicking a used link is a no-op.","operationId":"pause_schedule_via_token_api_v1_reports_schedules_unsubscribe_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","description":"Signed pause token from an email footer.","title":"Token"},"description":"Signed pause token from an email footer."}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/reports/scheduler":{"get":{"tags":["admin-reports"],"summary":"Scheduler Status","operationId":"scheduler_status_api_v1_admin_reports_scheduler_get","parameters":[{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"description":"Look-back window for recent execution counts.","default":24,"title":"Hours"},"description":"Look-back window for recent execution counts."},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dashboards/folders":{"get":{"tags":["dashboards"],"summary":"List Folders","operationId":"list_folders_api_v1_dashboards_folders_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["dashboards"],"summary":"Create Folder","operationId":"create_folder_api_v1_dashboards_folders_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dashboards/folders/{folder_id}":{"patch":{"tags":["dashboards"],"summary":"Update Folder","operationId":"update_folder_api_v1_dashboards_folders__folder_id__patch","parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"integer","title":"Folder Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["dashboards"],"summary":"Delete Folder","operationId":"delete_folder_api_v1_dashboards_folders__folder_id__delete","parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"integer","title":"Folder Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dashboards/action-types":{"get":{"tags":["dashboards"],"summary":"List Action Types","description":"The catalogue an action may be configured as.\n\nBounded on purpose: an open-ended action field would mean every rule has\nan unknown blast radius.","operationId":"list_action_types_api_v1_dashboards_action_types_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dashboards":{"get":{"tags":["dashboards"],"summary":"List Dashboards","operationId":"list_dashboards_api_v1_dashboards_get","parameters":[{"name":"folder_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Folder Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["dashboards"],"summary":"Create Dashboard","operationId":"create_dashboard_api_v1_dashboards_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dashboards/{dashboard_id}":{"get":{"tags":["dashboards"],"summary":"Get Dashboard","description":"Metadata, widgets and shares — no report execution.\n\nThe builder needs the widget list to render its canvas before anything is\nrun, and paying for every query on each edit would make the page unusable.","operationId":"get_dashboard_api_v1_dashboards__dashboard_id__get","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"integer","title":"Dashboard Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["dashboards"],"summary":"Update Dashboard","operationId":"update_dashboard_api_v1_dashboards__dashboard_id__patch","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"integer","title":"Dashboard Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["dashboards"],"summary":"Delete Dashboard","operationId":"delete_dashboard_api_v1_dashboards__dashboard_id__delete","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"integer","title":"Dashboard Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dashboards/{dashboard_id}/duplicate":{"post":{"tags":["dashboards"],"summary":"Duplicate Dashboard","description":"Anyone who can view a dashboard can take their own copy of it.","operationId":"duplicate_dashboard_api_v1_dashboards__dashboard_id__duplicate_post","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"integer","title":"Dashboard Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dashboards/{dashboard_id}/data":{"get":{"tags":["dashboards"],"summary":"Get Data","operationId":"get_data_api_v1_dashboards__dashboard_id__data_get","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"integer","title":"Dashboard Id"}},{"name":"date_window","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Narrow every widget to one period, overriding the dashboard's saved default.","title":"Date Window"},"description":"Narrow every widget to one period, overriding the dashboard's saved default."},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dashboards/{dashboard_id}/data/stream":{"get":{"tags":["dashboards"],"summary":"Stream Data","description":"Same results as ``/data``, delivered per widget as each one finishes.\n\nA dashboard is only as fast as its slowest widget when the whole payload\nhas to be assembled first. Streaming lets the tiles that are ready render\nimmediately, which is most of them: widget cost on a real dashboard varies\nby an order of magnitude.\n\nAccess is resolved once, up front — a viewer who may not see the dashboard\ngets a 404 before the stream opens, not an error event inside it.","operationId":"stream_data_api_v1_dashboards__dashboard_id__data_stream_get","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"integer","title":"Dashboard Id"}},{"name":"date_window","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Narrow every widget to one period, overriding the dashboard's saved default.","title":"Date Window"},"description":"Narrow every widget to one period, overriding the dashboard's saved default."},{"name":"widget_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"integer"}},{"type":"null"}],"description":"Run only these widgets. The layout event then describes just the requested subset, so callers merge it into what they already hold rather than replacing their widget list.","title":"Widget Ids"},"description":"Run only these widgets. The layout event then describes just the requested subset, so callers merge it into what they already hold rather than replacing their widget list."},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dashboards/{dashboard_id}/widgets":{"post":{"tags":["dashboards"],"summary":"Add Widget","operationId":"add_widget_api_v1_dashboards__dashboard_id__widgets_post","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"integer","title":"Dashboard Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WidgetCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dashboards/{dashboard_id}/widgets/{widget_id}":{"patch":{"tags":["dashboards"],"summary":"Update Widget","operationId":"update_widget_api_v1_dashboards__dashboard_id__widgets__widget_id__patch","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"integer","title":"Dashboard Id"}},{"name":"widget_id","in":"path","required":true,"schema":{"type":"integer","title":"Widget Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WidgetUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["dashboards"],"summary":"Delete Widget","operationId":"delete_widget_api_v1_dashboards__dashboard_id__widgets__widget_id__delete","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"integer","title":"Dashboard Id"}},{"name":"widget_id","in":"path","required":true,"schema":{"type":"integer","title":"Widget Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dashboards/{dashboard_id}/layout":{"put":{"tags":["dashboards"],"summary":"Update Layout","description":"Persist the whole grid in one call — a drag moves several tiles.","operationId":"update_layout_api_v1_dashboards__dashboard_id__layout_put","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"integer","title":"Dashboard Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LayoutUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dashboards/{dashboard_id}/widgets/{widget_id}/actions":{"get":{"tags":["dashboards"],"summary":"List Widget Actions","operationId":"list_widget_actions_api_v1_dashboards__dashboard_id__widgets__widget_id__actions_get","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"integer","title":"Dashboard Id"}},{"name":"widget_id","in":"path","required":true,"schema":{"type":"integer","title":"Widget Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["dashboards"],"summary":"Create Widget Action","description":"Configuring an action is an edit to the dashboard, so it is owner/admin\nonly — the same gate as changing what the widget shows.","operationId":"create_widget_action_api_v1_dashboards__dashboard_id__widgets__widget_id__actions_post","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"integer","title":"Dashboard Id"}},{"name":"widget_id","in":"path","required":true,"schema":{"type":"integer","title":"Widget Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WidgetActionCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dashboards/{dashboard_id}/widgets/{widget_id}/actions/{action_id}":{"patch":{"tags":["dashboards"],"summary":"Update Widget Action","operationId":"update_widget_action_api_v1_dashboards__dashboard_id__widgets__widget_id__actions__action_id__patch","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"integer","title":"Dashboard Id"}},{"name":"widget_id","in":"path","required":true,"schema":{"type":"integer","title":"Widget Id"}},{"name":"action_id","in":"path","required":true,"schema":{"type":"integer","title":"Action Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WidgetActionUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["dashboards"],"summary":"Delete Widget Action","operationId":"delete_widget_action_api_v1_dashboards__dashboard_id__widgets__widget_id__actions__action_id__delete","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"integer","title":"Dashboard Id"}},{"name":"widget_id","in":"path","required":true,"schema":{"type":"integer","title":"Widget Id"}},{"name":"action_id","in":"path","required":true,"schema":{"type":"integer","title":"Action Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dashboards/{dashboard_id}/widgets/{widget_id}/actions/{action_id}/run":{"post":{"tags":["dashboards"],"summary":"Run Widget Action","description":"Run an action against one record, as the person who clicked.\n\nRunning only needs *view* access to the dashboard — the whole point is that\na rep works their own list. The action itself goes through the record\nservice under this user, so their field-level security and object\npermissions decide whether it is allowed, not the dashboard's.","operationId":"run_widget_action_api_v1_dashboards__dashboard_id__widgets__widget_id__actions__action_id__run_post","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"integer","title":"Dashboard Id"}},{"name":"widget_id","in":"path","required":true,"schema":{"type":"integer","title":"Widget Id"}},{"name":"action_id","in":"path","required":true,"schema":{"type":"integer","title":"Action Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WidgetActionRun"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/home/summary":{"get":{"tags":["home"],"summary":"Get Home Summary","operationId":"get_home_summary_api_v1_home_summary_get","parameters":[{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean","description":"Bypass the in-memory cache and recompute.","default":false,"title":"Refresh"},"description":"Bypass the in-memory cache and recompute."},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HomeSummaryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/home/layout":{"get":{"tags":["home"],"summary":"Get Home Layout","operationId":"get_home_layout_api_v1_home_layout_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HomeLayoutResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["home"],"summary":"Save Home Layout","operationId":"save_home_layout_api_v1_home_layout_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HomeLayoutUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/home/layout/reset":{"post":{"tags":["home"],"summary":"Reset Home Layout","operationId":"reset_home_layout_api_v1_home_layout_reset_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/motd":{"get":{"tags":["motd"],"summary":"Get Motd","description":"Return the current MOTD for the caller's tenant. Empty fields when unset.","operationId":"get_motd_api_v1_motd_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MOTDResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/motd":{"put":{"tags":["motd"],"summary":"Update Motd","description":"Replace the tenant's MOTD. Empty title + body clears it.","operationId":"update_motd_api_v1_admin_motd_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MOTDUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MOTDResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/objects/{object_type}/import/sample":{"get":{"tags":["import-export"],"summary":"Download Sample Csv","description":"Download a sample CSV whose columns match the fields assigned to a record type.\n\nThe CSV contains a header row of field ``api_name`` values and one\nexample row with type-appropriate placeholder values.","operationId":"download_sample_csv_api_v1_objects__object_type__import_sample_get","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"record_type_id","in":"query","required":true,"schema":{"type":"integer","description":"Record type to generate the sample for","title":"Record Type Id"},"description":"Record type to generate the sample for"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/objects/{object_type}/export":{"get":{"tags":["import-export"],"summary":"Export Records","description":"Export records as CSV. Respects sharing (only accessible records).\n\nEvery successful export is recorded to ``data_export_log`` so security\ncan trace exfiltration. The audit insert runs before we return the body\nso a logging failure aborts the download.","operationId":"export_records_api_v1_objects__object_type__export_get","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","default":"csv","title":"Format"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/objects/{object_type}/import":{"post":{"tags":["import-export"],"summary":"Import Records","description":"Import records from CSV.\n\nAll imports run as background jobs. Returns a job_id immediately.\nWhen *record_type_id* is provided it is injected into every row.\nRequires 'create' permission on the target object type.","operationId":"import_records_api_v1_objects__object_type__import_post","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"record_type_id","in":"query","required":false,"schema":{"type":"integer","description":"Record type to assign to all imported rows","title":"Record Type Id"},"description":"Record type to assign to all imported rows"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_import_records_api_v1_objects__object_type__import_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/objects/{object_type}/import/update/sample":{"get":{"tags":["import-export"],"summary":"Download Update Sample Csv","description":"Download a sample CSV for bulk-updating records.\n\nContains ``id`` as the first column plus all editable fields.\nNot scoped to a record type (target records may span RTs).\nRequires 'edit' permission on the object type.","operationId":"download_update_sample_csv_api_v1_objects__object_type__import_update_sample_get","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/objects/{object_type}/import/update":{"post":{"tags":["import-export"],"summary":"Import Update Records","description":"Bulk-update records from CSV.\n\nCSV columns must use field api_names exactly as shown in the sample template.\nRequires an ``id`` column to identify target records.  Extra columns not\nmatching a known field are silently ignored.\nAll imports run as background jobs. Returns a job_id immediately.\nRequires 'edit' permission on the target object type.","operationId":"import_update_records_api_v1_objects__object_type__import_update_post","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"record_type_id","in":"query","required":true,"schema":{"type":"integer","description":"Record type to scope the update to","title":"Record Type Id"},"description":"Record type to scope the update to"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_import_update_records_api_v1_objects__object_type__import_update_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/objects/{object_type}/import/transfer/sample":{"get":{"tags":["import-export"],"summary":"Download Transfer Sample Csv","description":"Download the sample CSV for a bulk ownership transfer.\n\nAn ``id`` column, plus a ``new_owner`` column when the *per_row_owner*\nquery parameter is set — the template for splitting one file across\nseveral owners.","operationId":"download_transfer_sample_csv_api_v1_objects__object_type__import_transfer_sample_get","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"per_row_owner","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Per Row Owner"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/objects/{object_type}/import/transfer/preview":{"post":{"tags":["import-export"],"summary":"Preview Transfer Records","description":"Dry-run a bulk ownership transfer and report what would happen.\n\nChanges nothing. Returns the number of records that would transfer, the\nones that would be skipped as already owned, and per-row reasons for the\nrest — including an ineligible target owner, which blocks every row.","operationId":"preview_transfer_records_api_v1_objects__object_type__import_transfer_preview_post","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_preview_transfer_records_api_v1_objects__object_type__import_transfer_preview_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/objects/{object_type}/import/transfer":{"post":{"tags":["import-export"],"summary":"Import Transfer Records","description":"Bulk-transfer ownership of the records listed in a CSV.\n\nThe file carries an ``id`` column and may carry a ``new_owner`` column to\nsend records to different users; rows without one go to *new_owner_id*.\nRuns as a background job — returns a job_id immediately.","operationId":"import_transfer_records_api_v1_objects__object_type__import_transfer_post","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_import_transfer_records_api_v1_objects__object_type__import_transfer_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/import-jobs/{job_id}/status":{"get":{"tags":["import-export"],"summary":"Import Job Status","description":"Get import job status. Only the job owner or admin can check.","operationId":"import_job_status_api_v1_import_jobs__job_id__status_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/import-jobs":{"get":{"tags":["import-export"],"summary":"List Import Jobs","description":"List import jobs, paginated. Admins see all tenant jobs; regular users see only their own.","operationId":"list_import_jobs_api_v1_import_jobs_get","parameters":[{"name":"object_type","in":"query","required":false,"schema":{"type":"string","title":"Object Type"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/import-jobs/{job_id}/errors":{"get":{"tags":["import-export"],"summary":"Get Import Job Errors","description":"Get the per-row errors for a specific import job. Only the job owner or admin can access.","operationId":"get_import_job_errors_api_v1_import_jobs__job_id__errors_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/favorites":{"get":{"tags":["favorites"],"summary":"Get Favorites","operationId":"get_favorites_api_v1_favorites_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/favorites/{object_type}/{record_id}":{"post":{"tags":["favorites"],"summary":"Toggle Favorite","operationId":"toggle_favorite_api_v1_favorites__object_type___record_id__post","parameters":[{"name":"object_type","in":"path","required":true,"schema":{"type":"string","title":"Object Type"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/leads/{lead_id}/convert":{"post":{"tags":["leads"],"summary":"Convert Lead","description":"Convert a lead to Account + Contact + optional Opportunity.","operationId":"convert_lead_api_v1_leads__lead_id__convert_post","parameters":[{"name":"lead_id","in":"path","required":true,"schema":{"type":"integer","title":"Lead Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadConvertRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadConvertResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/lead-conversion-mappings":{"get":{"tags":["admin-lead-conversion"],"summary":"List Mappings","description":"List all active mappings for a (source RT) scope.\n\n`source_record_type_id` omitted or null → default mappings.\nResponse groups rows by target object api_name.\n\nRead-only listing is available to any authenticated user — the\nConvert Lead modal uses it to pre-fill fields according to the\nconfigured mapping. Writes still require admin via `bulk_save_mappings`.","operationId":"list_mappings_api_v1_admin_lead_conversion_mappings_get","parameters":[{"name":"source_record_type_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Source Record Type Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin-lead-conversion"],"summary":"Bulk Save Mappings","description":"Replace all mappings for (source_record_type_id, target_object_id).\n\nStrict type validation: source and target fields must share the same\nfield_type. Lookup/reference source or target fields are rejected.","operationId":"bulk_save_mappings_api_v1_admin_lead_conversion_mappings_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadConversionMappingBulkUpsert"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/record-types/grouped":{"get":{"tags":["admin-record-types"],"summary":"List Record Types Grouped","description":"List record types grouped by name across all 4 supported objects.\n\nReturns a list of unique RT names with their per-object entries, used\nby the admin RecordTypesPage for the grouped management view.","operationId":"list_record_types_grouped_api_v1_admin_record_types_grouped_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Record Types Grouped Api V1 Admin Record Types Grouped Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/record-types/bulk":{"post":{"tags":["admin-record-types"],"summary":"Create Record Type Bulk","description":"Create a record type across all 4 supported objects at once.\n\nValidates name uniqueness (case-insensitive) per object and returns\n409 Conflict if a name collision is found on any object.","operationId":"create_record_type_bulk_api_v1_admin_record_types_bulk_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkRecordTypeCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Record Type Bulk Api V1 Admin Record Types Bulk Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/record-types/by-name/{rt_name}/backfill":{"post":{"tags":["admin-record-types"],"summary":"Backfill Record Type","description":"Create missing entries for this RT on objects that don't have it yet.","operationId":"backfill_record_type_api_v1_admin_record_types_by_name__rt_name__backfill_post","parameters":[{"name":"rt_name","in":"path","required":true,"schema":{"type":"string","title":"Rt Name"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Backfill Record Type Api V1 Admin Record Types By Name  Rt Name  Backfill Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/record-types/by-name/{rt_name}":{"put":{"tags":["admin-record-types"],"summary":"Update Record Type By Name","description":"Update name/description across all objects matching the given RT name.","operationId":"update_record_type_by_name_api_v1_admin_record_types_by_name__rt_name__put","parameters":[{"name":"rt_name","in":"path","required":true,"schema":{"type":"string","title":"Rt Name"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkRecordTypeUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Record Type By Name Api V1 Admin Record Types By Name  Rt Name  Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/record-types/by-name/{rt_name}/deactivate":{"post":{"tags":["admin-record-types"],"summary":"Deactivate Record Type By Name","description":"Deactivate all record types with this name across all objects.\n\nReturns a warning if this was the last active RT for any object.","operationId":"deactivate_record_type_by_name_api_v1_admin_record_types_by_name__rt_name__deactivate_post","parameters":[{"name":"rt_name","in":"path","required":true,"schema":{"type":"string","title":"Rt Name"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Deactivate Record Type By Name Api V1 Admin Record Types By Name  Rt Name  Deactivate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/record-types/by-name/{rt_name}/activate":{"post":{"tags":["admin-record-types"],"summary":"Activate Record Type By Name","description":"Activate all record types with this name across all objects.","operationId":"activate_record_type_by_name_api_v1_admin_record_types_by_name__rt_name__activate_post","parameters":[{"name":"rt_name","in":"path","required":true,"schema":{"type":"string","title":"Rt Name"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Activate Record Type By Name Api V1 Admin Record Types By Name  Rt Name  Activate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/record-types":{"get":{"tags":["admin-record-types"],"summary":"List Record Types","description":"List all record types (active + inactive) for a single object.","operationId":"list_record_types_api_v1_admin_record_types_get","parameters":[{"name":"object_type","in":"query","required":true,"schema":{"type":"string","description":"Object api_name, e.g. 'Lead'","title":"Object Type"},"description":"Object api_name, e.g. 'Lead'"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Record Types Api V1 Admin Record Types Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin-record-types"],"summary":"Create Record Type","description":"Create a record type for a single object.\n\nValidates name uniqueness (case-insensitive) per object. Returns\n409 Conflict on duplicate name.","operationId":"create_record_type_api_v1_admin_record_types_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordTypeCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Record Type Api V1 Admin Record Types Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/record-types/{record_type_id}":{"put":{"tags":["admin-record-types"],"summary":"Update Record Type","description":"Update a record type's name, description, is_default.","operationId":"update_record_type_api_v1_admin_record_types__record_type_id__put","parameters":[{"name":"record_type_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Type Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordTypeUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Record Type Api V1 Admin Record Types  Record Type Id  Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/record-types/{record_type_id}/deactivate":{"post":{"tags":["admin-record-types"],"summary":"Deactivate Record Type","description":"Deactivate a single record type.\n\nReturns warning when deactivating the last active RT for the object.","operationId":"deactivate_record_type_api_v1_admin_record_types__record_type_id__deactivate_post","parameters":[{"name":"record_type_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Type Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Deactivate Record Type Api V1 Admin Record Types  Record Type Id  Deactivate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/record-types/{record_type_id}/activate":{"post":{"tags":["admin-record-types"],"summary":"Activate Record Type","description":"Reactivate a previously deactivated record type.","operationId":"activate_record_type_api_v1_admin_record_types__record_type_id__activate_post","parameters":[{"name":"record_type_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Type Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Activate Record Type Api V1 Admin Record Types  Record Type Id  Activate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/record-types/{record_type_id}/fields":{"get":{"tags":["admin-record-types"],"summary":"Get Field Assignments","description":"Return all fields for the object with ``assigned=True/False`` flags per RT.\n\nResponse includes record_type_id, assigned_field_ids, and all_fields\n(each with id, api_name, label, field_type, is_required, assigned).","operationId":"get_field_assignments_api_v1_admin_record_types__record_type_id__fields_get","parameters":[{"name":"record_type_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Type Id"}},{"name":"object_type","in":"query","required":true,"schema":{"type":"string","description":"Object api_name for field lookup","title":"Object Type"},"description":"Object api_name for field lookup"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Field Assignments Api V1 Admin Record Types  Record Type Id  Fields Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin-record-types"],"summary":"Set Field Assignments","description":"Replace the field assignments for a record type.\n\nAccepts either ``field_ids`` (legacy, all is_required=False) or\n``assignments`` (list of {field_id, is_required} dicts).","operationId":"set_field_assignments_api_v1_admin_record_types__record_type_id__fields_put","parameters":[{"name":"record_type_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Type Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordTypeFieldAssignmentUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Set Field Assignments Api V1 Admin Record Types  Record Type Id  Fields Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/validation-rules":{"get":{"tags":["admin-validation"],"summary":"List Rules","description":"List validation rules, optionally filtered by object type or field.","operationId":"list_rules_api_v1_admin_validation_rules_get","parameters":[{"name":"object_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by object api_name","title":"Object Type"},"description":"Filter by object api_name"},{"name":"field_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by field_id","title":"Field Id"},"description":"Filter by field_id"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin-validation"],"summary":"Create Rule","description":"Create a new validation rule, optionally linked to a specific field.","operationId":"create_rule_api_v1_admin_validation_rules_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/validation-rules/{rule_id}":{"get":{"tags":["admin-validation"],"summary":"Get Rule","description":"Get a single validation rule by ID.","operationId":"get_rule_api_v1_admin_validation_rules__rule_id__get","parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"integer","title":"Rule Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin-validation"],"summary":"Update Rule","description":"Update an existing validation rule.","operationId":"update_rule_api_v1_admin_validation_rules__rule_id__put","parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"integer","title":"Rule Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-validation"],"summary":"Delete Rule","description":"Delete a validation rule.","operationId":"delete_rule_api_v1_admin_validation_rules__rule_id__delete","parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"integer","title":"Rule Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/groups":{"get":{"tags":["admin-groups"],"summary":"List Groups","description":"List all security groups with member counts.","operationId":"list_groups_api_v1_admin_groups_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GroupResponse"},"title":"Response List Groups Api V1 Admin Groups Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin-groups"],"summary":"Create Group","description":"Create a new security group.","operationId":"create_group_api_v1_admin_groups_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/groups/{group_id}":{"get":{"tags":["admin-groups"],"summary":"Get Group","description":"Get security group detail with members and assigned permission sets.","operationId":"get_group_api_v1_admin_groups__group_id__get","parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"integer","title":"Group Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Group Api V1 Admin Groups  Group Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin-groups"],"summary":"Update Group","description":"Update a security group.\n\nIf is_active changes, invalidates all permission caches since group\nmembership affects permission set resolution.","operationId":"update_group_api_v1_admin_groups__group_id__put","parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"integer","title":"Group Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-groups"],"summary":"Delete Group","description":"Delete a security group and invalidate permission caches.","operationId":"delete_group_api_v1_admin_groups__group_id__delete","parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"integer","title":"Group Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Group Api V1 Admin Groups  Group Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/groups/{group_id}/members":{"get":{"tags":["admin-groups"],"summary":"List Members","description":"List all members of a group.","operationId":"list_members_api_v1_admin_groups__group_id__members_get","parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"integer","title":"Group Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GroupMemberResponse"},"title":"Response List Members Api V1 Admin Groups  Group Id  Members Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin-groups"],"summary":"Add Member","description":"Add a user to a security group. Invalidates permission caches.","operationId":"add_member_api_v1_admin_groups__group_id__members_post","parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"integer","title":"Group Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Add Member Api V1 Admin Groups  Group Id  Members Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/groups/{group_id}/members/{user_id}":{"delete":{"tags":["admin-groups"],"summary":"Remove Member","description":"Remove a user from a security group. Invalidates permission caches.","operationId":"remove_member_api_v1_admin_groups__group_id__members__user_id__delete","parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"integer","title":"Group Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Remove Member Api V1 Admin Groups  Group Id  Members  User Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/groups/{group_id}/permission-sets":{"get":{"tags":["admin-groups"],"summary":"List Group Permission Sets","description":"List all permission sets assigned to a group.","operationId":"list_group_permission_sets_api_v1_admin_groups__group_id__permission_sets_get","parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"integer","title":"Group Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GroupPermissionSetResponse"},"title":"Response List Group Permission Sets Api V1 Admin Groups  Group Id  Permission Sets Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin-groups"],"summary":"Assign Permission Set","description":"Assign a permission set to a security group. Invalidates permission caches.","operationId":"assign_permission_set_api_v1_admin_groups__group_id__permission_sets_post","parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"integer","title":"Group Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Assign Permission Set Api V1 Admin Groups  Group Id  Permission Sets Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/groups/{group_id}/permission-sets/{permission_set_id}":{"delete":{"tags":["admin-groups"],"summary":"Unassign Permission Set","description":"Remove a permission set from a security group. Invalidates permission caches.","operationId":"unassign_permission_set_api_v1_admin_groups__group_id__permission_sets__permission_set_id__delete","parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"integer","title":"Group Id"}},{"name":"permission_set_id","in":"path","required":true,"schema":{"type":"integer","title":"Permission Set Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Unassign Permission Set Api V1 Admin Groups  Group Id  Permission Sets  Permission Set Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/platform/tenants":{"get":{"tags":["platform"],"summary":"List Tenants","description":"List all tenants (super-admin only).","operationId":"list_tenants_api_v1_platform_tenants_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["platform"],"summary":"Create Tenant","description":"Create a new tenant (super-admin only).","operationId":"create_tenant_api_v1_platform_tenants_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/platform/tenants/{tenant_id}":{"get":{"tags":["platform"],"summary":"Get Tenant","description":"Get a tenant by ID (super-admin only).","operationId":"get_tenant_api_v1_platform_tenants__tenant_id__get","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"integer","title":"Tenant Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["platform"],"summary":"Update Tenant","description":"Update a tenant (super-admin only).","operationId":"update_tenant_api_v1_platform_tenants__tenant_id__put","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"integer","title":"Tenant Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/platform/tenants/{tenant_id}/members":{"get":{"tags":["platform"],"summary":"List Tenant Members","description":"List all members of a tenant (super-admin only).","operationId":"list_tenant_members_api_v1_platform_tenants__tenant_id__members_get","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"integer","title":"Tenant Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["platform"],"summary":"Add Tenant Member","description":"Add a user to a tenant (super-admin only).","operationId":"add_tenant_member_api_v1_platform_tenants__tenant_id__members_post","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"integer","title":"Tenant Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MembershipCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/platform/tenants/{tenant_id}/members/{user_id}":{"delete":{"tags":["platform"],"summary":"Remove Tenant Member","description":"Remove a user from a tenant (super-admin only).","operationId":"remove_tenant_member_api_v1_platform_tenants__tenant_id__members__user_id__delete","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"integer","title":"Tenant Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/platform/my-tenants":{"get":{"tags":["platform"],"summary":"List My Tenants","description":"List tenants the current user belongs to.","operationId":"list_my_tenants_api_v1_platform_my_tenants_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/email-settings":{"get":{"tags":["email-settings"],"summary":"Get Email Settings","description":"Get email settings for the current tenant (admin-only).\n\nSecret values are returned masked for security.","operationId":"get_email_settings_api_v1_admin_email_settings_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailSettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["email-settings"],"summary":"Update Email Settings","description":"Update email settings for the current tenant (admin-only).\n\nIf a secret field contains the mask pattern ('****'), the\nexisting value is preserved. Send a new full value to replace it.","operationId":"update_email_settings_api_v1_admin_email_settings_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailSettingsUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailSettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/email-settings/test":{"post":{"tags":["email-settings"],"summary":"Test Email Settings","description":"Send a test email to the current user using the saved email configuration.\n\nUses the persisted settings (not unsaved form values) so the admin\nmust save first, then test.","operationId":"test_email_settings_api_v1_admin_email_settings_test_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestEmailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/email-alerts":{"get":{"tags":["admin-email-alerts"],"summary":"List Alerts","operationId":"list_alerts_api_v1_admin_email_alerts_get","parameters":[{"name":"object_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object Type"}},{"name":"include_inactive","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Inactive"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EmailAlertResponse"},"title":"Response List Alerts Api V1 Admin Email Alerts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin-email-alerts"],"summary":"Create Alert","operationId":"create_alert_api_v1_admin_email_alerts_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailAlertCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailAlertResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/email-alerts/{alert_id}":{"get":{"tags":["admin-email-alerts"],"summary":"Get Alert","operationId":"get_alert_api_v1_admin_email_alerts__alert_id__get","parameters":[{"name":"alert_id","in":"path","required":true,"schema":{"type":"integer","title":"Alert Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailAlertResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin-email-alerts"],"summary":"Update Alert","operationId":"update_alert_api_v1_admin_email_alerts__alert_id__put","parameters":[{"name":"alert_id","in":"path","required":true,"schema":{"type":"integer","title":"Alert Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailAlertUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailAlertResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-email-alerts"],"summary":"Delete Alert","operationId":"delete_alert_api_v1_admin_email_alerts__alert_id__delete","parameters":[{"name":"alert_id","in":"path","required":true,"schema":{"type":"integer","title":"Alert Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/email-letterheads":{"get":{"tags":["admin-email-letterheads"],"summary":"List Letterheads","operationId":"list_letterheads_api_v1_admin_email_letterheads_get","parameters":[{"name":"include_inactive","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Inactive"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EmailLetterheadResponse"},"title":"Response List Letterheads Api V1 Admin Email Letterheads Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin-email-letterheads"],"summary":"Create Letterhead","operationId":"create_letterhead_api_v1_admin_email_letterheads_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailLetterheadCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailLetterheadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/email-letterheads/{letterhead_id}":{"get":{"tags":["admin-email-letterheads"],"summary":"Get Letterhead","operationId":"get_letterhead_api_v1_admin_email_letterheads__letterhead_id__get","parameters":[{"name":"letterhead_id","in":"path","required":true,"schema":{"type":"integer","title":"Letterhead Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailLetterheadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin-email-letterheads"],"summary":"Update Letterhead","operationId":"update_letterhead_api_v1_admin_email_letterheads__letterhead_id__put","parameters":[{"name":"letterhead_id","in":"path","required":true,"schema":{"type":"integer","title":"Letterhead Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailLetterheadUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailLetterheadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-email-letterheads"],"summary":"Delete Letterhead","operationId":"delete_letterhead_api_v1_admin_email_letterheads__letterhead_id__delete","parameters":[{"name":"letterhead_id","in":"path","required":true,"schema":{"type":"integer","title":"Letterhead Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/email-letterheads/logo":{"post":{"tags":["admin-email-letterheads"],"summary":"Upload Letterhead Logo","description":"Upload a logo image and return its storage URL.\n\nThe returned ``url`` is what the admin UI stores in ``logo_storage_key``\non the letterhead. Accepts PNG, JPEG, SVG, WebP up to 2 MB.","operationId":"upload_letterhead_logo_api_v1_admin_email_letterheads_logo_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_letterhead_logo_api_v1_admin_email_letterheads_logo_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Upload Letterhead Logo Api V1 Admin Email Letterheads Logo Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/email-org-addresses":{"get":{"tags":["admin-email-org-addresses"],"summary":"List Addresses","operationId":"list_addresses_api_v1_admin_email_org_addresses_get","parameters":[{"name":"include_inactive","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Inactive"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EmailOrgAddressResponse"},"title":"Response List Addresses Api V1 Admin Email Org Addresses Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin-email-org-addresses"],"summary":"Create Address","operationId":"create_address_api_v1_admin_email_org_addresses_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailOrgAddressCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailOrgAddressResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/email-org-addresses/{org_address_id}":{"get":{"tags":["admin-email-org-addresses"],"summary":"Get Address","operationId":"get_address_api_v1_admin_email_org_addresses__org_address_id__get","parameters":[{"name":"org_address_id","in":"path","required":true,"schema":{"type":"integer","title":"Org Address Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailOrgAddressResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin-email-org-addresses"],"summary":"Update Address","operationId":"update_address_api_v1_admin_email_org_addresses__org_address_id__put","parameters":[{"name":"org_address_id","in":"path","required":true,"schema":{"type":"integer","title":"Org Address Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailOrgAddressUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailOrgAddressResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-email-org-addresses"],"summary":"Delete Address","operationId":"delete_address_api_v1_admin_email_org_addresses__org_address_id__delete","parameters":[{"name":"org_address_id","in":"path","required":true,"schema":{"type":"integer","title":"Org Address Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/email-org-addresses/{org_address_id}/resend-verification":{"post":{"tags":["admin-email-org-addresses"],"summary":"Resend Verification","operationId":"resend_verification_api_v1_admin_email_org_addresses__org_address_id__resend_verification_post","parameters":[{"name":"org_address_id","in":"path","required":true,"schema":{"type":"integer","title":"Org Address Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailOrgAddressResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/email-org-addresses/{org_address_id}/check-verification":{"post":{"tags":["admin-email-org-addresses"],"summary":"Check Verification","operationId":"check_verification_api_v1_admin_email_org_addresses__org_address_id__check_verification_post","parameters":[{"name":"org_address_id","in":"path","required":true,"schema":{"type":"integer","title":"Org Address Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationCheckResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/email-stats":{"get":{"tags":["admin-email-stats"],"summary":"Get Stats","operationId":"get_stats_api_v1_admin_email_stats_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Days"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Stats Api V1 Admin Email Stats Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/email-template-folders":{"get":{"tags":["admin-email-template-folders"],"summary":"List Folders","description":"List folders the caller can view, with per-folder can_view/can_edit flags.","operationId":"list_folders_api_v1_admin_email_template_folders_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EmailTemplateFolderResponse"},"title":"Response List Folders Api V1 Admin Email Template Folders Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin-email-template-folders"],"summary":"Create Folder","operationId":"create_folder_api_v1_admin_email_template_folders_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplateFolderCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplateFolderResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/email-template-folders/{folder_id}":{"get":{"tags":["admin-email-template-folders"],"summary":"Get Folder","operationId":"get_folder_api_v1_admin_email_template_folders__folder_id__get","parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"integer","title":"Folder Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplateFolderResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin-email-template-folders"],"summary":"Update Folder","operationId":"update_folder_api_v1_admin_email_template_folders__folder_id__put","parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"integer","title":"Folder Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplateFolderUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplateFolderResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-email-template-folders"],"summary":"Delete Folder","operationId":"delete_folder_api_v1_admin_email_template_folders__folder_id__delete","parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"integer","title":"Folder Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/email-template-folders/{folder_id}/shares":{"get":{"tags":["admin-email-template-folders"],"summary":"List Shares","operationId":"list_shares_api_v1_admin_email_template_folders__folder_id__shares_get","parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"integer","title":"Folder Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EmailTemplateFolderShareResponse"},"title":"Response List Shares Api V1 Admin Email Template Folders  Folder Id  Shares Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin-email-template-folders"],"summary":"Add Share","operationId":"add_share_api_v1_admin_email_template_folders__folder_id__shares_post","parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"integer","title":"Folder Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplateFolderShareCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplateFolderShareResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/email-template-folders/{folder_id}/shares/{share_id}":{"delete":{"tags":["admin-email-template-folders"],"summary":"Remove Share","operationId":"remove_share_api_v1_admin_email_template_folders__folder_id__shares__share_id__delete","parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"integer","title":"Folder Id"}},{"name":"share_id","in":"path","required":true,"schema":{"type":"integer","title":"Share Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/email-templates":{"get":{"tags":["admin-email-templates"],"summary":"List Templates","operationId":"list_templates_api_v1_admin_email_templates_get","parameters":[{"name":"folder_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Folder Id"}},{"name":"object_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object Type"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EmailTemplateResponse"},"title":"Response List Templates Api V1 Admin Email Templates Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin-email-templates"],"summary":"Create Template","operationId":"create_template_api_v1_admin_email_templates_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplateCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/email-templates/{template_id}":{"get":{"tags":["admin-email-templates"],"summary":"Get Template","operationId":"get_template_api_v1_admin_email_templates__template_id__get","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"integer","title":"Template Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin-email-templates"],"summary":"Update Template","operationId":"update_template_api_v1_admin_email_templates__template_id__put","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"integer","title":"Template Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplateUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-email-templates"],"summary":"Delete Template","operationId":"delete_template_api_v1_admin_email_templates__template_id__delete","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"integer","title":"Template Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/email-templates/{template_id}/attachments":{"get":{"tags":["admin-email-templates"],"summary":"List Attachments","operationId":"list_attachments_api_v1_admin_email_templates__template_id__attachments_get","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"integer","title":"Template Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EmailTemplateAttachmentResponse"},"title":"Response List Attachments Api V1 Admin Email Templates  Template Id  Attachments Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin-email-templates"],"summary":"Add Attachment","description":"Upload a file and attach it to the template.\n\nFiles are stored in the tenant's configured object storage (GCS or OBS).\nCapped at 10 MB per attachment.","operationId":"add_attachment_api_v1_admin_email_templates__template_id__attachments_post","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"integer","title":"Template Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_add_attachment_api_v1_admin_email_templates__template_id__attachments_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplateAttachmentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/email-templates/{template_id}/attachments/{attachment_id}":{"delete":{"tags":["admin-email-templates"],"summary":"Remove Attachment","operationId":"remove_attachment_api_v1_admin_email_templates__template_id__attachments__attachment_id__delete","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"integer","title":"Template Id"}},{"name":"attachment_id","in":"path","required":true,"schema":{"type":"integer","title":"Attachment Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/email-templates/{template_id}/send-test":{"post":{"tags":["admin-email-templates"],"summary":"Send Test Email","description":"Send the rendered template to the calling admin's own mailbox.\n\nSubject is prefixed with ``[TEST]`` so it can't be confused with a real\nsend. Uses the same pipeline as production so what lands in the inbox\nis exactly what a recipient would see.","operationId":"send_test_email_api_v1_admin_email_templates__template_id__send_test_post","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"integer","title":"Template Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplateTestSendRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplateTestSendResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/email-templates/{template_id}/preview":{"post":{"tags":["admin-email-templates"],"summary":"Preview Template","description":"Render a template against a sample record and return subject + body.\n\nUsed by the template editor's preview pane. Returns ``warnings`` so admins\nsee when merge fields couldn't resolve (missing sample, missing record).","operationId":"preview_template_api_v1_admin_email_templates__template_id__preview_post","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"integer","title":"Template Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplatePreviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplatePreviewResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/system-email-templates":{"get":{"tags":["admin-system-email-templates"],"summary":"List Templates","description":"Return every system_key with its effective values (override or default).","operationId":"list_templates_api_v1_admin_system_email_templates_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SystemEmailTemplateResponse"},"title":"Response List Templates Api V1 Admin System Email Templates Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/system-email-templates/{system_key}":{"get":{"tags":["admin-system-email-templates"],"summary":"Get Template","operationId":"get_template_api_v1_admin_system_email_templates__system_key__get","parameters":[{"name":"system_key","in":"path","required":true,"schema":{"type":"string","title":"System Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemEmailTemplateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin-system-email-templates"],"summary":"Upsert Template","operationId":"upsert_template_api_v1_admin_system_email_templates__system_key__put","parameters":[{"name":"system_key","in":"path","required":true,"schema":{"type":"string","title":"System Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemEmailTemplateUpsert"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemEmailTemplateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-system-email-templates"],"summary":"Reset Template","description":"Drop the override → reverts to the baked-in default.","operationId":"reset_template_api_v1_admin_system_email_templates__system_key__delete","parameters":[{"name":"system_key","in":"path","required":true,"schema":{"type":"string","title":"System Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/system-email-templates/{system_key}/test":{"post":{"tags":["admin-system-email-templates"],"summary":"Send Test","description":"Render the current effective template with placeholder values and\nsend it to the requesting admin's own email.","operationId":"send_test_api_v1_admin_system_email_templates__system_key__test_post","parameters":[{"name":"system_key","in":"path","required":true,"schema":{"type":"string","title":"System Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/SystemEmailTestRequest"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Send Test Api V1 Admin System Email Templates  System Key  Test Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/feature-settings":{"get":{"tags":["feature-settings"],"summary":"Get Feature Settings","description":"Get feature settings for the current tenant (admin-only).","operationId":"get_feature_settings_api_v1_admin_feature_settings_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeatureSettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["feature-settings"],"summary":"Update Feature Settings","description":"Update feature settings for the current tenant (admin-only).","operationId":"update_feature_settings_api_v1_admin_feature_settings_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeatureSettingsUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeatureSettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/shipper-onboarding/jobs":{"get":{"tags":["shipper-onboarding"],"summary":"List Jobs","operationId":"list_jobs_api_v1_admin_shipper_onboarding_jobs_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Page Size"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"country_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"}},{"name":"opportunity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Opportunity Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Jobs Api V1 Admin Shipper Onboarding Jobs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/shipper-onboarding/jobs/{job_id}":{"get":{"tags":["shipper-onboarding"],"summary":"Get Job","operationId":"get_job_api_v1_admin_shipper_onboarding_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Job Api V1 Admin Shipper Onboarding Jobs  Job Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/shipper-onboarding/jobs/{job_id}/retry":{"post":{"tags":["shipper-onboarding"],"summary":"Retry Job","operationId":"retry_job_api_v1_admin_shipper_onboarding_jobs__job_id__retry_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Retry Job Api V1 Admin Shipper Onboarding Jobs  Job Id  Retry Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/branding":{"get":{"tags":["branding"],"summary":"Get Branding Settings","description":"Get branding settings for the current tenant (admin-only).","operationId":"get_branding_settings_api_v1_admin_branding_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandingSettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["branding"],"summary":"Update Branding Settings","description":"Update branding settings for the current tenant (admin-only).","operationId":"update_branding_settings_api_v1_admin_branding_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandingSettingsUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandingSettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/currency-settings":{"get":{"tags":["currency-settings"],"summary":"Get Currency Settings","description":"Get currency settings for the current tenant (admin-only).","operationId":"get_currency_settings_api_v1_admin_currency_settings_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurrencySettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["currency-settings"],"summary":"Update Currency Settings","description":"Update currency settings for the current tenant (admin-only).\n\nValidates that:\n- supported_codes is not empty\n- default_code is included in supported_codes","operationId":"update_currency_settings_api_v1_admin_currency_settings_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurrencySettingsUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurrencySettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/storage-settings/obs-regions":{"get":{"tags":["storage-settings"],"summary":"List Obs Regions","description":"Return the curated list of supported Huawei OBS regions.","operationId":"list_obs_regions_api_v1_admin_storage_settings_obs_regions_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ObsRegionsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/storage-settings":{"get":{"tags":["storage-settings"],"summary":"Get Storage Settings","description":"Get cloud storage settings for the current tenant (admin-only). Secrets are masked.","operationId":"get_storage_settings_api_v1_admin_storage_settings_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorageSettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["storage-settings"],"summary":"Update Storage Settings","description":"Update cloud storage settings for the current tenant (admin-only).\n\nMasked secret values (containing '****') are ignored — the existing secret\nis preserved. Send a fresh value to overwrite.","operationId":"update_storage_settings_api_v1_admin_storage_settings_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorageSettingsUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorageSettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/storage-settings/test":{"post":{"tags":["storage-settings"],"summary":"Test Storage Connection","description":"Test the saved storage credentials and bucket access (admin-only).","operationId":"test_storage_connection_api_v1_admin_storage_settings_test_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestConnectionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/uploads/tenant-logo":{"post":{"tags":["uploads"],"summary":"Upload Tenant Logo","description":"Upload a tenant logo image (admin-only).\n\nAccepts PNG, JPEG, SVG, or WebP up to 2 MB. The file is uploaded to the\ntenant's configured object storage and the public URL is returned.","operationId":"upload_tenant_logo_api_v1_uploads_tenant_logo_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_tenant_logo_api_v1_uploads_tenant_logo_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/files/upload":{"post":{"tags":["files"],"summary":"Upload File","description":"Upload a file and return its metadata.\n\nReturns a file object suitable for storing in a record's file field:\n{file_id, name, size, content_type}","operationId":"upload_file_api_v1_files_upload_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_file_api_v1_files_upload_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/files/{file_id}":{"get":{"tags":["files"],"summary":"Download File","description":"Download/serve a file by its ID.\n\nStreams the file contents from object storage (GCS or OBS).","operationId":"download_file_api_v1_files__file_id__get","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["files"],"summary":"Delete File","description":"Delete a file by its ID.\n\nRemoves both the stored file and the database record.","operationId":"delete_file_api_v1_files__file_id__delete","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/user-roles/record-type-groups":{"get":{"tags":["admin-user-roles"],"summary":"List Record Type Groups","description":"List all record type groups for the tenant.","operationId":"list_record_type_groups_api_v1_admin_user_roles_record_type_groups_get","parameters":[{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Active Only"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RecordTypeGroupOut"},"title":"Response List Record Type Groups Api V1 Admin User Roles Record Type Groups Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin-user-roles"],"summary":"Create Record Type Group","description":"Create a new record type group.","operationId":"create_record_type_group_api_v1_admin_user_roles_record_type_groups_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordTypeGroupCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordTypeGroupOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/user-roles/record-type-groups/{group_id}":{"put":{"tags":["admin-user-roles"],"summary":"Update Record Type Group","description":"Update a record type group.","operationId":"update_record_type_group_api_v1_admin_user_roles_record_type_groups__group_id__put","parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"integer","title":"Group Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordTypeGroupUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordTypeGroupOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/user-roles":{"get":{"tags":["admin-user-roles"],"summary":"List User Roles","description":"List all user roles with summary info.","operationId":"list_user_roles_api_v1_admin_user_roles_get","parameters":[{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Active Only"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UserRoleListItem"},"title":"Response List User Roles Api V1 Admin User Roles Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin-user-roles"],"summary":"Create User Role","description":"Create a new user role with optional group and permission assignments.","operationId":"create_user_role_api_v1_admin_user_roles_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRoleCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRoleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/user-roles/{role_id}":{"get":{"tags":["admin-user-roles"],"summary":"Get User Role","description":"Get full details of a user role (groups, permissions, user count).","operationId":"get_user_role_api_v1_admin_user_roles__role_id__get","parameters":[{"name":"role_id","in":"path","required":true,"schema":{"type":"integer","title":"Role Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRoleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin-user-roles"],"summary":"Update User Role","description":"Update a user role and optionally its groups/permissions.","operationId":"update_user_role_api_v1_admin_user_roles__role_id__put","parameters":[{"name":"role_id","in":"path","required":true,"schema":{"type":"integer","title":"Role Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRoleUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRoleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-user-roles"],"summary":"Delete User Role","description":"Delete a user role. Fails if users are still assigned.","operationId":"delete_user_role_api_v1_admin_user_roles__role_id__delete","parameters":[{"name":"role_id","in":"path","required":true,"schema":{"type":"integer","title":"Role Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete User Role Api V1 Admin User Roles  Role Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/user-roles/{role_id}/users":{"get":{"tags":["admin-user-roles"],"summary":"Get Role Users","description":"Get all users assigned to a role.","operationId":"get_role_users_api_v1_admin_user_roles__role_id__users_get","parameters":[{"name":"role_id","in":"path","required":true,"schema":{"type":"integer","title":"Role Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Get Role Users Api V1 Admin User Roles  Role Id  Users Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/user-roles/hierarchy/summary":{"get":{"tags":["admin-user-roles"],"summary":"Get Hierarchy Summary","description":"Get a summary of hierarchy configuration across all groups.\n\nReturns multi-group roles with their per-group child counts,\nflagging roles that have incomplete hierarchy.","operationId":"get_hierarchy_summary_api_v1_admin_user_roles_hierarchy_summary_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Hierarchy Summary Api V1 Admin User Roles Hierarchy Summary Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/user-roles/hierarchy/{group_id}/eligible-roles":{"get":{"tags":["admin-user-roles"],"summary":"Get Eligible Roles For Group","description":"Get roles that are bound to a record type group (eligible for hierarchy).","operationId":"get_eligible_roles_for_group_api_v1_admin_user_roles_hierarchy__group_id__eligible_roles_get","parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"integer","title":"Group Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Get Eligible Roles For Group Api V1 Admin User Roles Hierarchy  Group Id  Eligible Roles Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/user-roles/hierarchy/{group_id}":{"get":{"tags":["admin-user-roles"],"summary":"Get Hierarchy","description":"Get the role hierarchy for a record type group.","operationId":"get_hierarchy_api_v1_admin_user_roles_hierarchy__group_id__get","parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"integer","title":"Group Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/HierarchyEntryOut"},"title":"Response Get Hierarchy Api V1 Admin User Roles Hierarchy  Group Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin-user-roles"],"summary":"Set Hierarchy","description":"Replace the entire hierarchy for a record type group.","operationId":"set_hierarchy_api_v1_admin_user_roles_hierarchy__group_id__put","parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"integer","title":"Group Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetHierarchyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/HierarchyEntryOut"},"title":"Response Set Hierarchy Api V1 Admin User Roles Hierarchy  Group Id  Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin-user-roles"],"summary":"Add Hierarchy Entry","description":"Add a single parent/child relationship to a hierarchy.","operationId":"add_hierarchy_entry_api_v1_admin_user_roles_hierarchy__group_id__post","parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"integer","title":"Group Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddHierarchyRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Add Hierarchy Entry Api V1 Admin User Roles Hierarchy  Group Id  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-user-roles"],"summary":"Remove Hierarchy Entry","description":"Remove a single parent/child relationship from a hierarchy.","operationId":"remove_hierarchy_entry_api_v1_admin_user_roles_hierarchy__group_id__delete","parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"integer","title":"Group Id"}},{"name":"parent_role_id","in":"query","required":true,"schema":{"type":"integer","title":"Parent Role Id"}},{"name":"child_role_id","in":"query","required":true,"schema":{"type":"integer","title":"Child Role Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Remove Hierarchy Entry Api V1 Admin User Roles Hierarchy  Group Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/user-roles/users/{user_id}/change-role":{"post":{"tags":["admin-user-roles"],"summary":"Change User Role","description":"Change a user's role with auto-transfer protocol.\n\nIf the new role's record type groups differ from the old role's,\nrecords owned in the removed groups are auto-transferred to the\nuser's manager. Blocks with 409 if no manager exists.\n\nRequest body: {\"new_role_id\": int}","operationId":"change_user_role_api_v1_admin_user_roles_users__user_id__change_role_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Change User Role Api V1 Admin User Roles Users  User Id  Change Role Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/users/{user_id}/change-role":{"post":{"tags":["admin-users"],"summary":"Change User Role","description":"Change a user's role, auto-transferring owned records if necessary.\n\nWhen the new role belongs to different record type groups than the current\nrole, records owned by the user in the old groups are automatically\ntransferred to the user's manager (parent role in hierarchy).\n\nIf the user owns records and no manager exists in the hierarchy, the\nrequest is rejected with a 409 status and ROLE_CHANGE_BLOCKED error code.","operationId":"change_user_role_api_v1_admin_users__user_id__change_role_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangeRoleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangeRoleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/ai-assistant/chat":{"post":{"tags":["admin-ai-assistant"],"summary":"Chat","description":"Run one agent turn for access/visibility debugging.","operationId":"chat_api_v1_admin_ai_assistant_chat_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/ai-assistant/settings":{"get":{"tags":["admin-ai-assistant"],"summary":"Get Settings","description":"Return the tenant's LLM settings (key masked, not raw).","operationId":"get_settings_api_v1_admin_ai_assistant_settings_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/LLMSettingsResponse"},{"type":"null"}],"title":"Response Get Settings Api V1 Admin Ai Assistant Settings Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin-ai-assistant"],"summary":"Put Settings","description":"Create or update tenant LLM settings.\n\nIf ``api_key`` is omitted, the existing stored key is preserved.","operationId":"put_settings_api_v1_admin_ai_assistant_settings_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LLMSettingsUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LLMSettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-ai-assistant"],"summary":"Delete Settings","description":"Remove tenant LLM settings entirely.","operationId":"delete_settings_api_v1_admin_ai_assistant_settings_delete","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/ai-assistant/audit":{"get":{"tags":["admin-ai-assistant"],"summary":"List Audit","description":"Paginated audit log of LLM invocations for the caller's tenant.","operationId":"list_audit_api_v1_admin_ai_assistant_audit_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Page Size"}},{"name":"surface","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(nlq|admin_assistant|record_summary|activity_digest|next_best_action|draft_email|field_rewrite|structure_activity|picklist_suggest)$"},{"type":"null"}],"title":"Surface"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditPage"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/ai-assistant/settings/test":{"post":{"tags":["admin-ai-assistant"],"summary":"Test Settings","description":"Ping the configured model with a short prompt to verify the key works.","operationId":"test_settings_api_v1_admin_ai_assistant_settings_test_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LLMTestRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LLMTestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/nlq/chat":{"post":{"tags":["nlq"],"summary":"Chat","operationId":"chat_api_v1_nlq_chat_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NLQChatRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NLQChatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/nlq/stream":{"post":{"tags":["nlq"],"summary":"Chat Stream","description":"Streaming variant of /nlq/chat emitting Server-Sent Events.\n\nEvent payloads are JSON, one per SSE data line. See\n``stream_nlq_agent`` for the event shapes.","operationId":"chat_stream_api_v1_nlq_stream_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NLQChatRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/nlq/conversations":{"get":{"tags":["nlq"],"summary":"List Conversations","operationId":"list_conversations_api_v1_nlq_conversations_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/NLQConversationSummary"},"title":"Response List Conversations Api V1 Nlq Conversations Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/nlq/conversations/{conversation_id}":{"get":{"tags":["nlq"],"summary":"Get Conversation","operationId":"get_conversation_api_v1_nlq_conversations__conversation_id__get","parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"integer","title":"Conversation Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NLQConversationDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["nlq"],"summary":"Delete Conversation","operationId":"delete_conversation_api_v1_nlq_conversations__conversation_id__delete","parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"integer","title":"Conversation Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/nlq/export":{"post":{"tags":["nlq"],"summary":"Export Preview Csv","description":"Re-run the NLQ filter and stream the matching records as CSV.\n\nApplies the same access_grants + FLS enforcement as submit_query. Capped\nat 10 000 rows — the frontend shows a toast when the cap is hit so users\nknow their export isn't complete.","operationId":"export_preview_csv_api_v1_nlq_export_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NLQExportRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ai/rewrite":{"post":{"tags":["ai"],"summary":"Rewrite Text","operationId":"rewrite_text_api_v1_ai_rewrite_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RewriteRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RewriteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ai/structure-activity":{"post":{"tags":["ai"],"summary":"Structure Activity","description":"Extract a structured Activity draft from unstructured call/meeting notes.","operationId":"structure_activity_api_v1_ai_structure_activity_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StructureActivityRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StructuredActivity"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/ai/suggest-picklist-values":{"post":{"tags":["ai"],"summary":"Suggest Picklist Values","operationId":"suggest_picklist_values_api_v1_admin_ai_suggest_picklist_values_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuggestPicklistRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuggestPicklistResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/.well-known/oauth-authorization-server":{"get":{"tags":["oauth"],"summary":"Authorization Server Metadata","operationId":"authorization_server_metadata__well_known_oauth_authorization_server_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"options":{"tags":["oauth"],"summary":"Oauth Preflight","operationId":"oauth_preflight__well_known_oauth_authorization_server_options","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/oauth/token":{"post":{"tags":["oauth"],"summary":"Token","operationId":"token_oauth_token_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_token_oauth_token_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"options":{"tags":["oauth"],"summary":"Oauth Preflight","operationId":"oauth_preflight_oauth_token_options","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/oauth/register":{"post":{"tags":["oauth"],"summary":"Register Client","operationId":"register_client_oauth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"options":{"tags":["oauth"],"summary":"Oauth Preflight","operationId":"oauth_preflight_oauth_register_options","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/oauth/authorize":{"get":{"tags":["oauth"],"summary":"Authorize","operationId":"authorize_oauth_authorize_get","parameters":[{"name":"response_type","in":"query","required":false,"schema":{"type":"string","default":"","title":"Response Type"}},{"name":"client_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Client Id"}},{"name":"redirect_uri","in":"query","required":false,"schema":{"type":"string","default":"","title":"Redirect Uri"}},{"name":"code_challenge","in":"query","required":false,"schema":{"type":"string","default":"","title":"Code Challenge"}},{"name":"code_challenge_method","in":"query","required":false,"schema":{"type":"string","default":"S256","title":"Code Challenge Method"}},{"name":"scope","in":"query","required":false,"schema":{"type":"string","default":"crm.read","title":"Scope"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"resource","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resource"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/oauth/authorize/request/{request_id}":{"get":{"tags":["oauth"],"summary":"Get Authorize Request","description":"Details the consent page needs: client name, requested scopes, and the\nworkspace (tenant) of the caller's current session — which is the tenant the\ngrant will be bound to.","operationId":"get_authorize_request_api_v1_oauth_authorize_request__request_id__get","parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"string","title":"Request Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Authorize Request Api V1 Oauth Authorize Request  Request Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/oauth/authorize/approve":{"post":{"tags":["oauth"],"summary":"Approve Authorize","description":"Mint an authorization code bound to the signed-in user + their current\nworkspace (the tenant their session belongs to).\n\nReturns the redirect target; the frontend navigates the browser there so the\nMCP client receives ``?code=...&state=...``.","operationId":"approve_authorize_api_v1_oauth_authorize_approve_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Approve Authorize Api V1 Oauth Authorize Approve Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/oauth/authorize/deny":{"post":{"tags":["oauth"],"summary":"Deny Authorize","operationId":"deny_authorize_api_v1_oauth_authorize_deny_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Deny Authorize Api V1 Oauth Authorize Deny Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/telemetry/events":{"post":{"tags":["telemetry"],"summary":"Ingest Events","description":"Accept a batch of frontend events. Drops unknown event types.\n\nShort-circuits when the tenant has telemetry turned off so a stale\nfrontend tab can't keep paying the per-event producer cost.","operationId":"ingest_events_api_v1_telemetry_events_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_Batch"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/telemetry/status":{"get":{"tags":["telemetry"],"summary":"Status","description":"Whether the current tenant has telemetry turned on.\n\nLets the frontend tracker stay inert without a redeploy when admins\nflip the toggle. Mirrors what /auth/me already returns under\ntenant.telemetry_enabled, so callers can use either source.","operationId":"status_api_v1_telemetry_status_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Status Api V1 Telemetry Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/usage/settings":{"get":{"tags":["admin-usage"],"summary":"Get Settings","operationId":"get_settings_api_v1_admin_usage_settings_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/_SettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin-usage"],"summary":"Update Settings","description":"Flip the per-tenant telemetry toggle.\n\nAudited via the setup-audit log. Invalidates the tenant's user_ctx\ncache so all running pods see the new value within one cache-miss\nrather than waiting out the 5-minute TTL.","operationId":"update_settings_api_v1_admin_usage_settings_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_SettingsUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/_SettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/usage/overview":{"get":{"tags":["admin-usage"],"summary":"Overview","operationId":"overview_api_v1_admin_usage_overview_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Days"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Overview Api V1 Admin Usage Overview Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/usage/dau":{"get":{"tags":["admin-usage"],"summary":"Dau","operationId":"dau_api_v1_admin_usage_dau_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Days"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Dau Api V1 Admin Usage Dau Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/usage/concurrency":{"get":{"tags":["admin-usage"],"summary":"Concurrency","operationId":"concurrency_api_v1_admin_usage_concurrency_get","parameters":[{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":720,"minimum":1,"default":24,"title":"Hours"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Concurrency Api V1 Admin Usage Concurrency Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/usage/objects":{"get":{"tags":["admin-usage"],"summary":"Top Objects","operationId":"top_objects_api_v1_admin_usage_objects_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Days"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Top Objects Api V1 Admin Usage Objects Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/usage/routes":{"get":{"tags":["admin-usage"],"summary":"Top Routes","operationId":"top_routes_api_v1_admin_usage_routes_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":7,"title":"Days"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Top Routes Api V1 Admin Usage Routes Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/usage/event-types":{"get":{"tags":["admin-usage"],"summary":"Event Types","operationId":"event_types_api_v1_admin_usage_event_types_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Days"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Event Types Api V1 Admin Usage Event Types Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/usage/users":{"get":{"tags":["admin-usage"],"summary":"Top Users","operationId":"top_users_api_v1_admin_usage_users_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Days"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Top Users Api V1 Admin Usage Users Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"summary":"Health Check","description":"Simple health check endpoint.","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Check Health Get"}}}}}}}},"components":{"schemas":{"AddHierarchyRequest":{"properties":{"parent_role_id":{"type":"integer","title":"Parent Role Id"},"child_role_id":{"type":"integer","title":"Child Role Id"}},"type":"object","required":["parent_role_id","child_role_id"],"title":"AddHierarchyRequest","description":"Add a single parent/child relationship."},"AgentStep":{"properties":{"tool":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool"},"tool_input":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"string"},{"type":"null"}],"title":"Tool Input"},"observation":{"anyOf":[{},{"type":"null"}],"title":"Observation"}},"type":"object","title":"AgentStep"},"ApiKeyCreate":{"properties":{"user_id":{"type":"integer","title":"User Id"},"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"}},"type":"object","required":["user_id","name"],"title":"ApiKeyCreate"},"ApiKeyCreateResponse":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"user_id":{"type":"integer","title":"User Id"},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Name"},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"key_prefix":{"type":"string","title":"Key Prefix"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoked At"},"status":{"type":"string","enum":["active","revoked","expired"],"title":"Status"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"api_key":{"type":"string","title":"Api Key"}},"type":"object","required":["id","name","user_id","key_prefix","expires_at","status","created_at","api_key"],"title":"ApiKeyCreateResponse","description":"Returned only from POST — the single time the plaintext key is exposed."},"ApiKeyResponse":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"user_id":{"type":"integer","title":"User Id"},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Name"},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"key_prefix":{"type":"string","title":"Key Prefix"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoked At"},"status":{"type":"string","enum":["active","revoked","expired"],"title":"Status"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","name","user_id","key_prefix","expires_at","status","created_at"],"title":"ApiKeyResponse"},"ApiKeySelfCreate":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"}},"type":"object","required":["name"],"title":"ApiKeySelfCreate","description":"Self-serve create.\n\nNo ``user_id``: the caller is always the subject. Accepting one here\nwould be an admin endpoint wearing a caller-facing prefix."},"ApplyRequest":{"properties":{"version":{"type":"integer","title":"Version"}},"type":"object","required":["version"],"title":"ApplyRequest"},"ApplyResult":{"properties":{"results":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Results"},"entry":{"additionalProperties":true,"type":"object","title":"Entry"}},"type":"object","required":["results","entry"],"title":"ApplyResult"},"ApprovalDryRunRequest":{"properties":{"object_type":{"type":"string","title":"Object Type"},"record_id":{"type":"integer","title":"Record Id"},"proposed_data":{"additionalProperties":true,"type":"object","title":"Proposed Data"}},"type":"object","required":["object_type","record_id"],"title":"ApprovalDryRunRequest"},"ApproveRejectRequest":{"properties":{"comments":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comments"}},"type":"object","title":"ApproveRejectRequest"},"ApproveRequest":{"properties":{"request_id":{"type":"string","title":"Request Id"}},"type":"object","required":["request_id"],"title":"ApproveRequest"},"AuditEntry":{"properties":{"id":{"type":"integer","title":"Id"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Name"},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"surface":{"type":"string","title":"Surface"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"question":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question"},"answer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Answer"},"object_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object Type"},"status":{"type":"string","title":"Status"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"prompt_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Prompt Tokens"},"completion_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Completion Tokens"},"total_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Tokens"},"cost_usd":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Cost Usd"},"latency_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Latency Ms"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"steps":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Steps"},"filter_tree":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Filter Tree"}},"type":"object","required":["id","user_id","surface","provider","model","question","answer","object_type","status","error","prompt_tokens","completion_tokens","total_tokens","cost_usd","latency_ms","created_at"],"title":"AuditEntry"},"AuditPage":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AuditEntry"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"},"has_next":{"type":"boolean","title":"Has Next"}},"type":"object","required":["items","total","page","page_size","has_next"],"title":"AuditPage"},"Body_add_attachment_api_v1_admin_email_templates__template_id__attachments_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_add_attachment_api_v1_admin_email_templates__template_id__attachments_post"},"Body_import_records_api_v1_objects__object_type__import_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"field_mapping":{"type":"string","title":"Field Mapping","description":"Optional JSON object mapping CSV column names → field api_names. A null/empty target value skips that column."}},"type":"object","required":["file"],"title":"Body_import_records_api_v1_objects__object_type__import_post"},"Body_import_transfer_records_api_v1_objects__object_type__import_transfer_post":{"properties":{"new_owner_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"New Owner Id","description":"Default owner; optional when every row names its own in the file"},"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_import_transfer_records_api_v1_objects__object_type__import_transfer_post"},"Body_import_update_records_api_v1_objects__object_type__import_update_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_import_update_records_api_v1_objects__object_type__import_update_post"},"Body_preview_transfer_records_api_v1_objects__object_type__import_transfer_preview_post":{"properties":{"new_owner_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"New Owner Id","description":"Default owner; optional when every row names its own in the file"},"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_preview_transfer_records_api_v1_objects__object_type__import_transfer_preview_post"},"Body_token_oauth_token_post":{"properties":{"grant_type":{"type":"string","title":"Grant Type"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"},"redirect_uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Redirect Uri"},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"},"code_verifier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Verifier"},"refresh_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Refresh Token"}},"type":"object","required":["grant_type"],"title":"Body_token_oauth_token_post"},"Body_upload_file_api_v1_files_upload_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_file_api_v1_files_upload_post"},"Body_upload_file_api_v1_notebook_upload_file_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_file_api_v1_notebook_upload_file_post"},"Body_upload_letterhead_logo_api_v1_admin_email_letterheads_logo_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_letterhead_logo_api_v1_admin_email_letterheads_logo_post"},"Body_upload_tenant_logo_api_v1_uploads_tenant_logo_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_tenant_logo_api_v1_uploads_tenant_logo_post"},"BrandingSettingsResponse":{"properties":{"company_name":{"type":"string","title":"Company Name","default":""},"logo_url":{"type":"string","title":"Logo Url","default":""},"primary_color":{"type":"string","title":"Primary Color","default":""},"login_message":{"type":"string","title":"Login Message","default":""}},"type":"object","title":"BrandingSettingsResponse"},"BrandingSettingsUpdate":{"properties":{"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"primary_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Primary Color"},"login_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Login Message"}},"type":"object","title":"BrandingSettingsUpdate"},"BulkMoveRequest":{"properties":{"report_ids":{"items":{"type":"integer"},"type":"array","maxItems":500,"minItems":1,"title":"Report Ids"},"folder":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Folder"}},"type":"object","required":["report_ids"],"title":"BulkMoveRequest"},"BulkRecordTypeCreate":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"is_default":{"type":"boolean","title":"Is Default","default":false}},"type":"object","required":["name"],"title":"BulkRecordTypeCreate"},"BulkRecordTypeUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"is_default":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Default"}},"type":"object","title":"BulkRecordTypeUpdate"},"BulkResponse":{"properties":{"affected":{"type":"integer","title":"Affected"}},"type":"object","required":["affected"],"title":"BulkResponse"},"BulkTransferRequest":{"properties":{"object_type":{"type":"string","title":"Object Type"},"record_ids":{"items":{"type":"integer"},"type":"array","title":"Record Ids"},"new_owner_id":{"type":"integer","title":"New Owner Id"}},"type":"object","required":["object_type","record_ids","new_owner_id"],"title":"BulkTransferRequest"},"BulkUpdateRequest":{"properties":{"object_type":{"type":"string","title":"Object Type"},"record_ids":{"items":{"type":"integer"},"type":"array","title":"Record Ids"},"field_updates":{"additionalProperties":true,"type":"object","title":"Field Updates"}},"type":"object","required":["object_type","record_ids","field_updates"],"title":"BulkUpdateRequest"},"ChangeRoleRequest":{"properties":{"new_role_id":{"type":"integer","title":"New Role Id","description":"The ID of the role to assign to the user"}},"type":"object","required":["new_role_id"],"title":"ChangeRoleRequest","description":"Request body for changing a user's role."},"ChangeRoleResponse":{"properties":{"detail":{"type":"string","title":"Detail"},"transferred_records":{"type":"integer","title":"Transferred Records","default":0}},"type":"object","required":["detail"],"title":"ChangeRoleResponse","description":"Response for a successful role change."},"ChartSeries":{"properties":{"column":{"type":"string","title":"Column"},"render":{"type":"string","enum":["bar","line"],"title":"Render","default":"bar"},"axis":{"anyOf":[{"type":"string","enum":["left","right"]},{"type":"null"}],"title":"Axis"}},"type":"object","required":["column"],"title":"ChartSeries","description":"One measure on a multi-measure chart.\n\n``axis=None`` means \"decide for me\": the renderer puts the first measure on\nthe left and anything after it on the right. Two measures sharing a unit is\nthe case worth overriding for — split axes there imply a difference of\nscale that isn't real."},"ChatRequest":{"properties":{"question":{"type":"string","title":"Question"},"history":{"items":{"$ref":"#/components/schemas/ChatTurn"},"type":"array","title":"History"}},"type":"object","required":["question"],"title":"ChatRequest"},"ChatResponse":{"properties":{"answer":{"type":"string","title":"Answer"},"steps":{"items":{"$ref":"#/components/schemas/AgentStep"},"type":"array","title":"Steps"}},"type":"object","required":["answer","steps"],"title":"ChatResponse"},"ChatTurn":{"properties":{"role":{"type":"string","title":"Role"},"content":{"type":"string","title":"Content"}},"type":"object","required":["role","content"],"title":"ChatTurn"},"CurrencySettingsResponse":{"properties":{"default_code":{"type":"string","title":"Default Code","default":"USD"},"supported_codes":{"items":{"type":"string"},"type":"array","title":"Supported Codes","default":["USD"]}},"type":"object","title":"CurrencySettingsResponse"},"CurrencySettingsUpdate":{"properties":{"default_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Code"},"supported_codes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Supported Codes"}},"type":"object","title":"CurrencySettingsUpdate"},"DashboardCreate":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"folder_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Folder Id"},"visibility":{"type":"string","enum":["private","public","shared"],"title":"Visibility","default":"private"},"settings":{"additionalProperties":true,"type":"object","title":"Settings"}},"type":"object","required":["name"],"title":"DashboardCreate"},"DashboardMetrics":{"properties":{"total_revenue":{"type":"number","title":"Total Revenue"},"revenue_change":{"type":"number","title":"Revenue Change"},"active_leads":{"type":"integer","title":"Active Leads"},"leads_change":{"type":"integer","title":"Leads Change"},"conversion_rate":{"type":"number","title":"Conversion Rate"},"pipeline_value":{"type":"number","title":"Pipeline Value"},"total_leads":{"type":"integer","title":"Total Leads"},"total_opportunities":{"type":"integer","title":"Total Opportunities"},"open_opportunities":{"type":"integer","title":"Open Opportunities"},"accounts":{"type":"integer","title":"Accounts"},"contacts":{"type":"integer","title":"Contacts"}},"type":"object","required":["total_revenue","revenue_change","active_leads","leads_change","conversion_rate","pipeline_value","total_leads","total_opportunities","open_opportunities","accounts","contacts"],"title":"DashboardMetrics"},"DashboardUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"folder_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Folder Id"},"visibility":{"anyOf":[{"type":"string","enum":["private","public","shared"]},{"type":"null"}],"title":"Visibility"},"settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Settings"},"shares":{"anyOf":[{"items":{"$ref":"#/components/schemas/SharePrincipal"},"type":"array"},{"type":"null"}],"title":"Shares"}},"type":"object","title":"DashboardUpdate"},"DataExportEntry":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"user_id":{"type":"integer","title":"User Id"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"},"object_type":{"type":"string","title":"Object Type"},"source":{"type":"string","title":"Source"},"row_count":{"type":"integer","title":"Row Count"},"column_count":{"type":"integer","title":"Column Count"},"columns":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Columns"},"filter_json":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Filter Json"},"ip_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ip Address"},"user_agent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Agent"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","tenant_id","user_id","object_type","source","row_count","column_count"],"title":"DataExportEntry"},"DataExportListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/DataExportEntry"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"},"has_next":{"type":"boolean","title":"Has Next"}},"type":"object","required":["items","total","page","page_size","has_next"],"title":"DataExportListResponse"},"DataExportStatsResponse":{"properties":{"window_days":{"type":"integer","title":"Window Days"},"export_count":{"type":"integer","title":"Export Count"},"total_rows":{"type":"integer","title":"Total Rows"},"top_users":{"items":{"$ref":"#/components/schemas/DataExportTopUser"},"type":"array","title":"Top Users"}},"type":"object","required":["window_days","export_count","total_rows","top_users"],"title":"DataExportStatsResponse"},"DataExportTopUser":{"properties":{"user_id":{"type":"integer","title":"User Id"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"},"export_count":{"type":"integer","title":"Export Count"},"total_rows":{"type":"integer","title":"Total Rows"},"max_rows":{"type":"integer","title":"Max Rows"},"last_export_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Export At"}},"type":"object","required":["user_id","export_count","total_rows","max_rows"],"title":"DataExportTopUser"},"DigestCreate":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"cron":{"type":"string","title":"Cron"},"timezone":{"type":"string","title":"Timezone","default":"Asia/Singapore"},"format":{"type":"string","title":"Format","default":"email_html_csv"},"report_ids":{"items":{"type":"integer"},"type":"array","minItems":1,"title":"Report Ids"},"recipient_user_ids":{"items":{"type":"integer"},"type":"array","title":"Recipient User Ids"}},"type":"object","required":["name","cron","report_ids"],"title":"DigestCreate"},"DigestOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"owner_id":{"type":"integer","title":"Owner Id"},"schedule_cron":{"type":"string","title":"Schedule Cron"},"timezone":{"type":"string","title":"Timezone"},"format":{"type":"string","title":"Format"},"report_ids":{"items":{"type":"integer"},"type":"array","title":"Report Ids"},"recipient_user_ids":{"items":{"type":"integer"},"type":"array","title":"Recipient User Ids"},"is_active":{"type":"boolean","title":"Is Active"},"next_run_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Next Run At"},"last_run_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Run At"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","name","owner_id","schedule_cron","timezone","format","report_ids","recipient_user_ids","is_active"],"title":"DigestOut"},"DigestUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"cron":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cron"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"format":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Format"},"report_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Report Ids"},"recipient_user_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Recipient User Ids"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"DigestUpdate"},"DraftEmailRequest":{"properties":{"intent":{"type":"string","maxLength":500,"minLength":1,"title":"Intent"},"tone":{"type":"string","title":"Tone","default":"professional"}},"type":"object","required":["intent"],"title":"DraftEmailRequest"},"DraftEmailResponse":{"properties":{"subject":{"type":"string","title":"Subject"},"body":{"type":"string","title":"Body"},"recipient_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recipient Email"},"recipient_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recipient Name"}},"type":"object","required":["subject","body"],"title":"DraftEmailResponse"},"EffectiveRateLimit":{"properties":{"enabled":{"type":"boolean","title":"Enabled"},"sustained_per_minute":{"type":"integer","title":"Sustained Per Minute"},"burst_capacity":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Burst Capacity"},"source":{"type":"string","title":"Source"},"limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"},"remaining":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Remaining"},"reset_after":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reset After"}},"type":"object","required":["enabled","sustained_per_minute","source"],"title":"EffectiveRateLimit","description":"The caller's own resolved limit, and which layer supplied it."},"EmailAlertCreate":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"api_name":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Api Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"object_type":{"type":"string","maxLength":100,"minLength":1,"title":"Object Type"},"template_id":{"type":"integer","title":"Template Id"},"from_address_type":{"type":"string","enum":["current_user","org_wide","specific_user","noreply"],"title":"From Address Type","default":"current_user"},"from_user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"From User Id"},"from_org_address_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"From Org Address Id"},"recipients":{"items":{"$ref":"#/components/schemas/EmailAlertRecipient"},"type":"array","title":"Recipients"},"cc_recipients":{"items":{"$ref":"#/components/schemas/EmailAlertRecipient"},"type":"array","title":"Cc Recipients"},"bcc_recipients":{"items":{"$ref":"#/components/schemas/EmailAlertRecipient"},"type":"array","title":"Bcc Recipients"}},"type":"object","required":["name","object_type","template_id"],"title":"EmailAlertCreate"},"EmailAlertRecipient":{"properties":{"type":{"type":"string","enum":["user","role","group","owner","field","email"],"title":"Type"},"value":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Value"}},"type":"object","required":["type"],"title":"EmailAlertRecipient","description":"One entry in the ``recipients`` / ``cc_recipients`` / ``bcc_recipients`` list."},"EmailAlertResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"name":{"type":"string","title":"Name"},"api_name":{"type":"string","title":"Api Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"object_type":{"type":"string","title":"Object Type"},"template_id":{"type":"integer","title":"Template Id"},"from_address_type":{"type":"string","enum":["current_user","org_wide","specific_user","noreply"],"title":"From Address Type"},"from_user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"From User Id"},"from_org_address_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"From Org Address Id"},"recipients":{"items":{"$ref":"#/components/schemas/EmailAlertRecipient"},"type":"array","title":"Recipients"},"cc_recipients":{"items":{"$ref":"#/components/schemas/EmailAlertRecipient"},"type":"array","title":"Cc Recipients"},"bcc_recipients":{"items":{"$ref":"#/components/schemas/EmailAlertRecipient"},"type":"array","title":"Bcc Recipients"},"is_active":{"type":"boolean","title":"Is Active","default":true},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","tenant_id","name","api_name","object_type","template_id","from_address_type","created_at"],"title":"EmailAlertResponse"},"EmailAlertUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"template_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Template Id"},"from_address_type":{"anyOf":[{"type":"string","enum":["current_user","org_wide","specific_user","noreply"]},{"type":"null"}],"title":"From Address Type"},"from_user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"From User Id"},"from_org_address_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"From Org Address Id"},"recipients":{"anyOf":[{"items":{"$ref":"#/components/schemas/EmailAlertRecipient"},"type":"array"},{"type":"null"}],"title":"Recipients"},"cc_recipients":{"anyOf":[{"items":{"$ref":"#/components/schemas/EmailAlertRecipient"},"type":"array"},{"type":"null"}],"title":"Cc Recipients"},"bcc_recipients":{"anyOf":[{"items":{"$ref":"#/components/schemas/EmailAlertRecipient"},"type":"array"},{"type":"null"}],"title":"Bcc Recipients"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"EmailAlertUpdate"},"EmailLetterheadCreate":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"api_name":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Api Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"logo_storage_key":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Logo Storage Key"},"header_html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Header Html"},"footer_html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Footer Html"},"primary_color":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Primary Color"},"background_color":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Background Color"},"body_font":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Body Font"}},"type":"object","required":["name"],"title":"EmailLetterheadCreate"},"EmailLetterheadResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"name":{"type":"string","title":"Name"},"api_name":{"type":"string","title":"Api Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"logo_storage_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Storage Key"},"header_html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Header Html"},"footer_html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Footer Html"},"primary_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Primary Color"},"background_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Background Color"},"body_font":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body Font"},"is_active":{"type":"boolean","title":"Is Active","default":true},"version":{"type":"integer","title":"Version"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","tenant_id","name","api_name","version","created_at"],"title":"EmailLetterheadResponse"},"EmailLetterheadUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"logo_storage_key":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Logo Storage Key"},"header_html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Header Html"},"footer_html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Footer Html"},"primary_color":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Primary Color"},"background_color":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Background Color"},"body_font":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Body Font"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"EmailLetterheadUpdate"},"EmailOrgAddressCreate":{"properties":{"display_name":{"type":"string","maxLength":255,"minLength":1,"title":"Display Name"},"email_address":{"type":"string","format":"email","title":"Email Address"},"allowed_profiles":{"items":{"type":"integer"},"type":"array","title":"Allowed Profiles"},"allowed_roles":{"items":{"type":"integer"},"type":"array","title":"Allowed Roles"},"is_default":{"type":"boolean","title":"Is Default","default":false}},"type":"object","required":["display_name","email_address"],"title":"EmailOrgAddressCreate"},"EmailOrgAddressResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"display_name":{"type":"string","title":"Display Name"},"email_address":{"type":"string","title":"Email Address"},"verification_status":{"type":"string","enum":["pending","verified","failed"],"title":"Verification Status"},"verified_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Verified At"},"allowed_profiles":{"items":{"type":"integer"},"type":"array","title":"Allowed Profiles"},"allowed_roles":{"items":{"type":"integer"},"type":"array","title":"Allowed Roles"},"is_default":{"type":"boolean","title":"Is Default","default":false},"is_active":{"type":"boolean","title":"Is Active","default":true},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","tenant_id","display_name","email_address","verification_status","created_at"],"title":"EmailOrgAddressResponse"},"EmailOrgAddressUpdate":{"properties":{"display_name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Display Name"},"allowed_profiles":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Allowed Profiles"},"allowed_roles":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Allowed Roles"},"is_default":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Default"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"EmailOrgAddressUpdate"},"EmailPreferenceItem":{"properties":{"system_key":{"type":"string","title":"System Key"},"category":{"type":"string","title":"Category"},"label":{"type":"string","title":"Label"},"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["system_key","category","label","enabled"],"title":"EmailPreferenceItem"},"EmailPreferenceUpdate":{"properties":{"preferences":{"additionalProperties":{"type":"boolean"},"type":"object","title":"Preferences"}},"type":"object","title":"EmailPreferenceUpdate","description":"Bulk update — keys not in the map are left untouched."},"EmailSettingsResponse":{"properties":{"enabled":{"type":"boolean","title":"Enabled","default":false},"provider":{"type":"string","title":"Provider","default":"sendgrid"},"from_email":{"type":"string","title":"From Email","default":""},"sendgrid_api_key":{"type":"string","title":"Sendgrid Api Key","default":""},"ses_access_key_id":{"type":"string","title":"Ses Access Key Id","default":""},"ses_secret_access_key":{"type":"string","title":"Ses Secret Access Key","default":""},"ses_region":{"type":"string","title":"Ses Region","default":"us-east-1"},"mass_rate_per_minute":{"type":"integer","title":"Mass Rate Per Minute","default":60}},"type":"object","title":"EmailSettingsResponse"},"EmailSettingsUpdate":{"properties":{"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"from_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Email"},"sendgrid_api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sendgrid Api Key"},"ses_access_key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ses Access Key Id"},"ses_secret_access_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ses Secret Access Key"},"ses_region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ses Region"},"mass_rate_per_minute":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Mass Rate Per Minute"}},"type":"object","title":"EmailSettingsUpdate"},"EmailTemplateAttachmentResponse":{"properties":{"id":{"type":"integer","title":"Id"},"template_id":{"type":"integer","title":"Template Id"},"storage_key":{"type":"string","title":"Storage Key"},"filename":{"type":"string","title":"Filename"},"content_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Type"},"size_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Size Bytes"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","template_id","storage_key","filename","created_at"],"title":"EmailTemplateAttachmentResponse"},"EmailTemplateCreate":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"api_name":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Api Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"template_type":{"type":"string","enum":["text","html","custom_html"],"title":"Template Type"},"folder_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Folder Id"},"letterhead_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Letterhead Id"},"object_type":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Object Type"},"language":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"title":"Language"},"encoding":{"type":"string","maxLength":20,"title":"Encoding","default":"UTF-8"},"subject":{"type":"string","maxLength":1000,"minLength":1,"title":"Subject"},"body_html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body Html"},"body_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body Text"}},"type":"object","required":["name","template_type","subject"],"title":"EmailTemplateCreate"},"EmailTemplateFolderCreate":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"parent_folder_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Folder Id"},"access_type":{"type":"string","enum":["public","private","shared"],"title":"Access Type","default":"public"}},"type":"object","required":["name"],"title":"EmailTemplateFolderCreate"},"EmailTemplateFolderResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"name":{"type":"string","title":"Name"},"parent_folder_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Folder Id"},"access_type":{"type":"string","enum":["public","private","shared"],"title":"Access Type"},"owner_user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Owner User Id"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"can_view":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Can View"},"can_edit":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Can Edit"}},"type":"object","required":["id","tenant_id","name","access_type","created_at"],"title":"EmailTemplateFolderResponse"},"EmailTemplateFolderShareCreate":{"properties":{"principal_type":{"type":"string","enum":["user","role","group","permission_set"],"title":"Principal Type"},"principal_id":{"type":"integer","title":"Principal Id"},"permission":{"type":"string","enum":["view","edit"],"title":"Permission","default":"view"}},"type":"object","required":["principal_type","principal_id"],"title":"EmailTemplateFolderShareCreate"},"EmailTemplateFolderShareResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"folder_id":{"type":"integer","title":"Folder Id"},"principal_type":{"type":"string","enum":["user","role","group","permission_set"],"title":"Principal Type"},"principal_id":{"type":"integer","title":"Principal Id"},"permission":{"type":"string","enum":["view","edit"],"title":"Permission"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","folder_id","principal_type","principal_id","permission","created_at"],"title":"EmailTemplateFolderShareResponse"},"EmailTemplateFolderUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Name"},"parent_folder_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Folder Id"},"access_type":{"anyOf":[{"type":"string","enum":["private","public","shared"]},{"type":"null"}],"title":"Access Type"},"owner_user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Owner User Id"}},"type":"object","title":"EmailTemplateFolderUpdate"},"EmailTemplatePreviewRequest":{"properties":{"record_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Record Id"}},"type":"object","title":"EmailTemplatePreviewRequest","description":"Render a template against a sample record for admin preview."},"EmailTemplatePreviewResponse":{"properties":{"subject":{"type":"string","title":"Subject"},"body_html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body Html"},"body_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body Text"},"warnings":{"items":{"type":"string"},"type":"array","title":"Warnings"}},"type":"object","required":["subject"],"title":"EmailTemplatePreviewResponse"},"EmailTemplateResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"folder_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Folder Id"},"name":{"type":"string","title":"Name"},"api_name":{"type":"string","title":"Api Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"template_type":{"type":"string","enum":["text","html","custom_html"],"title":"Template Type"},"letterhead_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Letterhead Id"},"object_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object Type"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"encoding":{"type":"string","title":"Encoding","default":"UTF-8"},"subject":{"type":"string","title":"Subject"},"body_html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body Html"},"body_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body Text"},"is_active":{"type":"boolean","title":"Is Active","default":true},"version":{"type":"integer","title":"Version"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","tenant_id","name","api_name","template_type","subject","version","created_at"],"title":"EmailTemplateResponse"},"EmailTemplateTestSendRequest":{"properties":{"record_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Record Id"}},"type":"object","title":"EmailTemplateTestSendRequest"},"EmailTemplateTestSendResponse":{"properties":{"status":{"type":"string","title":"Status"},"to":{"type":"string","title":"To"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["status","to"],"title":"EmailTemplateTestSendResponse"},"EmailTemplateUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"folder_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Folder Id"},"letterhead_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Letterhead Id"},"object_type":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Object Type"},"language":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"title":"Language"},"encoding":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Encoding"},"subject":{"anyOf":[{"type":"string","maxLength":1000,"minLength":1},{"type":"null"}],"title":"Subject"},"body_html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body Html"},"body_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body Text"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"EmailTemplateUpdate"},"ExecuteOptions":{"properties":{"window_overrides":{"anyOf":[{"items":{"$ref":"#/components/schemas/WindowOverride"},"type":"array"},{"type":"null"}],"title":"Window Overrides"},"compare_to_prior":{"type":"boolean","title":"Compare To Prior","default":false}},"type":"object","title":"ExecuteOptions","description":"Optional body for POST /reports/:id/execute — all fields optional."},"ExecutionOut":{"properties":{"id":{"type":"integer","title":"Id"},"report_id":{"type":"integer","title":"Report Id"},"schedule_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Schedule Id"},"triggered_by":{"type":"string","title":"Triggered By"},"executed_as_user_id":{"type":"integer","title":"Executed As User Id"},"started_at":{"type":"string","format":"date-time","title":"Started At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"status":{"type":"string","title":"Status"},"row_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Row Count"},"delivery_status":{"additionalProperties":true,"type":"object","title":"Delivery Status"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Ms"}},"type":"object","required":["id","report_id","triggered_by","executed_as_user_id","started_at","status"],"title":"ExecutionOut"},"ExportCreate":{"properties":{"format":{"type":"string","enum":["csv","xlsx","pdf"],"title":"Format"},"deliver_to_self":{"type":"boolean","title":"Deliver To Self","default":false}},"type":"object","required":["format"],"title":"ExportCreate","description":"Ask for one file. The format is fixed here because it decides how the\nrun executes, not merely how the result is packaged."},"FeatureSettingsResponse":{"properties":{"pipeline":{"type":"boolean","title":"Pipeline","default":true},"password_login":{"type":"boolean","title":"Password Login","default":true},"home_user_customizable":{"type":"boolean","title":"Home User Customizable","default":true},"shipper_onboarding":{"type":"boolean","title":"Shipper Onboarding","default":false},"shipper_onboarding_countries":{"additionalProperties":{"type":"boolean"},"type":"object","title":"Shipper Onboarding Countries"},"shipper_volume":{"type":"boolean","title":"Shipper Volume","default":false},"shipper_volume_countries":{"additionalProperties":{"type":"boolean"},"type":"object","title":"Shipper Volume Countries"},"api_key_self_service":{"type":"boolean","title":"Api Key Self Service","default":false},"dashboards":{"type":"boolean","title":"Dashboards","default":false},"google_client_id":{"type":"string","title":"Google Client Id","default":""},"google_allowed_domain":{"type":"string","title":"Google Allowed Domain","default":""}},"type":"object","title":"FeatureSettingsResponse"},"FeatureSettingsUpdate":{"properties":{"pipeline":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Pipeline"},"password_login":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Password Login"},"home_user_customizable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Home User Customizable"},"dashboards":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Dashboards"},"google_client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Google Client Id"},"google_allowed_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Google Allowed Domain"}},"type":"object","title":"FeatureSettingsUpdate"},"FieldAssignmentEntry":{"properties":{"field_id":{"type":"integer","title":"Field Id"},"is_required":{"type":"boolean","title":"Is Required","default":false}},"type":"object","required":["field_id"],"title":"FieldAssignmentEntry","description":"Single field in a record type assignment update."},"FolderCreate":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"parent_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Id"}},"type":"object","required":["name"],"title":"FolderCreate"},"FolderUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Name"},"parent_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Id"}},"type":"object","title":"FolderUpdate"},"GoogleLoginRequest":{"properties":{"credential":{"type":"string","minLength":1,"title":"Credential"},"tenant":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant","description":"Tenant slug or numeric ID"}},"type":"object","required":["credential"],"title":"GoogleLoginRequest","description":"Google SSO login request with the ID token from Google Identity Services."},"GroupCreate":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["name"],"title":"GroupCreate","description":"Schema for creating a security group."},"GroupMemberResponse":{"properties":{"group_id":{"type":"integer","title":"Group Id"},"user_id":{"type":"integer","title":"User Id"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["group_id","user_id"],"title":"GroupMemberResponse","description":"Group member API response."},"GroupPermissionSetResponse":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["id","name"],"title":"GroupPermissionSetResponse","description":"Permission set assigned to a security group."},"GroupResponse":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"is_active":{"type":"boolean","title":"Is Active","default":true},"member_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Member Count"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","name"],"title":"GroupResponse","description":"Security group API response."},"GroupUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"GroupUpdate","description":"Schema for updating a security group."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HierarchyEntryInput":{"properties":{"parent_role_id":{"type":"integer","title":"Parent Role Id"},"child_role_id":{"type":"integer","title":"Child Role Id"}},"type":"object","required":["parent_role_id","child_role_id"],"title":"HierarchyEntryInput"},"HierarchyEntryOut":{"properties":{"id":{"type":"integer","title":"Id"},"record_type_group_id":{"type":"integer","title":"Record Type Group Id"},"parent_role_id":{"type":"integer","title":"Parent Role Id"},"parent_role_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Role Name"},"child_role_id":{"type":"integer","title":"Child Role Id"},"child_role_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Child Role Name"}},"type":"object","required":["id","record_type_group_id","parent_role_id","child_role_id"],"title":"HierarchyEntryOut"},"HomeLayoutResponse":{"properties":{"layout":{"items":{"$ref":"#/components/schemas/HomeLayoutWidget"},"type":"array","title":"Layout"},"is_default":{"type":"boolean","title":"Is Default"},"mode":{"type":"string","title":"Mode","default":"user"},"editable":{"type":"boolean","title":"Editable","default":true}},"type":"object","required":["layout","is_default"],"title":"HomeLayoutResponse"},"HomeLayoutUpdate":{"properties":{"layout":{"items":{"$ref":"#/components/schemas/HomeLayoutWidget"},"type":"array","title":"Layout"}},"type":"object","required":["layout"],"title":"HomeLayoutUpdate"},"HomeLayoutWidget":{"properties":{"i":{"type":"string","title":"I"},"x":{"type":"integer","maximum":11.0,"minimum":0.0,"title":"X"},"y":{"type":"integer","minimum":0.0,"title":"Y"},"w":{"type":"integer","maximum":12.0,"minimum":1.0,"title":"W"},"h":{"type":"integer","maximum":12.0,"minimum":1.0,"title":"H"},"minW":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Minw"},"minH":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Minh"}},"type":"object","required":["i","x","y","w","h"],"title":"HomeLayoutWidget"},"HomeSummaryResponse":{"properties":{"metrics":{"$ref":"#/components/schemas/DashboardMetrics"},"pipeline_by_month":{"items":{"$ref":"#/components/schemas/PipelineMonth"},"type":"array","title":"Pipeline By Month"},"lead_distribution":{"items":{"$ref":"#/components/schemas/LeadDistributionItem"},"type":"array","title":"Lead Distribution"},"team_performance":{"items":{"$ref":"#/components/schemas/TeamMember"},"type":"array","title":"Team Performance"},"recent_activity":{"items":{"$ref":"#/components/schemas/RecentActivityItem"},"type":"array","title":"Recent Activity"}},"type":"object","required":["metrics","pipeline_by_month","lead_distribution","team_performance","recent_activity"],"title":"HomeSummaryResponse"},"LLMSettingsResponse":{"properties":{"tenant_id":{"type":"integer","title":"Tenant Id"},"provider":{"type":"string","title":"Provider"},"model":{"type":"string","title":"Model"},"api_key_hint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key Hint"},"has_api_key":{"type":"boolean","title":"Has Api Key"},"temperature":{"type":"number","title":"Temperature"},"max_iterations":{"type":"integer","title":"Max Iterations"},"is_enabled":{"type":"boolean","title":"Is Enabled"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["tenant_id","provider","model","has_api_key","temperature","max_iterations","is_enabled"],"title":"LLMSettingsResponse","description":"Settings view returned to the client — never contains the raw key."},"LLMSettingsUpdate":{"properties":{"provider":{"type":"string","title":"Provider","description":"Model provider identifier: 'google' for now."},"model":{"type":"string","title":"Model","description":"Model id, e.g. 'gemini-2.5-pro'."},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key","description":"Plaintext API key. Omit or set to null to keep the existing key."},"temperature":{"type":"number","maximum":2.0,"minimum":0.0,"title":"Temperature","default":0.0},"max_iterations":{"type":"integer","maximum":50.0,"minimum":1.0,"title":"Max Iterations","default":12},"is_enabled":{"type":"boolean","title":"Is Enabled","default":true}},"type":"object","required":["provider","model"],"title":"LLMSettingsUpdate"},"LLMTestRequest":{"properties":{"prompt":{"type":"string","maxLength":500,"title":"Prompt","default":"Reply with the single word OK."}},"type":"object","title":"LLMTestRequest","description":"Probe the current configuration by asking the model one short prompt."},"LLMTestResponse":{"properties":{"ok":{"type":"boolean","title":"Ok"},"answer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Answer"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["ok"],"title":"LLMTestResponse"},"LayoutUpdate":{"properties":{"positions":{"items":{"$ref":"#/components/schemas/WidgetPosition"},"type":"array","title":"Positions"}},"type":"object","required":["positions"],"title":"LayoutUpdate"},"LeadConversionMappingBulkUpsert":{"properties":{"source_record_type_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Source Record Type Id"},"target_object_id":{"type":"integer","title":"Target Object Id"},"mappings":{"items":{"$ref":"#/components/schemas/LeadConversionMappingPair"},"type":"array","title":"Mappings"}},"type":"object","required":["target_object_id","mappings"],"title":"LeadConversionMappingBulkUpsert","description":"Request body for PUT /admin/lead-conversion-mappings.\n\nReplaces all mappings for (source_record_type_id, target_object_id) with\nthe supplied list."},"LeadConversionMappingPair":{"properties":{"source_field_id":{"type":"integer","title":"Source Field Id"},"target_field_id":{"type":"integer","title":"Target Field Id"}},"type":"object","required":["source_field_id","target_field_id"],"title":"LeadConversionMappingPair","description":"One entry in a bulk upsert payload."},"LeadConvertRequest":{"properties":{"account_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Account Id"},"account_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Name"},"contact_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contact Id"},"create_opportunity":{"type":"boolean","title":"Create Opportunity","default":true},"opportunity_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Opportunity Id"},"opportunity_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Opportunity Name"},"opportunity_stage":{"type":"string","title":"Opportunity Stage","default":"Prospecting"}},"type":"object","title":"LeadConvertRequest"},"LeadConvertResponse":{"properties":{"lead_id":{"type":"integer","title":"Lead Id"},"account_id":{"type":"integer","title":"Account Id"},"contact_id":{"type":"integer","title":"Contact Id"},"opportunity_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Opportunity Id"},"converted_at":{"type":"string","format":"date-time","title":"Converted At"}},"type":"object","required":["lead_id","account_id","contact_id","converted_at"],"title":"LeadConvertResponse"},"LeadDistributionItem":{"properties":{"name":{"type":"string","title":"Name"},"value":{"type":"integer","title":"Value"}},"type":"object","required":["name","value"],"title":"LeadDistributionItem"},"ListViewCreate":{"properties":{"name":{"type":"string","title":"Name"},"object_type":{"type":"string","title":"Object Type"},"filter_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"items":{},"type":"array"}],"title":"Filter Config","default":{}},"column_config":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Column Config","default":[]},"sort_config":{"additionalProperties":true,"type":"object","title":"Sort Config","default":{}},"visibility":{"type":"string","title":"Visibility","default":"private"}},"type":"object","required":["name","object_type"],"title":"ListViewCreate"},"ListViewUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"filter_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"items":{},"type":"array"},{"type":"null"}],"title":"Filter Config"},"column_config":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Column Config"},"sort_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Sort Config"},"visibility":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visibility"}},"type":"object","title":"ListViewUpdate"},"LoginRequest":{"properties":{"username":{"type":"string","maxLength":255,"minLength":1,"title":"Username"},"password":{"type":"string","minLength":1,"title":"Password"},"tenant":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant","description":"Tenant slug or numeric ID"}},"type":"object","required":["username","password"],"title":"LoginRequest","description":"Login request with username, password, and optional tenant."},"LookupResolveItem":{"properties":{"object_type":{"type":"string","title":"Object Type"},"id":{"type":"integer","title":"Id"},"display_field":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Field"}},"type":"object","required":["object_type","id"],"title":"LookupResolveItem","description":"Single lookup to resolve."},"LookupResolveRequest":{"properties":{"items":{"items":{"$ref":"#/components/schemas/LookupResolveItem"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"LookupResolveRequest","description":"Batch lookup name resolution request."},"MOTDResponse":{"properties":{"title":{"type":"string","title":"Title","default":""},"body":{"type":"string","title":"Body","default":""},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"}},"type":"object","title":"MOTDResponse","description":"Current MOTD payload. Empty title + body means no MOTD is set."},"MOTDUpdate":{"properties":{"title":{"type":"string","maxLength":200,"title":"Title","default":""},"body":{"type":"string","maxLength":10000,"title":"Body","default":""}},"type":"object","title":"MOTDUpdate"},"MaintenanceJobResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"job_type":{"type":"string","title":"Job Type"},"object_types":{"items":{"type":"string"},"type":"array","title":"Object Types"},"scope":{"additionalProperties":true,"type":"object","title":"Scope"},"options":{"additionalProperties":true,"type":"object","title":"Options"},"status":{"type":"string","title":"Status"},"total_steps":{"type":"integer","title":"Total Steps"},"processed_steps":{"type":"integer","title":"Processed Steps"},"current_phase":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Phase"},"phase_progress":{"additionalProperties":true,"type":"object","title":"Phase Progress"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","tenant_id","job_type","object_types","scope","options","status","total_steps","processed_steps","current_phase","phase_progress","error_message","started_at","completed_at","created_by","created_at","updated_at"],"title":"MaintenanceJobResponse","description":"Job row as returned to the admin UI."},"ManualShareCreate":{"properties":{"shared_with_user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Shared With User Id"},"shared_with_group_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Shared With Group Id"},"access_level":{"type":"string","pattern":"^(none|list|read|edit|full)$","title":"Access Level","default":"read"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","title":"ManualShareCreate","description":"Schema for manually sharing a record."},"ManualShareRequest":{"properties":{"shared_with_user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Shared With User Id"},"shared_with_group_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Shared With Group Id"},"access_level":{"type":"string","title":"Access Level","default":"read"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","title":"ManualShareRequest"},"ManualShareResponse":{"properties":{"id":{"type":"integer","title":"Id"},"object_type":{"type":"string","title":"Object Type"},"record_id":{"type":"integer","title":"Record Id"},"shared_with_user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Shared With User Id"},"shared_with_group_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Shared With Group Id"},"access_level":{"type":"string","title":"Access Level"},"shared_by":{"type":"integer","title":"Shared By"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["id","object_type","record_id","access_level","shared_by"],"title":"ManualShareResponse","description":"Manual share API response."},"MassEmailJobCreate":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"template_id":{"type":"integer","title":"Template Id"},"object_type":{"type":"string","maxLength":100,"minLength":1,"title":"Object Type"},"source_type":{"type":"string","enum":["list_view","report","selected_ids"],"title":"Source Type"},"record_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Record Ids"},"source_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Ref"},"source_report_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Source Report Id"},"from_address_type":{"type":"string","enum":["current_user","org_wide"],"title":"From Address Type","default":"current_user"},"from_org_address_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"From Org Address Id"},"scheduled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Scheduled At"}},"type":"object","required":["name","template_id","object_type","source_type"],"title":"MassEmailJobCreate"},"MassEmailJobResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"name":{"type":"string","title":"Name"},"template_id":{"type":"integer","title":"Template Id"},"object_type":{"type":"string","title":"Object Type"},"source_type":{"type":"string","enum":["list_view","report","selected_ids"],"title":"Source Type"},"source_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Ref"},"from_address_type":{"type":"string","enum":["current_user","org_wide"],"title":"From Address Type"},"from_user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"From User Id"},"from_org_address_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"From Org Address Id"},"status":{"type":"string","enum":["queued","running","paused","completed","failed","cancelled"],"title":"Status"},"total_recipients":{"type":"integer","title":"Total Recipients"},"sent_count":{"type":"integer","title":"Sent Count"},"failed_count":{"type":"integer","title":"Failed Count"},"skipped_count":{"type":"integer","title":"Skipped Count"},"scheduled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Scheduled At"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","tenant_id","name","template_id","object_type","source_type","from_address_type","status","total_recipients","sent_count","failed_count","skipped_count","created_at"],"title":"MassEmailJobResponse"},"MassEmailRecipientResponse":{"properties":{"id":{"type":"integer","title":"Id"},"job_id":{"type":"integer","title":"Job Id"},"record_id":{"type":"integer","title":"Record Id"},"to_email":{"type":"string","title":"To Email"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"status":{"type":"string","enum":["pending","sent","failed","skipped","bounced","unsubscribed"],"title":"Status"},"rendered_subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rendered Subject"},"email_log_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Email Log Id"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"sent_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sent At"}},"type":"object","required":["id","job_id","record_id","to_email","status"],"title":"MassEmailRecipientResponse"},"MembershipCreate":{"properties":{"user_id":{"type":"integer","title":"User Id"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"is_admin":{"type":"boolean","title":"Is Admin","default":false}},"type":"object","required":["user_id"],"title":"MembershipCreate"},"NLQAggregate":{"properties":{"group_by":{"items":{"type":"string"},"type":"array","title":"Group By"},"aggregations":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Aggregations"},"columns":{"items":{"$ref":"#/components/schemas/NLQAggregateColumn"},"type":"array","title":"Columns"},"rows":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Rows"},"total_groups":{"type":"integer","title":"Total Groups"},"top":{"type":"integer","title":"Top"}},"type":"object","required":["columns","rows","total_groups","top"],"title":"NLQAggregate"},"NLQAggregateColumn":{"properties":{"name":{"type":"string","title":"Name"},"kind":{"type":"string","title":"Kind"},"field":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Field"},"function":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Function"}},"type":"object","required":["name","kind"],"title":"NLQAggregateColumn"},"NLQChatRequest":{"properties":{"question":{"type":"string","title":"Question"},"history":{"items":{"$ref":"#/components/schemas/ChatTurn"},"type":"array","title":"History"},"current_filter_tree":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Current Filter Tree"},"current_object_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Object Type"},"conversation_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Conversation Id"}},"type":"object","required":["question"],"title":"NLQChatRequest"},"NLQChatResponse":{"properties":{"answer":{"type":"string","title":"Answer"},"steps":{"items":{"$ref":"#/components/schemas/AgentStep"},"type":"array","title":"Steps"},"object_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object Type"},"filter_tree":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Filter Tree"},"preview":{"anyOf":[{"$ref":"#/components/schemas/NLQPreview"},{"type":"null"}]},"aggregate":{"anyOf":[{"$ref":"#/components/schemas/NLQAggregate"},{"type":"null"}]},"explanation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Explanation"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"conversation_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Conversation Id"}},"type":"object","required":["answer","steps"],"title":"NLQChatResponse"},"NLQConversationDetail":{"properties":{"id":{"type":"integer","title":"Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"created_at":{"title":"Created At"},"updated_at":{"title":"Updated At"},"messages":{"items":{"$ref":"#/components/schemas/NLQConversationMessage"},"type":"array","title":"Messages"}},"type":"object","required":["id","created_at","updated_at","messages"],"title":"NLQConversationDetail"},"NLQConversationMessage":{"properties":{"id":{"type":"integer","title":"Id"},"role":{"type":"string","title":"Role"},"content":{"type":"string","title":"Content"},"steps":{"items":{"$ref":"#/components/schemas/AgentStep"},"type":"array","title":"Steps"},"object_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object Type"},"filter_tree":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Filter Tree"},"created_at":{"title":"Created At"}},"type":"object","required":["id","role","content","created_at"],"title":"NLQConversationMessage"},"NLQConversationSummary":{"properties":{"id":{"type":"integer","title":"Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"message_count":{"type":"integer","title":"Message Count"},"created_at":{"title":"Created At"},"updated_at":{"title":"Updated At"}},"type":"object","required":["id","message_count","created_at","updated_at"],"title":"NLQConversationSummary"},"NLQExportRequest":{"properties":{"object_type":{"type":"string","title":"Object Type","description":"Object api_name, e.g. 'Lead'."},"filter_tree":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Filter Tree","description":"FilterGroup tree, same shape submit_query accepts."},"limit":{"type":"integer","maximum":10000.0,"minimum":1.0,"title":"Limit","default":10000},"sort_field":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort Field"},"sort_dir":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort Dir"},"partition_by":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Partition By"},"n_per_group":{"anyOf":[{"type":"integer","maximum":10.0,"minimum":1.0},{"type":"null"}],"title":"N Per Group"}},"type":"object","required":["object_type"],"title":"NLQExportRequest"},"NLQPreview":{"properties":{"items":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"hidden_field_count":{"type":"integer","title":"Hidden Field Count","default":0},"sort_field":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort Field"},"sort_dir":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort Dir"},"limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"},"partition_by":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Partition By"},"n_per_group":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"N Per Group"},"total_groups":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Groups"}},"type":"object","required":["items","total"],"title":"NLQPreview"},"NextBestActionItem":{"properties":{"title":{"type":"string","title":"Title"},"rationale":{"type":"string","title":"Rationale"},"urgency":{"type":"string","title":"Urgency"}},"type":"object","required":["title","rationale","urgency"],"title":"NextBestActionItem"},"NextBestActionResponse":{"properties":{"actions":{"items":{"$ref":"#/components/schemas/NextBestActionItem"},"type":"array","title":"Actions"}},"type":"object","required":["actions"],"title":"NextBestActionResponse"},"NotebookEntryCreate":{"properties":{"object_type":{"type":"string","title":"Object Type"},"record_id":{"type":"integer","title":"Record Id"},"text":{"anyOf":[{"type":"string","maxLength":100000},{"type":"null"}],"title":"Text"},"file_ids":{"items":{"type":"string"},"type":"array","maxItems":10,"title":"File Ids"}},"type":"object","required":["object_type","record_id"],"title":"NotebookEntryCreate"},"NotebookEntryListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/NotebookEntrySummary"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"},"has_next":{"type":"boolean","title":"Has Next"}},"type":"object","required":["items","total","page","page_size","has_next"],"title":"NotebookEntryListResponse"},"NotebookEntrySummary":{"properties":{"id":{"type":"integer","title":"Id"},"status":{"type":"string","title":"Status"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"object_type":{"type":"string","title":"Object Type"},"record_id":{"type":"integer","title":"Record Id"},"record_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Record Name"},"created_by":{"type":"integer","title":"Created By"},"created_by_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By Name"},"created_at":{"title":"Created At"},"ai_processed_at":{"title":"Ai Processed At"},"summary_preview":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary Preview"},"file_count":{"type":"integer","title":"File Count","default":0},"suggestion_count":{"type":"integer","title":"Suggestion Count","default":0},"pending_count":{"type":"integer","title":"Pending Count","default":0},"can_delete":{"type":"boolean","title":"Can Delete","default":false}},"type":"object","required":["id","status","object_type","record_id","created_by"],"title":"NotebookEntrySummary","description":"Compact row for list views (never includes raw source)."},"NotebookExportRequest":{"properties":{"ids":{"items":{"type":"integer"},"type":"array","maxItems":500,"minItems":1,"title":"Ids"}},"type":"object","required":["ids"],"title":"NotebookExportRequest","description":"Selected entry ids for a bulk CSV export."},"OWDResponse":{"properties":{"object_id":{"type":"integer","title":"Object Id"},"object_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object Type"},"default_access":{"type":"string","title":"Default Access"}},"type":"object","required":["object_id","default_access"],"title":"OWDResponse","description":"Organization-wide default for an object."},"OWDUpdate":{"properties":{"default_access":{"type":"string","pattern":"^(Private|Public Search Only|Public Read Only|Public Read/Write)$","title":"Default Access"}},"type":"object","required":["default_access"],"title":"OWDUpdate","description":"Schema for updating OWD."},"ObsRegionsResponse":{"properties":{"regions":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Regions"}},"type":"object","required":["regions"],"title":"ObsRegionsResponse"},"PaginatedUsers":{"properties":{"items":{"items":{"$ref":"#/components/schemas/UserListItem"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"},"has_next":{"type":"boolean","title":"Has Next"}},"type":"object","required":["items","total","page","page_size","has_next"],"title":"PaginatedUsers","description":"Paginated user list response."},"PasswordReset":{"properties":{"new_password":{"type":"string","maxLength":128,"minLength":8,"title":"New Password"}},"type":"object","required":["new_password"],"title":"PasswordReset","description":"Schema for resetting a user's password."},"PicklistSuggestion":{"properties":{"label":{"type":"string","title":"Label"},"value":{"type":"string","title":"Value"}},"type":"object","required":["label","value"],"title":"PicklistSuggestion"},"PipelineMonth":{"properties":{"month":{"type":"string","title":"Month"},"count":{"type":"integer","title":"Count"},"value":{"type":"number","title":"Value"}},"type":"object","required":["month","count","value"],"title":"PipelineMonth"},"PreviewRequest":{"properties":{"spec":{"additionalProperties":true,"type":"object","title":"Spec"}},"type":"object","required":["spec"],"title":"PreviewRequest","description":"Body for POST /reports/preview — run a draft spec without persisting."},"RateLimitDefault":{"properties":{"enabled":{"type":"boolean","title":"Enabled"},"sustained_per_minute":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sustained Per Minute"},"burst_capacity":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Burst Capacity"}},"type":"object","required":["enabled"],"title":"RateLimitDefault"},"RateLimitDefaultUpdate":{"properties":{"enabled":{"type":"boolean","title":"Enabled"},"sustained_per_minute":{"type":"integer","minimum":0.0,"title":"Sustained Per Minute","description":"0 means unlimited"},"burst_capacity":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Burst Capacity"},"note":{"type":"string","minLength":1,"title":"Note","description":"Why, and the ticket"}},"type":"object","required":["enabled","sustained_per_minute","note"],"title":"RateLimitDefaultUpdate"},"RateLimitOverride":{"properties":{"tenant_id":{"type":"integer","title":"Tenant Id"},"user_id":{"type":"integer","title":"User Id"},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Name"},"sustained_per_minute":{"type":"integer","title":"Sustained Per Minute"},"burst_capacity":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Burst Capacity"},"note":{"type":"string","title":"Note"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["tenant_id","user_id","sustained_per_minute","note","updated_at"],"title":"RateLimitOverride"},"RateLimitOverrideUpdate":{"properties":{"sustained_per_minute":{"type":"integer","minimum":0.0,"title":"Sustained Per Minute","description":"0 means unlimited"},"burst_capacity":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Burst Capacity","description":"null inherits the tenant default"},"note":{"type":"string","minLength":1,"title":"Note","description":"Why, and the ticket"}},"type":"object","required":["sustained_per_minute","note"],"title":"RateLimitOverrideUpdate"},"RebuildSeededRequest":{"properties":{"object_types":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Object Types"},"record_ids":{"anyOf":[{"additionalProperties":{"items":{"type":"integer"},"type":"array"},"type":"object"},{"type":"null"}],"title":"Record Ids"},"created_after":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created After"},"rebuild_search":{"type":"boolean","title":"Rebuild Search","default":true},"rebuild_grants":{"type":"boolean","title":"Rebuild Grants","default":true}},"type":"object","required":["object_types"],"title":"RebuildSeededRequest","description":"Request body for POST /api/v1/admin/maintenance/rebuild.\n\nScope precedence (most specific first):\n1. ``record_ids`` — operate only on these records (per object type).\n2. ``created_after`` — records created at or after this timestamp.\n3. neither — every record of every listed object type."},"RecentActivityItem":{"properties":{"id":{"type":"integer","title":"Id"},"object_type":{"type":"string","title":"Object Type"},"record_id":{"type":"integer","title":"Record Id"},"action":{"type":"string","title":"Action"},"field_changes":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Field Changes"},"created_at":{"type":"string","title":"Created At"},"user_name":{"type":"string","title":"User Name"}},"type":"object","required":["id","object_type","record_id","action","created_at","user_name"],"title":"RecentActivityItem"},"RecordCreate":{"properties":{"data":{"additionalProperties":true,"type":"object","title":"Data"}},"type":"object","required":["data"],"title":"RecordCreate","description":"Generic record creation payload. Fields are validated at the service layer."},"RecordSendEmailRequest":{"properties":{"template_id":{"type":"integer","title":"Template Id"},"to":{"items":{"type":"string","format":"email"},"type":"array","maxItems":50,"minItems":1,"title":"To"},"cc":{"items":{"type":"string","format":"email"},"type":"array","maxItems":50,"title":"Cc"},"bcc":{"items":{"type":"string","format":"email"},"type":"array","maxItems":50,"title":"Bcc"},"from_address_type":{"type":"string","enum":["current_user","org_wide"],"title":"From Address Type","default":"current_user"},"from_org_address_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"From Org Address Id"},"include_attachments":{"type":"boolean","title":"Include Attachments","default":true},"subject_override":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Subject Override"}},"type":"object","required":["template_id","to"],"title":"RecordSendEmailRequest"},"RecordSendEmailResponse":{"properties":{"status":{"type":"string","enum":["sent","partial","failed"],"title":"Status"},"sent_to":{"items":{"type":"string"},"type":"array","title":"Sent To"},"failed":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Failed"},"email_log_ids":{"items":{"type":"integer"},"type":"array","title":"Email Log Ids"}},"type":"object","required":["status","sent_to"],"title":"RecordSendEmailResponse"},"RecordTeamListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/RecordTeamMemberResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"max_members":{"type":"integer","title":"Max Members"}},"type":"object","required":["items","total","max_members"],"title":"RecordTeamListResponse","description":"Response for listing team members."},"RecordTeamMemberCreate":{"properties":{"user_id":{"type":"integer","title":"User Id"},"role":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Role"},"access_level":{"type":"string","pattern":"^(read|edit|full)$","title":"Access Level","default":"read"}},"type":"object","required":["user_id"],"title":"RecordTeamMemberCreate","description":"Schema for adding a team member."},"RecordTeamMemberResponse":{"properties":{"id":{"type":"integer","title":"Id"},"object_type":{"type":"string","title":"Object Type"},"record_id":{"type":"integer","title":"Record Id"},"user_id":{"type":"integer","title":"User Id"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Name"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"access_level":{"type":"string","title":"Access Level"},"added_by":{"type":"integer","title":"Added By"},"added_by_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Added By Name"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","object_type","record_id","user_id","access_level","added_by"],"title":"RecordTeamMemberResponse","description":"Team member API response with user details."},"RecordTeamMemberUpdate":{"properties":{"role":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Role"},"access_level":{"anyOf":[{"type":"string","pattern":"^(read|edit|full)$"},{"type":"null"}],"title":"Access Level"}},"type":"object","title":"RecordTeamMemberUpdate","description":"Schema for updating a team member's role or access level."},"RecordTypeCreate":{"properties":{"name":{"type":"string","title":"Name"},"object_type":{"type":"string","title":"Object Type"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"is_default":{"type":"boolean","title":"Is Default","default":false}},"type":"object","required":["name","object_type"],"title":"RecordTypeCreate","description":"Request body for creating a single record type per object."},"RecordTypeFieldAssignmentUpdate":{"properties":{"field_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Field Ids"},"assignments":{"anyOf":[{"items":{"$ref":"#/components/schemas/FieldAssignmentEntry"},"type":"array"},{"type":"null"}],"title":"Assignments"}},"type":"object","title":"RecordTypeFieldAssignmentUpdate","description":"Request body for setting field assignments (replaces all existing).\n\nAccepts either:\n  - *field_ids*: list of ints (legacy — all is_required default to False)\n  - *assignments*: list of {field_id, is_required} dicts (preferred)\nAt least one must be provided."},"RecordTypeGroupCreate":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["name"],"title":"RecordTypeGroupCreate"},"RecordTypeGroupOut":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","tenant_id","name","is_active"],"title":"RecordTypeGroupOut"},"RecordTypeGroupUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"RecordTypeGroupUpdate"},"RecordTypeUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"is_default":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Default"},"group_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Group Id"},"picklist_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Picklist Config"}},"type":"object","title":"RecordTypeUpdate","description":"Request body for updating a record type (all fields optional)."},"RecordUpdate":{"properties":{"data":{"additionalProperties":true,"type":"object","title":"Data"},"version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Version"}},"type":"object","required":["data"],"title":"RecordUpdate","description":"Generic record update payload with optional optimistic concurrency version."},"RefreshRequest":{"properties":{"refresh_token":{"type":"string","title":"Refresh Token"}},"type":"object","required":["refresh_token"],"title":"RefreshRequest","description":"Token refresh request."},"RegisterRequest":{"properties":{"redirect_uris":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Redirect Uris"},"client_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Name"},"grant_types":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Grant Types"},"response_types":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Response Types"},"scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope"},"token_endpoint_auth_method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token Endpoint Auth Method"}},"type":"object","required":["redirect_uris"],"title":"RegisterRequest"},"ReportCreate":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"},"spec":{"additionalProperties":true,"type":"object","title":"Spec"},"visibility":{"type":"string","enum":["private","public"],"title":"Visibility","default":"private"},"folder":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Folder"}},"type":"object","required":["name","spec"],"title":"ReportCreate","description":"Create an AI-built report from a pre-computed spec (the same shape the\nNLQ agent produces via `save_report`)."},"ReportOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"},"owner_id":{"type":"integer","title":"Owner Id"},"report_type":{"type":"string","title":"Report Type"},"object_api_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object Api Name"},"spec":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Spec"},"folder":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder"},"visibility":{"type":"string","enum":["private","public"],"title":"Visibility","default":"private"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","name","owner_id","report_type"],"title":"ReportOut"},"ReportUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"spec":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Spec"},"visibility":{"anyOf":[{"type":"string","enum":["private","public"]},{"type":"null"}],"title":"Visibility"},"folder":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder"}},"type":"object","title":"ReportUpdate"},"RewriteRequest":{"properties":{"text":{"type":"string","minLength":1,"title":"Text"},"action":{"type":"string","title":"Action","description":"One of: shorten, expand, fix, professional, friendly."}},"type":"object","required":["text","action"],"title":"RewriteRequest"},"RewriteResponse":{"properties":{"text":{"type":"string","title":"Text"}},"type":"object","required":["text"],"title":"RewriteResponse"},"RoleObjectPermissionInput":{"properties":{"object_id":{"type":"integer","title":"Object Id"},"can_create":{"type":"boolean","title":"Can Create","default":false},"can_reopen_closed":{"type":"boolean","title":"Can Reopen Closed","default":false},"owner_level":{"type":"string","title":"Owner Level","default":"edit"},"hierarchy_level":{"type":"string","title":"Hierarchy Level","default":"read"},"scope_level":{"type":"string","title":"Scope Level","default":"list"}},"type":"object","required":["object_id"],"title":"RoleObjectPermissionInput"},"RoleObjectPermissionOut":{"properties":{"object_id":{"type":"integer","title":"Object Id"},"object_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object Type"},"can_create":{"type":"boolean","title":"Can Create"},"can_reopen_closed":{"type":"boolean","title":"Can Reopen Closed","default":false},"owner_level":{"type":"string","title":"Owner Level"},"hierarchy_level":{"type":"string","title":"Hierarchy Level"},"scope_level":{"type":"string","title":"Scope Level"}},"type":"object","required":["object_id","can_create","owner_level","hierarchy_level","scope_level"],"title":"RoleObjectPermissionOut"},"RunOut":{"properties":{"id":{"type":"integer","title":"Id"},"report_id":{"type":"integer","title":"Report Id"},"triggered_by":{"type":"string","title":"Triggered By"},"executed_as_user_id":{"type":"integer","title":"Executed As User Id"},"executed_as_user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Executed As User Name"},"executed_as_user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Executed As User Email"},"started_at":{"type":"string","format":"date-time","title":"Started At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"status":{"type":"string","title":"Status"},"row_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Row Count"},"export_format":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Export Format"},"deliver_to_self":{"type":"boolean","title":"Deliver To Self","default":false},"delivery_status":{"additionalProperties":true,"type":"object","title":"Delivery Status"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Ms"},"download_available":{"type":"boolean","title":"Download Available","default":false},"artifact_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Artifact Expires At"},"artifact_expired":{"type":"boolean","title":"Artifact Expired","default":false}},"type":"object","required":["id","report_id","triggered_by","executed_as_user_id","started_at","status"],"title":"RunOut","description":"One manual export run as the viewer's runs table shows it.\n\nDeliberately omits ``output_location``: the storage object name is an\ninternal handle, and publishing it would invite fetching the blob around\nthe download endpoint that authorizes it."},"ScheduleCreate":{"properties":{"cron":{"type":"string","title":"Cron"},"timezone":{"type":"string","title":"Timezone","default":"Asia/Singapore"},"format":{"type":"string","title":"Format","default":"email_html_csv"},"recipient_user_ids":{"items":{"type":"integer"},"type":"array","title":"Recipient User Ids"},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["cron"],"title":"ScheduleCreate","description":"Create a schedule. ``cron`` accepts either a 5-field expression or a\nnatural-language phrase (parsed server-side)."},"ScheduleOut":{"properties":{"id":{"type":"integer","title":"Id"},"report_id":{"type":"integer","title":"Report Id"},"schedule_cron":{"type":"string","title":"Schedule Cron"},"timezone":{"type":"string","title":"Timezone"},"format":{"type":"string","title":"Format"},"recipient_user_ids":{"items":{"type":"integer"},"type":"array","title":"Recipient User Ids"},"is_active":{"type":"boolean","title":"Is Active"},"next_run_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Next Run At"},"last_run_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Run At"},"created_by":{"type":"integer","title":"Created By"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"last_run":{"anyOf":[{"$ref":"#/components/schemas/ScheduleRunStatus"},{"type":"null"}]}},"type":"object","required":["id","report_id","schedule_cron","timezone","format","recipient_user_ids","is_active","created_by"],"title":"ScheduleOut"},"ScheduleRunStatus":{"properties":{"execution_id":{"type":"integer","title":"Execution Id"},"status":{"type":"string","title":"Status"},"started_at":{"type":"string","format":"date-time","title":"Started At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"row_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Row Count"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"delivered_count":{"type":"integer","title":"Delivered Count","default":0},"attempted_count":{"type":"integer","title":"Attempted Count","default":0}},"type":"object","required":["execution_id","status","started_at"],"title":"ScheduleRunStatus","description":"A schedule's most recent run, shown inline on the schedule itself."},"ScheduleUpdate":{"properties":{"cron":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cron"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"format":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Format"},"recipient_user_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Recipient User Ids"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"ScheduleUpdate"},"SetHierarchyRequest":{"properties":{"entries":{"items":{"$ref":"#/components/schemas/HierarchyEntryInput"},"type":"array","title":"Entries"}},"type":"object","title":"SetHierarchyRequest","description":"Replace all hierarchy entries for a record type group."},"SetupAuditEntry":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"user_id":{"type":"integer","title":"User Id"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"},"entity_type":{"type":"string","title":"Entity Type"},"entity_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Entity Id"},"entity_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Name"},"parent_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Type"},"parent_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Id"},"action":{"type":"string","title":"Action"},"field_changes":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Field Changes"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","tenant_id","user_id","entity_type","action"],"title":"SetupAuditEntry"},"SetupAuditListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SetupAuditEntry"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"},"has_next":{"type":"boolean","title":"Has Next"}},"type":"object","required":["items","total","page","page_size","has_next"],"title":"SetupAuditListResponse"},"SharePrincipal":{"properties":{"principal_type":{"type":"string","enum":["user","role"],"title":"Principal Type"},"principal_id":{"type":"integer","title":"Principal Id"}},"type":"object","required":["principal_type","principal_id"],"title":"SharePrincipal"},"SharingRuleCreate":{"properties":{"name":{"type":"string","maxLength":255,"title":"Name"},"object_id":{"type":"integer","title":"Object Id"},"rule_type":{"type":"string","pattern":"^(ownership|criteria)$","title":"Rule Type"},"shared_with_group_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Shared With Group Id"},"criteria":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Criteria"},"share_with_type":{"anyOf":[{"type":"string","pattern":"^(group)$"},{"type":"null"}],"title":"Share With Type"},"access_level":{"type":"string","pattern":"^(none|list|read|edit|full)$","title":"Access Level","default":"read"},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["name","object_id","rule_type"],"title":"SharingRuleCreate","description":"Schema for creating a sharing rule."},"SharingRuleResponse":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"object_id":{"type":"integer","title":"Object Id"},"object_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object Type"},"rule_type":{"type":"string","title":"Rule Type"},"shared_with_group_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Shared With Group Id"},"criteria":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Criteria"},"share_with_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Share With Type"},"access_level":{"type":"string","title":"Access Level"},"is_active":{"type":"boolean","title":"Is Active"}},"type":"object","required":["id","name","object_id","rule_type","access_level","is_active"],"title":"SharingRuleResponse","description":"Sharing rule API response."},"SharingRuleUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"criteria":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Criteria"},"shared_with_group_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Shared With Group Id"},"share_with_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Share With Type"},"access_level":{"anyOf":[{"type":"string","pattern":"^(none|list|read|edit|full)$"},{"type":"null"}],"title":"Access Level"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"SharingRuleUpdate","description":"Schema for updating a sharing rule."},"StorageSettingsResponse":{"properties":{"enabled":{"type":"boolean","title":"Enabled","default":false},"provider":{"type":"string","title":"Provider","default":"gcs"},"bucket_name":{"type":"string","title":"Bucket Name","default":""},"path_prefix":{"type":"string","title":"Path Prefix","default":""},"service_account_key":{"type":"string","title":"Service Account Key","default":""},"region":{"type":"string","title":"Region","default":""},"access_key_id":{"type":"string","title":"Access Key Id","default":""},"secret_access_key":{"type":"string","title":"Secret Access Key","default":""}},"type":"object","title":"StorageSettingsResponse"},"StorageSettingsUpdate":{"properties":{"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"bucket_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bucket Name"},"path_prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Path Prefix"},"service_account_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Service Account Key"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"access_key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Key Id"},"secret_access_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secret Access Key"}},"type":"object","title":"StorageSettingsUpdate"},"StructureActivityRequest":{"properties":{"notes":{"type":"string","maxLength":6000,"minLength":1,"title":"Notes"},"default_task_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Task Type","description":"Fallback task_type when the AI response is ambiguous."}},"type":"object","required":["notes"],"title":"StructureActivityRequest"},"StructuredActivity":{"properties":{"task_type":{"type":"string","title":"Task Type"},"subject":{"type":"string","title":"Subject"},"description":{"type":"string","title":"Description"},"status":{"type":"string","title":"Status"},"priority":{"type":"string","title":"Priority"}},"type":"object","required":["task_type","subject","description","status","priority"],"title":"StructuredActivity"},"SubmitApprovalRequest":{"properties":{"approval_process_id":{"type":"integer","title":"Approval Process Id"},"object_type":{"type":"string","title":"Object Type"},"record_id":{"type":"integer","title":"Record Id"}},"type":"object","required":["approval_process_id","object_type","record_id"],"title":"SubmitApprovalRequest"},"SuggestPicklistRequest":{"properties":{"object_label":{"type":"string","title":"Object Label","description":"Human-readable object name, e.g. 'Opportunity'."},"field_label":{"type":"string","title":"Field Label","description":"Human-readable field name, e.g. 'Loss Reason'."},"field_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Field Description","description":"Optional extra context from the admin about what the field represents."},"count":{"type":"integer","maximum":20.0,"minimum":3.0,"title":"Count","default":8}},"type":"object","required":["object_label","field_label"],"title":"SuggestPicklistRequest"},"SuggestPicklistResponse":{"properties":{"suggestions":{"items":{"$ref":"#/components/schemas/PicklistSuggestion"},"type":"array","title":"Suggestions"}},"type":"object","required":["suggestions"],"title":"SuggestPicklistResponse"},"SuggestionPatch":{"properties":{"status":{"type":"string","enum":["PENDING","APPROVED","EDITED","REJECTED"],"title":"Status"},"edited_value":{"title":"Edited Value"},"edited_payload":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Edited Payload"},"version":{"type":"integer","title":"Version"}},"type":"object","required":["status","version"],"title":"SuggestionPatch","description":"Update a single suggestion's review status / edited value."},"SystemEmailTemplateResponse":{"properties":{"system_key":{"type":"string","title":"System Key"},"category":{"type":"string","title":"Category"},"label":{"type":"string","title":"Label"},"subject":{"type":"string","title":"Subject"},"body_html":{"type":"string","title":"Body Html"},"letterhead_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Letterhead Id"},"is_enabled":{"type":"boolean","title":"Is Enabled","default":true},"is_default":{"type":"boolean","title":"Is Default"},"available_vars":{"items":{"type":"string"},"type":"array","title":"Available Vars"},"updated_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated By"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["system_key","category","label","subject","body_html","is_default","available_vars"],"title":"SystemEmailTemplateResponse","description":"Effective template for a system_key — either the tenant override or\nthe baked-in default. ``is_default`` is True when no override row exists."},"SystemEmailTemplateUpsert":{"properties":{"subject":{"type":"string","maxLength":500,"minLength":1,"title":"Subject"},"body_html":{"type":"string","minLength":1,"title":"Body Html"},"letterhead_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Letterhead Id"},"is_enabled":{"type":"boolean","title":"Is Enabled","default":true}},"type":"object","required":["subject","body_html"],"title":"SystemEmailTemplateUpsert"},"SystemEmailTestRequest":{"properties":{"sample_context":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Sample Context"}},"type":"object","title":"SystemEmailTestRequest","description":"Optional sample data for the test send. When omitted the server fills\nin placeholder values for every declared variable."},"TeamCandidateListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TeamCandidateResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"TeamCandidateListResponse","description":"Response for team member candidate search."},"TeamCandidateResponse":{"properties":{"id":{"type":"integer","title":"Id"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"},"email":{"type":"string","title":"Email"},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Name"}},"type":"object","required":["id","email"],"title":"TeamCandidateResponse","description":"A user eligible to be added as a team member."},"TeamMember":{"properties":{"name":{"type":"string","title":"Name"},"opp_count":{"type":"integer","title":"Opp Count"},"revenue":{"type":"number","title":"Revenue"},"pct":{"type":"integer","title":"Pct"}},"type":"object","required":["name","opp_count","revenue","pct"],"title":"TeamMember"},"TenantCreate":{"properties":{"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Settings"}},"type":"object","required":["name","slug"],"title":"TenantCreate"},"TenantPublicConfig":{"properties":{"features":{"additionalProperties":{"type":"boolean"},"type":"object","title":"Features"},"branding":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Branding"},"google_client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Google Client Id"}},"type":"object","required":["features"],"title":"TenantPublicConfig"},"TenantRateLimits":{"properties":{"default":{"$ref":"#/components/schemas/RateLimitDefault"},"overrides":{"items":{"$ref":"#/components/schemas/RateLimitOverride"},"type":"array","title":"Overrides"},"degraded_verdicts_this_pod":{"type":"integer","title":"Degraded Verdicts This Pod","default":0}},"type":"object","required":["default","overrides"],"title":"TenantRateLimits"},"TenantUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Settings"}},"type":"object","title":"TenantUpdate"},"TestConnectionResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"}},"type":"object","required":["success","message"],"title":"TestConnectionResponse"},"TestEmailResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"}},"type":"object","required":["success","message"],"title":"TestEmailResponse"},"TokenResponse":{"properties":{"access_token":{"type":"string","title":"Access Token"},"refresh_token":{"type":"string","title":"Refresh Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"},"expires_in":{"type":"integer","title":"Expires In"},"is_first_login":{"type":"boolean","title":"Is First Login","default":false}},"type":"object","required":["access_token","refresh_token","expires_in"],"title":"TokenResponse","description":"JWT token pair response returned on login and refresh."},"TourStateUpdate":{"properties":{"status":{"anyOf":[{"type":"string","enum":["not_started","in_progress","completed","skipped"]},{"type":"null"}],"title":"Status"},"current_tour":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Tour"},"current_step":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Current Step"},"completed_segments":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Completed Segments"},"started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completed At"}},"type":"object","title":"TourStateUpdate","description":"Partial update for tour state — only provided fields are applied."},"TransferOwnershipRequest":{"properties":{"new_owner_id":{"type":"integer","title":"New Owner Id"}},"type":"object","required":["new_owner_id"],"title":"TransferOwnershipRequest"},"UserCreate":{"properties":{"username":{"type":"string","maxLength":255,"minLength":1,"title":"Username"},"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","maxLength":128,"minLength":8,"title":"Password"},"first_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Last Name"},"role":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Role","description":"Legacy free-text role (deprecated)"},"user_role_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Role Id","description":"FK to user_roles table"},"is_active":{"type":"boolean","title":"Is Active","default":true},"is_admin":{"type":"boolean","title":"Is Admin","default":false},"custom_fields":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Custom Fields","description":"Per-tenant custom field values"}},"type":"object","required":["username","email","password"],"title":"UserCreate","description":"Schema for creating a new user."},"UserListItem":{"properties":{"id":{"type":"integer","title":"Id"},"username":{"type":"string","title":"Username"},"email":{"type":"string","title":"Email"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"user_role_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Role Id"},"user_role_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Role Name"},"is_active":{"type":"boolean","title":"Is Active"},"is_admin":{"type":"boolean","title":"Is Admin","default":false},"last_login":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Login"},"custom_fields":{"additionalProperties":true,"type":"object","title":"Custom Fields"}},"type":"object","required":["id","username","email","is_active"],"title":"UserListItem","description":"User summary for list views."},"UserPreferencesUpdate":{"properties":{"timezone":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Timezone","description":"IANA timezone name, e.g. 'Asia/Singapore'"}},"type":"object","title":"UserPreferencesUpdate","description":"Schema for updating user preferences (self-service)."},"UserRoleCreate":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"all_access_level":{"type":"string","title":"All Access Level","default":"none"},"is_all_access":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is All Access"},"can_manage_activities":{"type":"boolean","title":"Can Manage Activities","default":true},"can_manage_tasks":{"type":"boolean","title":"Can Manage Tasks","default":true},"can_create_dashboards":{"type":"boolean","title":"Can Create Dashboards","default":false},"record_type_group_ids":{"items":{"type":"integer"},"type":"array","title":"Record Type Group Ids","description":"IDs of record type groups to attach"},"object_permissions":{"items":{"$ref":"#/components/schemas/RoleObjectPermissionInput"},"type":"array","title":"Object Permissions","description":"Access-level permissions per object"}},"type":"object","required":["name"],"title":"UserRoleCreate"},"UserRoleListItem":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"all_access_level":{"type":"string","title":"All Access Level","default":"none"},"can_manage_activities":{"type":"boolean","title":"Can Manage Activities","default":true},"can_manage_tasks":{"type":"boolean","title":"Can Manage Tasks","default":true},"can_create_dashboards":{"type":"boolean","title":"Can Create Dashboards","default":false},"is_active":{"type":"boolean","title":"Is Active"},"record_type_group_names":{"items":{"type":"string"},"type":"array","title":"Record Type Group Names"},"user_count":{"type":"integer","title":"User Count","default":0}},"type":"object","required":["id","name","is_active"],"title":"UserRoleListItem"},"UserRoleOut":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"all_access_level":{"type":"string","title":"All Access Level","default":"none"},"can_manage_activities":{"type":"boolean","title":"Can Manage Activities","default":true},"can_manage_tasks":{"type":"boolean","title":"Can Manage Tasks","default":true},"can_create_dashboards":{"type":"boolean","title":"Can Create Dashboards","default":false},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"record_type_groups":{"items":{"$ref":"#/components/schemas/RecordTypeGroupOut"},"type":"array","title":"Record Type Groups"},"object_permissions":{"items":{"$ref":"#/components/schemas/RoleObjectPermissionOut"},"type":"array","title":"Object Permissions"},"user_count":{"type":"integer","title":"User Count","default":0}},"type":"object","required":["id","tenant_id","name","is_active"],"title":"UserRoleOut"},"UserRoleUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"all_access_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"All Access Level"},"is_all_access":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is All Access"},"can_manage_activities":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Can Manage Activities"},"can_manage_tasks":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Can Manage Tasks"},"can_create_dashboards":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Can Create Dashboards"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"record_type_group_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Record Type Group Ids","description":"Replace group assignments if provided"},"object_permissions":{"anyOf":[{"items":{"$ref":"#/components/schemas/RoleObjectPermissionInput"},"type":"array"},{"type":"null"}],"title":"Object Permissions","description":"Replace object permissions if provided"}},"type":"object","title":"UserRoleUpdate"},"UserUpdate":{"properties":{"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email"},"first_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Last Name"},"role":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Role","description":"Legacy free-text role (deprecated)"},"user_role_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Role Id","description":"FK to user_roles table"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"is_admin":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Admin"},"timezone":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Timezone","description":"IANA timezone name, e.g. 'Asia/Singapore'"},"custom_fields":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Custom Fields","description":"Per-tenant custom field values"}},"type":"object","title":"UserUpdate","description":"Schema for updating an existing user."},"ValidateFormulaBody":{"properties":{"formula":{"type":"string","title":"Formula"},"object_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object Type"}},"type":"object","required":["formula"],"title":"ValidateFormulaBody"},"ValidateFormulaResponse":{"properties":{"valid":{"type":"boolean","title":"Valid"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["valid"],"title":"ValidateFormulaResponse"},"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"},"VerificationCheckResponse":{"properties":{"id":{"type":"integer","title":"Id"},"verification_status":{"type":"string","enum":["pending","verified","failed"],"title":"Verification Status"},"verified_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Verified At"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"}},"type":"object","required":["id","verification_status"],"title":"VerificationCheckResponse"},"WidgetActionCreate":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"label":{"type":"string","maxLength":80,"minLength":1,"title":"Label","description":"The button's caption."},"criteria":{"additionalProperties":true,"type":"object","title":"Criteria"},"action_type":{"type":"string","title":"Action Type"},"action_config":{"additionalProperties":true,"type":"object","title":"Action Config"},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["name","label","action_type"],"title":"WidgetActionCreate","description":"A rule offering a one-click action on the rows it flags."},"WidgetActionRun":{"properties":{"record_id":{"type":"integer","title":"Record Id"}},"type":"object","required":["record_id"],"title":"WidgetActionRun","description":"Run an action against one record."},"WidgetActionUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Name"},"label":{"anyOf":[{"type":"string","maxLength":80,"minLength":1},{"type":"null"}],"title":"Label"},"criteria":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Criteria"},"action_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action Type"},"action_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Action Config"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"WidgetActionUpdate"},"WidgetConfig":{"properties":{"use_report_chart":{"type":"boolean","title":"Use Report Chart","default":true},"x":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X"},"y":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Y"},"series":{"anyOf":[{"items":{"$ref":"#/components/schemas/ChartSeries"},"type":"array"},{"type":"null"}],"title":"Series"},"aggregation":{"anyOf":[{"type":"string","enum":["count","sum","average","percentage"]},{"type":"null"}],"title":"Aggregation"},"target":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Target"},"floor":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Floor"},"colors":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Colors"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"font_family":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Font Family"},"font_size":{"anyOf":[{"type":"integer","maximum":96.0,"minimum":8.0},{"type":"null"}],"title":"Font Size"},"background_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Background Color"},"text_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text Color"}},"type":"object","title":"WidgetConfig","description":"Per-widget rendering options.\n\nReport and text widgets share one config object because they share one\ncolumn; the fields each kind reads are disjoint and documented below."},"WidgetCreate":{"properties":{"widget_kind":{"type":"string","enum":["report","text"],"title":"Widget Kind","default":"report"},"widget_type":{"type":"string","enum":["bar","line","combi","pie","donut","treemap","metric","gauge","funnel","waterfall","scatter","table","text"],"title":"Widget Type"},"report_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Report Id"},"position_config":{"additionalProperties":true,"type":"object","title":"Position Config"},"config":{"$ref":"#/components/schemas/WidgetConfig"},"title":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Title"},"subtitle":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Subtitle"},"footer":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Footer"}},"type":"object","required":["widget_type"],"title":"WidgetCreate"},"WidgetPosition":{"properties":{"widget_id":{"type":"integer","title":"Widget Id"},"position":{"additionalProperties":true,"type":"object","title":"Position"}},"type":"object","required":["widget_id","position"],"title":"WidgetPosition"},"WidgetUpdate":{"properties":{"widget_kind":{"anyOf":[{"type":"string","enum":["report","text"]},{"type":"null"}],"title":"Widget Kind"},"widget_type":{"anyOf":[{"type":"string","enum":["bar","line","combi","pie","donut","treemap","metric","gauge","funnel","waterfall","scatter","table","text"]},{"type":"null"}],"title":"Widget Type"},"report_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Report Id"},"position_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Position Config"},"config":{"anyOf":[{"$ref":"#/components/schemas/WidgetConfig"},{"type":"null"}]},"title":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Title"},"subtitle":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Subtitle"},"footer":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Footer"}},"type":"object","title":"WidgetUpdate","description":"Patch a widget. Every field optional; the kind/report pairing is\nre-checked against the merged row in the API layer, where the current\nvalues are known."},"WindowOverride":{"properties":{"field":{"type":"string","title":"Field"},"window":{"type":"string","title":"Window"}},"type":"object","required":["field","window"],"title":"WindowOverride","description":"One-off override for a spec's ``relative_windows`` field at run time."},"_Batch":{"properties":{"events":{"items":{"$ref":"#/components/schemas/_ClientEvent"},"type":"array","maxItems":100,"title":"Events"}},"type":"object","required":["events"],"title":"_Batch"},"_ClientEvent":{"properties":{"event_type":{"type":"string","maxLength":64,"title":"Event Type"},"occurred_at_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Occurred At Ms"},"object_type":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Object Type"},"object_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Object Id"},"action":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Action"},"route":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Route"},"session_id":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Session Id"},"props":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Props"}},"type":"object","required":["event_type"],"title":"_ClientEvent"},"_SettingsResponse":{"properties":{"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["enabled"],"title":"_SettingsResponse"},"_SettingsUpdate":{"properties":{"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["enabled"],"title":"_SettingsUpdate"},"app__schemas__bulk__BulkDeleteRequest":{"properties":{"object_type":{"type":"string","title":"Object Type"},"record_ids":{"items":{"type":"integer"},"type":"array","title":"Record Ids"}},"type":"object","required":["object_type","record_ids"],"title":"BulkDeleteRequest"},"app__schemas__report__BulkDeleteRequest":{"properties":{"report_ids":{"items":{"type":"integer"},"type":"array","maxItems":500,"minItems":1,"title":"Report Ids"}},"type":"object","required":["report_ids"],"title":"BulkDeleteRequest"}}}}