{"openapi":"3.1.0","info":{"title":"hub","description":"OpenAPI documentation of the YAXI hub API","version":"0.1.0"},"servers":[{"url":"https://hub.yaxi.tech"}],"paths":{"/api/api-keys":{"post":{"tags":["API Keys"],"summary":"Create new API key","operationId":"create_api_key","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreatePayload"}}},"required":true},"responses":{"201":{"description":"API key created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKey"}}}},"404":{"description":"Tenant not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorPayload"}}}},"409":{"description":"API key name already in use","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorPayload"}}}},"422":{"description":"Validation of API key failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorPayload"}}}}},"security":[{"bearerAuth":[]}]}},"/api/api-keys/{id}":{"get":{"tags":["API Keys"],"summary":"Fetch API key by ID","operationId":"get_api_key_by_id","parameters":[{"name":"id","in":"path","description":"API key id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"API key found successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyPayload"}}}},"404":{"description":"API key was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorPayload"}}}}},"security":[{"bearerAuth":[]}]},"delete":{"tags":["API Keys"],"summary":"Delete API key by ID","operationId":"delete_api_key_by_id","parameters":[{"name":"id","in":"path","description":"API key ID","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"API key deleted successfully"},"404":{"description":"API key was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorPayload"}}}}},"security":[{"bearerAuth":[]}]}},"/api/tenant":{"get":{"tags":["Tenant"],"summary":"Fetch tenant","operationId":"get_tenant","responses":{"200":{"description":"Tenant found successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tenant"}}}}},"security":[{"bearerAuth":[]}]}},"/api/tenant-join-codes/{tenantId}":{"get":{"tags":["Tenant Join Codes"],"summary":"Fetch tenant join code by id","operationId":"get_tenant_join_code_by_id","parameters":[{"name":"tenantId","in":"path","description":"Tenant ID","required":true,"schema":{"type":"string"}},{"name":"secret","in":"query","description":"Tenant join code secret","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Tenant join code found successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantJoinCodeOverviewPayload"}}}},"404":{"description":"Tenant join code not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorPayload"}}}}}}},"/api/tenant/api-keys":{"get":{"tags":["Tenant"],"summary":"Fetch API keys of tenant","operationId":"get_all_api_keys_of_tenant","responses":{"200":{"description":"API keys fetched successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ApiKeyPayload"}}}}}},"security":[{"bearerAuth":[]}]}},"/api/tenant/fints-product-registration-number":{"put":{"tags":["Tenant"],"summary":"Updates the FinTS product registration number of the tenant","operationId":"update_tenant_fints_product_registration_number","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinTSProductRegistrationNumberPayload"}}},"required":true},"responses":{"200":{"description":"FinTS product registration number of tenant updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tenant"}}}},"422":{"description":"Validation of FinTS product registration number failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorPayload"}}}}},"security":[{"bearerAuth":[]}]}},"/api/tenant/join-codes":{"get":{"tags":["Tenant"],"summary":"Fetch join codes of tenant","operationId":"get_all_tenant_join_codes","responses":{"200":{"description":"Tenant join codes found successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TenantJoinCodePayload"}}}}}},"security":[{"bearerAuth":[]}]},"post":{"tags":["Tenant"],"summary":"Create new join code for tenant","operationId":"create_tenant_join_code","responses":{"200":{"description":"Tenant join code created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantJoinCode"}}}}},"security":[{"bearerAuth":[]}]}},"/api/tenant/name":{"put":{"tags":["Tenant"],"summary":"Updates the name of the tenant","operationId":"update_tenant_name","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantNamePayload"}}},"required":true},"responses":{"200":{"description":"Name of tenant updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tenant"}}}},"422":{"description":"Validation of tenant name failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorPayload"}}}}},"security":[{"bearerAuth":[]}]}},"/api/tenant/usage":{"get":{"tags":["Tenant"],"summary":"Get usage of tenant","operationId":"get_usage_of_tenant","parameters":[{"name":"from","in":"query","description":"Beginning of usage period (inclusive)","required":true,"schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","description":"End of usage period (inclusive)","required":true,"schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"Usage data found successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantUsage"}}}}},"security":[{"bearerAuth":[]}]}},"/api/tenant/users":{"get":{"tags":["Tenant"],"summary":"Fetch users of tenant","operationId":"get_all_users_of_tenant","responses":{"200":{"description":"Users of tenant found successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}},"security":[{"bearerAuth":[]}]}},"/api/tenant/verification-ticket":{"put":{"tags":["Tenant"],"summary":"Create verification ticket","operationId":"create_verification_ticket","responses":{"200":{"description":"Verification ticket fetched successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationTicketPayload"}}}}},"security":[{"bearerAuth":[]}]}},"/api/tenant/verify":{"put":{"tags":["Tenant"],"summary":"Verify account","operationId":"verify_account","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationResultPayload"}}},"required":true},"responses":{"200":{"description":"Account verified successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tenant"}}}},"422":{"description":"Payload contains faulty data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorPayload"}}}}},"security":[{"bearerAuth":[]}]}},"/api/tenants":{"get":{"tags":["Tenants"],"summary":"Fetch all tenants","operationId":"get_all_tenants","responses":{"200":{"description":"List of all tenants fetched successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Tenant"}}}}}},"security":[{"bearerAuth":[]}]}},"/api/tenants/usage":{"get":{"tags":["Tenants"],"summary":"Get usage of all tenants","operationId":"get_usage_of_all_tenants","parameters":[{"name":"from","in":"query","description":"Beginning of usage period (inclusive)","required":true,"schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","description":"End of usage period (inclusive)","required":true,"schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"Usage data found successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TenantUsage"}}}}}},"security":[{"bearerAuth":[]}]}},"/api/tenants/{id}":{"get":{"tags":["Tenants"],"summary":"Fetch tenant by ID","operationId":"get_tenant_by_id","parameters":[{"name":"id","in":"path","description":"Tenant id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Tenant found successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tenant"}}}},"404":{"description":"Tenant not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorPayload"}}}}},"security":[{"bearerAuth":[]}]}},"/api/tenants/{id}/environment-settings/{environment}":{"get":{"tags":["Tenants"],"summary":"Get environment settings of tenant","operationId":"get_environment_settings","parameters":[{"name":"id","in":"path","description":"Tenant ID","required":true,"schema":{"type":"string"}},{"name":"environment","in":"path","description":"Environment of settings","required":true,"schema":{"$ref":"#/components/schemas/ApiKeyEnvironment"}}],"responses":{"200":{"description":"Environment settings found successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentSettings"}}}},"404":{"description":"No settings for this tenant/environment found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorPayload"}}}}},"security":[{"bearerAuth":[]}]},"patch":{"tags":["Tenants"],"summary":"Patch environment settings of tenant","operationId":"patch_environment_settings","parameters":[{"name":"id","in":"path","description":"Tenant ID","required":true,"schema":{"type":"string"}},{"name":"environment","in":"path","description":"Environment of settings","required":true,"schema":{"$ref":"#/components/schemas/ApiKeyEnvironment"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentSettingsPatchPayload"}}},"required":true},"responses":{"200":{"description":"Service permissions patched successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentSettings"}}}},"404":{"description":"Tenant not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorPayload"}}}}},"security":[{"bearerAuth":[]}]}},"/api/tenants/{id}/name":{"put":{"tags":["Tenants"],"summary":"Updates the name of a tenant by ID","operationId":"update_tenant_name_by_id","parameters":[{"name":"id","in":"path","description":"Tenant ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantNamePayload"}}},"required":true},"responses":{"200":{"description":"Name of tenant updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tenant"}}}},"404":{"description":"Tenant was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorPayload"}}}},"422":{"description":"Validation of tenant name failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorPayload"}}}}},"security":[{"bearerAuth":[]}]}},"/api/tenants/{id}/plan":{"put":{"tags":["Tenants"],"summary":"Updates the plan of a tenant by ID","operationId":"update_tenant_plan_by_id","parameters":[{"name":"id","in":"path","description":"Tenant ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantPlanPayload"}}},"required":true},"responses":{"200":{"description":"Plan of tenant updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tenant"}}}},"404":{"description":"Tenant was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorPayload"}}}}},"security":[{"bearerAuth":[]}]}},"/api/tenants/{id}/usage":{"get":{"tags":["Tenants"],"summary":"Get usage of tenant by ID","operationId":"get_usage_of_tenant_by_id","parameters":[{"name":"id","in":"path","description":"Tenant ID","required":true,"schema":{"type":"string"}},{"name":"from","in":"query","description":"Beginning of usage period (inclusive)","required":true,"schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","description":"End of usage period (inclusive)","required":true,"schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"Usage data found successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantUsage"}}}},"404":{"description":"Tenant not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorPayload"}}}}},"security":[{"bearerAuth":[]}]}},"/api/users":{"post":{"tags":["Users"],"summary":"Create new user","operationId":"create_user","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreatePayload"}}},"required":true},"responses":{"201":{"description":"User created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"403":{"description":"ID Token invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorPayload"}}}},"409":{"description":"You already belong to an user","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorPayload"}}}}},"security":[{"bearerAuth":[]}]}},"/api/users/me":{"get":{"tags":["Users"],"summary":"Fetch yourself","operationId":"get_me","responses":{"200":{"description":"User found successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"404":{"description":"You do not belong to any user","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorPayload"}}}}},"security":[{"bearerAuth":[]}]}},"/api/users/me/join-tenant":{"post":{"tags":["Users"],"summary":"Join tenant","operationId":"join_tenant","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantJoinPayload"}}},"required":true},"responses":{"204":{"description":"Joined tenant successfully"},"409":{"description":"Tenant does not exist or join code invalid/expired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorPayload"}}}}},"security":[{"bearerAuth":[]}]}},"/api/users/{id}":{"get":{"tags":["Users"],"summary":"Fetch user by ID","operationId":"get_user_by_id","parameters":[{"name":"id","in":"path","description":"User ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"User found successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"404":{"description":"User not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorPayload"}}}}},"security":[{"bearerAuth":[]}]}},"/api/users/{id}/role":{"put":{"tags":["Users"],"summary":"Update user role","operationId":"update_user_role","parameters":[{"name":"id","in":"path","description":"User ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRolePayload"}}},"required":true},"responses":{"200":{"description":"User updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"404":{"description":"User not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpErrorPayload"}}}}},"security":[{"bearerAuth":[]}]}}},"components":{"schemas":{"ApiKey":{"type":"object","required":["id","createdAt","updatedAt","name","secret","environment","tenantId","hostSoftware","redirectScraping"],"properties":{"createdAt":{"type":"string","format":"date-time"},"customProperties":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/ApiKeyCustomProperties"}]},"environment":{"$ref":"#/components/schemas/ApiKeyEnvironment"},"expiresAt":{"type":["string","null"],"format":"date-time"},"fintsProductRegistrationNumber":{"type":["string","null"],"example":"A3C9D1E7F4B02A58CD670934E"},"hostSoftware":{"$ref":"#/components/schemas/ApiKeyHostSoftware"},"id":{"$ref":"#/components/schemas/ApiKeyId"},"name":{"type":"string","example":"my api key"},"redirectScraping":{"type":"boolean"},"secret":{"type":"string","format":"byte","example":"Mjc0ODczNzU4Mjc0ODIxMjgyNDcyODQ="},"servicePermissions":{"type":["array","null"],"items":{"$ref":"#/components/schemas/RoutexServiceId"}},"tenantId":{"$ref":"#/components/schemas/TenantId"},"updatedAt":{"type":"string","format":"date-time"}}},"ApiKeyCreatePayload":{"type":"object","required":["name","environment","hostSoftware","redirectScraping"],"properties":{"customProperties":{},"environment":{"$ref":"#/components/schemas/ApiKeyEnvironmentPayload"},"expiresAt":{"type":["string","null"],"format":"date-time"},"fintsProductRegistrationNumber":{"type":["string","null"],"example":"A3C9D1E7F4B02A58CD670934E"},"hostSoftware":{"$ref":"#/components/schemas/ApiKeyHostSoftware"},"name":{"type":"string","example":"my api key"},"redirectScraping":{"type":"boolean"},"servicePermissions":{"type":["array","null"],"items":{"$ref":"#/components/schemas/RoutexServiceId"},"uniqueItems":true}},"additionalProperties":false},"ApiKeyCustomProperties":{},"ApiKeyEnvironment":{"type":"string","enum":["Production","Integration","Test"]},"ApiKeyEnvironmentPayload":{"type":"string","enum":["Production","Integration"]},"ApiKeyHostSoftware":{"type":"string","enum":["Generic","MoneyMoney"]},"ApiKeyId":{"type":"string","examples":["api-key-b2de0846-8a9c-4bcf-bf24-145b18a04a4f"]},"ApiKeyPayload":{"type":"object","required":["id","createdAt","updatedAt","name","environment","tenantId","hostSoftware","redirectScraping"],"properties":{"createdAt":{"type":"string","format":"date-time"},"customProperties":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/ApiKeyCustomProperties"}]},"environment":{"$ref":"#/components/schemas/ApiKeyEnvironment"},"expiresAt":{"type":["string","null"],"format":"date-time"},"fintsProductRegistrationNumber":{"type":["string","null"],"example":"A3C9D1E7F4B02A58CD670934E"},"hostSoftware":{"$ref":"#/components/schemas/ApiKeyHostSoftware"},"id":{"$ref":"#/components/schemas/ApiKeyId"},"name":{"type":"string","example":"my api key"},"redirectScraping":{"type":"boolean"},"servicePermissions":{"type":["array","null"],"items":{"$ref":"#/components/schemas/RoutexServiceId"}},"tenantId":{"$ref":"#/components/schemas/TenantId"},"updatedAt":{"type":"string","format":"date-time"}}},"ConnectionId":{"type":"string","examples":["connection-b2de0846-8a9c-4bcf-bf24-145b18a04a4f"]},"EnvironmentSettings":{"type":"object","required":["tenantId","updatedAt","environment","extraConnections"],"properties":{"environment":{"$ref":"#/components/schemas/ApiKeyEnvironment"},"extraConnections":{"type":"array","items":{"$ref":"#/components/schemas/ConnectionId"}},"tenantId":{"$ref":"#/components/schemas/TenantId"},"updatedAt":{"type":"string","format":"date-time"}}},"EnvironmentSettingsPatchPayload":{"type":"object","required":["extraConnections"],"properties":{"extraConnections":{"type":"array","items":{"$ref":"#/components/schemas/ConnectionId"}}}},"EnvironmentUsage":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/ServiceUsage"},"propertyNames":{"type":"string","enum":["Accounts","CollectPayment","SnapshotDemo","Transactions","Balances","Transfer","Debtor"]}},"FinTSProductRegistrationNumberPayload":{"type":"object","properties":{"fintsProductRegistrationNumber":{"type":["string","null"],"example":"A3C9D1E7F4B02A58CD670934E"}},"additionalProperties":false},"HttpErrorPayload":{"type":"object","required":["status","title"],"properties":{"status":{"type":"integer","format":"int32","minimum":0},"title":{"type":"string"}}},"Plan":{"type":"string","enum":["Free","FreePlus","Enterprise"]},"RoutexServiceId":{"type":"string","enum":["Accounts","CollectPayment","SnapshotDemo","Transactions","Balances","Transfer"]},"ServiceUsage":{"type":"object","required":["fints","psd2"],"properties":{"fints":{"type":"integer","format":"int32","minimum":0},"psd2":{"type":"integer","format":"int32","minimum":0}}},"Tenant":{"type":"object","required":["id","createdAt","updatedAt","name","defaultName","servicePermissions","plan"],"properties":{"createdAt":{"type":"string","format":"date-time"},"createdBy":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/UserId"}]},"defaultName":{"type":"boolean"},"fintsProductRegistrationNumber":{"type":["string","null"],"example":"A3C9D1E7F4B02A58CD670934E"},"iban":{"type":["string","null"]},"id":{"$ref":"#/components/schemas/TenantId"},"kindeId":{"type":["string","null"],"example":"org_d4d77e130824a"},"name":{"$ref":"#/components/schemas/TenantName"},"ownerName":{"type":["string","null"]},"plan":{"$ref":"#/components/schemas/Plan"},"servicePermissions":{"type":"array","items":{"$ref":"#/components/schemas/RoutexServiceId"}},"updatedAt":{"type":"string","format":"date-time"},"verifiedAt":{"type":["string","null"],"format":"date-time"}}},"TenantId":{"type":"string","examples":["tenant-b2de0846-8a9c-4bcf-bf24-145b18a04a4f"]},"TenantJoinCode":{"type":"object","required":["tenantId","secret","createdAt","expiresAt","createdBy"],"properties":{"createdAt":{"type":"string","format":"date-time"},"createdBy":{"$ref":"#/components/schemas/UserId"},"expiresAt":{"type":"string","format":"date-time"},"secret":{"type":"string","example":"dzcVaDdTXPuX1Ex6FUpny2W5vyQfh_AP4y_ixv6F6oA"},"tenantId":{"$ref":"#/components/schemas/TenantId"},"usedAt":{"type":["string","null"],"format":"date-time"},"usedBy":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/UserId"}]}}},"TenantJoinCodeOverviewPayload":{"type":"object","required":["tenantName","expiresAt","createdBy"],"properties":{"createdBy":{"type":"string"},"expiresAt":{"type":"string","format":"date-time"},"tenantName":{"$ref":"#/components/schemas/TenantName"}}},"TenantJoinCodePayload":{"type":"object","required":["tenantId","createdAt","expiresAt","createdBy"],"properties":{"createdAt":{"type":"string","format":"date-time"},"createdBy":{"$ref":"#/components/schemas/UserId"},"expiresAt":{"type":"string","format":"date-time"},"tenantId":{"$ref":"#/components/schemas/TenantId"},"usedAt":{"type":["string","null"],"format":"date-time"},"usedBy":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/UserId"}]}}},"TenantJoinPayload":{"type":"object","required":["tenantId","secret"],"properties":{"secret":{"type":"string","example":"OWN1Tvvy10qTHwXabQDUs3oyA_PExb2MRzpkdkIpJNU"},"tenantId":{"$ref":"#/components/schemas/TenantId"}},"additionalProperties":false},"TenantName":{"type":"string"},"TenantNamePayload":{"type":"object","required":["name"],"properties":{"name":{"type":"string"}},"additionalProperties":false},"TenantPlanPayload":{"type":"object","required":["plan"],"properties":{"plan":{"$ref":"#/components/schemas/Plan"}},"additionalProperties":false},"TenantUsage":{"type":"object","required":["id","name","total","usage"],"properties":{"id":{"$ref":"#/components/schemas/TenantId"},"name":{"$ref":"#/components/schemas/TenantName"},"total":{"type":"integer","format":"int32","minimum":0},"usage":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/EnvironmentUsage"},"propertyNames":{"type":"string","enum":["Production","Integration","Test"]}}}},"UsageServiceId":{"type":"string","enum":["Accounts","CollectPayment","SnapshotDemo","Transactions","Balances","Transfer","Debtor"]},"User":{"type":"object","required":["id","createdAt","updatedAt","role","tenantId","kindeId","firstName","lastName","email"],"properties":{"createdAt":{"type":"string","format":"date-time"},"email":{"type":"string","example":"john@example.org"},"firstName":{"type":"string","example":"John"},"id":{"$ref":"#/components/schemas/UserId"},"kindeId":{"type":"string","example":"kp_5b9dd91cd00a102db3bbc07987be773e"},"lastName":{"type":"string","example":"Doe"},"role":{"$ref":"#/components/schemas/UserRole"},"tenantId":{"$ref":"#/components/schemas/TenantId"},"updatedAt":{"type":"string","format":"date-time"}}},"UserCreatePayload":{"type":"object","required":["idToken"],"properties":{"firstName":{"type":["string","null"],"example":"John"},"idToken":{"type":"string","example":"<jwt>"},"lastName":{"type":["string","null"],"example":"Doe"},"tenantName":{"type":["string","null"],"example":"My Company"}},"additionalProperties":false},"UserId":{"type":"string","examples":["user-b2de0846-8a9c-4bcf-bf24-145b18a04a4f"]},"UserRole":{"type":"string","enum":["TenantMember","TenantAdmin","YaxiAdmin"]},"UserRolePayload":{"type":"object","required":["role"],"properties":{"role":{"$ref":"#/components/schemas/UserRole"}},"additionalProperties":false},"VerificationResultPayload":{"type":"object","required":["result","accountIdx"],"properties":{"accountIdx":{"type":"integer","minimum":0},"result":{"type":"string"}},"additionalProperties":false},"VerificationTicketPayload":{"type":"object","required":["ticket"],"properties":{"ticket":{"type":"string"}}}},"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}}}}