{"openapi":"3.0.0","paths":{"/":{"get":{"operationId":"DocsController_index","parameters":[],"responses":{"200":{"description":""}},"tags":["Docs"]}},"/api/v1/health":{"get":{"operationId":"HealthController_getHealth","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthReportDto"}}}},"503":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthReportDto"}}}}},"summary":"Get aggregate service readiness","tags":["Health"]}},"/api/v1/health/live":{"get":{"operationId":"HealthController_getLiveness","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LivenessReportDto"}}}}},"summary":"Check whether the process is alive","tags":["Health"]}},"/api/v1/health/ready":{"get":{"operationId":"HealthController_getReadiness","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthReportDto"}}}},"503":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthReportDto"}}}}},"summary":"Check database and Redis readiness","tags":["Health"]}},"/api/v1/meta":{"get":{"operationId":"MetaController_getMeta","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MetaResponseDto"}}}]}}}}},"summary":"Get service metadata and version","tags":["Meta"]}},"/api/v1/meta/countries":{"get":{"operationId":"MetaController_getCountries","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CountryOptionDto"}}}}]}}}}},"summary":"Get supported countries","tags":["Meta"]}},"/api/v1/meta/organization-types":{"get":{"operationId":"MetaController_getOrganizationTypes","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MetaOptionDto"}}}}]}}}}},"summary":"Get supported organization types","tags":["Meta"]}},"/api/v1/meta/brand-categories":{"get":{"operationId":"MetaController_getBrandCategories","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MetaOptionDto"}}}}]}}}}},"summary":"Get supported brand categories","tags":["Meta"]}},"/api/v1/meta/legal-identities":{"get":{"operationId":"MetaController_getLegalIdentities","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MetaOptionDto"}}}}]}}}}},"summary":"Get supported legal identities","tags":["Meta"]}},"/api/v1/meta/currencies":{"get":{"operationId":"MetaController_getCurrencies","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CurrencyOptionDto"}}}}]}}}}},"summary":"Get supported currencies","tags":["Meta"]}},"/api/v1/auth/register":{"post":{"operationId":"AuthController_registerUser","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterUserDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PublicUserResponseDto"}}}]}}}}},"summary":"Register a user account","tags":["Auth"]}},"/api/v1/auth/register/organization":{"post":{"operationId":"AuthController_registerOrganization","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterOrganizationDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/OrganizationRegistrationResponseDto"}}}]}}}}},"summary":"Register an organization account","tags":["Auth"]}},"/api/v1/auth/login":{"post":{"operationId":"AuthController_login","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/TokenResponseDto"}}}]}}}}},"summary":"Login with email or username","tags":["Auth"]}},"/api/v1/auth/refresh":{"post":{"operationId":"AuthController_refresh","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshTokenDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/TokenResponseDto"}}}]}}}}},"summary":"Rotate refresh and access tokens","tags":["Auth"]}},"/api/v1/auth/logout":{"post":{"operationId":"AuthController_logout","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogoutDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"nullable":true,"example":null}}}]}}}}},"summary":"Logout the supplied refresh-token session","tags":["Auth"]}},"/api/v1/auth/me":{"get":{"operationId":"AuthController_me","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PublicUserResponseDto"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Get the authenticated user","tags":["Auth"]}},"/api/v1/auth/email/verify":{"post":{"operationId":"AuthController_verifyEmail","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyEmailCodeDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/EmailVerificationResponseDto"}}}]}}}}},"summary":"Verify email with a six-digit code","tags":["Auth"]}},"/api/v1/auth/email/resend":{"post":{"operationId":"AuthController_resendEmailCode","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResendEmailCodeDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"nullable":true,"example":null}}}]}}}}},"summary":"Resend an email verification code","tags":["Auth"]}},"/api/v1/auth/password/forgot":{"post":{"operationId":"AuthController_forgotPassword","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotPasswordDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"nullable":true,"example":null}}}]}}}}},"summary":"Request a password reset code","tags":["Auth"]}},"/api/v1/auth/password/reset":{"post":{"operationId":"AuthController_resetPassword","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPasswordDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"nullable":true,"example":null}}}]}}}}},"summary":"Reset a password with a six-digit code","tags":["Auth"]}},"/api/v1/auth/email/change-unverified":{"patch":{"operationId":"AuthController_changeUnverifiedEmail","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangeUnverifiedEmailDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PublicUserResponseDto"}}}]}}}}},"summary":"Change an unverified account email","tags":["Auth"]}},"/api/v1/auth/pin/status":{"get":{"operationId":"PinController_getStatus","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PinStatusResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Get the current user PIN status","tags":["Auth PIN"]}},"/api/v1/auth/pin/setup":{"post":{"operationId":"PinController_setup","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetupPinDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PinSetupResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Set up the security PIN","tags":["Auth PIN"]}},"/api/v1/auth/pin/verify":{"post":{"operationId":"PinController_verify","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyPinDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PinVerificationResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Verify the security PIN","tags":["Auth PIN"]}},"/api/v1/auth/pin/change":{"post":{"operationId":"PinController_changePin","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePinDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PinChangeResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Change the security PIN","tags":["Auth PIN"]}},"/api/v1/auth/pin/reset/request":{"post":{"operationId":"PinController_requestReset","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Request a PIN reset code","tags":["Auth PIN"]}},"/api/v1/auth/pin/reset":{"post":{"operationId":"PinController_resetPin","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPinDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PinResetResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Reset the security PIN","tags":["Auth PIN"]}},"/api/v1/auth/organization-context":{"get":{"operationId":"OrganizationContextController_getContext","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationContextResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Get the current user organization context","tags":["Auth Organization Context"]}},"/api/v1/auth/organization-context/default-workspace":{"patch":{"operationId":"OrganizationContextController_updateDefaultWorkspace","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["personal"]}},"additionalProperties":false},{"type":"object","required":["type","organizationId"],"properties":{"type":{"type":"string","enum":["organization"]},"organizationId":{"type":"string","format":"uuid"}},"additionalProperties":false}]}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationDefaultWorkspaceResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Update the default workspace","tags":["Auth Organization Context"]}},"/api/v1/auth/sessions":{"get":{"operationId":"AuthSessionsController_list","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SessionResponseDto"}}}}}},"security":[{"bearer":[]}],"summary":"List current user sessions and devices","tags":["Auth Sessions"]}},"/api/v1/auth/sessions/current":{"get":{"operationId":"AuthSessionsController_current","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Get the current session and device","tags":["Auth Sessions"]}},"/api/v1/auth/sessions/others":{"delete":{"operationId":"AuthSessionsController_revokeOthers","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevokeOtherSessionsResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Revoke all other sessions and devices","tags":["Auth Sessions"]}},"/api/v1/auth/sessions/{sessionId}":{"delete":{"operationId":"AuthSessionsController_revokeOne","parameters":[{"name":"sessionId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevokeSessionResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Revoke one session or device","tags":["Auth Sessions"]}},"/api/v1/organizations":{"post":{"description":"Creates a new organization workspace and makes the authenticated user its owner.","operationId":"OrganizationsController_createOrganization","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CreateOrganizationResponseDto"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Create an organization for the authenticated user","tags":["Organizations"]}},"/api/v1/organizations/{organizationId}/access-context":{"get":{"operationId":"OrganizationAccessContextController_getAccessContext","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/OrganizationAccessContextResponseDto"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Get current user organization access context","tags":["Organization Access"]}},"/api/v1/organizations/{organizationId}/invitations":{"post":{"operationId":"OrganizationInvitationsController_create","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationInvitationDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"nullable":true,"example":null}}}]}}}}},"security":[{"bearer":[]}],"summary":"Invite a user to an organization","tags":["Organization Invitations"]},"get":{"operationId":"OrganizationInvitationsController_list","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Page number.","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"limit","required":false,"in":"query","description":"Number of records per page.","schema":{"minimum":1,"maximum":100,"default":20,"example":20,"type":"number"}},{"name":"sortOrder","required":false,"in":"query","schema":{"default":"desc","type":"string","enum":["asc","desc"]}},{"name":"status","required":false,"in":"query","description":"Filter invitations by their effective invitation status.","schema":{"type":"string","enum":["pending","accepted","declined","cancelled","expired"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"nullable":true,"example":null}}}]}}}}},"security":[{"bearer":[]}],"summary":"List organization invitations","tags":["Organization Invitations"]}},"/api/v1/organizations/{organizationId}/invitations/{invitationId}/resend":{"post":{"operationId":"OrganizationInvitationsController_resend","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"invitationId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"nullable":true,"example":null}}}]}}}}},"security":[{"bearer":[]}],"summary":"Resend an organization invitation","tags":["Organization Invitations"]}},"/api/v1/organizations/{organizationId}/invitations/{invitationId}":{"delete":{"operationId":"OrganizationInvitationsController_cancel","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"invitationId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"nullable":true,"example":null}}}]}}}}},"security":[{"bearer":[]}],"summary":"Cancel an organization invitation","tags":["Organization Invitations"]}},"/api/v1/organization-invitations/verify-code":{"post":{"operationId":"OrganizationInvitationActionsController_verifyCode","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyOrganizationInvitationCodeDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"nullable":true,"example":null}}}]}}}}},"summary":"Verify an organization invitation code","tags":["Organization Invitation Actions"]}},"/api/v1/organization-invitations/accept":{"post":{"operationId":"OrganizationInvitationActionsController_acceptByProof","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptOrganizationInvitationByProofDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"nullable":true,"example":null}}}]}}}}},"security":[{"bearer":[]}],"summary":"Accept an invitation using a verified invitation proof","tags":["Organization Invitation Actions"]}},"/api/v1/organization-invitations/decline":{"post":{"operationId":"OrganizationInvitationActionsController_declineByProof","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationInvitationProofDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"nullable":true,"example":null}}}]}}}}},"summary":"Decline an invitation using a verified invitation proof","tags":["Organization Invitation Actions"]}},"/api/v1/organization-invitations/{token}":{"get":{"operationId":"OrganizationInvitationActionsController_preview","parameters":[{"name":"token","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"nullable":true,"example":null}}}]}}}}},"summary":"Preview an organization invitation","tags":["Organization Invitation Actions"]}},"/api/v1/organization-invitations/{token}/accept":{"post":{"operationId":"OrganizationInvitationActionsController_accept","parameters":[{"name":"token","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptOrganizationInvitationDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"nullable":true,"example":null}}}]}}}}},"security":[{"bearer":[]}],"summary":"Accept an organization invitation from its email link","tags":["Organization Invitation Actions"]}},"/api/v1/organization-invitations/{token}/decline":{"post":{"operationId":"OrganizationInvitationActionsController_decline","parameters":[{"name":"token","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"nullable":true,"example":null}}}]}}}}},"summary":"Decline an organization invitation from its email link","tags":["Organization Invitation Actions"]}},"/api/v1/me/organization-invitations":{"get":{"operationId":"MyOrganizationInvitationsController_list","parameters":[{"name":"page","required":false,"in":"query","description":"Page number.","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"limit","required":false,"in":"query","description":"Number of records per page.","schema":{"minimum":1,"maximum":100,"default":20,"example":20,"type":"number"}},{"name":"sortOrder","required":false,"in":"query","schema":{"default":"desc","type":"string","enum":["asc","desc"]}},{"name":"status","required":false,"in":"query","description":"Filter invitations by their effective invitation status.","schema":{"type":"string","enum":["pending","accepted","declined","cancelled","expired"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"nullable":true,"example":null}}}]}}}}},"security":[{"bearer":[]}],"summary":"List organization invitations for the current user","tags":["My Organization Invitations"]}},"/api/v1/me/organization-invitations/{invitationId}/accept":{"post":{"operationId":"MyOrganizationInvitationsController_accept","parameters":[{"name":"invitationId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptOrganizationInvitationDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"nullable":true,"example":null}}}]}}}}},"security":[{"bearer":[]}],"summary":"Accept one of the current user organization invitations","tags":["My Organization Invitations"]}},"/api/v1/me/organization-invitations/{invitationId}/decline":{"post":{"operationId":"MyOrganizationInvitationsController_decline","parameters":[{"name":"invitationId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"nullable":true,"example":null}}}]}}}}},"security":[{"bearer":[]}],"summary":"Decline one of the current user organization invitations","tags":["My Organization Invitations"]}},"/api/v1/organizations/{organizationId}/members":{"get":{"operationId":"OrganizationMembersController_listMembers","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Page number.","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"limit","required":false,"in":"query","description":"Number of records per page.","schema":{"minimum":1,"maximum":100,"default":20,"example":20,"type":"number"}},{"name":"sortOrder","required":false,"in":"query","schema":{"default":"desc","type":"string","enum":["asc","desc"]}},{"name":"search","required":false,"in":"query","description":"Search by member username, first name, last name, or email address.","schema":{"example":"chidi","type":"string"}},{"name":"status","required":false,"in":"query","description":"Filter members by membership status.","schema":{"type":"string","enum":["active","invited","suspended","removed"]}},{"name":"roleId","required":false,"in":"query","description":"Filter members by organization role.","schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationMemberResponseDto"}}}}]}}}}},"security":[{"bearer":[]}],"summary":"List organization members","tags":["Organization Members"]}},"/api/v1/organizations/{organizationId}/members/{membershipId}":{"get":{"operationId":"OrganizationMembersController_getMember","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"membershipId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/OrganizationMemberResponseDto"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Get an organization member","tags":["Organization Members"]},"delete":{"operationId":"OrganizationMembersController_removeMember","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"membershipId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/OrganizationMemberRemovalResponseDto"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Remove an organization member","tags":["Organization Members"]}},"/api/v1/organizations/{organizationId}/members/{membershipId}/role":{"patch":{"operationId":"OrganizationMembersController_updateMemberRole","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"membershipId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOrganizationMemberRoleDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/OrganizationMemberResponseDto"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Update an organization member role","tags":["Organization Members"]}},"/api/v1/organizations/{organizationId}/members/{membershipId}/status":{"patch":{"operationId":"OrganizationMembersController_updateMemberStatus","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"membershipId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOrganizationMemberStatusDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/OrganizationMemberResponseDto"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Suspend or reactivate an organization member","tags":["Organization Members"]}},"/api/v1/organizations/{organizationId}/leave":{"post":{"operationId":"OrganizationMembershipActionsController_leaveOrganization","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/OrganizationLeaveResponseDto"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Leave an organization","tags":["Organization Membership"]}},"/api/v1/organizations/{organizationId}/ownership/transfer":{"post":{"operationId":"OrganizationOwnershipController_transferOwnership","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferOrganizationOwnershipDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/OrganizationOwnershipTransferResponseDto"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Transfer organization ownership to another member","tags":["Organization Ownership"]}},"/api/v1/organizations/{organizationId}/roles":{"get":{"operationId":"OrganizationRolesController_listRoles","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationRoleResponseDto"}}}}]}}}}},"security":[{"bearer":[]}],"summary":"List organization roles","tags":["Organization Roles"]},"post":{"operationId":"OrganizationRolesController_createRole","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationRoleDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/OrganizationRoleResponseDto"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Create an organization role","tags":["Organization Roles"]}},"/api/v1/organizations/{organizationId}/roles/{roleId}":{"get":{"operationId":"OrganizationRolesController_getRole","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"roleId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/OrganizationRoleResponseDto"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Get an organization role","tags":["Organization Roles"]},"patch":{"operationId":"OrganizationRolesController_updateRole","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"roleId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOrganizationRoleDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/OrganizationRoleResponseDto"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Update an organization role","tags":["Organization Roles"]},"delete":{"operationId":"OrganizationRolesController_deleteRole","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"roleId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/OrganizationRoleDeletionResponseDto"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Delete an organization role","tags":["Organization Roles"]}},"/api/v1/organizations/{organizationId}/roles/{roleId}/permissions":{"put":{"operationId":"OrganizationRolesController_replaceRolePermissions","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"roleId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOrganizationRolePermissionsDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/OrganizationRoleResponseDto"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Replace an organization role permission set","tags":["Organization Roles"]}},"/api/v1/organizations/{organizationId}/permissions":{"get":{"operationId":"OrganizationPermissionsController_listPermissions","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationPermissionResponseDto"}}}}]}}}}},"security":[{"bearer":[]}],"summary":"List permissions available to organization roles","tags":["Organization Permissions"]}},"/api/v1/organizations/{organizationId}/smart-wallet/owner-candidates":{"get":{"operationId":"OrganizationSmartWalletController_listOwnerCandidates","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"chainId","required":false,"in":"query","schema":{"minimum":1,"example":11155111,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SmartWalletSignerCandidateResponseDto"}}}}]}}}}},"security":[{"bearer":[]}],"summary":"List organization members with eligible smart-wallet signer wallets","tags":["Organization Smart Wallet"]}},"/api/v1/organizations/{organizationId}/smart-wallet/delegate-candidates":{"get":{"operationId":"OrganizationSmartWalletController_listDelegateCandidates","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"chainId","required":false,"in":"query","schema":{"minimum":1,"example":11155111,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SmartWalletSignerCandidateResponseDto"}}}}]}}}}},"security":[{"bearer":[]}],"summary":"List organization members with eligible delegate signer wallets","tags":["Organization Smart Wallet"]}},"/api/v1/organizations/{organizationId}/smart-wallet":{"post":{"operationId":"OrganizationSmartWalletController_create","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"idempotency-key","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSmartWalletDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/OrganizationSmartWalletResponseDto"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Create an organization smart wallet","tags":["Organization Smart Wallet"]},"get":{"operationId":"OrganizationSmartWalletController_get","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/OrganizationSmartWalletResponseDto"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Get the organization smart wallet","tags":["Organization Smart Wallet"]}},"/api/v1/organizations/{organizationId}/smart-wallet/status":{"get":{"operationId":"OrganizationSmartWalletController_getStatus","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SmartWalletStatusResponseDto"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Get smart wallet status for polling","tags":["Organization Smart Wallet"]}},"/api/v1/organizations/{organizationId}/smart-wallet/deployment-intents/{deploymentIntentId}/execute":{"post":{"operationId":"OrganizationSmartWalletController_executeDeploymentIntent","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"deploymentIntentId","required":true,"in":"path","schema":{"type":"string"}},{"name":"idempotency-key","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"nullable":true,"example":null}}}]}}}}},"security":[{"bearer":[]}],"summary":"Execute the organization Safe deployment intent","tags":["Organization Smart Wallet"]}},"/api/v1/organizations/{organizationId}/smart-wallet/modules/delegated-spending/enable":{"post":{"operationId":"OrganizationSmartWalletController_enableDelegatedSpendingModule","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"idempotency-key","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SmartWalletSafeRequestResponseDto"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Enable delegated spending for the smart wallet","tags":["Organization Smart Wallet"]}},"/api/v1/organizations/{organizationId}/smart-wallet/modules/delegated-spending/disable":{"post":{"operationId":"OrganizationSmartWalletController_disableDelegatedSpendingModule","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"idempotency-key","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SmartWalletSafeRequestResponseDto"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Disable delegated spending for the smart wallet","tags":["Organization Smart Wallet"]}},"/api/v1/organizations/{organizationId}/smart-wallet/owners":{"get":{"operationId":"OrganizationSmartWalletController_listOwners","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"nullable":true,"example":null}}}]}}}}},"security":[{"bearer":[]}],"summary":"List smart wallet owners","tags":["Organization Smart Wallet"]},"post":{"operationId":"OrganizationSmartWalletController_addOwner","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"idempotency-key","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddSmartWalletOwnerDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SmartWalletSafeRequestResponseDto"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Request adding an owner to the smart wallet","tags":["Organization Smart Wallet"]}},"/api/v1/organizations/{organizationId}/smart-wallet/owners/{ownerId}":{"delete":{"operationId":"OrganizationSmartWalletController_removeOwner","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"ownerId","required":true,"in":"path","schema":{"type":"string"}},{"name":"idempotency-key","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SmartWalletSafeRequestResponseDto"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Request removing an owner from the smart wallet","tags":["Organization Smart Wallet"]}},"/api/v1/organizations/{organizationId}/smart-wallet/threshold-change":{"post":{"operationId":"OrganizationSmartWalletController_changeThreshold","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"idempotency-key","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangeSmartWalletThresholdDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SmartWalletSafeRequestResponseDto"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Request a smart wallet threshold change","tags":["Organization Smart Wallet"]}},"/api/v1/organizations/{organizationId}/smart-wallet/safe-requests/{safeRequestId}":{"get":{"operationId":"OrganizationSmartWalletController_getSafeRequest","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"safeRequestId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SmartWalletSafeRequestResponseDto"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Get a Safe transaction request","tags":["Organization Smart Wallet"]}},"/api/v1/organizations/{organizationId}/smart-wallet/safe-requests/{safeRequestId}/execute":{"post":{"operationId":"OrganizationSmartWalletController_executeSafeRequest","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"safeRequestId","required":true,"in":"path","schema":{"type":"string"}},{"name":"idempotency-key","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"nullable":true,"example":null}}}]}}}}},"security":[{"bearer":[]}],"summary":"Execute a threshold-ready Safe request","tags":["Organization Smart Wallet"]}},"/api/v1/organizations/{organizationId}/smart-wallet/contract-calls/{contractCallId}":{"get":{"operationId":"OrganizationSmartWalletController_getContractCall","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"contractCallId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"nullable":true,"example":null}}}]}}}}},"security":[{"bearer":[]}],"summary":"Get a Wallet Service contract-call status","tags":["Organization Smart Wallet"]}},"/api/v1/organizations/{organizationId}/smart-wallet/delegates":{"get":{"operationId":"OrganizationSmartWalletController_listDelegates","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"nullable":true,"example":null}}}]}}}}},"security":[{"bearer":[]}],"summary":"List organization smart-wallet delegates","tags":["Organization Smart Wallet"]},"post":{"operationId":"OrganizationSmartWalletController_addDelegate","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"idempotency-key","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddSmartWalletDelegateDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"nullable":true,"example":null}}}]}}}}},"security":[{"bearer":[]}],"summary":"Add a delegate to the smart wallet","tags":["Organization Smart Wallet"]}},"/api/v1/organizations/{organizationId}/smart-wallet/delegates/{delegateId}/policy":{"patch":{"operationId":"OrganizationSmartWalletController_updateDelegatePolicy","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"delegateId","required":true,"in":"path","schema":{"type":"string"}},{"name":"idempotency-key","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSmartWalletDelegatePolicyDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SmartWalletSafeRequestResponseDto"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Set the delegate LBT spending policy","tags":["Organization Smart Wallet"]}},"/api/v1/organizations/{organizationId}/smart-wallet/delegates/{delegateId}/targets":{"get":{"operationId":"OrganizationSmartWalletController_listDelegateTargets","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"delegateId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"nullable":true,"example":null}}}]}}}}},"security":[{"bearer":[]}],"summary":"List delegate allowed targets","tags":["Organization Smart Wallet"]},"post":{"operationId":"OrganizationSmartWalletController_addDelegateTarget","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"delegateId","required":true,"in":"path","schema":{"type":"string"}},{"name":"idempotency-key","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddSmartWalletDelegateTargetDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SmartWalletSafeRequestResponseDto"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Add a delegate allowed target","tags":["Organization Smart Wallet"]}},"/api/v1/organizations/{organizationId}/smart-wallet/delegates/{delegateId}/disable":{"post":{"operationId":"OrganizationSmartWalletController_disableDelegate","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"delegateId","required":true,"in":"path","schema":{"type":"string"}},{"name":"idempotency-key","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SmartWalletSafeRequestResponseDto"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Disable a smart wallet delegate","tags":["Organization Smart Wallet"]}},"/api/v1/organizations/{organizationId}/smart-wallet/delegates/{delegateId}/targets/{targetId}":{"delete":{"operationId":"OrganizationSmartWalletController_removeDelegateTarget","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"delegateId","required":true,"in":"path","schema":{"type":"string"}},{"name":"targetId","required":true,"in":"path","schema":{"type":"string"}},{"name":"idempotency-key","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SmartWalletSafeRequestResponseDto"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Remove an allowed target from a billing delegate","tags":["Organization Smart Wallet"]}},"/api/v1/organizations/{organizationId}/smart-wallet/delegated-payment-intents":{"post":{"operationId":"OrganizationSmartWalletController_createDelegatedPaymentIntent","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"idempotency-key","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDelegatedPaymentIntentDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"nullable":true,"example":null}}}]}}}}},"security":[{"bearer":[]}],"summary":"Create an LBT delegated payment intent","tags":["Organization Smart Wallet"]}},"/api/v1/organizations/{organizationId}/smart-wallet/delegated-payment-intents/{intentId}":{"get":{"operationId":"OrganizationSmartWalletController_getDelegatedPaymentIntent","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"intentId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"nullable":true,"example":null}}}]}}}}},"security":[{"bearer":[]}],"summary":"Get a delegated payment intent","tags":["Organization Smart Wallet"]}},"/api/v1/organizations/{organizationId}/smart-wallet/owner-payment-requests":{"post":{"operationId":"OrganizationSmartWalletController_createOwnerPaymentRequest","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"idempotency-key","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOwnerPaymentRequestDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SmartWalletSafeRequestResponseDto"}}}]}}}}},"security":[{"bearer":[]}],"summary":"Create an LBT owner-approved payment request","tags":["Organization Smart Wallet"]}},"/api/v1/organizations/{organizationId}/smart-wallet/sync":{"post":{"operationId":"OrganizationSmartWalletController_sync","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ApiSuccessResponseDto"},{"type":"object","properties":{"data":{"nullable":true,"example":null}}}]}}}}},"security":[{"bearer":[]}],"summary":"Synchronize smart wallet state from chain","tags":["Organization Smart Wallet"]}},"/api/v1/organizations/{organizationId}/collections":{"post":{"operationId":"OrganizationCollectionsController_create","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationCollectionDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Create a collection for an organization","tags":["Organization Collections"]},"get":{"operationId":"OrganizationCollectionsController_findAll","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CollectionListItemDto"}}}}}},"security":[{"bearer":[]}],"summary":"List collections for an organization","tags":["Organization Collections"]}},"/api/v1/organizations/{organizationId}/collections/{collectionId}":{"get":{"operationId":"OrganizationCollectionsController_findOne","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"collectionId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Get an organization collection","tags":["Organization Collections"]}},"/api/v1/organizations/{organizationId}/collectibles":{"get":{"operationId":"OrganizationCollectiblesController_findAll","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CollectibleListItemDto"}}}}}},"security":[{"bearer":[]}],"summary":"List collectibles for an organization","tags":["Organization Collectibles"]},"post":{"operationId":"OrganizationCollectiblesController_create","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationCollectibleDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectibleResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Create an organization collectible","tags":["Organization Collectibles"]}},"/api/v1/organizations/{organizationId}/collectibles/{collectibleId}":{"get":{"operationId":"OrganizationCollectiblesController_findOne","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string"}},{"name":"collectibleId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectibleResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Get an organization collectible","tags":["Organization Collectibles"]}}},"info":{"title":"HOL Wallet User API","description":"lbt-hol-api provides authentication, organization, collection, and collectible APIs for HOL Wallet.","version":"0.0.1","contact":{}},"tags":[],"servers":[],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{"ServiceHealthDto":{"type":"object","properties":{"name":{"type":"string","example":"lbt-user-api"},"env":{"type":"string","example":"production"},"version":{"type":"string","example":"1.0.0"}},"required":["name","env","version"]},"ComponentHealthDto":{"type":"object","properties":{"status":{"type":"string","enum":["up","down"],"example":"up"},"details":{"type":"object","additionalProperties":true,"example":{"isInitialized":true}}},"required":["status"]},"HealthChecksDto":{"type":"object","properties":{"app":{"$ref":"#/components/schemas/ComponentHealthDto"},"db":{"$ref":"#/components/schemas/ComponentHealthDto"},"redis":{"$ref":"#/components/schemas/ComponentHealthDto"}},"required":["app","db","redis"]},"HealthReportDto":{"type":"object","properties":{"status":{"type":"string","enum":["up","down"],"example":"up"},"timestamp":{"type":"string","example":"2026-07-30T14:00:00.000Z"},"service":{"$ref":"#/components/schemas/ServiceHealthDto"},"checks":{"$ref":"#/components/schemas/HealthChecksDto"}},"required":["status","timestamp","service","checks"]},"LivenessReportDto":{"type":"object","properties":{"status":{"type":"string","enum":["up"],"example":"up"},"timestamp":{"type":"string","example":"2026-07-30T14:00:00.000Z"},"uptimeSeconds":{"type":"number","example":123.4}},"required":["status","timestamp","uptimeSeconds"]},"ApiSuccessResponseDto":{"type":"object","properties":{"success":{"type":"boolean","example":true},"message":{"type":"string","example":"Request successful."},"data":{"type":"object","nullable":true},"meta":{"type":"object","nullable":true},"requestId":{"type":"object","nullable":true,"example":"0f25c2d8-7056-4a8e-935f-2c923f11315a"},"timestamp":{"type":"string","example":"2026-07-30T12:00:00.000Z"}},"required":["success","message","data","requestId","timestamp"]},"MetaResponseDto":{"type":"object","properties":{"name":{"type":"string","example":"lbt-user-api"},"env":{"type":"string","example":"production"},"version":{"type":"string","example":"1.0.0"},"gitSha":{"type":"object","example":"c0ffee1","nullable":true},"timestamp":{"type":"string","example":"2026-07-30T14:00:00.000Z"}},"required":["name","env","version","gitSha","timestamp"]},"CountryOptionDto":{"type":"object","properties":{"code":{"type":"string","example":"GB","minLength":2,"maxLength":2},"name":{"type":"string","example":"United Kingdom"}},"required":["code","name"]},"MetaOptionDto":{"type":"object","properties":{"value":{"type":"string","example":"merchant"},"label":{"type":"string","example":"Merchant"}},"required":["value","label"]},"CurrencyOptionDto":{"type":"object","properties":{"value":{"type":"string","example":"GBP","description":"ISO-style three-character currency code used by API requests."},"label":{"type":"string","example":"British Pound Sterling"},"symbol":{"type":"object","example":"£","nullable":true},"decimalPlaces":{"type":"number","example":2,"minimum":0}},"required":["value","label","decimalPlaces"]},"DefaultWorkspaceResponseDto":{"type":"object","properties":{"type":{"type":"string","enum":["personal","organization"]},"organizationId":{"type":"object","nullable":true}},"required":["type","organizationId"]},"PublicUserResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"username":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"email":{"type":"string","format":"email"},"emailVerified":{"type":"boolean"},"primaryRole":{"type":"string","enum":["user","admin","superadmin"]},"roles":{"type":"array","items":{"type":"string","enum":["user","admin","superadmin"]}},"status":{"type":"string","enum":["pending","active","suspended","disabled"]},"defaultWorkspace":{"$ref":"#/components/schemas/DefaultWorkspaceResponseDto"}},"required":["id","username","firstName","lastName","email","emailVerified","primaryRole","roles","status","defaultWorkspace"]},"RegisterUserDto":{"type":"object","properties":{"username":{"type":"string","example":"johndoe","minLength":3,"maxLength":40,"description":"Unique lowercase username using letters, numbers, and underscores."},"firstName":{"type":"string","example":"John","minLength":2,"maxLength":80},"lastName":{"type":"string","example":"Doe","minLength":2,"maxLength":80},"email":{"type":"string","example":"john@example.com","maxLength":254},"password":{"type":"string","example":"StrongPassword1!","format":"password","writeOnly":true},"confirmPassword":{"type":"string","example":"StrongPassword1!","format":"password","writeOnly":true},"countryCode":{"type":"string","example":"GB","minLength":2,"maxLength":2},"referralCode":{"type":"string","example":"REF123","maxLength":40},"currencyCode":{"type":"string","example":"GBP","description":"Three-character currency code. Must be an active platform-supported currency."}},"required":["username","firstName","lastName","email","password","confirmPassword","countryCode"]},"RegisteredOrganizationResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":"string"},"organizationType":{"type":"string","enum":["merchant","cinema","restaurant","school","church","event_organiser","charity","hotel","supermarket","creator","brand","reseller_business","enterprise_partner","other"]},"status":{"type":"string","enum":["pending","active","suspended","disabled","archived"]},"kycStatus":{"type":"string","enum":["not_required","pending","approved","rejected"]}},"required":["id","name","slug","organizationType","status","kycStatus"]},"OrganizationMembershipResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"role":{"type":"string"},"status":{"type":"string","enum":["active","invited","suspended","removed"]}},"required":["id","role","status"]},"OrganizationRegistrationResponseDto":{"type":"object","properties":{"user":{"$ref":"#/components/schemas/PublicUserResponseDto"},"organization":{"$ref":"#/components/schemas/RegisteredOrganizationResponseDto"},"membership":{"$ref":"#/components/schemas/OrganizationMembershipResponseDto"}},"required":["user","organization","membership"]},"RegisterOrganizationDto":{"type":"object","properties":{"username":{"type":"string","example":"johndoe","minLength":3,"maxLength":40,"description":"Unique lowercase username using letters, numbers, and underscores."},"firstName":{"type":"string","example":"John","minLength":2,"maxLength":80},"lastName":{"type":"string","example":"Doe","minLength":2,"maxLength":80},"email":{"type":"string","example":"john@example.com","maxLength":254},"password":{"type":"string","example":"StrongPassword1!","format":"password","writeOnly":true},"confirmPassword":{"type":"string","example":"StrongPassword1!","format":"password","writeOnly":true},"countryCode":{"type":"string","example":"GB","minLength":2,"maxLength":2},"referralCode":{"type":"string","example":"REF123","maxLength":40},"currencyCode":{"type":"string","example":"GBP","description":"Three-character currency code. Must be an active platform-supported currency."},"organizationName":{"type":"string","example":"Filmhouse Cinemas","minLength":2,"maxLength":160},"organizationType":{"type":"string","example":"cinema","enum":["merchant","cinema","restaurant","school","church","event_organiser","charity","hotel","supermarket","creator","brand","reseller_business","enterprise_partner","other"]},"country":{"type":"string","example":"Nigeria","maxLength":80},"city":{"type":"string","example":"Lagos","maxLength":100},"contactEmail":{"type":"string","example":"support@filmhouse.com","maxLength":254},"contactPhone":{"type":"string","example":"+2348012345678","maxLength":16},"website":{"type":"string","example":"https://filmhouse.example","maxLength":2048},"logoUrl":{"type":"string","example":"https://example.com/logo.png","maxLength":2048}},"required":["username","firstName","lastName","email","password","confirmPassword","countryCode","organizationName","organizationType"]},"TokenResponseDto":{"type":"object","properties":{"accessToken":{"type":"string"},"refreshToken":{"type":"string"},"tokenType":{"type":"string","example":"Bearer"},"expiresIn":{"type":"number","example":900,"description":"Access-token lifetime in seconds."}},"required":["accessToken","refreshToken","tokenType","expiresIn"]},"LoginDto":{"type":"object","properties":{"credential":{"type":"string","example":"user@example.com","description":"Registered email address or username.","maxLength":254},"password":{"type":"string","example":"StrongPassword1!","format":"password","writeOnly":true,"minLength":8,"maxLength":128}},"required":["credential","password"]},"RefreshTokenDto":{"type":"object","properties":{"refreshToken":{"type":"string","example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...","minLength":20,"writeOnly":true}},"required":["refreshToken"]},"LogoutDto":{"type":"object","properties":{"refreshToken":{"type":"string","example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...","minLength":20,"writeOnly":true}},"required":["refreshToken"]},"EmailVerificationResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"emailVerified":{"type":"boolean","example":true},"status":{"type":"string","enum":["pending","active","suspended","disabled"]}},"required":["id","emailVerified","status"]},"VerifyEmailCodeDto":{"type":"object","properties":{"email":{"type":"string","example":"user@example.com","maxLength":254},"code":{"type":"string","example":"123456","minLength":6,"maxLength":6}},"required":["email","code"]},"ResendEmailCodeDto":{"type":"object","properties":{"email":{"type":"string","example":"user@example.com","maxLength":254}},"required":["email"]},"ForgotPasswordDto":{"type":"object","properties":{"email":{"type":"string","example":"user@example.com","maxLength":254}},"required":["email"]},"ResetPasswordDto":{"type":"object","properties":{"email":{"type":"string","example":"user@example.com","maxLength":254},"code":{"type":"string","example":"123456","minLength":6,"maxLength":6,"description":"Six-digit password reset code."},"newPassword":{"type":"string","example":"NewPassword123!","writeOnly":true,"format":"password"},"confirmPassword":{"type":"string","example":"NewPassword123!","writeOnly":true,"format":"password"}},"required":["email","code","newPassword","confirmPassword"]},"ChangeUnverifiedEmailDto":{"type":"object","properties":{"credential":{"type":"string","description":"Current username or incorrectly entered email address.","example":"john","maxLength":254},"password":{"type":"string","description":"Current account password.","example":"StrongPassword123!","format":"password","writeOnly":true},"newEmail":{"type":"string","description":"Correct email address.","example":"chidi@example.com","maxLength":254},"confirmNewEmail":{"type":"string","description":"Confirmation of the correct email address.","example":"chidi@example.com","maxLength":254}},"required":["credential","password","newEmail","confirmNewEmail"]},"PinStatusResponseDto":{"type":"object","properties":{"hasPin":{"type":"boolean"},"locked":{"type":"boolean"},"lockedUntil":{"type":"string","format":"date-time","nullable":true},"lastVerifiedAt":{"type":"string","format":"date-time","nullable":true}},"required":["hasPin","locked"]},"SetupPinDto":{"type":"object","properties":{"pin":{"type":"string","example":"827391","minLength":6,"maxLength":6,"description":"Numeric security PIN.","writeOnly":true}},"required":["pin"]},"PinSetupResponseDto":{"type":"object","properties":{"hasPin":{"type":"boolean","example":true},"createdAt":{"type":"string","format":"date-time"}},"required":["hasPin","createdAt"]},"VerifyPinDto":{"type":"object","properties":{"pin":{"type":"string","example":"827391","minLength":6,"maxLength":6,"writeOnly":true},"purpose":{"type":"string","example":"transferApproval","enum":["transferApproval","sensitiveAction","marketplacePayment","organizationOwnershipTransfer"]}},"required":["pin","purpose"]},"PinVerificationResponseDto":{"type":"object","properties":{"verified":{"type":"boolean","example":true},"purpose":{"type":"string","enum":["transferApproval","sensitiveAction","marketplacePayment","organizationOwnershipTransfer"]},"verifiedAt":{"type":"string","format":"date-time","nullable":true}},"required":["verified","purpose"]},"ChangePinDto":{"type":"object","properties":{"currentPin":{"type":"string","example":"123456","description":"Current 6 digit PIN.","minLength":6,"maxLength":6,"writeOnly":true},"newPin":{"type":"string","example":"827391","description":"New 6 digit PIN.","minLength":6,"maxLength":6,"writeOnly":true}},"required":["currentPin","newPin"]},"PinChangeResponseDto":{"type":"object","properties":{"changed":{"type":"boolean","example":true},"changedAt":{"type":"string","format":"date-time"}},"required":["changed","changedAt"]},"ResetPinDto":{"type":"object","properties":{"code":{"type":"string","example":"123456","description":"Six digit PIN reset code sent to the verified user email.","minLength":6,"maxLength":6,"writeOnly":true},"newPin":{"type":"string","example":"827391","description":"New six digit security PIN.","minLength":6,"maxLength":6,"writeOnly":true}},"required":["code","newPin"]},"PinResetResponseDto":{"type":"object","properties":{"reset":{"type":"boolean","example":true},"resetAt":{"type":"string","format":"date-time"}},"required":["reset","resetAt"]},"OrganizationDefaultWorkspaceResponseDto":{"type":"object","properties":{"type":{"type":"string","enum":["personal","organization"]},"organizationId":{"type":"object","format":"uuid","nullable":true},"organizationName":{"type":"object","nullable":true},"role":{"type":"object","nullable":true}},"required":["type"]},"OrganizationContextOrganizationResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":"string"},"organizationType":{"type":"string","enum":["merchant","cinema","restaurant","school","church","event_organiser","charity","hotel","supermarket","creator","brand","reseller_business","enterprise_partner","other"]},"status":{"type":"string","enum":["pending","active","suspended","disabled","archived"]},"country":{"type":"object","nullable":true},"city":{"type":"object","nullable":true},"kycStatus":{"type":"string","enum":["not_required","pending","approved","rejected"]},"logoUrl":{"type":"object","nullable":true}},"required":["id","name","slug","organizationType","status","kycStatus"]},"OrganizationContextRoleResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":"string"},"description":{"type":"object","nullable":true},"isSystem":{"type":"boolean"},"isDefault":{"type":"boolean"}},"required":["id","name","slug","isSystem","isDefault"]},"OrganizationContextItemResponseDto":{"type":"object","properties":{"membershipId":{"type":"string","format":"uuid"},"membershipStatus":{"type":"string","enum":["active","invited","suspended","removed"]},"isOwner":{"type":"boolean"},"organization":{"$ref":"#/components/schemas/OrganizationContextOrganizationResponseDto"},"role":{"$ref":"#/components/schemas/OrganizationContextRoleResponseDto"},"permissions":{"type":"array","items":{"type":"string"}}},"required":["membershipId","membershipStatus","isOwner","organization","role","permissions"]},"OrganizationContextResponseDto":{"type":"object","properties":{"defaultWorkspace":{"$ref":"#/components/schemas/OrganizationDefaultWorkspaceResponseDto"},"organizations":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationContextItemResponseDto"}}},"required":["defaultWorkspace","organizations"]},"SessionResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"deviceName":{"type":"object","nullable":true},"deviceType":{"type":"object","nullable":true},"userAgent":{"type":"object","nullable":true},"ipAddress":{"type":"object","nullable":true},"lastUsedAt":{"type":"string","format":"date-time","nullable":true},"expiresAt":{"type":"string","format":"date-time"},"revokedAt":{"type":"string","format":"date-time","nullable":true},"isCurrent":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","expiresAt","isCurrent","createdAt"]},"RevokeOtherSessionsResponseDto":{"type":"object","properties":{"revokedCount":{"type":"number","example":2,"minimum":0}},"required":["revokedCount"]},"RevokeSessionResponseDto":{"type":"object","properties":{"revoked":{"type":"boolean","example":true}},"required":["revoked"]},"CreatedOrganizationResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":"string"},"organizationType":{"type":"string","enum":["merchant","cinema","restaurant","school","church","event_organiser","charity","hotel","supermarket","creator","brand","reseller_business","enterprise_partner","other"]},"status":{"type":"string","enum":["pending","active","suspended","disabled","archived"]},"kycStatus":{"type":"string","enum":["not_required","pending","approved","rejected"]},"country":{"type":"object","nullable":true},"city":{"type":"object","nullable":true}},"required":["id","name","slug","organizationType","status","kycStatus"]},"CreatedOrganizationOwnerRoleResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]},"CreatedOrganizationMembershipResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["active","invited","suspended","removed"]},"role":{"$ref":"#/components/schemas/CreatedOrganizationOwnerRoleResponseDto"}},"required":["id","status","role"]},"CreateOrganizationResponseDto":{"type":"object","properties":{"organization":{"$ref":"#/components/schemas/CreatedOrganizationResponseDto"},"membership":{"$ref":"#/components/schemas/CreatedOrganizationMembershipResponseDto"},"becameDefaultWorkspace":{"type":"boolean","description":"True when the new organization was also set as the user default workspace."}},"required":["organization","membership","becameDefaultWorkspace"]},"CreateOrganizationDto":{"type":"object","properties":{"name":{"type":"string","example":"Filmhouse Cinemas","minLength":2,"maxLength":160},"organizationType":{"type":"string","example":"cinema","enum":["merchant","cinema","restaurant","school","church","event_organiser","charity","hotel","supermarket","creator","brand","reseller_business","enterprise_partner","other"]},"country":{"type":"string","example":"Nigeria","maxLength":80},"city":{"type":"string","example":"Lagos","maxLength":100},"contactEmail":{"type":"string","example":"support@filmhouse.com","maxLength":254,"description":"Organization contact email. Defaults to the authenticated user email."},"contactPhone":{"type":"string","example":"+2348012345678","maxLength":16},"website":{"type":"string","example":"https://filmhouse.example","maxLength":2048},"logoUrl":{"type":"string","example":"https://example.com/logo.png","maxLength":2048},"setAsDefaultWorkspace":{"type":"boolean","default":false,"description":"When true, the new organization becomes the user default workspace immediately."}},"required":["name","organizationType"]},"OrganizationAccessContextRoleDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]},"OrganizationAccessContextResponseDto":{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid"},"membershipId":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["active","invited","suspended","removed"]},"isOwner":{"type":"boolean"},"role":{"$ref":"#/components/schemas/OrganizationAccessContextRoleDto"},"permissions":{"example":["organization.members.view","organization.members.invite","organization.members.update"],"type":"array","items":{"type":"string"}}},"required":["organizationId","membershipId","status","isOwner","role","permissions"]},"CreateOrganizationInvitationDto":{"type":"object","properties":{"email":{"type":"string","example":"john@example.com"},"roleId":{"type":"string","example":"8147ddc9-5890-4477-b18f-b81546946709"},"message":{"type":"string","example":"Welcome to the Haxell rewards team."}},"required":["email","roleId"]},"VerifyOrganizationInvitationCodeDto":{"type":"object","properties":{"code":{"type":"string","example":"AB7K-9Q2M","description":"Eight-character invitation code from the invitation email. Hyphens and spaces are optional."}},"required":["code"]},"AcceptOrganizationInvitationByProofDto":{"type":"object","properties":{"setAsDefaultWorkspace":{"type":"boolean","default":false,"description":"Whether this organization should become the user default workspace."},"invitationProof":{"type":"string","description":"Short-lived invitation proof returned after successful manual code verification."}},"required":["invitationProof"]},"OrganizationInvitationProofDto":{"type":"object","properties":{"invitationProof":{"type":"string","description":"Short-lived invitation proof returned after successful manual code verification."}},"required":["invitationProof"]},"AcceptOrganizationInvitationDto":{"type":"object","properties":{"setAsDefaultWorkspace":{"type":"boolean","default":false,"description":"Whether this organization should become the user default workspace."}}},"OrganizationMemberUserResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"username":{"type":"string","example":"chidimez"},"firstName":{"type":"string","example":"Chidi"},"lastName":{"type":"string","example":"Umezurike"},"email":{"type":"string","format":"email","example":"chidi@example.com"},"profilePic":{"type":"object","nullable":true}},"required":["id","username","firstName","lastName","email"]},"OrganizationMemberRoleResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","example":"Manager"},"slug":{"type":"string","example":"manager"},"description":{"type":"object","nullable":true},"isSystem":{"type":"boolean"},"isDefault":{"type":"boolean"}},"required":["id","name","slug","isSystem","isDefault"]},"OrganizationMemberInviterResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"username":{"type":"string","example":"chidimez"},"firstName":{"type":"string","example":"Chidi"},"lastName":{"type":"string","example":"Umezurike"}},"required":["id","username","firstName","lastName"]},"OrganizationMemberResponseDto":{"type":"object","properties":{"membershipId":{"type":"string","format":"uuid"},"organizationId":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["active","invited","suspended","removed"]},"user":{"$ref":"#/components/schemas/OrganizationMemberUserResponseDto"},"role":{"$ref":"#/components/schemas/OrganizationMemberRoleResponseDto"},"isOwner":{"type":"boolean","description":"Whether this user is the authoritative owner of the organization."},"invitedBy":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/OrganizationMemberInviterResponseDto"}]},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["membershipId","organizationId","status","user","role","isOwner","createdAt","updatedAt"]},"UpdateOrganizationMemberRoleDto":{"type":"object","properties":{"roleId":{"type":"string","format":"uuid","description":"Organization role to assign to the member."}},"required":["roleId"]},"UpdateOrganizationMemberStatusDto":{"type":"object","properties":{"status":{"type":"string","enum":["active","suspended"],"example":"suspended","description":"Activate or suspend the organization membership."}},"required":["status"]},"OrganizationMemberRemovalResponseDto":{"type":"object","properties":{"membershipId":{"type":"string","format":"uuid"},"organizationId":{"type":"string","format":"uuid"},"userId":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["active","invited","suspended","removed"],"example":"removed"},"defaultWorkspaceReset":{"type":"boolean","description":"Whether the removed user default workspace was reset to personal."}},"required":["membershipId","organizationId","userId","status","defaultWorkspaceReset"]},"OrganizationLeaveResponseDto":{"type":"object","properties":{"membershipId":{"type":"string","format":"uuid"},"organizationId":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["active","invited","suspended","removed"],"example":"removed"},"defaultWorkspaceReset":{"type":"boolean","description":"Whether the user default workspace was reset to personal."}},"required":["membershipId","organizationId","status","defaultWorkspaceReset"]},"OrganizationOwnershipMemberResponseDto":{"type":"object","properties":{"userId":{"type":"string","format":"uuid"},"membershipId":{"type":"string","format":"uuid"},"roleId":{"type":"string","format":"uuid"},"roleName":{"type":"string"},"roleSlug":{"type":"string"}},"required":["userId","membershipId","roleId","roleName","roleSlug"]},"OrganizationOwnershipTransferResponseDto":{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid"},"previousOwner":{"$ref":"#/components/schemas/OrganizationOwnershipMemberResponseDto"},"newOwner":{"$ref":"#/components/schemas/OrganizationOwnershipMemberResponseDto"}},"required":["organizationId","previousOwner","newOwner"]},"TransferOrganizationOwnershipDto":{"type":"object","properties":{"newOwnerMembershipId":{"type":"string","format":"uuid","description":"Membership ID of the active organization member who will become the new owner."},"previousOwnerRoleId":{"type":"string","format":"uuid","description":"Role to assign to the current owner after transfer. If omitted, the new owner previous role is assigned to the outgoing owner."},"pin":{"type":"string","example":"827391","minLength":6,"maxLength":6,"writeOnly":true,"description":"Current owner security PIN used to authorize the ownership transfer."}},"required":["newOwnerMembershipId","pin"]},"OrganizationPermissionResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"key":{"type":"string","example":"organization.members.view"},"name":{"type":"string","example":"View Organization Members"},"category":{"type":"string","example":"organization"},"description":{"type":"object","nullable":true}},"required":["id","key","name","category"]},"OrganizationRoleResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"organizationId":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":"string"},"description":{"type":"object","nullable":true},"isSystem":{"type":"boolean"},"isDefault":{"type":"boolean"},"permissions":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationPermissionResponseDto"}},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","organizationId","name","slug","isSystem","isDefault","permissions","createdAt","updatedAt"]},"CreateOrganizationRoleDto":{"type":"object","properties":{"name":{"type":"string","example":"Campaign Manager"},"description":{"type":"object","example":"Can manage organization campaigns.","nullable":true},"permissionIds":{"description":"Initial organization permission IDs assigned to the role.","type":"array","items":{"type":"string"}}},"required":["name"]},"UpdateOrganizationRoleDto":{"type":"object","properties":{"name":{"type":"string","example":"Senior Campaign Manager"},"description":{"type":"object","example":"Updated role description.","nullable":true}}},"UpdateOrganizationRolePermissionsDto":{"type":"object","properties":{"permissionIds":{"description":"Complete set of organization permission IDs that should be assigned to the role.","type":"array","items":{"type":"string"}}},"required":["permissionIds"]},"OrganizationRoleDeletionResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"organizationId":{"type":"string","format":"uuid"},"deleted":{"type":"boolean"}},"required":["id","organizationId","deleted"]},"EligibleSignerWalletResponseDto":{"type":"object","properties":{"walletId":{"type":"string","format":"uuid"},"address":{"type":"string","example":"0x66D3fb33722E0b66C398DCb61BAA522093eD7A78"},"chain":{"type":"string","example":"sepolia"},"chainId":{"type":"number","example":11155111},"label":{"type":"object","nullable":true,"example":"Main wallet"},"isPrimary":{"type":"boolean","example":true},"verifiedAt":{"type":"string","example":"2026-08-26T13:00:00.000Z"}},"required":["walletId","address","chain","chainId","isPrimary","verifiedAt"]},"SmartWalletSignerCandidateResponseDto":{"type":"object","properties":{"userId":{"type":"string","format":"uuid"},"organizationMemberId":{"type":"string","format":"uuid"},"displayName":{"type":"string","example":"Chidi Umezurike"},"email":{"type":"string","example":"chidi@example.com"},"roleName":{"type":"string","example":"Owner"},"eligible":{"type":"boolean","example":true},"eligibleWallets":{"type":"array","items":{"$ref":"#/components/schemas/EligibleSignerWalletResponseDto"}},"reason":{"type":"object","nullable":true,"example":"No eligible wallet connected"}},"required":["userId","organizationMemberId","displayName","email","roleName","eligible","eligibleWallets"]},"OrganizationSmartWalletResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"organizationId":{"type":"string","format":"uuid"},"walletType":{"type":"string","enum":["safe"]},"chainId":{"type":"number","example":11155111},"address":{"type":"object","nullable":true},"predictedAddress":{"type":"object","nullable":true},"safeVersion":{"type":"object","nullable":true,"example":"1.4.1"},"status":{"type":"string"},"threshold":{"type":"number","minimum":1},"moduleEnabled":{"type":"boolean"},"moduleAddress":{"type":"object","nullable":true},"moduleVersion":{"type":"object","nullable":true},"moduleEnabledAt":{"type":"object","nullable":true},"deploymentIntentId":{"type":"object","format":"uuid","nullable":true},"deploymentIntentStatus":{"type":"object","nullable":true},"requiredApprovals":{"type":"number","minimum":0},"currentApprovals":{"type":"number","minimum":0},"deploymentTxHash":{"type":"object","nullable":true},"deploymentBlockNumber":{"type":"object","nullable":true},"owners":{"type":"array","items":{"type":"object"}},"delegates":{"type":"array","items":{"type":"object"}},"sync":{"type":"object","nullable":true,"additionalProperties":true},"nextAction":{"type":"object","nullable":true}},"required":["id","organizationId","walletType","chainId","status"]},"SmartWalletOwnerInputDto":{"type":"object","properties":{"userId":{"type":"string","format":"uuid"},"walletId":{"type":"string","format":"uuid"}},"required":["userId","walletId"]},"CreateOrganizationSmartWalletDto":{"type":"object","properties":{"chainId":{"type":"number","example":11155111,"minimum":1,"default":11155111},"walletType":{"type":"string","enum":["safe"],"default":"safe"},"safeVersion":{"type":"string","example":"1.4.1","default":"1.4.1"},"owners":{"type":"array","items":{"$ref":"#/components/schemas/SmartWalletOwnerInputDto"}},"threshold":{"type":"number","example":1,"minimum":1},"enableDelegatedSpendingModule":{"type":"boolean","default":true}},"required":["owners","threshold"]},"SmartWalletStatusResponseDto":{"type":"object","properties":{"organizationWalletId":{"type":"string","format":"uuid"},"chainId":{"type":"number","example":11155111},"address":{"type":"object","nullable":true},"predictedAddress":{"type":"object","nullable":true},"status":{"type":"string"},"deploymentIntentId":{"type":"object","format":"uuid","nullable":true},"deploymentIntentStatus":{"type":"object","nullable":true},"moduleEnabled":{"type":"boolean"},"moduleEnabledAt":{"type":"object","nullable":true},"deploymentTxHash":{"type":"object","nullable":true},"deploymentBlockNumber":{"type":"object","nullable":true},"nextAction":{"type":"object","nullable":true}},"required":["organizationWalletId","chainId","status","moduleEnabled"]},"SmartWalletSafeRequestResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"organizationWalletId":{"type":"string","format":"uuid"},"requestType":{"type":"string"},"status":{"type":"string"},"requiredThreshold":{"type":"number"},"requiredApprovals":{"type":"number"},"collectedSignatures":{"type":"number"},"currentApprovals":{"type":"number"},"safeNonce":{"type":"object","nullable":true},"nextAction":{"type":"object","nullable":true}},"required":["id","organizationWalletId","requestType","status"]},"AddSmartWalletOwnerDto":{"type":"object","properties":{"userId":{"type":"string","format":"uuid"},"walletId":{"type":"string","format":"uuid"}},"required":["userId","walletId"]},"ChangeSmartWalletThresholdDto":{"type":"object","properties":{"threshold":{"type":"number","example":2,"minimum":1}},"required":["threshold"]},"AddSmartWalletDelegateDto":{"type":"object","properties":{"userId":{"type":"string","format":"uuid"},"walletId":{"type":"string","format":"uuid"}},"required":["userId","walletId"]},"UpdateSmartWalletDelegatePolicyDto":{"type":"object","properties":{"perTransactionLimitRaw":{"type":"string","example":"50000000000000000000"},"periodLimitRaw":{"type":"string","example":"200000000000000000000"},"periodSeconds":{"type":"number","example":86400,"minimum":1},"effectiveFrom":{"type":"object","nullable":true,"format":"date-time"},"effectiveUntil":{"type":"object","nullable":true,"format":"date-time"}},"required":["perTransactionLimitRaw","periodLimitRaw","periodSeconds"]},"AddSmartWalletDelegateTargetDto":{"type":"object","properties":{"targetAddress":{"type":"string","example":"0x66D3fb33722E0b66C398DCb61BAA522093eD7A78"},"targetType":{"type":"string","enum":["vendor","collection","treasury","custom"],"example":"vendor"},"label":{"type":"object","nullable":true,"example":"Approved vendor"}},"required":["targetAddress","targetType"]},"CreateDelegatedPaymentIntentDto":{"type":"object","properties":{"delegateId":{"type":"string","format":"uuid"},"targetAddress":{"type":"string","example":"0x66D3fb33722E0b66C398DCb61BAA522093eD7A78"},"amountRaw":{"type":"string","example":"10000000000000000000"},"contextType":{"type":"object","nullable":true,"example":"collection_mint"},"contextId":{"type":"object","nullable":true,"format":"uuid"}},"required":["delegateId","targetAddress","amountRaw"]},"CreateOwnerPaymentRequestDto":{"type":"object","properties":{"toAddress":{"type":"string","example":"0x66D3fb33722E0b66C398DCb61BAA522093eD7A78"},"amountRaw":{"type":"string","example":"10000000000000000000"},"contextType":{"type":"object","nullable":true,"example":"collection_mint"},"contextId":{"type":"object","nullable":true,"format":"uuid"}},"required":["toAddress","amountRaw"]},"CreateOrganizationCollectionDto":{"type":"object","properties":{"name":{"type":"string","example":"Bole Festival","minLength":2,"maxLength":120},"description":{"type":"string","maxLength":1000},"imageUrl":{"type":"string","maxLength":2048},"priceMinor":{"type":"number","example":250000,"minimum":0},"currency":{"type":"string","example":"USD","minLength":3,"maxLength":3},"quantity":{"type":"number","example":100,"minimum":1,"maximum":1000000},"usageLimit":{"type":"number","minimum":1,"maximum":1000000},"expiresAt":{"type":"string","format":"date-time"},"collectionType":{"type":"string","enum":["ticket","voucher","gift_card","discount"],"example":"voucher"},"collectibleType":{"type":"string","enum":["ticket","voucher","gift_card","discount"],"example":"voucher"}},"required":["name","priceMinor","currency","quantity","collectionType"]},"CollectionTemplateResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"templateSlug":{"type":"string"},"type":{"type":"string","enum":["ticket","voucher","gift_card","discount"]},"isPrimary":{"type":"boolean"}},"required":["id","templateSlug","type","isPrimary"]},"CollectionResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"organizationId":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":"string"},"imageUrl":{"type":"object","nullable":true},"priceMinor":{"type":"number","minimum":0},"currency":{"type":"string"},"quantity":{"type":"number","minimum":1},"collectionType":{"type":"string","enum":["ticket","voucher","gift_card","discount"]},"usageLimit":{"type":"object","nullable":true},"expiresAt":{"type":"object","nullable":true},"createdAt":{"type":"string","format":"date-time"},"description":{"type":"object","nullable":true},"templates":{"type":"array","items":{"$ref":"#/components/schemas/CollectionTemplateResponseDto"}}},"required":["id","organizationId","name","slug","priceMinor","currency","quantity","collectionType","createdAt","templates"]},"CollectionListItemDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"organizationId":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":"string"},"imageUrl":{"type":"object","nullable":true},"priceMinor":{"type":"number","minimum":0},"currency":{"type":"string"},"quantity":{"type":"number","minimum":1},"collectionType":{"type":"string","enum":["ticket","voucher","gift_card","discount"]},"usageLimit":{"type":"object","nullable":true},"expiresAt":{"type":"object","nullable":true},"createdAt":{"type":"string","format":"date-time"}},"required":["id","organizationId","name","slug","priceMinor","currency","quantity","collectionType","createdAt"]},"CollectibleListItemDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"organizationId":{"type":"string","format":"uuid"},"collectionId":{"type":"string","format":"uuid"},"templateSlug":{"type":"string"},"type":{"type":"string","enum":["ticket","voucher","gift_card","discount"]},"isPrimary":{"type":"boolean"},"imageUrl":{"type":"object","nullable":true},"priceMinor":{"type":"number","minimum":0},"currency":{"type":"string"},"quantity":{"type":"number","minimum":1},"usageLimit":{"type":"object","nullable":true},"expiresAt":{"type":"object","nullable":true},"createdAt":{"type":"string","format":"date-time"}},"required":["id","organizationId","collectionId","templateSlug","type","isPrimary","priceMinor","currency","quantity","createdAt"]},"CollectibleResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"organizationId":{"type":"string","format":"uuid"},"collectionId":{"type":"string","format":"uuid"},"templateSlug":{"type":"string"},"type":{"type":"string","enum":["ticket","voucher","gift_card","discount"]},"isPrimary":{"type":"boolean"},"imageUrl":{"type":"object","nullable":true},"priceMinor":{"type":"number","minimum":0},"currency":{"type":"string"},"quantity":{"type":"number","minimum":1},"usageLimit":{"type":"object","nullable":true},"expiresAt":{"type":"object","nullable":true},"createdAt":{"type":"string","format":"date-time"},"name":{"type":"object","nullable":true},"description":{"type":"object","nullable":true}},"required":["id","organizationId","collectionId","templateSlug","type","isPrimary","priceMinor","currency","quantity","createdAt"]},"CreateOrganizationCollectibleDto":{"type":"object","properties":{"collectionId":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":2,"maxLength":120},"description":{"type":"string","maxLength":1000},"imageUrl":{"type":"string","maxLength":2048},"priceMinor":{"type":"number","minimum":0},"currency":{"type":"string","example":"USD","minLength":3,"maxLength":3},"quantity":{"type":"number","minimum":1,"maximum":1000000},"usageLimit":{"type":"number","minimum":1,"maximum":1000000},"expiresAt":{"type":"string","format":"date-time"},"collectibleType":{"type":"string","enum":["ticket","voucher","gift_card","discount"],"example":"voucher"}},"required":["collectionId","name","priceMinor","currency","quantity","collectibleType"]}}}}