{"openapi":"3.1.0","info":{"title":"spendware Backend Public API","version":"0.1.0","description":"Customer-facing spendware SaaS backend API reference."},"paths":{"/api/v1/login/access-token":{"post":{"tags":["login"],"summary":"Login Access Token","description":"OAuth2 compatible token login, get an access token for future requests","operationId":"login-login_access_token","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_login-login_access_token"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/login/sso/discover":{"post":{"tags":["login"],"summary":"Discover Sso Provider For Email","description":"Resolve active organization SSO provider by login email domain.","operationId":"login-discover_sso_provider_for_email","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationSsoDiscoverRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantSsoDiscoverPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/login/sso/start":{"post":{"tags":["login"],"summary":"Start Sso Login","description":"Start OIDC login flow and return provider authorization URL.","operationId":"login-start_sso_login","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationSsoStartRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationSsoStartPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/login/sso/callback":{"get":{"tags":["login"],"summary":"Login Sso Callback","description":"Complete OIDC login flow, issue local session cookies, and redirect.","operationId":"login-login_sso_callback","parameters":[{"name":"code","in":"query","required":true,"schema":{"type":"string","title":"Code"}},{"name":"state","in":"query","required":true,"schema":{"type":"string","title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/login/social/providers":{"get":{"tags":["login"],"summary":"Read Social Login Providers","description":"Return enabled social login providers for the auth UI.","operationId":"login-read_social_login_providers","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleOAuthProvidersPublic"}}}}}}},"/api/v1/login/google/start":{"post":{"tags":["login"],"summary":"Start Google Login","description":"Start Google OpenID Connect login and return authorization URL.","operationId":"login-start_google_login","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleOAuthStartRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleOAuthStartPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/login/google/callback":{"get":{"tags":["login"],"summary":"Login Google Callback","description":"Complete Google OpenID Connect flow for login or account linking.","operationId":"login-login_google_callback","parameters":[{"name":"code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"error","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/login/google/mfa-complete":{"post":{"tags":["login"],"summary":"Complete Google Mfa Login","description":"Complete MFA challenge for a pending Google login.","operationId":"login-complete_google_mfa_login","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleMfaCompleteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/login/refresh":{"post":{"tags":["login"],"summary":"Refresh Access Token","description":"Refresh the access token using the refresh token cookie.\n\nRefresh token use is one-time: each refresh rotates the backing server-side\nsession and revokes the previously used refresh token.","operationId":"login-refresh_access_token","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}}}}},"/api/v1/logout":{"post":{"tags":["login"],"summary":"Logout","description":"Clear all auth cookies.","operationId":"login-logout","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}}}}},"/api/v1/login/test-token":{"post":{"tags":["login"],"summary":"Test Token","description":"Test access token","operationId":"login-test_token","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPublic"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/password-recovery":{"post":{"tags":["login"],"summary":"Recover Password","description":"Password Recovery","operationId":"login-recover_password","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordRecoveryRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reset-password/":{"post":{"tags":["login"],"summary":"Reset Password","description":"Reset password","operationId":"login-reset_password","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewPassword"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/password-recovery-html-content/{email}":{"post":{"tags":["login"],"summary":"Recover Password Html Content","description":"HTML Content for Password Recovery","operationId":"login-recover_password_html_content","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"email","in":"path","required":true,"schema":{"type":"string","title":"Email"}}],"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/users/me":{"get":{"tags":["users"],"summary":"Read User Me","description":"Get current user.","operationId":"users-read_user_me","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPublic"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"delete":{"tags":["users"],"summary":"Delete User Me","description":"Delete own user.","operationId":"users-delete_user_me","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"patch":{"tags":["users"],"summary":"Update User Me","description":"Update own user.","operationId":"users-update_user_me","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserUpdateMe"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/users/me/password":{"patch":{"tags":["users"],"summary":"Update Password Me","description":"Update own password.","operationId":"users-update_password_me","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePassword"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/users/me/social-identities":{"get":{"tags":["users"],"summary":"Read Social Identities Me","description":"List social sign-in identities linked to the current user.","operationId":"users-read_social_identities_me","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SocialIdentitiesPublic"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/users/me/social-identities/google/start":{"post":{"tags":["users"],"summary":"Start Google Link Me","description":"Start Google OAuth flow to link Google to the current account.","operationId":"users-start_google_link_me","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GoogleOAuthStartRequest"},{"type":"null"}],"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleOAuthStartPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/users/me/social-identities/google":{"delete":{"tags":["users"],"summary":"Unlink Google Identity Me","description":"Disconnect Google from the current account when another login method remains.","operationId":"users-unlink_google_identity_me","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/users/me/mfa/enroll":{"post":{"tags":["users"],"summary":"Enroll Mfa Me","description":"Start or rotate MFA enrollment for the current user.","operationId":"users-enroll_mfa_me","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserMfaEnrollResponse"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/users/me/mfa/verify":{"post":{"tags":["users"],"summary":"Verify Mfa Me","description":"Complete MFA enrollment by validating a TOTP code.","operationId":"users-verify_mfa_me","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserMfaVerifyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/users/me/mfa/recovery-codes":{"post":{"tags":["users"],"summary":"Regenerate Mfa Recovery Codes Me","description":"Regenerate one-time recovery codes with TOTP confirmation.","operationId":"users-regenerate_mfa_recovery_codes_me","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserMfaRegenerateRecoveryCodesRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserMfaRecoveryCodesPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/users/me/mfa/disable":{"post":{"tags":["users"],"summary":"Disable Mfa Me","description":"Disable MFA via TOTP or one-time recovery code confirmation.","operationId":"users-disable_mfa_me","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserMfaDisableRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/users/me/sessions":{"get":{"tags":["users"],"summary":"Read User Sessions Me","description":"List active sessions for the authenticated user.","operationId":"users-read_user_sessions_me","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionsSecurityPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/me/sessions/{session_id}":{"delete":{"tags":["users"],"summary":"Revoke User Session Me","description":"Revoke one active session for the authenticated user.","operationId":"users-revoke_user_session_me","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/signup":{"post":{"tags":["users"],"summary":"Register User","description":"Create new user without the need to be logged in.","operationId":"users-register_user","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRegister"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/signup-status":{"get":{"tags":["users"],"summary":"Read Signup Status","description":"Return whether new account signups are currently disabled.\nPublic endpoint — no authentication required.","operationId":"users-read_signup_status","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupStatusPublic"}}}}}}},"/api/v1/users/verify-email":{"post":{"tags":["users"],"summary":"Verify Email","description":"Verify a newly registered user's email address.","operationId":"users-verify_email","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailVerificationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/resend-verification":{"post":{"tags":["users"],"summary":"Resend Verification Email","description":"Resend account verification email for pending signups.","operationId":"users-resend_verification_email","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailVerificationResendRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/account-audit-events/me":{"get":{"tags":["account-audit-events"],"summary":"Read My Account Audit Events","description":"Retrieve account audit events relevant to the current user.","operationId":"account-audit-events-read_my_account_audit_events","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"skip","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"event_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}],"title":"Event Type"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":32},{"type":"null"}],"title":"Status"}},{"name":"support_override_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Support Override Only"}},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time"}},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountAuditEventsPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/account-audit-events/tenant/{tenant_id}":{"get":{"tags":["account-audit-events"],"summary":"Read Organization Account Audit Events","description":"Retrieve organization-scoped account audit events (organization owner only).","operationId":"account-audit-events-read_organization_account_audit_events","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"event_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}],"title":"Event Type"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":32},{"type":"null"}],"title":"Status"}},{"name":"support_override_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Support Override Only"}},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time"}},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountAuditEventsPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/build-metadata/":{"get":{"tags":["build-metadata"],"summary":"Read Build Metadata","description":"Return version, build tag (commit SHA), and release date.","operationId":"build-metadata-read_build_metadata","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BuildMetadataResponse"}}}}}}},"/api/v1/projects/":{"get":{"tags":["projects"],"summary":"Read Projects","description":"Retrieve projects accessible to the current user.","operationId":"projects-read_projects","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"startDate","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Optional start date for cached usage summaries.","title":"Startdate"},"description":"Optional start date for cached usage summaries."},{"name":"endDate","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Optional end date for cached usage summaries.","title":"Enddate"},"description":"Optional end date for cached usage summaries."},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Optional explicit start timestamp for cached usage summaries.","title":"Start Time"},"description":"Optional explicit start timestamp for cached usage summaries."},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Optional explicit end timestamp for cached usage summaries.","title":"End Time"},"description":"Optional explicit end timestamp for cached usage summaries."},{"name":"token_unit_size","in":"query","required":false,"schema":{"anyOf":[{"enum":["hundred","thousand","million","billion"],"type":"string"},{"type":"null"}],"description":"Optional presentation unit for token count response fields. Omit to return raw individual tokens.","title":"Token Unit Size"},"description":"Optional presentation unit for token count response fields. Omit to return raw individual tokens."},{"name":"request_unit_size","in":"query","required":false,"schema":{"anyOf":[{"enum":["hundred","thousand","million","billion"],"type":"string"},{"type":"null"}],"description":"Optional presentation unit for request count response fields. Omit to return raw individual requests.","title":"Request Unit Size"},"description":"Optional presentation unit for request count response fields. Omit to return raw individual requests."},{"name":"order_by","in":"query","required":false,"schema":{"anyOf":[{"enum":["title","external_id","currency","created_at","updated_at","id"],"type":"string"},{"type":"null"}],"title":"Order By"}},{"name":"order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"desc","title":"Order"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"description":"Case-insensitive match on project title or external ID.","title":"Search"},"description":"Case-insensitive match on project title or external ID."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectsPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["projects"],"summary":"Create Project","description":"Create new project owned by the current user.","operationId":"projects-create_project","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/projects/{id}":{"get":{"tags":["projects"],"summary":"Read Project","description":"Get project by ID.","operationId":"projects-read_project","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"token_unit_size","in":"query","required":false,"schema":{"anyOf":[{"enum":["hundred","thousand","million","billion"],"type":"string"},{"type":"null"}],"description":"Optional presentation unit for token count response fields. Omit to return raw individual tokens.","title":"Token Unit Size"},"description":"Optional presentation unit for token count response fields. Omit to return raw individual tokens."},{"name":"request_unit_size","in":"query","required":false,"schema":{"anyOf":[{"enum":["hundred","thousand","million","billion"],"type":"string"},{"type":"null"}],"description":"Optional presentation unit for request count response fields. Omit to return raw individual requests.","title":"Request Unit Size"},"description":"Optional presentation unit for request count response fields. Omit to return raw individual requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["projects"],"summary":"Update Project","description":"Update a project.","operationId":"projects-update_project","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["projects"],"summary":"Delete Project","description":"Delete a project.","operationId":"projects-delete_project","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/projects/{id}/margins":{"get":{"tags":["projects"],"summary":"Get Project Margins","description":"Get project margin summary with optional grouping by provider/model/feature.","operationId":"projects-get_project_margins","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"startDate","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Optional start date for the margin window.","title":"Startdate"},"description":"Optional start date for the margin window."},{"name":"endDate","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Optional end date for the margin window.","title":"Enddate"},"description":"Optional end date for the margin window."},{"name":"group_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group By"}},{"name":"service_provider_names","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Optional provider filters for the margin window.","title":"Service Provider Names"},"description":"Optional provider filters for the margin window."},{"name":"service_names","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Optional model filters for the margin window.","title":"Service Names"},"description":"Optional model filters for the margin window."},{"name":"features","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Optional feature filters for the margin window.","title":"Features"},"description":"Optional feature filters for the margin window."},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Optional explicit start timestamp for the margin window.","title":"Start Time"},"description":"Optional explicit start timestamp for the margin window."},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Optional explicit end timestamp for the margin window.","title":"End Time"},"description":"Optional explicit end timestamp for the margin window."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarginSummaryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/projects/{id}/guardrail-alert-history":{"get":{"tags":["projects"],"summary":"Get Project Guardrail Alert History","description":"Retrieve guardrail alert delivery history for all customers in a project.","operationId":"projects-get_project_guardrail_alert_history","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuardrailAlertHistoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/end-customers/":{"get":{"tags":["end-customers"],"summary":"Read Customers","description":"Retrieve customers. If project_id provided, filter by that project.","operationId":"end-customers-read_customers","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"startDate","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Optional start date for cached usage summaries.","title":"Startdate"},"description":"Optional start date for cached usage summaries."},{"name":"endDate","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Optional end date for cached usage summaries.","title":"Enddate"},"description":"Optional end date for cached usage summaries."},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Optional explicit start timestamp for cached usage summaries.","title":"Start Time"},"description":"Optional explicit start timestamp for cached usage summaries."},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Optional explicit end timestamp for cached usage summaries.","title":"End Time"},"description":"Optional explicit end timestamp for cached usage summaries."},{"name":"token_unit_size","in":"query","required":false,"schema":{"anyOf":[{"enum":["hundred","thousand","million","billion"],"type":"string"},{"type":"null"}],"description":"Optional presentation unit for token count response fields. Omit to return raw individual tokens.","title":"Token Unit Size"},"description":"Optional presentation unit for token count response fields. Omit to return raw individual tokens."},{"name":"request_unit_size","in":"query","required":false,"schema":{"anyOf":[{"enum":["hundred","thousand","million","billion"],"type":"string"},{"type":"null"}],"description":"Optional presentation unit for request count response fields. Omit to return raw individual requests.","title":"Request Unit Size"},"description":"Optional presentation unit for request count response fields. Omit to return raw individual requests."},{"name":"order_by","in":"query","required":false,"schema":{"anyOf":[{"enum":["title","external_id","currency","created_at","updated_at","id"],"type":"string"},{"type":"null"}],"title":"Order By"}},{"name":"order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"desc","title":"Order"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"description":"Case-insensitive match on customer title or external ID.","title":"Search"},"description":"Case-insensitive match on customer title or external ID."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomersPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["end-customers"],"summary":"Create End Customer","description":"Create new customer under a project.","operationId":"end-customers-create_end_customer","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/end-customers/{id}":{"get":{"tags":["end-customers"],"summary":"Read Customer","description":"Get customer by ID.","operationId":"end-customers-read_customer","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"token_unit_size","in":"query","required":false,"schema":{"anyOf":[{"enum":["hundred","thousand","million","billion"],"type":"string"},{"type":"null"}],"description":"Optional presentation unit for token count response fields. Omit to return raw individual tokens.","title":"Token Unit Size"},"description":"Optional presentation unit for token count response fields. Omit to return raw individual tokens."},{"name":"request_unit_size","in":"query","required":false,"schema":{"anyOf":[{"enum":["hundred","thousand","million","billion"],"type":"string"},{"type":"null"}],"description":"Optional presentation unit for request count response fields. Omit to return raw individual requests.","title":"Request Unit Size"},"description":"Optional presentation unit for request count response fields. Omit to return raw individual requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["end-customers"],"summary":"Update End Customer","description":"Update a customer.","operationId":"end-customers-update_end_customer","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["end-customers"],"summary":"Delete End Customer","description":"Delete a customer.","operationId":"end-customers-delete_end_customer","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/end-customers/by-external-id/{external_id}":{"get":{"tags":["end-customers"],"summary":"Read Customer By External Id","description":"Get customer by external_id within a project.","operationId":"end-customers-read_customer_by_external_id","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"external_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9._~-]+$","title":"External Id"}},{"name":"project_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}},{"name":"token_unit_size","in":"query","required":false,"schema":{"anyOf":[{"enum":["hundred","thousand","million","billion"],"type":"string"},{"type":"null"}],"description":"Optional presentation unit for token count response fields. Omit to return raw individual tokens.","title":"Token Unit Size"},"description":"Optional presentation unit for token count response fields. Omit to return raw individual tokens."},{"name":"request_unit_size","in":"query","required":false,"schema":{"anyOf":[{"enum":["hundred","thousand","million","billion"],"type":"string"},{"type":"null"}],"description":"Optional presentation unit for request count response fields. Omit to return raw individual requests.","title":"Request Unit Size"},"description":"Optional presentation unit for request count response fields. Omit to return raw individual requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/end-customers/{id}/margin":{"get":{"tags":["end-customers"],"summary":"Get Customer Margin","description":"Get customer margin summary with optional grouping by provider/model/feature.","operationId":"end-customers-get_customer_margin","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"startDate","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Optional start date for the margin window.","title":"Startdate"},"description":"Optional start date for the margin window."},{"name":"endDate","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Optional end date for the margin window.","title":"Enddate"},"description":"Optional end date for the margin window."},{"name":"group_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group By"}},{"name":"service_provider_names","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Optional provider filters for the margin window.","title":"Service Provider Names"},"description":"Optional provider filters for the margin window."},{"name":"service_names","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Optional model filters for the margin window.","title":"Service Names"},"description":"Optional model filters for the margin window."},{"name":"features","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Optional feature filters for the margin window.","title":"Features"},"description":"Optional feature filters for the margin window."},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Optional explicit start timestamp for the margin window.","title":"Start Time"},"description":"Optional explicit start timestamp for the margin window."},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Optional explicit end timestamp for the margin window.","title":"End Time"},"description":"Optional explicit end timestamp for the margin window."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarginSummaryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/end-customers/{id}/billing/cycles":{"get":{"tags":["end-customers"],"summary":"Get Customer Billing Cycles","description":"Get customer billing-cycle history using the configured accounting period.","operationId":"end-customers-get_customer_billing_cycles","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":12,"title":"Limit"}},{"name":"token_unit_size","in":"query","required":false,"schema":{"anyOf":[{"enum":["hundred","thousand","million","billion"],"type":"string"},{"type":"null"}],"description":"Optional presentation unit for token count response fields. Omit to return raw individual tokens.","title":"Token Unit Size"},"description":"Optional presentation unit for token count response fields. Omit to return raw individual tokens."},{"name":"request_unit_size","in":"query","required":false,"schema":{"anyOf":[{"enum":["hundred","thousand","million","billion"],"type":"string"},{"type":"null"}],"description":"Optional presentation unit for request count response fields. Omit to return raw individual requests.","title":"Request Unit Size"},"description":"Optional presentation unit for request count response fields. Omit to return raw individual requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerBillingCyclesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/end-customers/{id}/billing/invoices/draft":{"post":{"tags":["end-customers"],"summary":"Generate Customer Draft Invoice","description":"Generate and persist a draft customer invoice for a billing cycle.","operationId":"end-customers-generate_customer_draft_invoice","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerBillingDraftInvoiceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerBillingCycleSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/end-customers/{id}/billing/invoices/draft-async":{"post":{"tags":["end-customers"],"summary":"Generate Customer Draft Invoice Async","description":"Enqueue draft customer invoice generation for worker execution.","operationId":"end-customers-generate_customer_draft_invoice_async","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerBillingDraftInvoiceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BackgroundTaskPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/end-customers/{id}/billing/tasks/{task_id}":{"get":{"tags":["end-customers"],"summary":"Get Customer Billing Task Status","description":"Return status for a queued billing task scoped to a customer.","operationId":"end-customers-get_customer_billing_task_status","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BackgroundTaskPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/end-customers/{id}/billing/invoices/{snapshot_id}/document":{"get":{"tags":["end-customers"],"summary":"Get Customer Billing Invoice Document","description":"Return rendered draft invoice document payload (canonical model + HTML).","operationId":"end-customers-get_customer_billing_invoice_document","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"snapshot_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Snapshot Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerBillingDocumentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/end-customers/{id}/billing/ledger":{"get":{"tags":["end-customers"],"summary":"Get Customer Billing Ledger","description":"List billing charge ledger postings for a customer in a time window.","operationId":"end-customers-get_customer_billing_ledger","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"startDate","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Optional start date for the ledger window.","title":"Startdate"},"description":"Optional start date for the ledger window."},{"name":"endDate","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Optional end date for the ledger window.","title":"Enddate"},"description":"Optional end date for the ledger window."},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Optional explicit start timestamp for the ledger window.","title":"Start Time"},"description":"Optional explicit start timestamp for the ledger window."},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Optional explicit end timestamp for the ledger window.","title":"End Time"},"description":"Optional explicit end timestamp for the ledger window."},{"name":"charge_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional charge type filter (for example: base_monthly_fee).","title":"Charge Type"},"description":"Optional charge type filter (for example: base_monthly_fee)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerBillingLedgerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/end-customers/{id}/billing/ledger/replay":{"post":{"tags":["end-customers"],"summary":"Replay Customer Billing Ledger","description":"Replay base monthly fee postings with optional historical pricing windows.","operationId":"end-customers-replay_customer_billing_ledger","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerBillingLedgerReplayRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerBillingLedgerReplayResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/end-customers/{id}/credits":{"get":{"tags":["end-customers"],"summary":"List Customer Credits","description":"Return a customer's derived credit balance and paged grant history.","operationId":"end-customers-list_customer_credits","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerCreditGrantsPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["end-customers"],"summary":"Grant Customer Credit","description":"Grant customer credit in the customer's currency.","operationId":"end-customers-grant_customer_credit","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerCreditGrantCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerCreditGrantPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/end-customers/{id}/credits/{grant_id}/reversals":{"post":{"tags":["end-customers"],"summary":"Reverse End Customer Credit","description":"Reverse an unused amount from one customer credit grant.","operationId":"end-customers-reverse_end_customer_credit","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"grant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Grant Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerCreditReversalCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerCreditReversalPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/end-customers/{id}/guardrail-alert-history":{"get":{"tags":["end-customers"],"summary":"Get Guardrail Alert History","description":"Retrieve guardrail alert delivery history for a customer.","operationId":"end-customers-get_guardrail_alert_history","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuardrailAlertHistoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/end-customer-keys/":{"get":{"tags":["end-customer-keys"],"summary":"Read Customer Keys","description":"Get customer keys accessible to the current user.\n\nIf end_customer_id is provided, returns keys for that specific customer.\nOtherwise, returns all keys from customers the user can view.","operationId":"end-customer-keys-read_customer_keys","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"end_customer_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"End Customer Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerKeysPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["end-customer-keys"],"summary":"Create End Customer Key","description":"Create a new customer key.\n\nThe key will be associated with the specified customer and owned by the current user.\nReturns the key value - this is the ONLY time the key will be shown in full.","operationId":"end-customer-keys-create_end_customer_key","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerKeyCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerKeyCreateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/end-customer-keys/{id}":{"get":{"tags":["end-customer-keys"],"summary":"Read Customer Key","description":"Get customer key by ID.","operationId":"end-customer-keys-read_customer_key","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerKeyPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["end-customer-keys"],"summary":"Update End Customer Key","description":"Update a customer key (name or active status).","operationId":"end-customer-keys-update_end_customer_key","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerKeyUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerKeyPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["end-customer-keys"],"summary":"Delete End Customer Key","description":"Delete a customer key.","operationId":"end-customer-keys-delete_end_customer_key","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/":{"get":{"tags":["tenants"],"summary":"Read Organizations","description":"Retrieve organizations accessible to the current user.","operationId":"tenants-read_organizations","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantsPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["tenants"],"summary":"Create Tenant","description":"Create a new organization and assign current user as owner.","operationId":"tenants-create_tenant","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/{id}":{"get":{"tags":["tenants"],"summary":"Read Organization","description":"Get organization by ID if current user is a member.","operationId":"tenants-read_organization","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/{id}/memberships":{"get":{"tags":["tenants"],"summary":"Read Organization Memberships","description":"List memberships for an organization the user can access.","operationId":"tenants-read_organization_memberships","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantMembershipsPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/{id}/memberships/{user_id}":{"put":{"tags":["tenants"],"summary":"Upsert Organization Membership","description":"Add or update membership role for a user (organization owner only).","operationId":"tenants-upsert_organization_membership","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantMembershipUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantMembershipPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["tenants"],"summary":"Remove Tenant Membership","description":"Remove a membership (organization owner only).","operationId":"tenants-remove_tenant_membership","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/{id}/invitations":{"get":{"tags":["tenants"],"summary":"Read Organization Invitations","description":"List invitations for an organization (owner only).","operationId":"tenants-read_organization_invitations","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"include_inactive","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Inactive"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantInvitationsPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["tenants"],"summary":"Create Tenant Invitation","description":"Invite a user by email to an organization (owner only).","operationId":"tenants-create_tenant_invitation","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantInvitationCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantInvitationPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/{id}/invitations/{invitation_id}/resend":{"post":{"tags":["tenants"],"summary":"Resend Tenant Invitation","description":"Resend an invitation with a new token and extended expiration.","operationId":"tenants-resend_tenant_invitation","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"invitation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Invitation Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantInvitationResend"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantInvitationPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/{id}/invitations/{invitation_id}/revoke":{"post":{"tags":["tenants"],"summary":"Revoke Tenant Invitation","description":"Revoke an active invitation.","operationId":"tenants-revoke_tenant_invitation","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"invitation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Invitation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantInvitationPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/invitations/resolve":{"post":{"tags":["tenants"],"summary":"Resolve Organization Invitation","description":"Resolve invitation metadata from token for invitation-accept UX.","operationId":"tenants-resolve_organization_invitation","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantInvitationResolve"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantInvitationResolvePublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/invitations/accept":{"post":{"tags":["tenants"],"summary":"Accept Tenant Invitation","description":"Accept invitation for the currently authenticated user.","operationId":"tenants-accept_tenant_invitation","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantInvitationAccept"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantMembershipPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/tenants/{id}/identity-providers":{"get":{"tags":["tenants"],"summary":"Read Organization Identity Providers","description":"List organization identity providers (owner only).","operationId":"tenants-read_organization_identity_providers","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Active Only"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantIdentityProvidersPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/{id}/identity-providers/oidc":{"put":{"tags":["tenants"],"summary":"Upsert Tenant Identity Provider","description":"Create or update organization OIDC configuration (owner only).","operationId":"tenants-upsert_tenant_identity_provider","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantIdentityProviderUpsert"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantIdentityProviderPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/{id}/identity-providers/{provider_id}":{"delete":{"tags":["tenants"],"summary":"Deactivate Tenant Identity Provider","description":"Deactivate organization identity provider configuration (owner only).","operationId":"tenants-deactivate_tenant_identity_provider","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"provider_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Provider Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/endcustomer-billing-plans/":{"get":{"tags":["endcustomer-billing-plans"],"summary":"Read Plans","description":"Retrieve all active plans (public and private).","operationId":"endcustomer-billing-plans-read_plans","parameters":[{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"order_by","in":"query","required":false,"schema":{"anyOf":[{"enum":["name","base_monthly_fee","cost_per_1m_tokens","included_tokens_millions_monthly","max_tokens_millions_monthly","created_at","updated_at","id"],"type":"string"},{"type":"null"}],"title":"Order By"}},{"name":"order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"desc","title":"Order"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"description":"Case-insensitive match on plan name.","title":"Search"},"description":"Case-insensitive match on plan name."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerBillingPlansPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["endcustomer-billing-plans"],"summary":"Create Endcustomerbillingplan","description":"Create new global plan (platform admin only).","operationId":"endcustomer-billing-plans-create_endcustomerbillingplan","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerBillingPlanCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerBillingPlanPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/endcustomer-billing-plans/{id}":{"put":{"tags":["endcustomer-billing-plans"],"summary":"Update Endcustomerbillingplan","description":"Update a global plan (platform admin only).","operationId":"endcustomer-billing-plans-update_endcustomerbillingplan","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerBillingPlanUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerBillingPlanPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["endcustomer-billing-plans"],"summary":"Delete Endcustomerbillingplan","description":"Delete (soft delete) a global plan (platform admin only).","operationId":"endcustomer-billing-plans-delete_endcustomerbillingplan","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["endcustomer-billing-plans"],"summary":"Read Plan","description":"Get plan by ID.","operationId":"endcustomer-billing-plans-read_plan","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerBillingPlanPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/endcustomer-billing-plans/subscriptions":{"get":{"tags":["endcustomer-billing-plans"],"summary":"Read Subscriptions","description":"Retrieve subscriptions. Filter by project_id or plan_id if provided.","operationId":"endcustomer-billing-plans-read_subscriptions","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"}},{"name":"tenant_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Tenant Id"}},{"name":"plan_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Plan Id"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerBillingSubscriptionsPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["endcustomer-billing-plans"],"summary":"Create Endcustomerbillingsubscription","description":"Create a new subscription for an organization (or a project within one).","operationId":"endcustomer-billing-plans-create_endcustomerbillingsubscription","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerBillingSubscriptionCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerBillingSubscriptionPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/endcustomer-billing-plans/subscriptions/{id}":{"get":{"tags":["endcustomer-billing-plans"],"summary":"Read Subscription","description":"Get subscription by ID.","operationId":"endcustomer-billing-plans-read_subscription","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerBillingSubscriptionPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["endcustomer-billing-plans"],"summary":"Update Endcustomerbillingsubscription","description":"Update a subscription.","operationId":"endcustomer-billing-plans-update_endcustomerbillingsubscription","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerBillingSubscriptionUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerBillingSubscriptionPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/endcustomer-billing-plans/subscriptions/{id}/cancel":{"post":{"tags":["endcustomer-billing-plans"],"summary":"Cancel Endcustomerbillingsubscription","description":"Cancel a subscription.","operationId":"endcustomer-billing-plans-cancel_endcustomerbillingsubscription","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"cancel_at_period_end","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Cancel At Period End"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/{tenant_id}/endcustomer-billing-plans":{"get":{"tags":["endcustomer-billing-plans"],"summary":"Read Organization Plans","description":"List active customer billing plans owned by one organization.","operationId":"endcustomer-billing-plans-read_organization_plans","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerBillingPlansPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["endcustomer-billing-plans"],"summary":"Create Organization Plan","description":"Create a customer billing plan owned by an organization.","operationId":"endcustomer-billing-plans-create_organization_plan","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerBillingPlanCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerBillingPlanPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/{tenant_id}/endcustomer-billing-plans/{id}":{"get":{"tags":["endcustomer-billing-plans"],"summary":"Read Organization Plan","description":"Read a customer billing plan owned by an organization.","operationId":"endcustomer-billing-plans-read_organization_plan","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerBillingPlanPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["endcustomer-billing-plans"],"summary":"Update Organization Plan","description":"Update a customer billing plan owned by an organization.","operationId":"endcustomer-billing-plans-update_organization_plan","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerBillingPlanUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndCustomerBillingPlanPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["endcustomer-billing-plans"],"summary":"Delete Organization Plan","description":"Deactivate a customer billing plan owned by an organization.","operationId":"endcustomer-billing-plans-delete_organization_plan","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/platform-plans":{"get":{"tags":["platform-billing"],"summary":"Read Platform Plans","description":"List active Spendware commercial plans, separate from customer plans.","operationId":"platform-billing-read_platform_plans","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformPlansPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/platform-billing/reconcile":{"post":{"tags":["platform-billing"],"summary":"Reconcile Platform Usage Collection","description":"Queue closed usage periods and a reconciliation run for operators.","operationId":"platform-billing-reconcile_platform_usage_collection","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"integer"},"type":"object","title":"Response Platform-Billing-Reconcile Platform Usage Collection"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/tenants/{tenant_id}/platform-subscription":{"get":{"tags":["platform-billing"],"summary":"Read Platform Subscription","description":"Return an organization's platform entitlement and local usage summary.","operationId":"platform-billing-read_platform_subscription","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformSubscriptionPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/{tenant_id}/platform-subscription/checkout-session":{"post":{"tags":["platform-billing"],"summary":"Create Platform Checkout Session","description":"Create a platform-only Stripe Checkout session for an organization owner.","operationId":"platform-billing-create_platform_checkout_session","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformCheckoutSessionCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformCheckoutSessionPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/{tenant_id}/platform-subscription/change":{"post":{"tags":["platform-billing"],"summary":"Change Platform Subscription","description":"Schedule a platform plan change for the next billing period.","operationId":"platform-billing-change_platform_subscription","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformSubscriptionChange"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformSubscriptionPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/{tenant_id}/platform-subscription/cancel":{"post":{"tags":["platform-billing"],"summary":"Cancel Platform Subscription","description":"Schedule cancellation at the end of the current paid billing period.","operationId":"platform-billing-cancel_platform_subscription","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformSubscriptionPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/{tenant_id}/platform-subscription/billing-portal-session":{"post":{"tags":["platform-billing"],"summary":"Create Platform Billing Portal Session","description":"Create a Stripe Customer Portal session for an organization owner.","operationId":"platform-billing-create_platform_billing_portal_session","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformBillingPortalSessionCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformBillingPortalSessionPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/platform-roles/":{"get":{"tags":["platform-roles"],"summary":"Read Platform Role Assignments","description":"List platform role assignments (platform admin only).","operationId":"platform-roles-read_platform_role_assignments","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"User Id"}},{"name":"include_revoked","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Revoked"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformRoleAssignmentsPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["platform-roles"],"summary":"Grant Platform Role Endpoint","description":"Grant a platform role to a user (platform admin only).\n\nIdempotent while an active assignment for the same role exists.","operationId":"platform-roles-grant_platform_role_endpoint","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformRoleAssignmentCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformRoleAssignmentPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/platform-roles/{assignment_id}/revoke":{"post":{"tags":["platform-roles"],"summary":"Revoke Platform Role Endpoint","description":"Revoke a platform role assignment (platform admin only).","operationId":"platform-roles-revoke_platform_role_endpoint","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assignment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assignment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformRoleAssignmentRevoke"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformRoleAssignmentPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/provider-catalog/":{"get":{"tags":["provider-catalog"],"summary":"Read Provider Catalogs","description":"Retrieve provider catalog entries.","operationId":"provider-catalog-read_provider_catalogs","parameters":[{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"provider_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Name"}},{"name":"model_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderCatalogsPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/provider-catalog/{id}":{"get":{"tags":["provider-catalog"],"summary":"Read Provider Catalog","description":"Get provider catalog by ID.","operationId":"provider-catalog-read_provider_catalog","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderCatalogPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/provider-settings/effective":{"get":{"tags":["provider-settings"],"summary":"Read Effective Provider Settings","operationId":"provider-settings-read_effective_provider_settings","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tenant_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Tenant Id"}},{"name":"project_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"}},{"name":"provider_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Name"}},{"name":"model_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Name"}},{"name":"order_by","in":"query","required":false,"schema":{"enum":["provider_name","model_name","selected_source","cost_per_request","cost_per_input_token","cost_per_output_token"],"type":"string","default":"provider_name","title":"Order By"}},{"name":"order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"asc","title":"Order"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EffectiveProviderSettingsPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/provider-settings/effective/source/{source_id}":{"get":{"tags":["provider-settings"],"summary":"Read Effective Provider Setting By Source","operationId":"provider-settings-read_effective_provider_setting_by_source","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"source_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Source Id"}},{"name":"tenant_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Tenant Id"}},{"name":"project_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EffectiveProviderSettingPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/provider-settings/effective/detail":{"get":{"tags":["provider-settings"],"summary":"Read Effective Provider Setting Detail","operationId":"provider-settings-read_effective_provider_setting_detail","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"provider_name","in":"query","required":true,"schema":{"type":"string","title":"Provider Name"}},{"name":"model_name","in":"query","required":true,"schema":{"type":"string","title":"Model Name"}},{"name":"tenant_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Tenant Id"}},{"name":"project_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"}},{"name":"number_requests","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Number Requests"}},{"name":"input_tokens","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Input Tokens"}},{"name":"output_tokens","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Tokens"}},{"name":"cached_tokens","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cached Tokens"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EffectiveProviderSettingPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/{tenant_id}/provider-policy":{"get":{"tags":["provider-settings"],"summary":"Read Organization Provider Policy","operationId":"provider-settings-read_organization_provider_policy","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationProviderPolicyPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["provider-settings"],"summary":"Replace Organization Provider Policy","operationId":"provider-settings-replace_organization_provider_policy","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationProviderPolicyCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationProviderPolicyPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["provider-settings"],"summary":"Update Organization Provider Policy","operationId":"provider-settings-update_organization_provider_policy","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationProviderPolicyUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationProviderPolicyPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/{tenant_id}/provider-settings":{"get":{"tags":["provider-settings"],"summary":"Read Organization Provider Settings","operationId":"provider-settings-read_organization_provider_settings","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationProviderSettingsPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["provider-settings"],"summary":"Create Organization Provider Setting","operationId":"provider-settings-create_organization_provider_setting","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationProviderSettingCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationProviderSettingPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/{tenant_id}/provider-settings/{setting_id}":{"patch":{"tags":["provider-settings"],"summary":"Update Organization Provider Setting","operationId":"provider-settings-update_organization_provider_setting","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"setting_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Setting Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationProviderSettingUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationProviderSettingPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["provider-settings"],"summary":"Delete Organization Provider Setting","operationId":"provider-settings-delete_organization_provider_setting","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"setting_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Setting Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/me/provider-settings":{"get":{"tags":["provider-settings"],"summary":"Read My Provider Settings","operationId":"provider-settings-read_my_provider_settings","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tenant_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Tenant Id"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProviderSettingsPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["provider-settings"],"summary":"Create My Provider Setting","operationId":"provider-settings-create_my_provider_setting","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProviderSettingCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProviderSettingPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/me/provider-settings/{setting_id}":{"patch":{"tags":["provider-settings"],"summary":"Update My Provider Setting","operationId":"provider-settings-update_my_provider_setting","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"setting_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Setting Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProviderSettingUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProviderSettingPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["provider-settings"],"summary":"Delete My Provider Setting","operationId":"provider-settings-delete_my_provider_setting","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"setting_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Setting Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/me/provider-source-preferences":{"get":{"tags":["provider-settings"],"summary":"Read My Provider Source Preferences","operationId":"provider-settings-read_my_provider_source_preferences","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tenant_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Tenant Id"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProviderSourcePreferencesPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["provider-settings"],"summary":"Upsert My Provider Source Preference","operationId":"provider-settings-upsert_my_provider_source_preference","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProviderSourcePreferenceUpsert"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProviderSourcePreferencePublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/me/provider-source-preferences/{preference_id}":{"delete":{"tags":["provider-settings"],"summary":"Delete My Provider Source Preference","operationId":"provider-settings-delete_my_provider_source_preference","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"preference_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Preference Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/stripe/webhook":{"post":{"tags":["stripe"],"summary":"Stripe Webhook","operationId":"stripe-stripe_webhook","parameters":[{"name":"Stripe-Signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stripe-Signature"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Stripe-Stripe Webhook"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pricing-rules/":{"get":{"tags":["pricing-rules"],"summary":"Read Pricing Rules","description":"Retrieve pricing rules. Filter by project if provided.","operationId":"pricing-rules-read_pricing_rules","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PricingRulesPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["pricing-rules"],"summary":"Create Pricing Rule","description":"Create a pricing rule.","operationId":"pricing-rules-create_pricing_rule","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PricingRuleCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PricingRulePublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pricing-rules/{id}":{"get":{"tags":["pricing-rules"],"summary":"Read Pricing Rule","description":"Get pricing rule by ID.","operationId":"pricing-rules-read_pricing_rule","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PricingRulePublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["pricing-rules"],"summary":"Update Pricing Rule","description":"Update a pricing rule.","operationId":"pricing-rules-update_pricing_rule","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PricingRuleUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PricingRulePublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["pricing-rules"],"summary":"Delete Pricing Rule","description":"Delete a pricing rule.","operationId":"pricing-rules-delete_pricing_rule","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/resource-permissions/{resource_type}/{resource_id}":{"get":{"tags":["resource-permissions"],"summary":"Read Resource Permissions","operationId":"resource-permissions-read_resource_permissions","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"resource_type","in":"path","required":true,"schema":{"$ref":"#/components/schemas/ResourceType"}},{"name":"resource_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Resource Id"}},{"name":"X-Support-Reason","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Support-Reason"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourcePermissionsPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["resource-permissions"],"summary":"Create Resource Permission","operationId":"resource-permissions-create_resource_permission","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"resource_type","in":"path","required":true,"schema":{"$ref":"#/components/schemas/ResourceType"}},{"name":"resource_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Resource Id"}},{"name":"X-Support-Reason","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Support-Reason"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourcePermissionCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourcePermissionPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/resource-permissions/{permission_id}":{"patch":{"tags":["resource-permissions"],"summary":"Patch Resource Permission","operationId":"resource-permissions-patch_resource_permission","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"permission_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Permission Id"}},{"name":"X-Support-Reason","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Support-Reason"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourcePermissionUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourcePermissionPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["resource-permissions"],"summary":"Remove Resource Permission","operationId":"resource-permissions-remove_resource_permission","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"permission_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Permission Id"}},{"name":"X-Support-Reason","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Support-Reason"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/resource-permissions/{resource_type}/{resource_id}/transfer-owner":{"post":{"tags":["resource-permissions"],"summary":"Post Transfer Resource Owner","operationId":"resource-permissions-post_transfer_resource_owner","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"resource_type","in":"path","required":true,"schema":{"$ref":"#/components/schemas/ResourceType"}},{"name":"resource_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Resource Id"}},{"name":"X-Support-Reason","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Support-Reason"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourcePermissionTransferOwner"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourcePermissionPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/resource-permissions/{resource_type}/{resource_id}/effective":{"get":{"tags":["resource-permissions"],"summary":"Read Effective Resource Access","operationId":"resource-permissions-read_effective_resource_access","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"resource_type","in":"path","required":true,"schema":{"$ref":"#/components/schemas/ResourceType"}},{"name":"resource_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Resource Id"}},{"name":"X-Support-Reason","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Support-Reason"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EffectiveAccessPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing-templates/":{"get":{"tags":["billing-templates"],"summary":"Read Billing Templates","operationId":"billing-templates-read_billing_templates","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"}},{"name":"include_archived","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Archived"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingTemplatesPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["billing-templates"],"summary":"Create Billing Template","operationId":"billing-templates-create_billing_template","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingTemplateCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingTemplatePublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing-templates/{id}":{"get":{"tags":["billing-templates"],"summary":"Read Billing Template","operationId":"billing-templates-read_billing_template","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingTemplatePublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["billing-templates"],"summary":"Update Billing Template","operationId":"billing-templates-update_billing_template","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingTemplateUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingTemplatePublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["billing-templates"],"summary":"Delete Billing Template","operationId":"billing-templates-delete_billing_template","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing-templates/{id}/activate":{"post":{"tags":["billing-templates"],"summary":"Activate Billing Template","operationId":"billing-templates-activate_billing_template","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingTemplateActivate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingTemplatePublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing-templates/{id}/clone":{"post":{"tags":["billing-templates"],"summary":"Clone Billing Template","operationId":"billing-templates-clone_billing_template","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingTemplatePublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing-templates/{id}/rules":{"post":{"tags":["billing-templates"],"summary":"Add Billing Template Rule","operationId":"billing-templates-add_billing_template_rule","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingTemplateLineItemRuleCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingTemplateLineItemRulePublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing-templates/{id}/rules/{rule_id}":{"put":{"tags":["billing-templates"],"summary":"Update Billing Template Rule","operationId":"billing-templates-update_billing_template_rule","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Rule Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingTemplateLineItemRuleUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingTemplateLineItemRulePublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["billing-templates"],"summary":"Delete Billing Template Rule","operationId":"billing-templates-delete_billing_template_rule","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Rule Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing-preview/projects/{id}/line-items":{"get":{"tags":["billing-preview"],"summary":"Preview Project Line Items","description":"Preview line items for a project with optional template override.","operationId":"billing-preview-preview_project_line_items","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"template_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Template Id"}},{"name":"end_customer_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"End Customer Id"}},{"name":"period_start","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period Start"}},{"name":"period_end","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period End"}},{"name":"output_mode","in":"query","required":false,"schema":{"type":"string","pattern":"^(internal|customer)$","default":"internal","title":"Output Mode"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingLineItemsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/usage-guardrails/":{"get":{"tags":["usage-guardrails"],"summary":"Read Usage Guardrails","description":"Retrieve usage guardrails. Filter by customer if provided.\n\n``usage_end_customer_id`` supplies the evaluation context for plan-owned\nrows, which are always evaluated per subscribed customer (used by the\ncustomer guardrails tab).","operationId":"usage-guardrails-read_usage_guardrails","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"end_customer_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"End Customer Id"}},{"name":"plan_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Plan Id"}},{"name":"project_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"}},{"name":"usage_end_customer_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Usage End Customer Id"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageGuardrailsPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["usage-guardrails"],"summary":"Create Usage Guardrail","description":"Create a usage guardrail for a customer.","operationId":"usage-guardrails-create_usage_guardrail","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageGuardrailCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageGuardrailPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/usage-guardrails/{id}":{"get":{"tags":["usage-guardrails"],"summary":"Read Usage Guardrail","description":"Get usage guardrail by ID.","operationId":"usage-guardrails-read_usage_guardrail","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageGuardrailPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["usage-guardrails"],"summary":"Update Usage Guardrail","description":"Update a usage guardrail.","operationId":"usage-guardrails-update_usage_guardrail","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageGuardrailUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageGuardrailPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["usage-guardrails"],"summary":"Delete Usage Guardrail","description":"Delete a usage guardrail.","operationId":"usage-guardrails-delete_usage_guardrail","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/usage/estimate-cost":{"post":{"tags":["usage"],"summary":"Estimate Cost","description":"Estimate cost for a customer's request.","operationId":"usage-estimate_cost","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"end_customer_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"End Customer Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EstimateCostRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EstimateCostResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/usage/preflight":{"post":{"tags":["usage"],"summary":"Preflight Check","description":"Perform preflight check for a request using customer context.","operationId":"usage-preflight_check","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreflightRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreflightResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/usage/log":{"post":{"tags":["usage"],"summary":"Log Usage","description":"Log usage for a customer.","operationId":"usage-log_usage","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogUsageRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/EndCustomerPublic"},{"$ref":"#/components/schemas/UsageLogResponse"}],"title":"Response Usage-Log Usage"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/usage/preflight-with-key":{"post":{"tags":["usage"],"summary":"Preflight Check With Key","description":"Perform preflight check using a customer key (no auth).","operationId":"usage-preflight_check_with_key","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreflightRequestWithKey"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreflightResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/usage/log-with-key":{"post":{"tags":["usage"],"summary":"Log Usage With Key","description":"Log usage using a customer key (no auth).","operationId":"usage-log_usage_with_key","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogUsageRequestWithKey"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageLogResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/usage/query-usage":{"post":{"tags":["usage"],"summary":"Query Usage","description":"Query usage logs for analytics from Loki.","operationId":"usage-query_usage","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"include_statistics","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Statistics"}},{"name":"token_unit_size","in":"query","required":false,"schema":{"anyOf":[{"enum":["hundred","thousand","million","billion"],"type":"string"},{"type":"null"}],"description":"Optional presentation unit for token count response fields. Omit to return raw individual tokens.","title":"Token Unit Size"},"description":"Optional presentation unit for token count response fields. Omit to return raw individual tokens."},{"name":"request_unit_size","in":"query","required":false,"schema":{"anyOf":[{"enum":["hundred","thousand","million","billion"],"type":"string"},{"type":"null"}],"description":"Optional presentation unit for request count response fields. Omit to return raw individual requests.","title":"Request Unit Size"},"description":"Optional presentation unit for request count response fields. Omit to return raw individual requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CostLogQueryRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CostLogQueryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/usage/mismatch-diagnostics":{"get":{"tags":["usage"],"summary":"Mismatch Diagnostics","description":"Return mismatch diagnostics for reported vs estimated usage.","operationId":"usage-mismatch_diagnostics","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"}},{"name":"end_customer_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"End Customer Id"}},{"name":"lookback_hours","in":"query","required":false,"schema":{"type":"integer","default":24,"title":"Lookback Hours"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MismatchDiagnosticsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/usage/profitability-pivot":{"get":{"tags":["usage"],"summary":"Profitability Pivot","description":"Return profitability pivot grouped by provider/model/feature/day/month.","operationId":"usage-profitability_pivot","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"dimension","in":"query","required":false,"schema":{"type":"string","default":"model","title":"Dimension"}},{"name":"startDate","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Optional start date for profitability window.","title":"Startdate"},"description":"Optional start date for profitability window."},{"name":"endDate","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Optional end date for profitability window.","title":"Enddate"},"description":"Optional end date for profitability window."},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time"}},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"}},{"name":"project_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"}},{"name":"end_customer_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"End Customer Id"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"token_unit_size","in":"query","required":false,"schema":{"anyOf":[{"enum":["hundred","thousand","million","billion"],"type":"string"},{"type":"null"}],"description":"Optional presentation unit for token count response fields. Omit to return raw individual tokens.","title":"Token Unit Size"},"description":"Optional presentation unit for token count response fields. Omit to return raw individual tokens."},{"name":"request_unit_size","in":"query","required":false,"schema":{"anyOf":[{"enum":["hundred","thousand","million","billion"],"type":"string"},{"type":"null"}],"description":"Optional presentation unit for request count response fields. Omit to return raw individual requests.","title":"Request Unit Size"},"description":"Optional presentation unit for request count response fields. Omit to return raw individual requests."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsagePivotResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/usage/health":{"get":{"tags":["usage"],"summary":"Usage Health","description":"Health check for usage routes.","operationId":"usage-usage_health","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}}}}},"/api/v1/partial/projects":{"get":{"tags":["partial-usage"],"summary":"Read Partial Projects","operationId":"partial-usage-read_partial_projects","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"is_resolved","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Is Resolved"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","default":"updated_at","title":"Order By"}},{"name":"order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"desc","title":"Order"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartialProjectsPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/partial/projects/{id}":{"get":{"tags":["partial-usage"],"summary":"Read Partial Project","operationId":"partial-usage-read_partial_project","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartialProjectPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["partial-usage"],"summary":"Delete Partial Project","operationId":"partial-usage-delete_partial_project","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/partial/projects/{id}/finalize":{"post":{"tags":["partial-usage"],"summary":"Finalize Partial Project","operationId":"partial-usage-finalize_partial_project","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartialProjectFinalizeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartialProjectPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/partial/customers":{"get":{"tags":["partial-usage"],"summary":"Read Partial Customers","operationId":"partial-usage-read_partial_customers","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"is_resolved","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Is Resolved"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","default":"updated_at","title":"Order By"}},{"name":"order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"desc","title":"Order"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartialEndCustomersPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/partial/end-customers/{id}":{"get":{"tags":["partial-usage"],"summary":"Read Partial Customer","operationId":"partial-usage-read_partial_customer","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartialEndCustomerPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["partial-usage"],"summary":"Delete Partial Customer","operationId":"partial-usage-delete_partial_customer","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/partial/end-customers/{id}/finalize":{"post":{"tags":["partial-usage"],"summary":"Finalize Partial Customer","operationId":"partial-usage-finalize_partial_customer","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartialEndCustomerFinalizeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartialEndCustomerPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/partial/providers":{"get":{"tags":["partial-usage"],"summary":"Read Partial Providers","operationId":"partial-usage-read_partial_providers","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"is_resolved","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Is Resolved"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","default":"updated_at","title":"Order By"}},{"name":"order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"desc","title":"Order"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartialProvidersPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/partial/providers/{id}":{"get":{"tags":["partial-usage"],"summary":"Read Partial Provider","operationId":"partial-usage-read_partial_provider","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartialProviderPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["partial-usage"],"summary":"Delete Partial Provider","operationId":"partial-usage-delete_partial_provider","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/partial/providers/{id}/finalize":{"post":{"tags":["partial-usage"],"summary":"Finalize Partial Provider","operationId":"partial-usage-finalize_partial_provider","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartialProviderFinalizeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartialProviderPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/user-api-keys/":{"get":{"tags":["user-api-keys"],"summary":"Read User Api Keys","description":"Get all API keys for the current user.","operationId":"user-api-keys-read_user_api_keys","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserApiKeysPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["user-api-keys"],"summary":"Create User Api Key","description":"Create a new user API key.\n\nReturns the key value - this is the ONLY time the full key will be shown.\nStore it securely.","operationId":"user-api-keys-create_user_api_key","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserApiKeyCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserApiKeyCreateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/user-api-keys/{id}/rotate":{"post":{"tags":["user-api-keys"],"summary":"Rotate User Api Key","description":"Rotate a key by creating a replacement key and deprecating the old key.","operationId":"user-api-keys-rotate_user_api_key","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserApiKeyRotate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserApiKeyRotateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/user-api-keys/{id}":{"patch":{"tags":["user-api-keys"],"summary":"Update User Api Key","description":"Update a user API key (name, active status, or expiration).","operationId":"user-api-keys-update_user_api_key","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserApiKeyUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserApiKeyPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["user-api-keys"],"summary":"Delete User Api Key","description":"Revoke a user API key while preserving lifecycle metadata.","operationId":"user-api-keys-delete_user_api_key","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notifications/":{"get":{"tags":["notifications"],"summary":"Read Notifications","operationId":"notifications-read_notifications","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"unread_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Unread Only"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationsPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notifications/unread":{"get":{"tags":["notifications"],"summary":"Read Unread Notifications","operationId":"notifications-read_unread_notifications","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":5,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationUnreadSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notifications/{notification_id}/read":{"post":{"tags":["notifications"],"summary":"Mark Notification As Read","operationId":"notifications-mark_notification_as_read","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"notification_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Notification Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notifications/read-all":{"post":{"tags":["notifications"],"summary":"Mark Notifications As Read","operationId":"notifications-mark_notifications_as_read","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationReadAllResponse"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/notifications/preferences":{"get":{"tags":["notifications"],"summary":"Read Notification Preferences","operationId":"notifications-read_notification_preferences","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationPreferencesPublic"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"put":{"tags":["notifications"],"summary":"Put Notification Preferences","operationId":"notifications-put_notification_preferences","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationPreferencesUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationPreferencesPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/onboarding":{"get":{"tags":["onboarding"],"summary":"Read Onboarding Summaries","description":"List organization onboarding summaries available to the current user.","operationId":"onboarding-read_onboarding_summaries","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantOnboardingSummariesPublic"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/tenants/{tenant_id}/onboarding":{"get":{"tags":["onboarding"],"summary":"Read Organization Onboarding","description":"Read derived onboarding status for one editable organization.","operationId":"onboarding-read_organization_onboarding","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantOnboardingStatusPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["onboarding"],"summary":"Update Organization Onboarding Route","description":"Save validated shared onboarding selections without storing secrets.","operationId":"onboarding-update_organization_onboarding_route","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantOnboardingUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantOnboardingStatusPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/{tenant_id}/onboarding/me":{"patch":{"tags":["onboarding"],"summary":"Update Organization Onboarding User State","description":"Persist the current user's onboarding resume and dismissal state.","operationId":"onboarding-update_organization_onboarding_user_state","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantOnboardingUserStateUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantOnboardingUserStatePublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/usage-threshold-exceeded-actions/":{"get":{"tags":["usage-threshold-exceeded-actions"],"summary":"Read Usage Threshold Exceeded Actions","description":"Retrieve usage threshold exceeded actions.\n\nRead access is available to any authenticated user: the guardrails UI\nneeds the action catalog to render and configure guardrails. Mutations\nrequire the guardrail catalog management permission.","operationId":"usage-threshold-exceeded-actions-read_usage_threshold_exceeded_actions","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageThresholdExceededActionsPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["usage-threshold-exceeded-actions"],"summary":"Create Usage Threshold Exceeded Action","description":"Create new usage threshold exceeded action.","operationId":"usage-threshold-exceeded-actions-create_usage_threshold_exceeded_action","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageThresholdExceededActionCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageThresholdExceededActionPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/usage-threshold-exceeded-actions/{id}":{"get":{"tags":["usage-threshold-exceeded-actions"],"summary":"Read Usage Threshold Exceeded Action","description":"Get usage threshold exceeded action by ID.","operationId":"usage-threshold-exceeded-actions-read_usage_threshold_exceeded_action","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageThresholdExceededActionPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["usage-threshold-exceeded-actions"],"summary":"Update Usage Threshold Exceeded Action","description":"Update a usage threshold exceeded action.","operationId":"usage-threshold-exceeded-actions-update_usage_threshold_exceeded_action","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageThresholdExceededActionUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageThresholdExceededActionPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["usage-threshold-exceeded-actions"],"summary":"Delete Usage Threshold Exceeded Action","description":"Delete a usage threshold exceeded action.","operationId":"usage-threshold-exceeded-actions-delete_usage_threshold_exceeded_action","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/private/tenants/{tenant_id}/invitations/{invitation_id}/token":{"post":{"tags":["private"],"summary":"Rotate Organization Invitation Token","description":"Rotate and return an invitation token for local/test setup only.","operationId":"private-rotate_organization_invitation_token","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"invitation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Invitation Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrivateInvitationTokenRotateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrivateInvitationTokenRotateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AccountAuditEventPublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"event_type":{"type":"string","maxLength":100,"minLength":1,"title":"Event Type"},"status":{"type":"string","maxLength":32,"title":"Status","default":"success"},"actor_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Actor User Id"},"target_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Target User Id"},"tenant_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Tenant Id"},"resource_type":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Resource Type"},"resource_id":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Resource Id"},"ip_address":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Ip Address"},"user_agent":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}],"title":"User Agent"},"occurred_at":{"type":"string","format":"date-time","title":"Occurred At"},"metadata_json":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata Json"},"id":{"type":"string","format":"uuid","title":"Id"}},"type":"object","required":["event_type","id"],"title":"AccountAuditEventPublic","description":"Public representation of an account audit event."},"AccountAuditEventsPublic":{"properties":{"data":{"items":{"$ref":"#/components/schemas/AccountAuditEventPublic"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["data","count"],"title":"AccountAuditEventsPublic","description":"Collection response for account audit events."},"Action":{"type":"string","enum":["proceed","reject","defer_to_parent","downgrade_request"],"title":"Action","description":"Actions to take when usage threshold is exceeded."},"BackgroundTaskPublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"task_type":{"type":"string","maxLength":128,"title":"Task Type"},"status":{"$ref":"#/components/schemas/BackgroundTaskStatus","default":"pending"},"payload":{"additionalProperties":true,"type":"object","title":"Payload"},"result":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Result"},"attempts":{"type":"integer","minimum":0.0,"title":"Attempts","default":0},"max_attempts":{"type":"integer","minimum":1.0,"title":"Max Attempts","default":5},"next_attempt_at":{"type":"string","format":"date-time","title":"Next Attempt At"},"locked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Locked At"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"finished_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Finished At"},"last_error":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}],"title":"Last Error"},"id":{"type":"string","format":"uuid","title":"Id"}},"type":"object","required":["task_type","next_attempt_at","id"],"title":"BackgroundTaskPublic"},"BackgroundTaskStatus":{"type":"string","enum":["pending","processing","succeeded","failed","dead_letter"],"title":"BackgroundTaskStatus","description":"Lifecycle status for durable background tasks."},"BillingChargeLedgerPublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"end_customer_id":{"type":"string","format":"uuid","title":"End Customer Id"},"plan_id":{"type":"string","format":"uuid","title":"Plan Id"},"period_start":{"type":"string","format":"date-time","title":"Period Start","description":"Charge accrual period start (inclusive)"},"period_end":{"type":"string","format":"date-time","title":"Period End","description":"Charge accrual period end (exclusive)"},"charge_type":{"type":"string","maxLength":64,"title":"Charge Type","default":"base_monthly_fee"},"code":{"type":"string","maxLength":128,"title":"Code","default":"base_fee"},"description":{"type":"string","maxLength":255,"title":"Description","default":"Base monthly fee"},"source":{"type":"string","maxLength":64,"title":"Source","default":"monthly_plan_accrual"},"currency":{"$ref":"#/components/schemas/Currency"},"quantity":{"type":"number","title":"Quantity","default":1.0},"unit_price":{"type":"number","title":"Unit Price","default":0.0},"amount":{"type":"number","title":"Amount","default":0.0},"metadata_json":{"additionalProperties":true,"type":"object","title":"Metadata Json"},"id":{"type":"string","format":"uuid","title":"Id"}},"type":"object","required":["project_id","end_customer_id","plan_id","period_start","period_end","currency","id"],"title":"BillingChargeLedgerPublic","description":"Public response model for billing charge ledger rows."},"BillingDocumentElementPreview":{"properties":{"key":{"type":"string","title":"Key"},"section_id":{"type":"string","title":"Section Id"},"anchor":{"type":"string","title":"Anchor"},"content_type":{"type":"string","title":"Content Type"},"content_template":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Template"},"x":{"type":"integer","title":"X"},"y":{"type":"integer","title":"Y"},"w":{"type":"integer","title":"W"},"h":{"type":"integer","title":"H"},"rendered_value":{"type":"string","title":"Rendered Value"},"rendered_html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rendered Html"}},"type":"object","required":["key","section_id","anchor","content_type","x","y","w","h","rendered_value"],"title":"BillingDocumentElementPreview"},"BillingDocumentPreview":{"properties":{"page_size":{"type":"string","title":"Page Size"},"grid_columns":{"type":"integer","title":"Grid Columns"},"sections":{"items":{"$ref":"#/components/schemas/BillingDocumentSectionPreview"},"type":"array","title":"Sections"},"elements":{"items":{"$ref":"#/components/schemas/BillingDocumentElementPreview"},"type":"array","title":"Elements"}},"type":"object","required":["page_size","grid_columns","sections","elements"],"title":"BillingDocumentPreview"},"BillingDocumentSectionPreview":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"x":{"type":"integer","title":"X"},"y":{"type":"integer","title":"Y"},"w":{"type":"integer","title":"W"},"h":{"type":"integer","title":"H"}},"type":"object","required":["id","title","x","y","w","h"],"title":"BillingDocumentSectionPreview"},"BillingLineItem":{"properties":{"code":{"type":"string","title":"Code"},"description":{"type":"string","title":"Description"},"quantity":{"type":"number","title":"Quantity"},"unit_price":{"type":"number","title":"Unit Price"},"amount":{"type":"number","title":"Amount"},"visible_to_end_customer":{"type":"boolean","title":"Visible To End Customer","default":true}},"type":"object","required":["code","description","quantity","unit_price","amount"],"title":"BillingLineItem"},"BillingLineItemsResponse":{"properties":{"snapshot_id":{"type":"string","format":"uuid","title":"Snapshot Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"subscription_id":{"type":"string","format":"uuid","title":"Subscription Id"},"plan_id":{"type":"string","format":"uuid","title":"Plan Id"},"currency":{"$ref":"#/components/schemas/Currency"},"period_start":{"type":"string","format":"date-time","title":"Period Start"},"period_end":{"type":"string","format":"date-time","title":"Period End"},"line_items":{"items":{"$ref":"#/components/schemas/BillingLineItem"},"type":"array","title":"Line Items"},"total_amount":{"type":"number","title":"Total Amount"},"billing_template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Billing Template Id"},"billing_template_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Billing Template Version"},"calculation_trace":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Calculation Trace"},"document_preview":{"anyOf":[{"$ref":"#/components/schemas/BillingDocumentPreview"},{"type":"null"}]},"document_preview_html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Preview Html"}},"type":"object","required":["snapshot_id","project_id","subscription_id","plan_id","currency","period_start","period_end","line_items","total_amount"],"title":"BillingLineItemsResponse"},"BillingTemplateActivate":{"properties":{"is_default":{"type":"boolean","title":"Is Default","default":false}},"type":"object","title":"BillingTemplateActivate"},"BillingTemplateCreate":{"properties":{"project_id":{"type":"string","format":"uuid","title":"Project Id"},"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"version":{"type":"integer","minimum":1.0,"title":"Version","default":1},"status":{"type":"string","enum":["draft","active","archived"],"title":"Status","default":"draft"},"is_default":{"type":"boolean","title":"Is Default","default":false},"layout_json":{"$ref":"#/components/schemas/BillingTemplateLayoutConfig-Input"},"itemization_json":{"$ref":"#/components/schemas/BillingTemplateItemizationConfig"},"rules":{"items":{"$ref":"#/components/schemas/BillingTemplateLineItemRuleCreate"},"type":"array","title":"Rules"}},"type":"object","required":["project_id","name"],"title":"BillingTemplateCreate"},"BillingTemplateItemizationConfig":{"properties":{"granularity":{"type":"string","enum":["monthly","daily"],"title":"Granularity","default":"monthly"},"include_base_fee":{"type":"boolean","title":"Include Base Fee","default":true},"rules":{"items":{"$ref":"#/components/schemas/BillingTemplateItemizationRule"},"type":"array","title":"Rules"}},"type":"object","title":"BillingTemplateItemizationConfig"},"BillingTemplateItemizationRule":{"properties":{"id":{"type":"string","maxLength":128,"minLength":1,"title":"Id"},"label":{"type":"string","maxLength":255,"minLength":1,"title":"Label"},"source":{"type":"string","enum":["base_fee","usage_meter","feature_meter","accrued_cost","percentage_surcharge","minimum_commit_adjustment"],"title":"Source"},"group_by":{"type":"string","enum":["none","feature","meter"],"title":"Group By","default":"none"},"meter":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Meter"},"feature_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Feature Name"},"code":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Code"},"sort_order":{"type":"integer","title":"Sort Order","default":0},"enabled":{"type":"boolean","title":"Enabled","default":true},"visible_to_end_customer":{"type":"boolean","title":"Visible To End Customer","default":true},"rate_per_unit":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rate Per Unit"},"fixed_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Fixed Amount"},"percentage":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Percentage"},"min_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Amount"},"max_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Amount"}},"type":"object","required":["id","label","source"],"title":"BillingTemplateItemizationRule"},"BillingTemplateLayoutConfig-Input":{"properties":{"page_size":{"type":"string","const":"A4","title":"Page Size","default":"A4"},"grid_columns":{"type":"integer","maximum":24.0,"minimum":6.0,"title":"Grid Columns","default":12},"sections":{"items":{"$ref":"#/components/schemas/BillingTemplateLayoutSection"},"type":"array","title":"Sections"},"elements":{"items":{"$ref":"#/components/schemas/BillingTemplateLayoutElement-Input"},"type":"array","title":"Elements"}},"type":"object","title":"BillingTemplateLayoutConfig"},"BillingTemplateLayoutConfig-Output":{"properties":{"page_size":{"type":"string","const":"A4","title":"Page Size","default":"A4"},"grid_columns":{"type":"integer","maximum":24.0,"minimum":6.0,"title":"Grid Columns","default":12},"sections":{"items":{"$ref":"#/components/schemas/BillingTemplateLayoutSection"},"type":"array","title":"Sections"},"elements":{"items":{"$ref":"#/components/schemas/BillingTemplateLayoutElement-Output"},"type":"array","title":"Elements"}},"type":"object","title":"BillingTemplateLayoutConfig"},"BillingTemplateLayoutElement-Input":{"properties":{"key":{"type":"string","maxLength":128,"minLength":1,"title":"Key"},"section_id":{"type":"string","maxLength":128,"minLength":1,"title":"Section Id"},"anchor":{"type":"string","enum":["top-left","top-right","bottom-left","bottom-right","center"],"title":"Anchor","default":"top-left"},"content_type":{"type":"string","enum":["text_template","line_items_table"],"title":"Content Type","default":"text_template"},"content_template":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Content Template"},"list_table_config":{"anyOf":[{"$ref":"#/components/schemas/BillingTemplateListTableConfig"},{"type":"null"}]},"x":{"type":"integer","maximum":23.0,"minimum":0.0,"title":"X","default":0},"y":{"type":"integer","minimum":0.0,"title":"Y","default":0},"w":{"type":"integer","maximum":24.0,"minimum":1.0,"title":"W","default":4},"h":{"type":"integer","maximum":20.0,"minimum":1.0,"title":"H","default":2}},"type":"object","required":["key","section_id"],"title":"BillingTemplateLayoutElement"},"BillingTemplateLayoutElement-Output":{"properties":{"key":{"type":"string","maxLength":128,"minLength":1,"title":"Key"},"section_id":{"type":"string","maxLength":128,"minLength":1,"title":"Section Id"},"anchor":{"type":"string","enum":["top-left","top-right","bottom-left","bottom-right","center"],"title":"Anchor","default":"top-left"},"content_type":{"type":"string","enum":["text_template","line_items_table"],"title":"Content Type","default":"text_template"},"content_template":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Content Template"},"list_table_config":{"anyOf":[{"$ref":"#/components/schemas/BillingTemplateListTableConfig"},{"type":"null"}]},"x":{"type":"integer","maximum":23.0,"minimum":0.0,"title":"X","default":0},"y":{"type":"integer","minimum":0.0,"title":"Y","default":0},"w":{"type":"integer","maximum":24.0,"minimum":1.0,"title":"W","default":4},"h":{"type":"integer","maximum":20.0,"minimum":1.0,"title":"H","default":2}},"type":"object","required":["key","section_id"],"title":"BillingTemplateLayoutElement"},"BillingTemplateLayoutSection":{"properties":{"id":{"type":"string","maxLength":128,"minLength":1,"title":"Id"},"title":{"type":"string","maxLength":64,"minLength":1,"title":"Title"},"x":{"type":"integer","maximum":23.0,"minimum":0.0,"title":"X","default":0},"y":{"type":"integer","minimum":0.0,"title":"Y","default":0},"w":{"type":"integer","maximum":24.0,"minimum":1.0,"title":"W","default":12},"h":{"type":"integer","maximum":20.0,"minimum":1.0,"title":"H","default":2}},"type":"object","required":["id","title"],"title":"BillingTemplateLayoutSection"},"BillingTemplateLineItemRuleCreate":{"properties":{"rule_type":{"type":"string","enum":["fixed_fee","usage_meter","feature_meter","percentage_surcharge","minimum_commit_adjustment","customer_credit_consumption"],"title":"Rule Type"},"sort_order":{"type":"integer","title":"Sort Order","default":0},"enabled":{"type":"boolean","title":"Enabled","default":true},"config_json":{"$ref":"#/components/schemas/BillingTemplateRuleConfig"}},"type":"object","required":["rule_type","config_json"],"title":"BillingTemplateLineItemRuleCreate"},"BillingTemplateLineItemRulePublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"id":{"type":"string","format":"uuid","title":"Id"},"template_id":{"type":"string","format":"uuid","title":"Template Id"},"rule_type":{"type":"string","enum":["fixed_fee","usage_meter","feature_meter","percentage_surcharge","minimum_commit_adjustment","customer_credit_consumption"],"title":"Rule Type"},"sort_order":{"type":"integer","title":"Sort Order"},"enabled":{"type":"boolean","title":"Enabled"},"config_json":{"additionalProperties":true,"type":"object","title":"Config Json"}},"type":"object","required":["id","template_id","rule_type","sort_order","enabled","config_json"],"title":"BillingTemplateLineItemRulePublic"},"BillingTemplateLineItemRuleUpdate":{"properties":{"sort_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sort Order"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"config_json":{"anyOf":[{"$ref":"#/components/schemas/BillingTemplateRuleConfig"},{"type":"null"}]}},"type":"object","title":"BillingTemplateLineItemRuleUpdate"},"BillingTemplateListTableColumn":{"properties":{"id":{"type":"string","maxLength":128,"minLength":1,"title":"Id"},"title":{"type":"string","maxLength":128,"minLength":1,"title":"Title"},"column_type":{"type":"string","enum":["fixed","derived_usage","derived_plan"],"title":"Column Type","default":"fixed"},"fixed_value":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}],"title":"Fixed Value"},"usage_field":{"anyOf":[{"type":"string","enum":["code","description","provider","model","feature","quantity","unit_price","amount","visible_to_end_customer"]},{"type":"null"}],"title":"Usage Field"},"plan_field":{"anyOf":[{"type":"string","enum":["plan_id","plan_name","currency","base_monthly_fee","cost_per_1m_tokens","base_fee_cycles","base_fee_amount"]},{"type":"null"}],"title":"Plan Field"}},"type":"object","required":["id","title"],"title":"BillingTemplateListTableColumn"},"BillingTemplateListTableConfig":{"properties":{"columns":{"items":{"$ref":"#/components/schemas/BillingTemplateListTableColumn"},"type":"array","title":"Columns"},"rows":{"items":{"$ref":"#/components/schemas/BillingTemplateListTableRow"},"type":"array","title":"Rows"}},"type":"object","title":"BillingTemplateListTableConfig"},"BillingTemplateListTableRow":{"properties":{"id":{"type":"string","maxLength":128,"minLength":1,"title":"Id"},"row_type":{"type":"string","enum":["header","fixed","dynamic_billing_plan","dynamic_usage","totals"],"title":"Row Type"},"label_template":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Label Template"},"cells":{"additionalProperties":{"type":"string"},"type":"object","title":"Cells"},"group_by_column_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Group By Column Id"},"group_by_usage_fields":{"items":{"type":"string","enum":["provider","model","feature"]},"type":"array","title":"Group By Usage Fields"},"totals":{"additionalProperties":{"type":"string","enum":["none","sum","count"]},"type":"object","title":"Totals"},"totals_source":{"type":"string","enum":["usage","plan"],"title":"Totals Source","default":"usage"}},"type":"object","required":["id","row_type"],"title":"BillingTemplateListTableRow"},"BillingTemplatePublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"owner_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner Id"},"created_by_user_id":{"type":"string","format":"uuid","title":"Created By User Id"},"name":{"type":"string","title":"Name"},"version":{"type":"integer","title":"Version"},"status":{"type":"string","enum":["draft","active","archived"],"title":"Status"},"is_default":{"type":"boolean","title":"Is Default"},"layout_json":{"$ref":"#/components/schemas/BillingTemplateLayoutConfig-Output"},"itemization_json":{"$ref":"#/components/schemas/BillingTemplateItemizationConfig"},"dependent_project_count":{"type":"integer","title":"Dependent Project Count","default":0},"dependent_customer_count":{"type":"integer","title":"Dependent Customer Count","default":0},"rules":{"items":{"$ref":"#/components/schemas/BillingTemplateLineItemRulePublic"},"type":"array","title":"Rules"}},"type":"object","required":["id","project_id","created_by_user_id","name","version","status","is_default","layout_json","itemization_json"],"title":"BillingTemplatePublic"},"BillingTemplateRuleConfig":{"properties":{"code":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Code"},"label":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Label"},"description_template":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Description Template"},"currency":{"anyOf":[{"type":"string","maxLength":8},{"type":"null"}],"title":"Currency"},"tax_category":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Tax Category"},"visible_to_end_customer":{"type":"boolean","title":"Visible To End Customer","default":true},"quantity_source":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Quantity Source"},"unit_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Unit Price"},"rate_per_unit":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rate Per Unit"},"rounding_mode":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Rounding Mode"},"min_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Amount"},"max_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Amount"},"feature_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Feature Name"},"meter":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Meter"},"extra_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Extra Metadata"}},"type":"object","title":"BillingTemplateRuleConfig","description":"Flexible rule configuration payload.\n\nThis keeps a structured contract while allowing partial fields per rule type."},"BillingTemplateUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Name"},"status":{"anyOf":[{"type":"string","enum":["draft","active","archived"]},{"type":"null"}],"title":"Status"},"is_default":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Default"},"layout_json":{"anyOf":[{"$ref":"#/components/schemas/BillingTemplateLayoutConfig-Input"},{"type":"null"}]},"itemization_json":{"anyOf":[{"$ref":"#/components/schemas/BillingTemplateItemizationConfig"},{"type":"null"}]}},"type":"object","title":"BillingTemplateUpdate"},"BillingTemplatesPublic":{"properties":{"data":{"items":{"$ref":"#/components/schemas/BillingTemplatePublic"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["data","count"],"title":"BillingTemplatesPublic"},"Body_login-login_access_token":{"properties":{"mfa_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mfa Code"},"recovery_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recovery Code"},"grant_type":{"anyOf":[{"type":"string","pattern":"^password$"},{"type":"null"}],"title":"Grant Type"},"username":{"type":"string","title":"Username"},"password":{"type":"string","format":"password","title":"Password"},"scope":{"type":"string","title":"Scope","default":""},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"},"client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"format":"password","title":"Client Secret"}},"type":"object","required":["username","password"],"title":"Body_login-login_access_token"},"BuildMetadataResponse":{"properties":{"version":{"type":"string","title":"Version"},"build_tag":{"type":"string","title":"Build Tag"},"release_date":{"type":"string","title":"Release Date"}},"type":"object","required":["version","build_tag","release_date"],"title":"BuildMetadataResponse"},"Capability":{"type":"string","enum":["read","edit","delete","share","transfer","manage_org","manage_billing","manage_webhooks","support_override"],"title":"Capability","description":"Capabilities derived from effective role decisions."},"CostAggregationMetadata":{"properties":{"group_by":{"type":"string","title":"Group By"},"bucket_step_seconds":{"type":"integer","title":"Bucket Step Seconds"},"max_points":{"type":"integer","title":"Max Points"},"points_returned":{"type":"integer","title":"Points Returned"},"requested_bucket_step_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Requested Bucket Step Seconds","description":"Bucket step implied by the requested granularity (or the natural step for the window). When it is smaller than bucket_step_seconds the response was downsampled to respect max_points."},"bucket_alignment":{"type":"string","enum":["fixed","calendar"],"title":"Bucket Alignment","description":"fixed: buckets start at the query window start. calendar: buckets follow UTC calendar boundaries (day/week/month granularity on the ledger query path).","default":"fixed"}},"type":"object","required":["group_by","bucket_step_seconds","max_points","points_returned"],"title":"CostAggregationMetadata","description":"Metadata describing aggregated query bucketing behavior."},"CostLogEntry":{"properties":{"timestamp":{"type":"string","format":"date-time","title":"Timestamp"},"event_type":{"type":"string","title":"Event Type"},"end_customer_id":{"type":"string","title":"End Customer Id"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id"},"customer_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Title"},"user_id":{"type":"string","title":"User Id"},"service_provider_name":{"type":"string","title":"Service Provider Name"},"service_name":{"type":"string","title":"Service Name"},"number_requests":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Number Requests"},"input_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Tokens"},"output_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Tokens"},"cached_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cached Tokens"},"total_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Tokens"},"cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cost"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"action":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action"},"estimated_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Estimated Cost"},"strategy_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Strategy Id"},"downgrade_target":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Downgrade Target"},"feature":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feature"},"usage_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Usage Metadata"},"bucket_start_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Bucket Start Time"},"bucket_end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Bucket End Time"},"is_partial":{"type":"boolean","title":"Is Partial","default":false},"message":{"type":"string","title":"Message"}},"type":"object","required":["timestamp","event_type","end_customer_id","user_id","service_provider_name","service_name","message"],"title":"CostLogEntry","description":"Individual log entry from Loki."},"CostLogQueryRequest":{"properties":{"query_mode":{"type":"string","enum":["raw","aggregated"],"title":"Query Mode","default":"raw"},"aggregation_group_by":{"type":"string","enum":["none","service","provider","model","feature","customer","project"],"title":"Aggregation Group By","default":"service"},"aggregation_granularity":{"anyOf":[{"type":"string","enum":["month","week","day","hour","minute","second"]},{"type":"null"}],"title":"Aggregation Granularity"},"max_points":{"type":"integer","maximum":1000.0,"minimum":1.0,"title":"Max Points","default":1000},"min_step_seconds":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Min Step Seconds"},"start_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"},"lookback_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Lookback Seconds"},"customer_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Customer Ids"},"project_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Project Ids"},"user_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"User Ids"},"service_provider_names":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Service Provider Names"},"service_names":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Service Names"},"event_types":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Event Types"},"actions":{"anyOf":[{"items":{"$ref":"#/components/schemas/Action"},"type":"array"},{"type":"null"}],"title":"Actions"},"features":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Features"},"partials_mode":{"type":"string","enum":["finalized_only","include_eligible_partials"],"title":"Partials Mode","default":"finalized_only"},"min_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Cost"},"max_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Cost"},"min_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Tokens"},"max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Tokens"},"limit":{"type":"integer","title":"Limit","default":100},"direction":{"type":"string","title":"Direction","default":"backward"}},"type":"object","title":"CostLogQueryRequest","description":"Request model for querying cost tracking logs from Loki."},"CostLogQueryResponse":{"properties":{"entries":{"items":{"$ref":"#/components/schemas/CostLogEntry"},"type":"array","title":"Entries"},"total_entries":{"type":"integer","title":"Total Entries","default":0},"statistics":{"anyOf":[{"$ref":"#/components/schemas/CostStatistics"},{"type":"null"}]},"query_mode":{"type":"string","enum":["raw","aggregated"],"title":"Query Mode","default":"raw"},"returned_entries":{"type":"integer","title":"Returned Entries","default":0},"total_matching_entries":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Matching Entries"},"has_more":{"type":"boolean","title":"Has More","default":false},"aggregation":{"anyOf":[{"$ref":"#/components/schemas/CostAggregationMetadata"},{"type":"null"}]},"token_unit_size":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token Unit Size","description":"Presentation unit applied to token count fields; null means raw tokens."},"request_unit_size":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Unit Size","description":"Presentation unit applied to request count fields; null means raw requests."}},"type":"object","title":"CostLogQueryResponse","description":"Response model for cost log queries."},"CostStatistics":{"properties":{"total_requests":{"type":"number","title":"Total Requests"},"total_cost":{"type":"number","title":"Total Cost"},"total_input_tokens":{"type":"number","title":"Total Input Tokens"},"total_output_tokens":{"type":"number","title":"Total Output Tokens"},"total_cached_tokens":{"type":"number","title":"Total Cached Tokens"},"total_tokens":{"type":"number","title":"Total Tokens"},"average_cost_per_request":{"type":"number","title":"Average Cost Per Request"},"average_tokens_per_request":{"type":"number","title":"Average Tokens Per Request"},"by_service_provider":{"additionalProperties":{"additionalProperties":{"anyOf":[{"type":"number"},{"type":"integer"}]},"type":"object"},"type":"object","title":"By Service Provider"},"by_service":{"additionalProperties":{"additionalProperties":{"anyOf":[{"type":"number"},{"type":"integer"}]},"type":"object"},"type":"object","title":"By Service"},"by_feature":{"additionalProperties":{"additionalProperties":{"anyOf":[{"type":"number"},{"type":"integer"}]},"type":"object"},"type":"object","title":"By Feature"},"start_time":{"type":"string","format":"date-time","title":"Start Time"},"end_time":{"type":"string","format":"date-time","title":"End Time"},"entry_count":{"type":"integer","title":"Entry Count"}},"type":"object","required":["total_requests","total_cost","total_input_tokens","total_output_tokens","total_cached_tokens","total_tokens","average_cost_per_request","average_tokens_per_request","by_service_provider","by_service","by_feature","start_time","end_time","entry_count"],"title":"CostStatistics","description":"Aggregated statistics from cost logs."},"Currency":{"type":"string","enum":["USD","EUR","GBP","JPY","CAD","AUD"],"title":"Currency","description":"Supported currencies for cost tracking."},"CycleType":{"type":"string","enum":["none","daily","weekly","monthly","yearly","custom"],"title":"CycleType","description":"Cycle types for recurring threshold resets."},"DowngradeTarget":{"properties":{"service_provider_name":{"type":"string","title":"Service Provider Name"},"service_name":{"type":"string","title":"Service Name"}},"type":"object","required":["service_provider_name","service_name"],"title":"DowngradeTarget"},"EffectiveAccessPublic":{"properties":{"resource_type":{"$ref":"#/components/schemas/ResourceType"},"resource_id":{"type":"string","format":"uuid","title":"Resource Id"},"effective_role":{"anyOf":[{"$ref":"#/components/schemas/Role"},{"type":"null"}]},"capabilities":{"items":{"$ref":"#/components/schemas/Capability"},"type":"array","title":"Capabilities"},"decision_source":{"type":"string","title":"Decision Source"},"requires_support_override":{"type":"boolean","title":"Requires Support Override"}},"type":"object","required":["resource_type","resource_id","effective_role","capabilities","decision_source","requires_support_override"],"title":"EffectiveAccessPublic","description":"Public view of effective access evaluation for a resource."},"EffectiveProviderSettingPublic":{"properties":{"tenant_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Tenant Id"},"project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"},"provider_name":{"type":"string","title":"Provider Name"},"model_name":{"type":"string","title":"Model Name"},"selected_source":{"anyOf":[{"$ref":"#/components/schemas/ProviderPricingSource"},{"type":"null"}]},"selected_source_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Selected Source Id"},"preference":{"$ref":"#/components/schemas/ProviderSourcePreference","default":"auto"},"preference_applied":{"type":"boolean","title":"Preference Applied","default":false},"fallback_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fallback Reason"},"currency":{"anyOf":[{"$ref":"#/components/schemas/Currency"},{"type":"null"}]},"strategy_type":{"anyOf":[{"$ref":"#/components/schemas/ProviderPricingStrategy"},{"type":"null"}]},"cost_per_request":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cost Per Request"},"cost_per_input_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cost Per Input Token"},"cost_per_output_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cost Per Output Token"},"cost_per_cached_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cost Per Cached Token"},"computed_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Computed Cost"},"candidates":{"items":{"$ref":"#/components/schemas/ProviderSourceCandidatePublic"},"type":"array","title":"Candidates"}},"type":"object","required":["provider_name","model_name","candidates"],"title":"EffectiveProviderSettingPublic"},"EffectiveProviderSettingsPublic":{"properties":{"data":{"items":{"$ref":"#/components/schemas/EffectiveProviderSettingPublic"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["data","count"],"title":"EffectiveProviderSettingsPublic"},"EmailVerificationRequest":{"properties":{"token":{"type":"string","title":"Token"}},"type":"object","required":["token"],"title":"EmailVerificationRequest"},"EmailVerificationResendRequest":{"properties":{"email":{"type":"string","maxLength":255,"format":"email","title":"Email"}},"type":"object","required":["email"],"title":"EmailVerificationResendRequest"},"EndCustomerBillingCycleSummary":{"properties":{"snapshot_id":{"type":"string","format":"uuid","title":"Snapshot Id"},"period_type":{"$ref":"#/components/schemas/PeriodType"},"period_start":{"type":"string","format":"date-time","title":"Period Start"},"period_end":{"type":"string","format":"date-time","title":"Period End"},"number_requests":{"type":"number","title":"Number Requests"},"input_tokens":{"type":"number","title":"Input Tokens"},"output_tokens":{"type":"number","title":"Output Tokens"},"cached_tokens":{"type":"number","title":"Cached Tokens","default":0},"total_tokens":{"type":"number","title":"Total Tokens"},"accrued_cost_basis":{"type":"number","title":"Accrued Cost Basis"},"billed_amount":{"type":"number","title":"Billed Amount"},"currency":{"$ref":"#/components/schemas/Currency"},"billing_template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Billing Template Id"},"billing_template_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Billing Template Name"},"billing_template_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Billing Template Version"},"invoice_status":{"type":"string","title":"Invoice Status"},"draft_generated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Draft Generated At"},"is_current_period":{"type":"boolean","title":"Is Current Period"}},"type":"object","required":["snapshot_id","period_type","period_start","period_end","number_requests","input_tokens","output_tokens","total_tokens","accrued_cost_basis","billed_amount","currency","invoice_status","is_current_period"],"title":"EndCustomerBillingCycleSummary"},"EndCustomerBillingCyclesResponse":{"properties":{"period_type":{"$ref":"#/components/schemas/PeriodType"},"data":{"items":{"$ref":"#/components/schemas/EndCustomerBillingCycleSummary"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["period_type","data","count"],"title":"EndCustomerBillingCyclesResponse"},"EndCustomerBillingDocumentResponse":{"properties":{"snapshot_id":{"type":"string","format":"uuid","title":"Snapshot Id"},"invoice_status":{"type":"string","title":"Invoice Status"},"draft_generated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Draft Generated At"},"document_preview":{"$ref":"#/components/schemas/BillingDocumentPreview"},"document_html":{"type":"string","title":"Document Html"}},"type":"object","required":["snapshot_id","invoice_status","document_preview","document_html"],"title":"EndCustomerBillingDocumentResponse"},"EndCustomerBillingDraftInvoiceRequest":{"properties":{"period_start":{"type":"string","format":"date-time","title":"Period Start"},"period_end":{"type":"string","format":"date-time","title":"Period End"}},"type":"object","required":["period_start","period_end"],"title":"EndCustomerBillingDraftInvoiceRequest"},"EndCustomerBillingLedgerPricingWindow":{"properties":{"period_start":{"type":"string","format":"date-time","title":"Period Start"},"period_end":{"type":"string","format":"date-time","title":"Period End"},"unit_price":{"type":"number","title":"Unit Price"},"plan_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Plan Id"},"plan_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan Name"},"currency":{"anyOf":[{"$ref":"#/components/schemas/Currency"},{"type":"null"}]},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version"}},"type":"object","required":["period_start","period_end","unit_price"],"title":"EndCustomerBillingLedgerPricingWindow"},"EndCustomerBillingLedgerReplayRequest":{"properties":{"period_start":{"type":"string","format":"date-time","title":"Period Start"},"period_end":{"type":"string","format":"date-time","title":"Period End"},"dry_run":{"type":"boolean","title":"Dry Run","default":false},"pricing_windows":{"items":{"$ref":"#/components/schemas/EndCustomerBillingLedgerPricingWindow"},"type":"array","title":"Pricing Windows"}},"type":"object","required":["period_start","period_end"],"title":"EndCustomerBillingLedgerReplayRequest"},"EndCustomerBillingLedgerReplayResponse":{"properties":{"period_start":{"type":"string","format":"date-time","title":"Period Start"},"period_end":{"type":"string","format":"date-time","title":"Period End"},"dry_run":{"type":"boolean","title":"Dry Run"},"replayed_periods":{"type":"integer","title":"Replayed Periods"},"skipped_periods":{"type":"integer","title":"Skipped Periods"},"created_base_postings":{"type":"integer","title":"Created Base Postings"},"created_adjustment_postings":{"type":"integer","title":"Created Adjustment Postings"},"updated_adjustment_postings":{"type":"integer","title":"Updated Adjustment Postings"},"projected_base_cycles":{"type":"number","title":"Projected Base Cycles"},"projected_total_amount":{"type":"number","title":"Projected Total Amount"}},"type":"object","required":["period_start","period_end","dry_run","replayed_periods","skipped_periods","created_base_postings","created_adjustment_postings","updated_adjustment_postings","projected_base_cycles","projected_total_amount"],"title":"EndCustomerBillingLedgerReplayResponse"},"EndCustomerBillingLedgerResponse":{"properties":{"count":{"type":"integer","title":"Count"},"total_amount":{"type":"number","title":"Total Amount"},"data":{"items":{"$ref":"#/components/schemas/BillingChargeLedgerPublic"},"type":"array","title":"Data"}},"type":"object","required":["count","total_amount","data"],"title":"EndCustomerBillingLedgerResponse"},"EndCustomerBillingPlanCreate":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name","description":"EndCustomerBillingPlan name (e.g., 'Starter', 'Growth')"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"EndCustomerBillingPlan description"},"base_monthly_fee":{"type":"number","minimum":0.0,"title":"Base Monthly Fee","description":"Fixed monthly fee"},"currency":{"$ref":"#/components/schemas/Currency","description":"Currency for pricing"},"cost_per_1m_tokens":{"type":"number","minimum":0.0,"title":"Cost Per 1M Tokens","description":"Cost per 1 million tokens"},"included_tokens_millions_monthly":{"type":"number","minimum":0.0,"title":"Included Tokens Millions Monthly","description":"Free tier in millions of tokens included in base fee"},"max_tokens_millions_monthly":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Max Tokens Millions Monthly","description":"Hard cap on monthly tokens in millions"},"max_customers":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Max Customers","description":"Maximum number of customers allowed"},"features":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Features","description":"EndCustomerBillingPlan features (support level, SLA, etc.)"},"is_active":{"type":"boolean","title":"Is Active","description":"Whether plan is available for new subscriptions","default":true},"stripe_price_id_test":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Stripe Price Id Test","description":"Stripe test-mode Price ID used for this plan."},"stripe_price_id_live":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Stripe Price Id Live","description":"Stripe live-mode Price ID used for this plan."},"is_add_on":{"type":"boolean","title":"Is Add On","description":"Whether this plan is an add-on that requires an active base subscription.","default":false}},"type":"object","required":["name","base_monthly_fee","currency","cost_per_1m_tokens","included_tokens_millions_monthly"],"title":"EndCustomerBillingPlanCreate","description":"Properties to receive via API on creation."},"EndCustomerBillingPlanPublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name","description":"EndCustomerBillingPlan name (e.g., 'Starter', 'Growth')"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"EndCustomerBillingPlan description"},"base_monthly_fee":{"type":"number","minimum":0.0,"title":"Base Monthly Fee","description":"Fixed monthly fee"},"currency":{"$ref":"#/components/schemas/Currency","description":"Currency for pricing"},"cost_per_1m_tokens":{"type":"number","minimum":0.0,"title":"Cost Per 1M Tokens","description":"Cost per 1 million tokens"},"included_tokens_millions_monthly":{"type":"number","minimum":0.0,"title":"Included Tokens Millions Monthly","description":"Free tier in millions of tokens included in base fee"},"max_tokens_millions_monthly":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Max Tokens Millions Monthly","description":"Hard cap on monthly tokens in millions"},"max_customers":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Max Customers","description":"Maximum number of customers allowed"},"features":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Features","description":"EndCustomerBillingPlan features (support level, SLA, etc.)"},"is_active":{"type":"boolean","title":"Is Active","description":"Whether plan is available for new subscriptions","default":true},"stripe_price_id_test":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Stripe Price Id Test","description":"Stripe test-mode Price ID used for this plan."},"stripe_price_id_live":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Stripe Price Id Live","description":"Stripe live-mode Price ID used for this plan."},"is_add_on":{"type":"boolean","title":"Is Add On","description":"Whether this plan is an add-on that requires an active base subscription.","default":false},"id":{"type":"string","format":"uuid","title":"Id"},"tenant_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Tenant Id"}},"type":"object","required":["name","base_monthly_fee","currency","cost_per_1m_tokens","included_tokens_millions_monthly","id","tenant_id"],"title":"EndCustomerBillingPlanPublic","description":"Properties to return via API."},"EndCustomerBillingPlanUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"base_monthly_fee":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Base Monthly Fee"},"currency":{"anyOf":[{"$ref":"#/components/schemas/Currency"},{"type":"null"}]},"cost_per_1m_tokens":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Cost Per 1M Tokens"},"included_tokens_millions_monthly":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Included Tokens Millions Monthly"},"max_tokens_millions_monthly":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Max Tokens Millions Monthly"},"max_customers":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Max Customers"},"features":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Features"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"stripe_price_id_test":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Stripe Price Id Test"},"stripe_price_id_live":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Stripe Price Id Live"},"is_add_on":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Add On"}},"type":"object","title":"EndCustomerBillingPlanUpdate","description":"Properties to receive via API on update."},"EndCustomerBillingPlansPublic":{"properties":{"data":{"items":{"$ref":"#/components/schemas/EndCustomerBillingPlanPublic"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["data","count"],"title":"EndCustomerBillingPlansPublic","description":"Collection response."},"EndCustomerBillingSubscriptionCreate":{"properties":{"tenant_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Tenant Id"},"project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"},"plan_id":{"type":"string","format":"uuid","title":"Plan Id"},"quantity":{"type":"integer","minimum":1.0,"title":"Quantity","default":1},"start_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Date"},"current_period_start":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Current Period Start"},"current_period_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Current Period End"}},"type":"object","required":["plan_id"],"title":"EndCustomerBillingSubscriptionCreate","description":"Properties to receive via API on creation."},"EndCustomerBillingSubscriptionPublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"status":{"type":"string","maxLength":50,"title":"Status","description":"Normalized subscription status for base and add-on items: active, trialing, past_due, unpaid, paused, incomplete, incomplete_expired, cancelled","default":"active"},"start_date":{"type":"string","format":"date-time","title":"Start Date","description":"When subscription started"},"end_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Date","description":"When subscription ends (null = active)"},"cancel_at_period_end":{"type":"boolean","title":"Cancel At Period End","description":"Whether subscription is scheduled to cancel at the current period end","default":false},"cancel_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Cancel At","description":"Scheduled cancellation timestamp when cancel_at_period_end is true"},"current_period_start":{"type":"string","format":"date-time","title":"Current Period Start","description":"Start of current billing period"},"current_period_end":{"type":"string","format":"date-time","title":"Current Period End","description":"End of current billing period"},"tokens_used_current_period":{"type":"integer","minimum":0.0,"title":"Tokens Used Current Period","description":"Tokens used in current billing period","default":0},"id":{"type":"string","format":"uuid","title":"Id"},"tenant_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Tenant Id"},"project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"},"plan_id":{"type":"string","format":"uuid","title":"Plan Id"},"quantity":{"type":"integer","title":"Quantity"},"stripe_subscription_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stripe Subscription Id"}},"type":"object","required":["start_date","current_period_start","current_period_end","id","tenant_id","project_id","plan_id","quantity","stripe_subscription_id"],"title":"EndCustomerBillingSubscriptionPublic","description":"Properties to return via API."},"EndCustomerBillingSubscriptionUpdate":{"properties":{"plan_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Plan Id"},"status":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Status"},"end_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Date"},"cancel_at_period_end":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Cancel At Period End"},"cancel_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Cancel At"},"tokens_used_current_period":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Tokens Used Current Period"},"quantity":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Quantity"},"proration_behavior":{"anyOf":[{"$ref":"#/components/schemas/ProrationBehavior"},{"type":"null"}],"description":"Proration policy for provider-backed plan or quantity updates: none, create_prorations, always_invoice"}},"type":"object","title":"EndCustomerBillingSubscriptionUpdate","description":"Properties to receive via API on update."},"EndCustomerBillingSubscriptionsPublic":{"properties":{"data":{"items":{"$ref":"#/components/schemas/EndCustomerBillingSubscriptionPublic"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["data","count"],"title":"EndCustomerBillingSubscriptionsPublic","description":"Collection response."},"EndCustomerCreate":{"properties":{"project_id":{"type":"string","format":"uuid","title":"Project Id"},"title":{"type":"string","maxLength":255,"minLength":1,"title":"Title"},"currency":{"$ref":"#/components/schemas/Currency"},"external_id":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"External Id","description":"Optional external identifier (URL-safe, case-sensitive, 1-255 characters)."},"plan_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Plan Id"}},"type":"object","required":["project_id","title","currency"],"title":"EndCustomerCreate","description":"Properties to receive via API on creation."},"EndCustomerCreditBalancePublic":{"properties":{"end_customer_id":{"type":"string","format":"uuid","title":"End Customer Id"},"currency":{"$ref":"#/components/schemas/Currency"},"available_amount":{"type":"number","minimum":0.0,"title":"Available Amount"},"granted_amount":{"type":"number","minimum":0.0,"title":"Granted Amount"},"consumed_amount":{"type":"number","minimum":0.0,"title":"Consumed Amount"},"reversed_amount":{"type":"number","minimum":0.0,"title":"Reversed Amount"},"expired_unused_amount":{"type":"number","minimum":0.0,"title":"Expired Unused Amount"},"gross_accrued_cost":{"type":"number","minimum":0.0,"title":"Gross Accrued Cost"},"net_accrued_cost":{"type":"number","title":"Net Accrued Cost"},"calculated_at":{"type":"string","format":"date-time","title":"Calculated At"}},"type":"object","required":["end_customer_id","currency","available_amount","granted_amount","consumed_amount","reversed_amount","expired_unused_amount","gross_accrued_cost","net_accrued_cost","calculated_at"],"title":"EndCustomerCreditBalancePublic","description":"Derived customer credit and credit-adjusted spend summary."},"EndCustomerCreditGrantCreate":{"properties":{"currency":{"$ref":"#/components/schemas/Currency"},"amount":{"type":"number","exclusiveMinimum":0.0,"title":"Amount"},"expires_on":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Expires On"},"reason":{"type":"string","maxLength":500,"minLength":1,"title":"Reason"}},"type":"object","required":["currency","amount","reason"],"title":"EndCustomerCreditGrantCreate","description":"Payload for granting credit to a customer."},"EndCustomerCreditGrantPublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"end_customer_id":{"type":"string","format":"uuid","title":"End Customer Id"},"currency":{"$ref":"#/components/schemas/Currency"},"amount":{"type":"number","exclusiveMinimum":0.0,"title":"Amount"},"expires_on":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Expires On"},"reason":{"type":"string","maxLength":500,"minLength":1,"title":"Reason"},"id":{"type":"string","format":"uuid","title":"Id"},"granted_by_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Granted By User Id"},"remaining_amount":{"type":"number","minimum":0.0,"title":"Remaining Amount"},"status":{"type":"string","enum":["available","exhausted","expired"],"title":"Status"}},"type":"object","required":["end_customer_id","currency","amount","reason","id","granted_by_user_id","remaining_amount","status"],"title":"EndCustomerCreditGrantPublic","description":"Public grant record and derived remaining balance."},"EndCustomerCreditGrantsPublic":{"properties":{"data":{"items":{"$ref":"#/components/schemas/EndCustomerCreditGrantPublic"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"},"summary":{"$ref":"#/components/schemas/EndCustomerCreditBalancePublic"}},"type":"object","required":["data","count","summary"],"title":"EndCustomerCreditGrantsPublic","description":"Paged customer credit grants."},"EndCustomerCreditReversalCreate":{"properties":{"amount":{"type":"number","exclusiveMinimum":0.0,"title":"Amount"},"reason":{"type":"string","maxLength":500,"minLength":1,"title":"Reason"}},"type":"object","required":["amount","reason"],"title":"EndCustomerCreditReversalCreate","description":"Payload for reversing unused credit from one grant."},"EndCustomerCreditReversalPublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"id":{"type":"string","format":"uuid","title":"Id"},"grant_id":{"type":"string","format":"uuid","title":"Grant Id"},"end_customer_id":{"type":"string","format":"uuid","title":"End Customer Id"},"amount":{"type":"number","exclusiveMinimum":0.0,"title":"Amount"},"reason":{"type":"string","title":"Reason"},"actor_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Actor User Id"}},"type":"object","required":["id","grant_id","end_customer_id","amount","reason","actor_user_id"],"title":"EndCustomerCreditReversalPublic","description":"Public record of an unused-credit reversal."},"EndCustomerKeyCreate":{"properties":{"end_customer_id":{"type":"string","format":"uuid","title":"End Customer Id","description":"Customer this key belongs to"},"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At","description":"Optional expiration date for the key"},"scopes":{"anyOf":[{"items":{"$ref":"#/components/schemas/EndCustomerKeyScope"},"type":"array"},{"type":"null"}],"title":"Scopes","description":"Optional operation scopes for SDK key-auth endpoints"}},"type":"object","required":["end_customer_id","name"],"title":"EndCustomerKeyCreate","description":"Properties for creating customer keys."},"EndCustomerKeyCreateResponse":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name","description":"User-friendly name for the key"},"is_active":{"type":"boolean","title":"Is Active","description":"Whether the key is active and can be used","default":true},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At","description":"Optional expiration date for the key"},"scopes":{"anyOf":[{"items":{"$ref":"#/components/schemas/EndCustomerKeyScope"},"type":"array"},{"type":"null"}],"title":"Scopes","description":"Optional operation scopes for SDK key-auth endpoints"},"id":{"type":"string","format":"uuid","title":"Id"},"end_customer_id":{"type":"string","format":"uuid","title":"End Customer Id"},"owner_id":{"type":"string","format":"uuid","title":"Owner Id"},"key_prefix":{"type":"string","title":"Key Prefix"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"key":{"type":"string","title":"Key","description":"Full key value - shown only once on creation. Store securely!"}},"type":"object","required":["name","id","end_customer_id","owner_id","key_prefix","last_used_at","key"],"title":"EndCustomerKeyCreateResponse","description":"Response when creating a key - includes full key value (shown only once)."},"EndCustomerKeyPublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name","description":"User-friendly name for the key"},"is_active":{"type":"boolean","title":"Is Active","description":"Whether the key is active and can be used","default":true},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At","description":"Optional expiration date for the key"},"scopes":{"anyOf":[{"items":{"$ref":"#/components/schemas/EndCustomerKeyScope"},"type":"array"},{"type":"null"}],"title":"Scopes","description":"Optional operation scopes for SDK key-auth endpoints"},"id":{"type":"string","format":"uuid","title":"Id"},"end_customer_id":{"type":"string","format":"uuid","title":"End Customer Id"},"owner_id":{"type":"string","format":"uuid","title":"Owner Id"},"key_prefix":{"type":"string","title":"Key Prefix"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"}},"type":"object","required":["name","id","end_customer_id","owner_id","key_prefix","last_used_at"],"title":"EndCustomerKeyPublic","description":"Public properties for customer keys."},"EndCustomerKeyScope":{"type":"string","enum":["preflight:read","usage:write"],"title":"EndCustomerKeyScope","description":"Supported customer key operation scopes."},"EndCustomerKeyUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Name"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"scopes":{"anyOf":[{"items":{"$ref":"#/components/schemas/EndCustomerKeyScope"},"type":"array"},{"type":"null"}],"title":"Scopes"}},"type":"object","title":"EndCustomerKeyUpdate","description":"Properties for updating customer keys."},"EndCustomerKeysPublic":{"properties":{"data":{"items":{"$ref":"#/components/schemas/EndCustomerKeyPublic"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["data","count"],"title":"EndCustomerKeysPublic","description":"Collection response for customer keys."},"EndCustomerPublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"external_id":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"External Id","description":"Optional external identifier (URL-safe, case-sensitive, 1-255 characters)."},"currency":{"$ref":"#/components/schemas/Currency","description":"Currency for cost tracking"},"title":{"type":"string","maxLength":255,"minLength":1,"title":"Title","description":"Entity title"},"number_requests_accrued":{"type":"number","minimum":0.0,"title":"Number Requests Accrued","description":"Total requests made","default":0},"input_tokens_accrued":{"type":"number","minimum":0.0,"title":"Input Tokens Accrued","description":"Total input tokens used","default":0},"output_tokens_accrued":{"type":"number","minimum":0.0,"title":"Output Tokens Accrued","description":"Total output tokens used","default":0},"cached_tokens_accrued":{"type":"integer","minimum":0.0,"title":"Cached Tokens Accrued","description":"Total cached tokens used","default":0},"cost_accrued":{"type":"number","minimum":0.0,"title":"Cost Accrued","description":"Total cost accrued","default":0.0},"id":{"type":"string","format":"uuid","title":"Id"},"owner_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"plan_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Plan Id"},"billing_template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Billing Template Id"}},"type":"object","required":["currency","title","id","owner_id","project_id","plan_id","billing_template_id"],"title":"EndCustomerPublic","description":"Properties to return via API."},"EndCustomerUpdate":{"properties":{"title":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Title"},"currency":{"anyOf":[{"$ref":"#/components/schemas/Currency"},{"type":"null"}]},"external_id":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"External Id","description":"Optional external identifier (URL-safe, case-sensitive, 1-255 characters)."},"accounting_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Accounting Config"},"billing_template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Billing Template Id"},"plan_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Plan Id"}},"type":"object","title":"EndCustomerUpdate","description":"Properties to receive via API on update."},"EndCustomersPublic":{"properties":{"data":{"items":{"$ref":"#/components/schemas/EndCustomerPublic"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["data","count"],"title":"EndCustomersPublic","description":"Collection response."},"EstimateCostRequest":{"properties":{"service_provider_name":{"type":"string","title":"Service Provider Name"},"service_name":{"type":"string","title":"Service Name"},"input_tokens":{"type":"integer","title":"Input Tokens"},"output_tokens":{"type":"integer","title":"Output Tokens"},"cached_tokens":{"type":"integer","title":"Cached Tokens"},"currency":{"anyOf":[{"$ref":"#/components/schemas/Currency"},{"type":"null"}]}},"type":"object","required":["service_provider_name","service_name","input_tokens","output_tokens","cached_tokens"],"title":"EstimateCostRequest"},"EstimateCostResponse":{"properties":{"service_provider_name":{"type":"string","title":"Service Provider Name"},"service_name":{"type":"string","title":"Service Name"},"input_tokens":{"type":"integer","title":"Input Tokens"},"output_tokens":{"type":"integer","title":"Output Tokens"},"cached_tokens":{"type":"integer","title":"Cached Tokens"},"currency":{"$ref":"#/components/schemas/Currency"},"estimated_cost":{"type":"number","title":"Estimated Cost"}},"type":"object","required":["service_provider_name","service_name","input_tokens","output_tokens","cached_tokens","currency","estimated_cost"],"title":"EstimateCostResponse"},"GoogleMfaCompleteRequest":{"properties":{"mfa_code":{"anyOf":[{"type":"string","maxLength":16,"minLength":6},{"type":"null"}],"title":"Mfa Code"},"recovery_code":{"anyOf":[{"type":"string","maxLength":128,"minLength":8},{"type":"null"}],"title":"Recovery Code"}},"type":"object","title":"GoogleMfaCompleteRequest"},"GoogleOAuthProvidersPublic":{"properties":{"google_enabled":{"type":"boolean","title":"Google Enabled"}},"type":"object","required":["google_enabled"],"title":"GoogleOAuthProvidersPublic"},"GoogleOAuthStartPublic":{"properties":{"authorization_url":{"type":"string","title":"Authorization Url"}},"type":"object","required":["authorization_url"],"title":"GoogleOAuthStartPublic"},"GoogleOAuthStartRequest":{"properties":{"login_hint":{"anyOf":[{"type":"string","maxLength":255,"format":"email"},{"type":"null"}],"title":"Login Hint"},"return_to":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Return To"},"failure_to":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Failure To"}},"type":"object","title":"GoogleOAuthStartRequest"},"GuardrailAlertHistoryResponse":{"properties":{"count":{"type":"integer","title":"Count"},"data":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Data"}},"type":"object","required":["count","data"],"title":"GuardrailAlertHistoryResponse"},"GuardrailCurrentUsage":{"properties":{"number_requests":{"type":"integer","title":"Number Requests","default":0},"input_tokens":{"type":"integer","title":"Input Tokens","default":0},"output_tokens":{"type":"integer","title":"Output Tokens","default":0},"cached_tokens":{"type":"integer","title":"Cached Tokens","default":0},"cost":{"type":"number","title":"Cost","default":0.0}},"type":"object","title":"GuardrailCurrentUsage","description":"Usage totals measured against a guardrail at read/evaluation time.\n\nFor cycling guardrails these totals cover the current cycle window only;\n``cost`` is credit-adjusted for customer-scoped evaluation."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"LogUsageRequest":{"properties":{"end_customer_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"End Customer Id"},"project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"},"provider_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Provider Id"},"customer_external_id":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Customer External Id","description":"Optional external identifier (URL-safe, case-sensitive, 1-255 characters)."},"project_external_id":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Project External Id","description":"Optional external identifier (URL-safe, case-sensitive, 1-255 characters)."},"provider_external_id":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Provider External Id","description":"Optional external identifier (URL-safe, case-sensitive, 1-255 characters)."},"event_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Id"},"idempotency_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency Key"},"service_provider_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Service Provider Name"},"service_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Service Name"},"number_requests":{"type":"integer","title":"Number Requests"},"input_tokens":{"type":"integer","title":"Input Tokens"},"output_tokens":{"type":"integer","title":"Output Tokens"},"cached_tokens":{"type":"integer","title":"Cached Tokens"},"timestamp":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Timestamp"},"feature":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feature"},"usage_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Usage Metadata"}},"type":"object","required":["number_requests","input_tokens","output_tokens","cached_tokens"],"title":"LogUsageRequest","description":"Request to log usage for a customer.\n\nEnhanced with optional feature and metadata fields for\ngranular tracking and custom data."},"LogUsageRequestWithKey":{"properties":{"key":{"type":"string","title":"Key"},"event_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Id"},"idempotency_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency Key"},"service_provider_name":{"type":"string","title":"Service Provider Name"},"service_name":{"type":"string","title":"Service Name"},"number_requests":{"type":"integer","title":"Number Requests"},"input_tokens":{"type":"integer","title":"Input Tokens"},"output_tokens":{"type":"integer","title":"Output Tokens"},"cached_tokens":{"type":"integer","title":"Cached Tokens"},"timestamp":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Timestamp"},"feature":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feature"},"usage_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Usage Metadata"}},"type":"object","required":["key","service_provider_name","service_name","number_requests","input_tokens","output_tokens","cached_tokens"],"title":"LogUsageRequestWithKey","description":"Log usage using API key authentication.\n\nEnhanced with optional feature and metadata fields for\ngranular tracking and custom data."},"MarginBreakdownItem":{"properties":{"key":{"type":"string","title":"Key"},"provider_cost":{"type":"number","title":"Provider Cost"},"revenue":{"type":"number","title":"Revenue"},"margin":{"type":"number","title":"Margin"}},"type":"object","required":["key","provider_cost","revenue","margin"],"title":"MarginBreakdownItem"},"MarginSummaryResponse":{"properties":{"provider_cost":{"type":"number","title":"Provider Cost"},"revenue":{"type":"number","title":"Revenue"},"margin":{"type":"number","title":"Margin"},"margin_ratio":{"type":"number","title":"Margin Ratio"},"breakdown":{"items":{"$ref":"#/components/schemas/MarginBreakdownItem"},"type":"array","title":"Breakdown"}},"type":"object","required":["provider_cost","revenue","margin","margin_ratio"],"title":"MarginSummaryResponse"},"Message":{"properties":{"message":{"type":"string","title":"Message"}},"type":"object","required":["message"],"title":"Message"},"MismatchDiagnosticItem":{"properties":{"event_id":{"type":"string","title":"Event Id"},"end_customer_id":{"type":"string","format":"uuid","title":"End Customer Id"},"project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"},"service_provider_name":{"type":"string","title":"Service Provider Name"},"service_name":{"type":"string","title":"Service Name"},"mismatch_ratio":{"type":"number","title":"Mismatch Ratio"},"mismatch_flag":{"type":"boolean","title":"Mismatch Flag"},"event_timestamp":{"type":"string","format":"date-time","title":"Event Timestamp"}},"type":"object","required":["event_id","end_customer_id","service_provider_name","service_name","mismatch_ratio","mismatch_flag","event_timestamp"],"title":"MismatchDiagnosticItem"},"MismatchDiagnosticsResponse":{"properties":{"total":{"type":"integer","title":"Total"},"items":{"items":{"$ref":"#/components/schemas/MismatchDiagnosticItem"},"type":"array","title":"Items"}},"type":"object","required":["total","items"],"title":"MismatchDiagnosticsResponse"},"NewPassword":{"properties":{"token":{"type":"string","title":"Token"},"new_password":{"type":"string","maxLength":128,"minLength":8,"title":"New Password"}},"type":"object","required":["token","new_password"],"title":"NewPassword"},"NotificationEventPreferencePublic":{"properties":{"source":{"type":"string","title":"Source"},"label":{"type":"string","title":"Label"},"description":{"type":"string","title":"Description"},"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["source","label","description","enabled"],"title":"NotificationEventPreferencePublic"},"NotificationEventPreferenceUpdate":{"properties":{"source":{"type":"string","maxLength":100,"minLength":1,"title":"Source"},"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["source","enabled"],"title":"NotificationEventPreferenceUpdate"},"NotificationLevel":{"type":"string","enum":["information","warning","error"],"title":"NotificationLevel","description":"Notification severity level surfaced in user inboxes."},"NotificationPreferencePublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"level":{"$ref":"#/components/schemas/NotificationLevel"},"web_app_enabled":{"type":"boolean","title":"Web App Enabled","default":true},"email_enabled":{"type":"boolean","title":"Email Enabled","default":false},"webhook_enabled":{"type":"boolean","title":"Webhook Enabled","default":false},"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"}},"type":"object","required":["level","id","user_id"],"title":"NotificationPreferencePublic"},"NotificationPreferenceUpdate":{"properties":{"level":{"$ref":"#/components/schemas/NotificationLevel"},"web_app_enabled":{"type":"boolean","title":"Web App Enabled"},"email_enabled":{"type":"boolean","title":"Email Enabled"},"webhook_enabled":{"type":"boolean","title":"Webhook Enabled"}},"type":"object","required":["level","web_app_enabled","email_enabled","webhook_enabled"],"title":"NotificationPreferenceUpdate"},"NotificationPreferencesPublic":{"properties":{"data":{"items":{"$ref":"#/components/schemas/NotificationPreferencePublic"},"type":"array","title":"Data"},"event_preferences":{"items":{"$ref":"#/components/schemas/NotificationEventPreferencePublic"},"type":"array","title":"Event Preferences"}},"type":"object","required":["data","event_preferences"],"title":"NotificationPreferencesPublic"},"NotificationPreferencesUpdate":{"properties":{"preferences":{"items":{"$ref":"#/components/schemas/NotificationPreferenceUpdate"},"type":"array","title":"Preferences"},"event_preferences":{"anyOf":[{"items":{"$ref":"#/components/schemas/NotificationEventPreferenceUpdate"},"type":"array"},{"type":"null"}],"title":"Event Preferences"}},"type":"object","required":["preferences"],"title":"NotificationPreferencesUpdate"},"NotificationPublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"level":{"$ref":"#/components/schemas/NotificationLevel"},"title":{"type":"string","maxLength":255,"minLength":1,"title":"Title"},"message":{"type":"string","maxLength":2000,"minLength":1,"title":"Message"},"source":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Source"},"metadata_json":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata Json"},"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"read_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Read At"}},"type":"object","required":["level","title","message","id","user_id","read_at"],"title":"NotificationPublic"},"NotificationReadAllResponse":{"properties":{"marked_count":{"type":"integer","title":"Marked Count"},"unread_count":{"type":"integer","title":"Unread Count"}},"type":"object","required":["marked_count","unread_count"],"title":"NotificationReadAllResponse"},"NotificationUnreadSummary":{"properties":{"data":{"items":{"$ref":"#/components/schemas/NotificationPublic"},"type":"array","title":"Data"},"unread_count":{"type":"integer","title":"Unread Count"}},"type":"object","required":["data","unread_count"],"title":"NotificationUnreadSummary"},"NotificationsPublic":{"properties":{"data":{"items":{"$ref":"#/components/schemas/NotificationPublic"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"},"unread_count":{"type":"integer","title":"Unread Count"}},"type":"object","required":["data","count","unread_count"],"title":"NotificationsPublic"},"OnboardingKeyStrategy":{"type":"string","enum":["customer_key","customer_key","user_api_key"],"title":"OnboardingKeyStrategy","description":"Credential strategies available during onboarding."},"OnboardingLifecycle":{"type":"string","enum":["not_started","in_progress","activated"],"title":"OnboardingLifecycle","description":"High-level organization activation state."},"OnboardingMilestonePublic":{"properties":{"id":{"type":"string","title":"Id"},"step":{"$ref":"#/components/schemas/OnboardingStep"},"state":{"$ref":"#/components/schemas/OnboardingMilestoneState"}},"type":"object","required":["id","step","state"],"title":"OnboardingMilestonePublic","description":"A safe, derived task state for the onboarding user interface."},"OnboardingMilestoneState":{"type":"string","enum":["incomplete","complete","available","locked","not_applicable"],"title":"OnboardingMilestoneState","description":"Derived completion and availability state for one onboarding task."},"OnboardingSdkLanguage":{"type":"string","enum":["python","typescript","curl"],"title":"OnboardingSdkLanguage","description":"Supported connection snippet languages."},"OnboardingStep":{"type":"string","enum":["integration","project","provider","plan","customer","customer","credential","connect","readiness"],"title":"OnboardingStep","description":"Fixed V1 onboarding steps used for personal resume state."},"OrganizationProviderPolicyCreate":{"properties":{"user_settings_enabled":{"type":"boolean","title":"User Settings Enabled","default":true},"user_source_preferences_enabled":{"type":"boolean","title":"User Source Preferences Enabled","default":true},"allowed_sources":{"items":{"type":"string"},"type":"array","title":"Allowed Sources"},"default_source_order":{"items":{"type":"string"},"type":"array","title":"Default Source Order"},"pricing_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pricing Metadata"}},"type":"object","title":"OrganizationProviderPolicyCreate"},"OrganizationProviderPolicyPublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"user_settings_enabled":{"type":"boolean","title":"User Settings Enabled","default":true},"user_source_preferences_enabled":{"type":"boolean","title":"User Source Preferences Enabled","default":true},"allowed_sources":{"items":{"type":"string"},"type":"array","title":"Allowed Sources"},"default_source_order":{"items":{"type":"string"},"type":"array","title":"Default Source Order"},"pricing_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pricing Metadata"},"id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Id"},"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"},"created_by_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Created By User Id"},"updated_by_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Updated By User Id"}},"type":"object","required":["tenant_id"],"title":"OrganizationProviderPolicyPublic"},"OrganizationProviderPolicyUpdate":{"properties":{"user_settings_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"User Settings Enabled"},"user_source_preferences_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"User Source Preferences Enabled"},"allowed_sources":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowed Sources"},"default_source_order":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Default Source Order"},"pricing_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pricing Metadata"}},"type":"object","title":"OrganizationProviderPolicyUpdate"},"OrganizationProviderSettingCreate":{"properties":{"provider_name":{"type":"string","maxLength":255,"minLength":1,"title":"Provider Name"},"model_name":{"type":"string","maxLength":255,"minLength":1,"title":"Model Name"},"currency":{"$ref":"#/components/schemas/Currency"},"strategy_type":{"$ref":"#/components/schemas/ProviderPricingStrategy"},"markup_type":{"anyOf":[{"$ref":"#/components/schemas/ProviderMarkupType"},{"type":"null"}]},"markup_value":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Markup Value"},"custom_cost_per_request":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Custom Cost Per Request"},"custom_cost_per_input_token":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Custom Cost Per Input Token"},"custom_cost_per_output_token":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Custom Cost Per Output Token"},"custom_cost_per_cached_token":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Custom Cost Per Cached Token"},"pricing_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pricing Metadata"}},"type":"object","required":["provider_name","model_name","currency","strategy_type"],"title":"OrganizationProviderSettingCreate"},"OrganizationProviderSettingPublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"provider_name":{"type":"string","maxLength":255,"minLength":1,"title":"Provider Name"},"model_name":{"type":"string","maxLength":255,"minLength":1,"title":"Model Name"},"currency":{"$ref":"#/components/schemas/Currency","description":"Currency for pricing"},"strategy_type":{"$ref":"#/components/schemas/ProviderPricingStrategy","description":"Pricing strategy: passthrough, custom, or catalog_markup"},"markup_type":{"anyOf":[{"$ref":"#/components/schemas/ProviderMarkupType"},{"type":"null"}]},"markup_value":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Markup Value"},"custom_cost_per_request":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Custom Cost Per Request"},"custom_cost_per_input_token":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Custom Cost Per Input Token"},"custom_cost_per_output_token":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Custom Cost Per Output Token"},"custom_cost_per_cached_token":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Custom Cost Per Cached Token"},"pricing_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pricing Metadata"},"id":{"type":"string","format":"uuid","title":"Id"},"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"},"created_by_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Created By User Id"},"updated_by_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Updated By User Id"}},"type":"object","required":["provider_name","model_name","currency","strategy_type","id","tenant_id"],"title":"OrganizationProviderSettingPublic"},"OrganizationProviderSettingUpdate":{"properties":{"provider_name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Provider Name"},"model_name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Model Name"},"currency":{"anyOf":[{"$ref":"#/components/schemas/Currency"},{"type":"null"}]},"strategy_type":{"anyOf":[{"$ref":"#/components/schemas/ProviderPricingStrategy"},{"type":"null"}]},"markup_type":{"anyOf":[{"$ref":"#/components/schemas/ProviderMarkupType"},{"type":"null"}]},"markup_value":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Markup Value"},"custom_cost_per_request":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Custom Cost Per Request"},"custom_cost_per_input_token":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Custom Cost Per Input Token"},"custom_cost_per_output_token":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Custom Cost Per Output Token"},"custom_cost_per_cached_token":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Custom Cost Per Cached Token"},"pricing_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pricing Metadata"}},"type":"object","title":"OrganizationProviderSettingUpdate"},"OrganizationProviderSettingsPublic":{"properties":{"data":{"items":{"$ref":"#/components/schemas/OrganizationProviderSettingPublic"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["data","count"],"title":"OrganizationProviderSettingsPublic"},"OrganizationSsoDiscoverRequest":{"properties":{"email":{"type":"string","maxLength":255,"format":"email","title":"Email"}},"type":"object","required":["email"],"title":"OrganizationSsoDiscoverRequest","description":"Discover the organization identity provider from login email."},"OrganizationSsoStartPublic":{"properties":{"authorization_url":{"type":"string","title":"Authorization Url"},"provider_id":{"type":"string","format":"uuid","title":"Provider Id"},"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"}},"type":"object","required":["authorization_url","provider_id","tenant_id"],"title":"OrganizationSsoStartPublic","description":"OIDC authorization redirect metadata for login UX."},"OrganizationSsoStartRequest":{"properties":{"email":{"anyOf":[{"type":"string","maxLength":255,"format":"email"},{"type":"null"}],"title":"Email"},"tenant_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Tenant Id"},"return_to":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Return To"}},"type":"object","title":"OrganizationSsoStartRequest","description":"Start login with OIDC using either email or explicit organization."},"PartialEndCustomerFinalizeRequest":{"properties":{"title":{"type":"string","maxLength":255,"minLength":1,"title":"Title"},"currency":{"$ref":"#/components/schemas/Currency"},"project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"},"external_id":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"External Id","description":"Optional external identifier (URL-safe, case-sensitive, 1-255 characters)."}},"type":"object","required":["title","currency"],"title":"PartialEndCustomerFinalizeRequest"},"PartialEndCustomerPublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"external_id":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"External Id","description":"Optional external identifier (URL-safe, case-sensitive, 1-255 characters)."},"project_external_id":{"type":"string","maxLength":255,"minLength":1,"title":"Project External Id","description":"External identifier (URL-safe, case-sensitive, 1-255 characters)."},"customer_external_id":{"type":"string","maxLength":255,"minLength":1,"title":"Customer External Id","description":"External identifier (URL-safe, case-sensitive, 1-255 characters)."},"is_resolved":{"type":"boolean","title":"Is Resolved","default":false},"number_requests_accrued":{"type":"integer","minimum":0.0,"title":"Number Requests Accrued","default":0},"input_tokens_accrued":{"type":"integer","minimum":0.0,"title":"Input Tokens Accrued","default":0},"output_tokens_accrued":{"type":"integer","minimum":0.0,"title":"Output Tokens Accrued","default":0},"cached_tokens_accrued":{"type":"integer","minimum":0.0,"title":"Cached Tokens Accrued","default":0},"cost_accrued":{"type":"number","minimum":0.0,"title":"Cost Accrued","default":0.0},"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"resolved_project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Resolved Project Id"},"resolved_customer_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Resolved Customer Id"},"resolved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Resolved At"}},"type":"object","required":["project_external_id","customer_external_id","id","user_id","resolved_project_id","resolved_customer_id","resolved_at"],"title":"PartialEndCustomerPublic"},"PartialEndCustomersPublic":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PartialEndCustomerPublic"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["data","count"],"title":"PartialEndCustomersPublic"},"PartialProjectFinalizeRequest":{"properties":{"title":{"type":"string","maxLength":255,"minLength":1,"title":"Title"},"currency":{"$ref":"#/components/schemas/Currency"},"external_id":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"External Id","description":"Optional external identifier (URL-safe, case-sensitive, 1-255 characters)."}},"type":"object","required":["title","currency"],"title":"PartialProjectFinalizeRequest"},"PartialProjectPublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"external_id":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"External Id","description":"Optional external identifier (URL-safe, case-sensitive, 1-255 characters)."},"project_external_id":{"type":"string","maxLength":255,"minLength":1,"title":"Project External Id","description":"External identifier (URL-safe, case-sensitive, 1-255 characters)."},"is_resolved":{"type":"boolean","title":"Is Resolved","default":false},"number_requests_accrued":{"type":"integer","minimum":0.0,"title":"Number Requests Accrued","default":0},"input_tokens_accrued":{"type":"integer","minimum":0.0,"title":"Input Tokens Accrued","default":0},"output_tokens_accrued":{"type":"integer","minimum":0.0,"title":"Output Tokens Accrued","default":0},"cached_tokens_accrued":{"type":"integer","minimum":0.0,"title":"Cached Tokens Accrued","default":0},"cost_accrued":{"type":"number","minimum":0.0,"title":"Cost Accrued","default":0.0},"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"resolved_project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Resolved Project Id"},"resolved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Resolved At"}},"type":"object","required":["project_external_id","id","user_id","resolved_project_id","resolved_at"],"title":"PartialProjectPublic"},"PartialProjectsPublic":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PartialProjectPublic"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["data","count"],"title":"PartialProjectsPublic"},"PartialProviderFinalizeRequest":{"properties":{"provider_name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Provider Name"},"model_name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Model Name"},"external_id":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"External Id","description":"Optional external identifier (URL-safe, case-sensitive, 1-255 characters)."},"currency":{"$ref":"#/components/schemas/Currency"},"cost_per_request":{"type":"number","minimum":0.0,"title":"Cost Per Request","default":0.0},"cost_per_input_token":{"type":"number","minimum":0.0,"title":"Cost Per Input Token","default":0.0},"cost_per_output_token":{"type":"number","minimum":0.0,"title":"Cost Per Output Token","default":0.0},"cost_per_cached_token":{"type":"number","minimum":0.0,"title":"Cost Per Cached Token","default":0.0},"effective_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Effective Date"}},"type":"object","required":["currency"],"title":"PartialProviderFinalizeRequest"},"PartialProviderPublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"external_id":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"External Id","description":"Optional external identifier (URL-safe, case-sensitive, 1-255 characters)."},"service_provider_name":{"type":"string","maxLength":255,"minLength":1,"title":"Service Provider Name"},"service_name":{"type":"string","maxLength":255,"minLength":1,"title":"Service Name"},"is_resolved":{"type":"boolean","title":"Is Resolved","default":false},"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"resolved_provider_catalog_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Resolved Provider Catalog Id"},"resolved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Resolved At"}},"type":"object","required":["service_provider_name","service_name","id","user_id","resolved_provider_catalog_id","resolved_at"],"title":"PartialProviderPublic"},"PartialProvidersPublic":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PartialProviderPublic"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["data","count"],"title":"PartialProvidersPublic"},"PasswordRecoveryRequest":{"properties":{"email":{"type":"string","maxLength":255,"minLength":3,"title":"Email"}},"type":"object","required":["email"],"title":"PasswordRecoveryRequest"},"PeriodType":{"type":"string","enum":["hour","day","week","month","quarter","year"],"title":"PeriodType","description":"Time period types for cached usage aggregation."},"PlatformBillingPortalSessionCreate":{"properties":{"return_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Return Url"}},"type":"object","title":"PlatformBillingPortalSessionCreate","description":"Request a Stripe Customer Portal session."},"PlatformBillingPortalSessionPublic":{"properties":{"portal_session_id":{"type":"string","title":"Portal Session Id"},"portal_url":{"type":"string","title":"Portal Url"}},"type":"object","required":["portal_session_id","portal_url"],"title":"PlatformBillingPortalSessionPublic","description":"Stripe Customer Portal session for platform billing."},"PlatformCheckoutSessionCreate":{"properties":{"platform_plan_id":{"type":"string","format":"uuid","title":"Platform Plan Id"},"billing_interval":{"type":"string","enum":["month","year"],"title":"Billing Interval","default":"month"},"success_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Success Url"},"cancel_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cancel Url"}},"type":"object","required":["platform_plan_id"],"title":"PlatformCheckoutSessionCreate","description":"Checkout request for a paid Spendware plan."},"PlatformCheckoutSessionPublic":{"properties":{"checkout_session_id":{"type":"string","title":"Checkout Session Id"},"checkout_url":{"type":"string","title":"Checkout Url"}},"type":"object","required":["checkout_session_id","checkout_url"],"title":"PlatformCheckoutSessionPublic","description":"Stripe Checkout session for a platform-plan purchase."},"PlatformPlanPublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"slug":{"type":"string","maxLength":64,"minLength":1,"title":"Slug"},"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"currency":{"$ref":"#/components/schemas/Currency","default":"USD"},"base_monthly_fee_cents":{"type":"integer","minimum":0.0,"title":"Base Monthly Fee Cents","default":0},"annual_fee_cents":{"type":"integer","minimum":0.0,"title":"Annual Fee Cents","default":0},"included_active_customers":{"type":"integer","minimum":0.0,"title":"Included Active Customers","default":0},"hard_active_customer_cap":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Hard Active Customer Cap"},"additional_active_customer_cents":{"type":"integer","minimum":0.0,"title":"Additional Active Customer Cents","default":0},"included_requests_monthly":{"type":"integer","minimum":0.0,"title":"Included Requests Monthly","default":0},"request_overage_cents_per_100k":{"type":"integer","minimum":0.0,"title":"Request Overage Cents Per 100K","default":0},"analytics_history_days":{"type":"integer","minimum":0.0,"title":"Analytics History Days","default":0},"trial_days":{"type":"integer","minimum":0.0,"title":"Trial Days","default":0},"entitlements_json":{"additionalProperties":true,"type":"object","title":"Entitlements Json"},"is_active":{"type":"boolean","title":"Is Active","default":true},"sort_order":{"type":"integer","minimum":0.0,"title":"Sort Order","default":0},"id":{"type":"string","format":"uuid","title":"Id"}},"type":"object","required":["slug","name","id"],"title":"PlatformPlanPublic","description":"Spendware platform plan returned by the catalog API (SaaS pricing tier)."},"PlatformPlansPublic":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PlatformPlanPublic"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["data","count"],"title":"PlatformPlansPublic","description":"Collection response for available Spendware platform plans."},"PlatformRole":{"type":"string","enum":["platform_admin","platform_support"],"title":"PlatformRole","description":"Platform-scope role granting cross-tenant operator powers."},"PlatformRoleAssignmentCreate":{"properties":{"user_id":{"type":"string","format":"uuid","title":"User Id"},"role":{"$ref":"#/components/schemas/PlatformRole"},"reason":{"type":"string","maxLength":500,"minLength":10,"title":"Reason"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At","description":"Optional future expiry for time-boxed grants."}},"type":"object","required":["user_id","role","reason"],"title":"PlatformRoleAssignmentCreate","description":"Properties to receive via API on creation."},"PlatformRoleAssignmentPublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"role":{"$ref":"#/components/schemas/PlatformRole","description":"Platform role granted to the user."},"reason":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Reason","description":"Why the role was granted."},"source":{"type":"string","maxLength":32,"title":"Source","description":"How the assignment was created (bootstrap, api, cli, seed, migration backfill).","default":"api"},"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"granted_by_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Granted By User Id"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoked At"},"revoked_by_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Revoked By User Id"},"revocation_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Revocation Reason"}},"type":"object","required":["role","id","user_id"],"title":"PlatformRoleAssignmentPublic","description":"Properties to return via API."},"PlatformRoleAssignmentRevoke":{"properties":{"reason":{"type":"string","maxLength":500,"minLength":10,"title":"Reason"}},"type":"object","required":["reason"],"title":"PlatformRoleAssignmentRevoke","description":"Properties to receive via API when revoking an assignment."},"PlatformRoleAssignmentsPublic":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PlatformRoleAssignmentPublic"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["data","count"],"title":"PlatformRoleAssignmentsPublic","description":"Collection response."},"PlatformSubscriptionChange":{"properties":{"platform_plan_id":{"type":"string","format":"uuid","title":"Platform Plan Id"}},"type":"object","required":["platform_plan_id"],"title":"PlatformSubscriptionChange","description":"Schedule a platform-plan change for the next billing period."},"PlatformSubscriptionPublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"status":{"$ref":"#/components/schemas/PlatformSubscriptionStatus","default":"active"},"current_period_start":{"type":"string","format":"date-time","title":"Current Period Start"},"current_period_end":{"type":"string","format":"date-time","title":"Current Period End"},"trial_ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Trial Ends At"},"cancel_at_period_end":{"type":"boolean","title":"Cancel At Period End","default":false},"cancel_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Cancel At"},"ended_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ended At"},"id":{"type":"string","format":"uuid","title":"Id"},"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"},"platform_plan_id":{"type":"string","format":"uuid","title":"Platform Plan Id"},"pending_platform_plan_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Pending Platform Plan Id"},"stripe_subscription_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stripe Subscription Id"},"plan":{"$ref":"#/components/schemas/PlatformPlanPublic"},"accepted_requests":{"type":"integer","minimum":0.0,"title":"Accepted Requests","default":0},"active_customers":{"type":"integer","minimum":0.0,"title":"Active Customers","default":0},"request_overage_cents":{"type":"integer","minimum":0.0,"title":"Request Overage Cents","default":0},"customer_overage_cents":{"type":"integer","minimum":0.0,"title":"Customer Overage Cents","default":0}},"type":"object","required":["current_period_start","current_period_end","id","tenant_id","platform_plan_id","pending_platform_plan_id","stripe_subscription_id","plan"],"title":"PlatformSubscriptionPublic","description":"Organization platform subscription and current-period usage summary."},"PlatformSubscriptionStatus":{"type":"string","enum":["active","trialing","past_due","cancelled"],"title":"PlatformSubscriptionStatus","description":"Lifecycle states for a Spendware platform subscription."},"PreflightRequest":{"properties":{"end_customer_id":{"type":"string","format":"uuid","title":"End Customer Id"},"service_provider_name":{"type":"string","title":"Service Provider Name"},"service_name":{"type":"string","title":"Service Name"},"input_tokens":{"type":"integer","title":"Input Tokens"},"output_tokens":{"type":"integer","title":"Output Tokens"},"cached_tokens":{"type":"integer","title":"Cached Tokens"},"feature":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feature"},"usage_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Usage Metadata"}},"type":"object","required":["end_customer_id","service_provider_name","service_name","input_tokens","output_tokens","cached_tokens"],"title":"PreflightRequest"},"PreflightRequestWithKey":{"properties":{"key":{"type":"string","title":"Key"},"service_provider_name":{"type":"string","title":"Service Provider Name"},"service_name":{"type":"string","title":"Service Name"},"input_tokens":{"type":"integer","title":"Input Tokens"},"output_tokens":{"type":"integer","title":"Output Tokens"},"cached_tokens":{"type":"integer","title":"Cached Tokens"},"feature":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feature"},"usage_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Usage Metadata"}},"type":"object","required":["key","service_provider_name","service_name","input_tokens","output_tokens","cached_tokens"],"title":"PreflightRequestWithKey","description":"Preflight check using API key authentication."},"PreflightResponse":{"properties":{"service_provider_name":{"type":"string","title":"Service Provider Name"},"service_name":{"type":"string","title":"Service Name"},"input_tokens":{"type":"integer","title":"Input Tokens"},"output_tokens":{"type":"integer","title":"Output Tokens"},"cached_tokens":{"type":"integer","title":"Cached Tokens"},"currency":{"$ref":"#/components/schemas/Currency"},"estimated_cost":{"type":"number","title":"Estimated Cost"},"number_requests_accrued":{"type":"integer","title":"Number Requests Accrued"},"input_tokens_accrued":{"type":"integer","title":"Input Tokens Accrued"},"output_tokens_accrued":{"type":"integer","title":"Output Tokens Accrued"},"cached_tokens_accrued":{"type":"integer","title":"Cached Tokens Accrued"},"cost_accrued":{"type":"number","title":"Cost Accrued"},"action":{"$ref":"#/components/schemas/Action"},"action_downgrade_target":{"anyOf":[{"$ref":"#/components/schemas/DowngradeTarget"},{"type":"null"}]}},"type":"object","required":["service_provider_name","service_name","input_tokens","output_tokens","cached_tokens","currency","estimated_cost","number_requests_accrued","input_tokens_accrued","output_tokens_accrued","cached_tokens_accrued","cost_accrued","action"],"title":"PreflightResponse"},"PricingRuleCreate":{"properties":{"project_id":{"type":"string","format":"uuid","title":"Project Id"},"title":{"type":"string","maxLength":255,"minLength":1,"title":"Title"},"provider_name":{"type":"string","maxLength":255,"minLength":1,"title":"Provider Name"},"model_name":{"type":"string","maxLength":255,"minLength":1,"title":"Model Name"},"currency":{"$ref":"#/components/schemas/Currency"},"strategy_type":{"type":"string","title":"Strategy Type"},"markup_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Markup Type"},"markup_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Markup Value"},"custom_cost_per_request":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Custom Cost Per Request"},"custom_cost_per_input_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Custom Cost Per Input Token"},"custom_cost_per_output_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Custom Cost Per Output Token"},"custom_cost_per_cached_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Custom Cost Per Cached Token"},"pricing_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pricing Metadata"},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["project_id","title","provider_name","model_name","currency","strategy_type"],"title":"PricingRuleCreate","description":"Properties for creating pricing rules."},"PricingRulePublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"title":{"type":"string","maxLength":255,"minLength":1,"title":"Title","description":"Descriptive name for this pricing rule"},"provider_name":{"type":"string","maxLength":255,"minLength":1,"title":"Provider Name","description":"AI provider name this rule applies to"},"model_name":{"type":"string","maxLength":255,"minLength":1,"title":"Model Name","description":"Model name this rule applies to"},"currency":{"$ref":"#/components/schemas/Currency","description":"Currency for pricing"},"strategy_type":{"type":"string","title":"Strategy Type","description":"Type of pricing strategy: 'catalog_markup', 'custom', 'passthrough'"},"markup_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Markup Type","description":"Markup type: 'percentage', 'fixed_per_token', 'fixed_per_request'"},"markup_value":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Markup Value","description":"Markup value (percentage or fixed amount)"},"custom_cost_per_request":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Custom Cost Per Request","description":"Custom cost per request"},"custom_cost_per_input_token":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Custom Cost Per Input Token","description":"Custom cost per input token"},"custom_cost_per_output_token":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Custom Cost Per Output Token","description":"Custom cost per output token"},"custom_cost_per_cached_token":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Custom Cost Per Cached Token","description":"Custom cost per cached token"},"pricing_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pricing Metadata","description":"Additional rule configuration"},"is_active":{"type":"boolean","title":"Is Active","description":"Whether this rule is currently active","default":true},"id":{"type":"string","format":"uuid","title":"Id"},"owner_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"}},"type":"object","required":["title","provider_name","model_name","currency","strategy_type","id","owner_id","project_id"],"title":"PricingRulePublic","description":"Public properties for pricing rules."},"PricingRuleUpdate":{"properties":{"title":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Title"},"provider_name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Provider Name"},"model_name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Model Name"},"currency":{"anyOf":[{"$ref":"#/components/schemas/Currency"},{"type":"null"}]},"strategy_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Strategy Type"},"markup_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Markup Type"},"markup_value":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Markup Value"},"custom_cost_per_request":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Custom Cost Per Request"},"custom_cost_per_input_token":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Custom Cost Per Input Token"},"custom_cost_per_output_token":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Custom Cost Per Output Token"},"custom_cost_per_cached_token":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Custom Cost Per Cached Token"},"pricing_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pricing Metadata"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"PricingRuleUpdate","description":"Properties for updating pricing rules."},"PricingRulesPublic":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PricingRulePublic"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["data","count"],"title":"PricingRulesPublic","description":"Collection response."},"PrivateInvitationTokenRotateRequest":{"properties":{"expires_in_hours":{"anyOf":[{"type":"integer","maximum":336.0,"minimum":1.0},{"type":"null"}],"title":"Expires In Hours"}},"type":"object","title":"PrivateInvitationTokenRotateRequest"},"PrivateInvitationTokenRotateResponse":{"properties":{"invitation_id":{"type":"string","format":"uuid","title":"Invitation Id"},"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"},"token":{"type":"string","title":"Token"}},"type":"object","required":["invitation_id","tenant_id","token"],"title":"PrivateInvitationTokenRotateResponse"},"ProjectCreate":{"properties":{"title":{"type":"string","maxLength":255,"minLength":1,"title":"Title"},"currency":{"$ref":"#/components/schemas/Currency"},"external_id":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"External Id","description":"Optional external identifier (URL-safe, case-sensitive, 1-255 characters)."},"tenant_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Tenant Id"}},"type":"object","required":["title","currency"],"title":"ProjectCreate","description":"Properties to receive via API on creation."},"ProjectPublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"external_id":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"External Id","description":"Optional external identifier (URL-safe, case-sensitive, 1-255 characters)."},"currency":{"$ref":"#/components/schemas/Currency","description":"Currency for cost tracking"},"title":{"type":"string","maxLength":255,"minLength":1,"title":"Title","description":"Entity title"},"number_requests_accrued":{"type":"number","minimum":0.0,"title":"Number Requests Accrued","description":"Total requests made","default":0},"input_tokens_accrued":{"type":"number","minimum":0.0,"title":"Input Tokens Accrued","description":"Total input tokens used","default":0},"output_tokens_accrued":{"type":"number","minimum":0.0,"title":"Output Tokens Accrued","description":"Total output tokens used","default":0},"cached_tokens_accrued":{"type":"integer","minimum":0.0,"title":"Cached Tokens Accrued","description":"Total cached tokens used","default":0},"cost_accrued":{"type":"number","minimum":0.0,"title":"Cost Accrued","description":"Total cost accrued","default":0.0},"id":{"type":"string","format":"uuid","title":"Id"},"owner_id":{"type":"string","format":"uuid","title":"Owner Id"},"tenant_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Tenant Id"},"stripe_customer_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stripe Customer Id"},"billing_template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Billing Template Id"}},"type":"object","required":["currency","title","id","owner_id","tenant_id","stripe_customer_id","billing_template_id"],"title":"ProjectPublic","description":"Properties to return via API."},"ProjectUpdate":{"properties":{"title":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Title"},"currency":{"anyOf":[{"$ref":"#/components/schemas/Currency"},{"type":"null"}]},"external_id":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"External Id","description":"Optional external identifier (URL-safe, case-sensitive, 1-255 characters)."},"accounting_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Accounting Config"},"billing_template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Billing Template Id"}},"type":"object","title":"ProjectUpdate","description":"Properties to receive via API on update."},"ProjectsPublic":{"properties":{"data":{"items":{"$ref":"#/components/schemas/ProjectPublic"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["data","count"],"title":"ProjectsPublic","description":"Collection response."},"ProrationBehavior":{"type":"string","enum":["none","create_prorations","always_invoice"],"title":"ProrationBehavior","description":"Supported proration policies for provider-backed plan/quantity updates."},"ProviderCatalogPublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"external_id":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"External Id","description":"Optional external identifier (URL-safe, case-sensitive, 1-255 characters)."},"provider_name":{"type":"string","maxLength":255,"minLength":1,"title":"Provider Name","description":"AI provider name (e.g., 'OpenAI', 'Anthropic')"},"model_name":{"type":"string","maxLength":255,"minLength":1,"title":"Model Name","description":"Specific model name (e.g., 'gpt-4', 'claude-3-opus')"},"currency":{"$ref":"#/components/schemas/Currency","description":"Currency for pricing"},"cost_per_request":{"type":"number","minimum":0.0,"title":"Cost Per Request","description":"Cost per API request","default":0.0},"cost_per_input_token":{"type":"number","minimum":0.0,"title":"Cost Per Input Token","description":"Cost per input token","default":0.0},"cost_per_output_token":{"type":"number","minimum":0.0,"title":"Cost Per Output Token","description":"Cost per output token","default":0.0},"cost_per_cached_token":{"type":"number","minimum":0.0,"title":"Cost Per Cached Token","description":"Cost per cached token","default":0.0},"effective_date":{"type":"string","format":"date-time","title":"Effective Date","description":"When this pricing becomes effective"},"id":{"type":"string","format":"uuid","title":"Id"}},"type":"object","required":["provider_name","model_name","currency","id"],"title":"ProviderCatalogPublic","description":"Public properties for catalog entries."},"ProviderCatalogsPublic":{"properties":{"data":{"items":{"$ref":"#/components/schemas/ProviderCatalogPublic"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["data","count"],"title":"ProviderCatalogsPublic","description":"Collection response."},"ProviderMarkupType":{"type":"string","enum":["percentage","fixed_per_token","fixed_per_request"],"title":"ProviderMarkupType"},"ProviderPricingSource":{"type":"string","enum":["user","project","organization","theia"],"title":"ProviderPricingSource"},"ProviderPricingStrategy":{"type":"string","enum":["passthrough","custom","catalog_markup"],"title":"ProviderPricingStrategy"},"ProviderSourceCandidatePublic":{"properties":{"source":{"$ref":"#/components/schemas/ProviderPricingSource"},"source_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Source Id"},"available":{"type":"boolean","title":"Available","default":false},"allowed":{"type":"boolean","title":"Allowed","default":true},"selected":{"type":"boolean","title":"Selected","default":false},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"currency":{"anyOf":[{"$ref":"#/components/schemas/Currency"},{"type":"null"}]},"strategy_type":{"anyOf":[{"$ref":"#/components/schemas/ProviderPricingStrategy"},{"type":"null"}]},"markup_type":{"anyOf":[{"$ref":"#/components/schemas/ProviderMarkupType"},{"type":"null"}]},"markup_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Markup Value"},"cost_per_request":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cost Per Request"},"cost_per_input_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cost Per Input Token"},"cost_per_output_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cost Per Output Token"},"cost_per_cached_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cost Per Cached Token"},"computed_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Computed Cost"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["source"],"title":"ProviderSourceCandidatePublic"},"ProviderSourcePreference":{"type":"string","enum":["auto","user","project","organization","theia"],"title":"ProviderSourcePreference"},"ResourcePermissionCreate":{"properties":{"user_id":{"type":"string","format":"uuid","title":"User Id"},"role":{"$ref":"#/components/schemas/Role"}},"type":"object","required":["user_id","role"],"title":"ResourcePermissionCreate","description":"Payload to grant a user a role on a resource."},"ResourcePermissionPublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"resource_type":{"$ref":"#/components/schemas/ResourceType","description":"Type discriminator for the protected resource"},"resource_id":{"type":"string","format":"uuid","title":"Resource Id","description":"Protected resource id"},"role":{"$ref":"#/components/schemas/Role","description":"Granted role for the resource"},"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"granted_by_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Granted By User Id"}},"type":"object","required":["resource_type","resource_id","role","id","user_id","granted_by_user_id"],"title":"ResourcePermissionPublic","description":"Public representation of canonical resource permission grants."},"ResourcePermissionTransferOwner":{"properties":{"new_owner_user_id":{"type":"string","format":"uuid","title":"New Owner User Id"}},"type":"object","required":["new_owner_user_id"],"title":"ResourcePermissionTransferOwner","description":"Payload to transfer resource ownership."},"ResourcePermissionUpdate":{"properties":{"role":{"$ref":"#/components/schemas/Role"}},"type":"object","required":["role"],"title":"ResourcePermissionUpdate","description":"Payload to update an existing grant."},"ResourcePermissionsPublic":{"properties":{"data":{"items":{"$ref":"#/components/schemas/ResourcePermissionPublic"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["data","count"],"title":"ResourcePermissionsPublic","description":"Collection response for canonical grants."},"ResourceType":{"type":"string","enum":["organization","project","customer","customer","pricing_rule","billing_template","usage_guardrail","customer_key","customer_key","subscription","webhook_endpoint","webhook_event","webhook_delivery","plan","provider_catalog"],"title":"ResourceType","description":"Canonical resource identifiers for RBAC evaluation."},"Role":{"type":"string","enum":["owner","editor","viewer"],"title":"Role","description":"User role for resource permissions."},"SignupStatusPublic":{"properties":{"signups_disabled":{"type":"boolean","title":"Signups Disabled"}},"type":"object","required":["signups_disabled"],"title":"SignupStatusPublic","description":"Public signup status returned to the auth UI."},"SocialIdentitiesPublic":{"properties":{"data":{"items":{"$ref":"#/components/schemas/SocialIdentityPublic"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["data","count"],"title":"SocialIdentitiesPublic"},"SocialIdentityPublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"id":{"type":"string","format":"uuid","title":"Id"},"provider":{"type":"string","title":"Provider"},"provider_email":{"type":"string","format":"email","title":"Provider Email"},"provider_email_verified":{"type":"boolean","title":"Provider Email Verified"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"linked_at":{"type":"string","format":"date-time","title":"Linked At"},"last_login_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Login At"}},"type":"object","required":["id","provider","provider_email","provider_email_verified","linked_at"],"title":"SocialIdentityPublic","description":"Social identity fields returned to the current user."},"TenantCreate":{"properties":{"title":{"type":"string","maxLength":255,"minLength":1,"title":"Title"}},"type":"object","required":["title"],"title":"TenantCreate","description":"Properties to receive via API on creation."},"TenantIdentityProviderPublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"id":{"type":"string","format":"uuid","title":"Id"},"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"},"provider_type":{"type":"string","title":"Provider Type"},"issuer_url":{"type":"string","title":"Issuer Url"},"client_id":{"type":"string","title":"Client Id"},"authorization_endpoint":{"type":"string","title":"Authorization Endpoint"},"token_endpoint":{"type":"string","title":"Token Endpoint"},"userinfo_endpoint":{"type":"string","title":"Userinfo Endpoint"},"jwks_uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Jwks Uri"},"scopes":{"type":"string","title":"Scopes"},"domains":{"items":{"type":"string"},"type":"array","title":"Domains"},"default_role":{"$ref":"#/components/schemas/Role"},"enforce_sso":{"type":"boolean","title":"Enforce Sso"},"allow_break_glass":{"type":"boolean","title":"Allow Break Glass"},"jit_provisioning_enabled":{"type":"boolean","title":"Jit Provisioning Enabled"},"is_active":{"type":"boolean","title":"Is Active"},"has_client_secret":{"type":"boolean","title":"Has Client Secret"}},"type":"object","required":["id","tenant_id","provider_type","issuer_url","client_id","authorization_endpoint","token_endpoint","userinfo_endpoint","jwks_uri","scopes","domains","default_role","enforce_sso","allow_break_glass","jit_provisioning_enabled","is_active","has_client_secret"],"title":"TenantIdentityProviderPublic","description":"Organization identity provider fields returned via API."},"TenantIdentityProviderUpsert":{"properties":{"issuer_url":{"type":"string","maxLength":1024,"minLength":1,"title":"Issuer Url"},"client_id":{"type":"string","maxLength":255,"minLength":1,"title":"Client Id"},"client_secret":{"anyOf":[{"type":"string","maxLength":2048,"minLength":1},{"type":"null"}],"title":"Client Secret"},"scopes":{"type":"string","maxLength":255,"minLength":1,"title":"Scopes","default":"openid profile email"},"domains":{"items":{"type":"string"},"type":"array","title":"Domains"},"default_role":{"$ref":"#/components/schemas/Role","default":"viewer"},"enforce_sso":{"type":"boolean","title":"Enforce Sso","default":false},"allow_break_glass":{"type":"boolean","title":"Allow Break Glass","default":true},"jit_provisioning_enabled":{"type":"boolean","title":"Jit Provisioning Enabled","default":true},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["issuer_url","client_id","domains"],"title":"TenantIdentityProviderUpsert","description":"Payload to create or update organization OIDC configuration."},"TenantIdentityProvidersPublic":{"properties":{"data":{"items":{"$ref":"#/components/schemas/TenantIdentityProviderPublic"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["data","count"],"title":"TenantIdentityProvidersPublic","description":"Collection response for organization identity providers."},"TenantInvitationAccept":{"properties":{"token":{"type":"string","maxLength":512,"minLength":16,"title":"Token"}},"type":"object","required":["token"],"title":"TenantInvitationAccept","description":"Properties to accept an invitation."},"TenantInvitationCreate":{"properties":{"email":{"type":"string","maxLength":255,"format":"email","title":"Email"},"role":{"$ref":"#/components/schemas/Role","default":"viewer"}},"type":"object","required":["email"],"title":"TenantInvitationCreate","description":"Properties to create an organization invitation."},"TenantInvitationPublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"id":{"type":"string","format":"uuid","title":"Id"},"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"},"invited_by_user_id":{"type":"string","format":"uuid","title":"Invited By User Id"},"email":{"type":"string","format":"email","title":"Email"},"role":{"$ref":"#/components/schemas/Role"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"accepted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Accepted At"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoked At"}},"type":"object","required":["id","tenant_id","invited_by_user_id","email","role","expires_at","accepted_at","revoked_at"],"title":"TenantInvitationPublic","description":"Invitation data returned via API."},"TenantInvitationResend":{"properties":{"expires_in_hours":{"anyOf":[{"type":"integer","maximum":336.0,"minimum":1.0},{"type":"null"}],"title":"Expires In Hours"}},"type":"object","title":"TenantInvitationResend","description":"Properties to resend an invitation."},"TenantInvitationResolve":{"properties":{"token":{"type":"string","maxLength":512,"minLength":16,"title":"Token"}},"type":"object","required":["token"],"title":"TenantInvitationResolve","description":"Properties to resolve invitation details from a token."},"TenantInvitationResolvePublic":{"properties":{"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"},"tenant_title":{"type":"string","title":"Tenant Title"},"email":{"type":"string","format":"email","title":"Email"},"role":{"$ref":"#/components/schemas/Role"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"is_expired":{"type":"boolean","title":"Is Expired"},"is_revoked":{"type":"boolean","title":"Is Revoked"},"is_accepted":{"type":"boolean","title":"Is Accepted"}},"type":"object","required":["tenant_id","tenant_title","email","role","expires_at","is_expired","is_revoked","is_accepted"],"title":"TenantInvitationResolvePublic","description":"Resolved invitation information for accept flow UX."},"TenantInvitationsPublic":{"properties":{"data":{"items":{"$ref":"#/components/schemas/TenantInvitationPublic"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["data","count"],"title":"TenantInvitationsPublic","description":"Collection response for organization invitations."},"TenantMembershipPublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"role":{"$ref":"#/components/schemas/Role","default":"viewer"},"id":{"type":"string","format":"uuid","title":"Id"},"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"user_full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Full Name"}},"type":"object","required":["id","tenant_id","user_id"],"title":"TenantMembershipPublic","description":"Properties to return via API."},"TenantMembershipUpdate":{"properties":{"role":{"anyOf":[{"$ref":"#/components/schemas/Role"},{"type":"null"}]}},"type":"object","title":"TenantMembershipUpdate","description":"Properties to receive via API on update."},"TenantMembershipsPublic":{"properties":{"data":{"items":{"$ref":"#/components/schemas/TenantMembershipPublic"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["data","count"],"title":"TenantMembershipsPublic","description":"Collection response."},"TenantOnboardingPublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"schema_version":{"type":"integer","minimum":1.0,"title":"Schema Version","default":1},"auto_prompt_enabled":{"type":"boolean","title":"Auto Prompt Enabled","default":false},"sdk_language":{"anyOf":[{"$ref":"#/components/schemas/OnboardingSdkLanguage"},{"type":"null"}]},"key_strategy":{"anyOf":[{"$ref":"#/components/schemas/OnboardingKeyStrategy"},{"type":"null"}]},"id":{"type":"string","format":"uuid","title":"Id"},"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"},"project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"},"provider_catalog_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Provider Catalog Id"},"plan_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Plan Id"},"end_customer_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"End Customer Id"},"customer_key_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Customer Key Id"},"user_api_key_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"User Api Key Id"},"billing_template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Billing Template Id"},"credential_acknowledged_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Credential Acknowledged At"},"credential_acknowledged_by_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Credential Acknowledged By User Id"}},"type":"object","required":["id","tenant_id","project_id","provider_catalog_id","plan_id","end_customer_id","customer_key_id","user_api_key_id","billing_template_id","credential_acknowledged_at","credential_acknowledged_by_user_id"],"title":"TenantOnboardingPublic","description":"Safe shared onboarding state; key material is never included."},"TenantOnboardingStatusPublic":{"properties":{"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"},"lifecycle":{"$ref":"#/components/schemas/OnboardingLifecycle"},"activated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Activated At"},"onboarding":{"$ref":"#/components/schemas/TenantOnboardingPublic"},"user_state":{"$ref":"#/components/schemas/TenantOnboardingUserStatePublic"},"core_milestones":{"items":{"$ref":"#/components/schemas/OnboardingMilestonePublic"},"type":"array","title":"Core Milestones"},"readiness_milestones":{"items":{"$ref":"#/components/schemas/OnboardingMilestonePublic"},"type":"array","title":"Readiness Milestones"},"next_step":{"anyOf":[{"$ref":"#/components/schemas/OnboardingStep"},{"type":"null"}]}},"type":"object","required":["tenant_id","lifecycle","activated_at","onboarding","user_state","core_milestones","readiness_milestones","next_step"],"title":"TenantOnboardingStatusPublic","description":"Derived setup status for an organization and the current user."},"TenantOnboardingSummariesPublic":{"properties":{"data":{"items":{"$ref":"#/components/schemas/TenantOnboardingSummaryPublic"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["data","count"],"title":"TenantOnboardingSummariesPublic","description":"Collection of onboarding summaries available to the current user."},"TenantOnboardingSummaryPublic":{"properties":{"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"},"tenant_title":{"type":"string","title":"Tenant Title"},"auto_prompt_enabled":{"type":"boolean","title":"Auto Prompt Enabled"},"auto_prompted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Auto Prompted At"},"activated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Activated At"},"dismissed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Dismissed At"},"last_step":{"anyOf":[{"$ref":"#/components/schemas/OnboardingStep"},{"type":"null"}]}},"type":"object","required":["tenant_id","tenant_title","auto_prompt_enabled","auto_prompted_at","activated_at","dismissed_at","last_step"],"title":"TenantOnboardingSummaryPublic","description":"Dashboard-safe onboarding summary without resource or secret details."},"TenantOnboardingUpdate":{"properties":{"sdk_language":{"anyOf":[{"$ref":"#/components/schemas/OnboardingSdkLanguage"},{"type":"null"}]},"key_strategy":{"anyOf":[{"$ref":"#/components/schemas/OnboardingKeyStrategy"},{"type":"null"}]},"project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"},"provider_catalog_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Provider Catalog Id"},"plan_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Plan Id"},"end_customer_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"End Customer Id"},"customer_key_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Customer Key Id"},"user_api_key_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"User Api Key Id"},"billing_template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Billing Template Id"},"credential_acknowledged":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Credential Acknowledged"}},"type":"object","title":"TenantOnboardingUpdate","description":"Mutable onboarding selections; secrets are intentionally absent."},"TenantOnboardingUserStatePublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"last_step":{"anyOf":[{"$ref":"#/components/schemas/OnboardingStep"},{"type":"null"}]},"last_seen_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen At"},"auto_prompted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Auto Prompted At"},"dismissed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Dismissed At"},"notifications_reviewed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Notifications Reviewed At"},"partials_reviewed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Partials Reviewed At"},"id":{"type":"string","format":"uuid","title":"Id"},"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"}},"type":"object","required":["id","tenant_id","user_id"],"title":"TenantOnboardingUserStatePublic","description":"Safe personal onboarding presentation state."},"TenantOnboardingUserStateUpdate":{"properties":{"last_step":{"anyOf":[{"$ref":"#/components/schemas/OnboardingStep"},{"type":"null"}]},"dismiss":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Dismiss"},"mark_auto_prompted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Mark Auto Prompted"},"notifications_reviewed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Notifications Reviewed"},"partials_reviewed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Partials Reviewed"}},"type":"object","title":"TenantOnboardingUserStateUpdate","description":"Personal onboarding presentation updates."},"TenantPublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"title":{"type":"string","maxLength":255,"minLength":1,"title":"Title"},"id":{"type":"string","format":"uuid","title":"Id"},"personal_owner_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Personal Owner User Id"},"stripe_customer_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stripe Customer Id"},"first_usage_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"First Usage At"}},"type":"object","required":["title","id","personal_owner_user_id","stripe_customer_id","first_usage_at"],"title":"TenantPublic","description":"Properties to return via API."},"TenantSsoDiscoverPublic":{"properties":{"provider_id":{"type":"string","format":"uuid","title":"Provider Id"},"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"},"tenant_title":{"type":"string","title":"Tenant Title"},"provider_type":{"type":"string","title":"Provider Type"},"enforce_sso":{"type":"boolean","title":"Enforce Sso"}},"type":"object","required":["provider_id","tenant_id","tenant_title","provider_type","enforce_sso"],"title":"TenantSsoDiscoverPublic","description":"SSO discovery response used by login UX."},"TenantsPublic":{"properties":{"data":{"items":{"$ref":"#/components/schemas/TenantPublic"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["data","count"],"title":"TenantsPublic","description":"Collection response."},"Theme":{"type":"string","enum":["system","light","dark"],"title":"Theme","description":"Display theme preference for user accounts."},"Token":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"}},"type":"object","required":["access_token"],"title":"Token"},"UpdatePassword":{"properties":{"current_password":{"type":"string","maxLength":128,"minLength":8,"title":"Current Password"},"new_password":{"type":"string","maxLength":128,"minLength":8,"title":"New Password"}},"type":"object","required":["current_password","new_password"],"title":"UpdatePassword"},"UsageGuardrailCreate":{"properties":{"title":{"type":"string","maxLength":255,"minLength":1,"title":"Title","description":"Guardrail title"},"currency":{"$ref":"#/components/schemas/Currency","description":"Currency for cost thresholds"},"number_requests_threshold":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Number Requests Threshold","description":"Maximum number of requests allowed"},"input_tokens_threshold":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Input Tokens Threshold","description":"Maximum input tokens allowed"},"output_tokens_threshold":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Output Tokens Threshold","description":"Maximum output tokens allowed"},"total_tokens_threshold":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Total Tokens Threshold","description":"Maximum total tokens allowed"},"cached_tokens_threshold":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Cached Tokens Threshold","description":"Maximum cached tokens allowed"},"cost_threshold":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Cost Threshold","description":"Maximum cost allowed"},"usage_threshold_exceeded_criteria":{"$ref":"#/components/schemas/UsageThresholdExceededCriteria","description":"Criteria for threshold evaluation (any or all)"},"start_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Date","description":"When this guardrail becomes active (null = immediately active)"},"end_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Date","description":"When this guardrail expires (null = never expires)"},"cycle_type":{"$ref":"#/components/schemas/CycleType","description":"Type of recurring cycle for threshold resets","default":"none"},"cycle_duration_days":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Cycle Duration Days","description":"Duration in days for custom cycle type"},"cycle_anchor_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Cycle Anchor Date","description":"Reference date for cycle calculations (defaults to start_date)"},"end_customer_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"End Customer Id","description":"Customer this guardrail applies to"},"plan_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Plan Id","description":"Billing plan this default guardrail applies to"},"project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id","description":"Project this guardrail applies to"},"usage_threshold_exceeded_action_id":{"type":"string","format":"uuid","title":"Usage Threshold Exceeded Action Id","description":"Action to take when threshold exceeded"}},"type":"object","required":["title","currency","usage_threshold_exceeded_criteria","usage_threshold_exceeded_action_id"],"title":"UsageGuardrailCreate","description":"Properties for creating usage guardrails."},"UsageGuardrailPublic":{"properties":{"title":{"type":"string","maxLength":255,"minLength":1,"title":"Title","description":"Guardrail title"},"currency":{"$ref":"#/components/schemas/Currency","description":"Currency for cost thresholds"},"number_requests_threshold":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Number Requests Threshold","description":"Maximum number of requests allowed"},"input_tokens_threshold":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Input Tokens Threshold","description":"Maximum input tokens allowed"},"output_tokens_threshold":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Output Tokens Threshold","description":"Maximum output tokens allowed"},"total_tokens_threshold":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Total Tokens Threshold","description":"Maximum total tokens allowed"},"cached_tokens_threshold":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Cached Tokens Threshold","description":"Maximum cached tokens allowed"},"cost_threshold":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Cost Threshold","description":"Maximum cost allowed"},"usage_threshold_exceeded_criteria":{"$ref":"#/components/schemas/UsageThresholdExceededCriteria","description":"Criteria for threshold evaluation (any or all)"},"start_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Date","description":"When this guardrail becomes active (null = immediately active)"},"end_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Date","description":"When this guardrail expires (null = never expires)"},"cycle_type":{"$ref":"#/components/schemas/CycleType","description":"Type of recurring cycle for threshold resets","default":"none"},"cycle_duration_days":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Cycle Duration Days","description":"Duration in days for custom cycle type"},"cycle_anchor_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Cycle Anchor Date","description":"Reference date for cycle calculations (defaults to start_date)"},"id":{"type":"string","format":"uuid","title":"Id"},"owner_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner Id"},"end_customer_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"End Customer Id"},"plan_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Plan Id"},"project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"},"usage_threshold_exceeded_action_id":{"type":"string","format":"uuid","title":"Usage Threshold Exceeded Action Id"},"current_cycle_start":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Current Cycle Start"},"current_cycle_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Current Cycle End"},"current_usage":{"anyOf":[{"$ref":"#/components/schemas/GuardrailCurrentUsage"},{"type":"null"}]}},"type":"object","required":["title","currency","usage_threshold_exceeded_criteria","id","owner_id","end_customer_id","plan_id","project_id","usage_threshold_exceeded_action_id"],"title":"UsageGuardrailPublic","description":"Public properties for usage guardrails."},"UsageGuardrailUpdate":{"properties":{"title":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Title"},"currency":{"anyOf":[{"$ref":"#/components/schemas/Currency"},{"type":"null"}]},"number_requests_threshold":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Number Requests Threshold"},"input_tokens_threshold":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Input Tokens Threshold"},"output_tokens_threshold":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Output Tokens Threshold"},"total_tokens_threshold":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Total Tokens Threshold"},"cached_tokens_threshold":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Cached Tokens Threshold"},"cost_threshold":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Cost Threshold"},"usage_threshold_exceeded_criteria":{"anyOf":[{"$ref":"#/components/schemas/UsageThresholdExceededCriteria"},{"type":"null"}]},"usage_threshold_exceeded_action_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Usage Threshold Exceeded Action Id"},"start_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Date"},"end_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Date"},"cycle_type":{"anyOf":[{"$ref":"#/components/schemas/CycleType"},{"type":"null"}]},"cycle_duration_days":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Cycle Duration Days"},"cycle_anchor_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Cycle Anchor Date"}},"type":"object","title":"UsageGuardrailUpdate","description":"Properties for updating usage guardrails."},"UsageGuardrailsPublic":{"properties":{"data":{"items":{"$ref":"#/components/schemas/UsageGuardrailPublic"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["data","count"],"title":"UsageGuardrailsPublic","description":"Collection response for usage guardrails."},"UsageLogResponse":{"properties":{"event_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Id"},"status":{"type":"string","title":"Status","default":"accepted"},"cost_computed":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cost Computed"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"action":{"type":"string","title":"Action","default":"proceed"}},"type":"object","title":"UsageLogResponse"},"UsagePivotItem":{"properties":{"bucket":{"type":"string","title":"Bucket"},"requests":{"type":"number","title":"Requests"},"input_tokens":{"type":"number","title":"Input Tokens"},"output_tokens":{"type":"number","title":"Output Tokens"},"cached_tokens":{"type":"number","title":"Cached Tokens"},"total_cost":{"type":"number","title":"Total Cost"}},"type":"object","required":["bucket","requests","input_tokens","output_tokens","cached_tokens","total_cost"],"title":"UsagePivotItem"},"UsagePivotResponse":{"properties":{"total":{"type":"integer","title":"Total"},"items":{"items":{"$ref":"#/components/schemas/UsagePivotItem"},"type":"array","title":"Items"},"token_unit_size":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token Unit Size","description":"Presentation unit applied to token count fields; null means raw tokens."},"request_unit_size":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Unit Size","description":"Presentation unit applied to request count fields; null means raw requests."}},"type":"object","required":["total","items"],"title":"UsagePivotResponse"},"UsageThresholdExceededActionCreate":{"properties":{"action":{"$ref":"#/components/schemas/Action","description":"Action to take when threshold is exceeded"},"downgrade_request_target":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Downgrade Request Target","description":"Target service for downgrade (JSON string)"}},"type":"object","required":["action"],"title":"UsageThresholdExceededActionCreate"},"UsageThresholdExceededActionPublic":{"properties":{"action":{"$ref":"#/components/schemas/Action","description":"Action to take when threshold is exceeded"},"downgrade_request_target":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Downgrade Request Target","description":"Target service for downgrade (JSON string)"},"id":{"type":"string","format":"uuid","title":"Id"}},"type":"object","required":["action","id"],"title":"UsageThresholdExceededActionPublic"},"UsageThresholdExceededActionUpdate":{"properties":{"action":{"anyOf":[{"$ref":"#/components/schemas/Action"},{"type":"null"}]},"downgrade_request_target":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Downgrade Request Target"}},"type":"object","title":"UsageThresholdExceededActionUpdate"},"UsageThresholdExceededActionsPublic":{"properties":{"data":{"items":{"$ref":"#/components/schemas/UsageThresholdExceededActionPublic"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["data","count"],"title":"UsageThresholdExceededActionsPublic"},"UsageThresholdExceededCriteria":{"type":"string","enum":["any","all"],"title":"UsageThresholdExceededCriteria","description":"Criteria for determining if usage thresholds are exceeded."},"UserApiKeyCreate":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At","description":"Optional expiration date for the key"},"scopes":{"anyOf":[{"items":{"$ref":"#/components/schemas/UserApiKeyScope"},"type":"array"},{"type":"null"}],"title":"Scopes","description":"Optional permission scopes that restrict API key access"}},"type":"object","required":["name"],"title":"UserApiKeyCreate","description":"Properties for creating user API keys."},"UserApiKeyCreateResponse":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name","description":"User-friendly name for the key"},"is_active":{"type":"boolean","title":"Is Active","description":"Whether the key is active and can be used","default":true},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At","description":"Optional expiration date for the key"},"scopes":{"anyOf":[{"items":{"$ref":"#/components/schemas/UserApiKeyScope"},"type":"array"},{"type":"null"}],"title":"Scopes","description":"Optional permission scopes that restrict API key access"},"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"key_prefix":{"type":"string","title":"Key Prefix"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"deprecated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Deprecated At"},"deprecation_reason":{"anyOf":[{"$ref":"#/components/schemas/UserApiKeyDeprecationReason"},{"type":"null"}]},"replacement_key_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Replacement Key Id"},"key":{"type":"string","title":"Key","description":"Full key value - shown only once on creation. Store securely!"}},"type":"object","required":["name","id","user_id","key_prefix","last_used_at","deprecated_at","deprecation_reason","replacement_key_id","key"],"title":"UserApiKeyCreateResponse","description":"Response when creating a key - includes full key value (shown only once)."},"UserApiKeyDeprecationReason":{"type":"string","enum":["rotated","revoked"],"title":"UserApiKeyDeprecationReason","description":"Reasons a key can be marked as deprecated."},"UserApiKeyPublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name","description":"User-friendly name for the key"},"is_active":{"type":"boolean","title":"Is Active","description":"Whether the key is active and can be used","default":true},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At","description":"Optional expiration date for the key"},"scopes":{"anyOf":[{"items":{"$ref":"#/components/schemas/UserApiKeyScope"},"type":"array"},{"type":"null"}],"title":"Scopes","description":"Optional permission scopes that restrict API key access"},"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"key_prefix":{"type":"string","title":"Key Prefix"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"deprecated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Deprecated At"},"deprecation_reason":{"anyOf":[{"$ref":"#/components/schemas/UserApiKeyDeprecationReason"},{"type":"null"}]},"replacement_key_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Replacement Key Id"}},"type":"object","required":["name","id","user_id","key_prefix","last_used_at","deprecated_at","deprecation_reason","replacement_key_id"],"title":"UserApiKeyPublic","description":"Public properties for user API keys."},"UserApiKeyRotate":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At","description":"Optional expiration date for the replacement key"},"scopes":{"anyOf":[{"items":{"$ref":"#/components/schemas/UserApiKeyScope"},"type":"array"},{"type":"null"}],"title":"Scopes","description":"Optional scopes for the replacement key"},"revoke_old_key_immediately":{"type":"boolean","title":"Revoke Old Key Immediately","description":"Whether to revoke the rotated key immediately","default":true},"revoke_old_key_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoke Old Key At","description":"Optional future revocation timestamp for the rotated key"}},"type":"object","required":["name"],"title":"UserApiKeyRotate","description":"Properties for rotating a key into a replacement key."},"UserApiKeyRotateResponse":{"properties":{"rotated_key":{"$ref":"#/components/schemas/UserApiKeyPublic"},"replacement_key":{"$ref":"#/components/schemas/UserApiKeyCreateResponse"}},"type":"object","required":["rotated_key","replacement_key"],"title":"UserApiKeyRotateResponse","description":"Response payload for key rotation."},"UserApiKeyScope":{"type":"string","enum":["management:read","management:write","webhooks:read","webhooks:write","usage:write","billing:read","account:read"],"title":"UserApiKeyScope","description":"Supported user API key permission scopes."},"UserApiKeyUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Name"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"scopes":{"anyOf":[{"items":{"$ref":"#/components/schemas/UserApiKeyScope"},"type":"array"},{"type":"null"}],"title":"Scopes"}},"type":"object","title":"UserApiKeyUpdate","description":"Properties for updating user API keys."},"UserApiKeysPublic":{"properties":{"data":{"items":{"$ref":"#/components/schemas/UserApiKeyPublic"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["data","count"],"title":"UserApiKeysPublic","description":"Collection response for user API keys."},"UserMfaDisableRequest":{"properties":{"code":{"anyOf":[{"type":"string","maxLength":16,"minLength":6},{"type":"null"}],"title":"Code"},"recovery_code":{"anyOf":[{"type":"string","maxLength":128,"minLength":8},{"type":"null"}],"title":"Recovery Code"}},"type":"object","title":"UserMfaDisableRequest","description":"Disable MFA using either TOTP or one-time recovery code."},"UserMfaEnrollResponse":{"properties":{"secret":{"type":"string","title":"Secret"},"otpauth_uri":{"type":"string","title":"Otpauth Uri"},"recovery_codes":{"items":{"type":"string"},"type":"array","title":"Recovery Codes"}},"type":"object","required":["secret","otpauth_uri","recovery_codes"],"title":"UserMfaEnrollResponse","description":"Payload returned when starting MFA enrollment."},"UserMfaRecoveryCodesPublic":{"properties":{"recovery_codes":{"items":{"type":"string"},"type":"array","title":"Recovery Codes"}},"type":"object","required":["recovery_codes"],"title":"UserMfaRecoveryCodesPublic","description":"One-time recovery codes shown only once to user."},"UserMfaRegenerateRecoveryCodesRequest":{"properties":{"code":{"type":"string","maxLength":16,"minLength":6,"title":"Code"}},"type":"object","required":["code"],"title":"UserMfaRegenerateRecoveryCodesRequest","description":"Regenerate recovery codes after TOTP reauthentication."},"UserMfaVerifyRequest":{"properties":{"code":{"type":"string","maxLength":16,"minLength":6,"title":"Code"}},"type":"object","required":["code"],"title":"UserMfaVerifyRequest","description":"Verify code payload to complete MFA enrollment."},"UserProviderSettingCreate":{"properties":{"provider_name":{"type":"string","maxLength":255,"minLength":1,"title":"Provider Name"},"model_name":{"type":"string","maxLength":255,"minLength":1,"title":"Model Name"},"currency":{"$ref":"#/components/schemas/Currency"},"strategy_type":{"$ref":"#/components/schemas/ProviderPricingStrategy"},"markup_type":{"anyOf":[{"$ref":"#/components/schemas/ProviderMarkupType"},{"type":"null"}]},"markup_value":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Markup Value"},"custom_cost_per_request":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Custom Cost Per Request"},"custom_cost_per_input_token":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Custom Cost Per Input Token"},"custom_cost_per_output_token":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Custom Cost Per Output Token"},"custom_cost_per_cached_token":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Custom Cost Per Cached Token"},"pricing_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pricing Metadata"},"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"}},"type":"object","required":["provider_name","model_name","currency","strategy_type","tenant_id"],"title":"UserProviderSettingCreate"},"UserProviderSettingPublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"provider_name":{"type":"string","maxLength":255,"minLength":1,"title":"Provider Name"},"model_name":{"type":"string","maxLength":255,"minLength":1,"title":"Model Name"},"currency":{"$ref":"#/components/schemas/Currency","description":"Currency for pricing"},"strategy_type":{"$ref":"#/components/schemas/ProviderPricingStrategy","description":"Pricing strategy: passthrough, custom, or catalog_markup"},"markup_type":{"anyOf":[{"$ref":"#/components/schemas/ProviderMarkupType"},{"type":"null"}]},"markup_value":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Markup Value"},"custom_cost_per_request":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Custom Cost Per Request"},"custom_cost_per_input_token":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Custom Cost Per Input Token"},"custom_cost_per_output_token":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Custom Cost Per Output Token"},"custom_cost_per_cached_token":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Custom Cost Per Cached Token"},"pricing_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pricing Metadata"},"id":{"type":"string","format":"uuid","title":"Id"},"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"created_by_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Created By User Id"},"updated_by_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Updated By User Id"}},"type":"object","required":["provider_name","model_name","currency","strategy_type","id","tenant_id","user_id"],"title":"UserProviderSettingPublic"},"UserProviderSettingUpdate":{"properties":{"provider_name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Provider Name"},"model_name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Model Name"},"currency":{"anyOf":[{"$ref":"#/components/schemas/Currency"},{"type":"null"}]},"strategy_type":{"anyOf":[{"$ref":"#/components/schemas/ProviderPricingStrategy"},{"type":"null"}]},"markup_type":{"anyOf":[{"$ref":"#/components/schemas/ProviderMarkupType"},{"type":"null"}]},"markup_value":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Markup Value"},"custom_cost_per_request":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Custom Cost Per Request"},"custom_cost_per_input_token":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Custom Cost Per Input Token"},"custom_cost_per_output_token":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Custom Cost Per Output Token"},"custom_cost_per_cached_token":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Custom Cost Per Cached Token"},"pricing_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pricing Metadata"}},"type":"object","title":"UserProviderSettingUpdate"},"UserProviderSettingsPublic":{"properties":{"data":{"items":{"$ref":"#/components/schemas/UserProviderSettingPublic"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["data","count"],"title":"UserProviderSettingsPublic"},"UserProviderSourcePreferencePublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"},"provider_name":{"type":"string","maxLength":255,"minLength":1,"title":"Provider Name"},"model_name":{"type":"string","maxLength":255,"minLength":1,"title":"Model Name"},"preferred_source":{"$ref":"#/components/schemas/ProviderSourcePreference","default":"auto"},"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"created_by_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Created By User Id"},"updated_by_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Updated By User Id"}},"type":"object","required":["tenant_id","provider_name","model_name","id","user_id"],"title":"UserProviderSourcePreferencePublic"},"UserProviderSourcePreferenceUpsert":{"properties":{"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"},"provider_name":{"type":"string","maxLength":255,"minLength":1,"title":"Provider Name"},"model_name":{"type":"string","maxLength":255,"minLength":1,"title":"Model Name"},"preferred_source":{"$ref":"#/components/schemas/ProviderSourcePreference","default":"auto"}},"type":"object","required":["tenant_id","provider_name","model_name"],"title":"UserProviderSourcePreferenceUpsert"},"UserProviderSourcePreferencesPublic":{"properties":{"data":{"items":{"$ref":"#/components/schemas/UserProviderSourcePreferencePublic"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["data","count"],"title":"UserProviderSourcePreferencesPublic"},"UserPublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"email":{"type":"string","maxLength":255,"format":"email","title":"Email"},"is_active":{"type":"boolean","title":"Is Active","default":true},"full_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Full Name"},"allow_unregistered_usage_logging":{"type":"boolean","title":"Allow Unregistered Usage Logging","description":"Allow unresolved usage ingest when authenticated with user API key","default":false},"password_auth_enabled":{"type":"boolean","title":"Password Auth Enabled","default":true},"theme":{"anyOf":[{"$ref":"#/components/schemas/Theme","maxLength":20},{"type":"null"}]},"id":{"type":"string","format":"uuid","title":"Id"},"email_verified":{"type":"boolean","title":"Email Verified","default":false},"email_verified_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Email Verified At"},"mfa_enabled":{"type":"boolean","title":"Mfa Enabled","default":false},"platform_roles":{"items":{"$ref":"#/components/schemas/PlatformRole"},"type":"array","title":"Platform Roles","description":"Active platform roles held by the user."},"platform_permissions":{"items":{"type":"string"},"type":"array","title":"Platform Permissions","description":"Permissions derived from the user's active platform roles."}},"type":"object","required":["email","id"],"title":"UserPublic"},"UserRegister":{"properties":{"email":{"type":"string","maxLength":255,"format":"email","title":"Email"},"password":{"type":"string","maxLength":128,"minLength":8,"title":"Password"},"full_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Full Name"}},"type":"object","required":["email","password"],"title":"UserRegister"},"UserSessionSecurityPublic":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"session_family_id":{"type":"string","format":"uuid","title":"Session Family Id"},"refresh_expires_at":{"type":"string","format":"date-time","title":"Refresh Expires At"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoked At"},"revoked_reason":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Revoked Reason"},"last_seen_at":{"type":"string","format":"date-time","title":"Last Seen At"},"ip_address":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Ip Address"},"user_agent":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}],"title":"User Agent"},"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"is_current":{"type":"boolean","title":"Is Current","default":false}},"type":"object","required":["refresh_expires_at","id","user_id"],"title":"UserSessionSecurityPublic","description":"Security-focused user session representation with current-session marker."},"UserSessionsSecurityPublic":{"properties":{"data":{"items":{"$ref":"#/components/schemas/UserSessionSecurityPublic"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["data","count"],"title":"UserSessionsSecurityPublic","description":"Collection response for security overview user sessions."},"UserUpdateMe":{"properties":{"full_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Full Name"},"email":{"anyOf":[{"type":"string","maxLength":255,"format":"email"},{"type":"null"}],"title":"Email"},"allow_unregistered_usage_logging":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Allow Unregistered Usage Logging"},"theme":{"anyOf":[{"$ref":"#/components/schemas/Theme"},{"type":"null"}]}},"type":"object","title":"UserUpdateMe"},"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"}},"securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"/api/v1/login/access-token"}}}}}}
