{"items":[{"type":"link","label":"PERS-api Documentation","link":"/swagger","routeSlug":"/swagger","content":{"contentType":"overview","meta":{"name":"PERS-api Documentation"},"children":[{"nodeType":"container","panels":[{"title":"Download OpenAPI description","titleTranslationKey":"download.description.title","children":[{"kind":"download","label":"swagger.json","url":"/_bundle/swagger.json?download"},{"kind":"download","label":"swagger.yaml","url":"/_bundle/swagger.yaml?download"}]},{"title":"Overview","titleTranslationKey":"info.title","children":[]},{"title":"Languages","titleTranslationKey":"languages.title","children":[{"kind":"languages","options":[{"key":"curl","title":"curl","lang":"curl"},{"key":"javascript","title":"JavaScript","lang":"JavaScript"},{"key":"node","title":"Node.js","lang":"Node.js"},{"key":"python","title":"Python","lang":"Python"},{"key":"java","title":"Java","lang":"Java"},{"key":"csharp","title":"C#","lang":"C#"},{"key":"php","title":"PHP","lang":"PHP"},{"key":"go","title":"Go","lang":"Go"},{"key":"ruby","title":"Ruby","lang":"Ruby"},{"key":"r","title":"R","lang":"R"},{"key":"payload","title":"Payload","lang":"Payload"}]}]},{"title":"Servers","titleTranslationKey":"servers.title","children":[{"kind":"servers","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"mode":"default"}]}],"children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"header","level":1,"label":"PERS-api Documentation (2.0.53)","showPageActions":true},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"PERS API Documentation"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"This RESTful API enables seamless integration of Web3 loyalty, token management, and engagement features into your applications."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Usage Guidelines:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"RESTful Design"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": Resources are accessed via standard HTTP methods (GET, POST, PUT, DELETE) with predictable, resource-oriented URLs."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Authentication"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": Secure access is enforced via Bearer Tokens (JWT) and Project Keys (defining the Tenant context)."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Data Format"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": All requests and responses utilize standard JSON formatting."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Explore the modules below for detailed endpoint specifications, schemas, and testing capabilities."},"children":[]}]}]},{"$$mdtype":"Node","type":"hr","attributes":{},"children":[]}]}],"sectionId":"/swagger"}],"sectionId":"/swagger"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/error-handling"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Error Handling"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"All API errors follow RFC 7807 (Problem Details for HTTP APIs) with a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"StructuredError"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" schema. See the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Schemas"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" section below for the full structure."},"children":[]}]}]}]}],"sectionId":"/swagger/section/error-handling"}]}]}},{"type":"link","label":"Error Handling","link":"/swagger/section/error-handling","routeSlug":"/swagger/section/error-handling","content":null},{"type":"group","label":"Tenants","link":"/swagger/tenants","routeSlug":"/swagger/tenants","items":[{"type":"link","label":"Tenant Management","link":"/swagger/tenants/tenant-management","routeSlug":"/swagger/tenants/tenant-management","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Tenant Management"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"tenants/tenant-management"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Tenant Management"},"children":[]}]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"div","attrs":{"style":{"fontSize":"14px","lineHeight":"1.5"}}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"\n      Tenant management for multi-tenant PERS loyalty platform. Each tenant represents a business or organization running their own reward program with dedicated data isolation and configuration.\n    "},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Core Features:"},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"•"},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Multi-Tenant Architecture:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Complete data isolation between tenant organizations\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"•"},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Tenant Configuration:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Custom settings, branding, and program rules per tenant  \n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"•"},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Admin Dashboard Access:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Comprehensive management interface for tenant administrators\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"•"},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Data Security:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Highest level confidentiality and security per tenant environment\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"•"},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"API Integration:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Seamless integration with existing business systems"},"children":[]}]}],"panels":[]}]}},{"label":"Create new tenant","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/tenants/tenantscontroller_createtenant","routeSlug":"/swagger/tenants/tenantscontroller_createtenant","metadata":{"seo":{"title":"Create new tenant","description":"Create a new tenant (project) in the system. This is the initial setup step for new organizations."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TenantsController_createTenant","name":"Create new tenant","isWebhook":false,"pointer":"/paths/~1tenants/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create new tenant","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Create a new tenant (project) in the system. This is the initial setup step for new organizations."},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TenantCreateRequestDTO"}},"schemaId":"components/schemas/TenantCreateRequestDTO","pointer":"/paths/~1tenants/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/tenants","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/TenantCreateRequestDTO"}},"responseCodes":["200","201"],"pointer":"/tenants","href":"tenants/tenantscontroller_createtenant","openApiOperationId":"TenantsController_createTenant","summary":"Create new tenant"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/TenantCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TenantCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Tenant created successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TenantDTO"}},"schemaId":"components/schemas/TenantDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TenantDTO"}},"schemaId":"components/schemas/TenantDTO"}],"pointer":"/paths/~1tenants/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TenantDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TenantDTO"}}},{"code":"201","schemaId":"components/schemas/TenantDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TenantDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tenants/tenantscontroller_createtenant"}],"panels":[]}]},"httpPath":"/tenants"},{"label":"Update tenant configuration","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/tenants/tenantscontroller_updatetenant","routeSlug":"/swagger/tenants/tenantscontroller_updatetenant","metadata":{"seo":{"title":"Update tenant configuration","description":"ADMIN: Update tenant information and settings"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TenantsController_updateTenant","name":"Update tenant configuration","isWebhook":false,"pointer":"/paths/~1tenants/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update tenant configuration","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"ADMIN: Update tenant information and settings"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TenantUpdateRequestDTO"}},"schemaId":"components/schemas/TenantUpdateRequestDTO","pointer":"/paths/~1tenants/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/tenants","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/TenantUpdateRequestDTO"}},"responseCodes":["200"],"pointer":"/tenants","href":"tenants/tenantscontroller_updatetenant","openApiOperationId":"TenantsController_updateTenant","summary":"Update tenant configuration"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/TenantUpdateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TenantUpdateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Tenant updated successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TenantDTO"}},"schemaId":"components/schemas/TenantDTO"}],"pointer":"/paths/~1tenants/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TenantDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TenantDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tenants/tenantscontroller_updatetenant"}],"panels":[]}]},"httpPath":"/tenants"},{"label":"Get client configuration","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/tenants/tenantscontroller_getclientconfig","routeSlug":"/swagger/tenants/tenantscontroller_getclientconfig","metadata":{"seo":{"title":"Get client configuration","description":"Retrieve client-side configuration for the project"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TenantsController_getClientConfig","name":"Get client configuration","isWebhook":false,"pointer":"/paths/~1tenants~1client-config/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get client configuration","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve client-side configuration for the project"},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/tenants/client-config","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/tenants/client-config","href":"tenants/tenantscontroller_getclientconfig","openApiOperationId":"TenantsController_getClientConfig","summary":"Get client configuration"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Client configuration retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TenantClientConfigDTO"}},"schemaId":"components/schemas/TenantClientConfigDTO"}],"pointer":"/paths/~1tenants~1client-config/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TenantClientConfigDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TenantClientConfigDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tenants/tenantscontroller_getclientconfig"}],"panels":[]}]},"httpPath":"/tenants/client-config"},{"label":"Get login token","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/tenants/tenantscontroller_getlogintoken","routeSlug":"/swagger/tenants/tenantscontroller_getlogintoken","metadata":{"seo":{"title":"Get login token","description":"Generate a login token for the project"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TenantsController_getLoginToken","name":"Get login token","isWebhook":false,"pointer":"/paths/~1tenants~1login-token/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get login token","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Generate a login token for the project"},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/tenants/login-token","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/tenants/login-token","href":"tenants/tenantscontroller_getlogintoken","openApiOperationId":"TenantsController_getLoginToken","summary":"Get login token"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Login token generated successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_67"}},"schemaId":"schema_67"}],"pointer":"/paths/~1tenants~1login-token/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_67","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_67"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tenants/tenantscontroller_getlogintoken"}],"panels":[]}]},"httpPath":"/tenants/login-token"},{"label":"Get current tenant information","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/tenants/tenantscontroller_getcurrenttenant","routeSlug":"/swagger/tenants/tenantscontroller_getcurrenttenant","metadata":{"seo":{"title":"Get current tenant information","description":"Context-aware endpoint for retrieving your own tenant information."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TenantsController_getCurrentTenant","name":"Get current tenant information","isWebhook":false,"pointer":"/paths/~1tenants~1me/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get current tenant information","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Context-aware endpoint for retrieving your own tenant information."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"REQUIREMENTS"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":":"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Header: x-project-key (project identification)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Optional: Authorization Bearer token (for full access)"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"RETURNS"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":":"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"With API Key only: Public tenant information"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"With Tenant JWT: Full tenant information including allowedTokenIssuers and sensitive config"},"children":[]}]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]},{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/tenants/me","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]},{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/tenants/me","href":"tenants/tenantscontroller_getcurrenttenant","openApiOperationId":"TenantsController_getCurrentTenant","summary":"Get current tenant information","securityGroups":[{"authJWT":[]},{"projectKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Current tenant information retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TenantDTO"}},"schemaId":"components/schemas/TenantDTO"}],"pointer":"/paths/~1tenants~1me/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TenantDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TenantDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tenants/tenantscontroller_getcurrenttenant"}],"panels":[]}]},"httpPath":"/tenants/me"},{"label":"Get tenant information by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/tenants/tenantscontroller_gettenantbyid","routeSlug":"/swagger/tenants/tenantscontroller_gettenantbyid","metadata":{"seo":{"title":"Get tenant information by ID","description":"Context-aware tenant information retrieval:"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TenantsController_getTenantById","name":"Get tenant information by ID","isWebhook":false,"pointer":"/paths/~1tenants~1{id}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get tenant information by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Context-aware tenant information retrieval:"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"UNAUTHENTICATED ACCESS"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":":"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"No headers required"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returns: Basic public tenant information"},"children":[]}]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1tenants~1{id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/tenants/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/tenants/{id}","href":"tenants/tenantscontroller_gettenantbyid","openApiOperationId":"TenantsController_getTenantById","summary":"Get tenant information by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Tenant information retrieved successfully (data level depends on authentication)","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TenantPublicDTO"}},"schemaId":"components/schemas/TenantPublicDTO"}],"pointer":"/paths/~1tenants~1{id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TenantPublicDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TenantPublicDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tenants/tenantscontroller_gettenantbyid"}],"panels":[]}]},"httpPath":"/tenants/{id}"},{"label":"Ensure the tenant has a dedicated EOA wallet","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/tenants/tenantscontroller_ensuretenantwallet","routeSlug":"/swagger/tenants/tenantscontroller_ensuretenantwallet","metadata":{"seo":{"title":"Ensure the tenant has a dedicated EOA wallet","description":"ADMIN: Generates a dedicated EOA for the tenant and stores it in AWS Secrets Manager if one does not already exist. Idempotent — safe to call multiple times."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TenantsController_ensureTenantWallet","name":"Ensure the tenant has a dedicated EOA wallet","isWebhook":false,"pointer":"/paths/~1tenants~1wallet/post","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Ensure the tenant has a dedicated EOA wallet","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ADMIN: Generates a dedicated EOA for the tenant and stores it in AWS Secrets Manager if one does not already exist. Idempotent — safe to call multiple times."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/tenants/wallet","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","201"],"pointer":"/tenants/wallet","href":"tenants/tenantscontroller_ensuretenantwallet","openApiOperationId":"TenantsController_ensureTenantWallet","summary":"Ensure the tenant has a dedicated EOA wallet"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Tenant wallet ensured"},{"code":"201"}],"pointer":"/paths/~1tenants~1wallet/post/responses"}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tenants/tenantscontroller_ensuretenantwallet"}],"panels":[]}]},"httpPath":"/tenants/wallet"}],"content":{"contentType":"group","meta":{"name":"Tenants"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Tenants","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/tenants","summary":"Create new tenant","prefix":{"name":"post","color":"post"},"badges":[],"link":"/tenants/tenantscontroller_createtenant","deprecated":false},{"title":"/tenants","summary":"Update tenant configuration","prefix":{"name":"put","color":"put"},"badges":[],"link":"/tenants/tenantscontroller_updatetenant","deprecated":false},{"title":"/tenants/client-config","summary":"Get client configuration","prefix":{"name":"get","color":"get"},"badges":[],"link":"/tenants/tenantscontroller_getclientconfig","deprecated":false},{"title":"/tenants/login-token","summary":"Get login token","prefix":{"name":"get","color":"get"},"badges":[],"link":"/tenants/tenantscontroller_getlogintoken","deprecated":false},{"title":"/tenants/me","summary":"Get current tenant information","prefix":{"name":"get","color":"get"},"badges":[],"link":"/tenants/tenantscontroller_getcurrenttenant","deprecated":false},{"title":"/tenants/{id}","summary":"Get tenant information by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/tenants/tenantscontroller_gettenantbyid","deprecated":false},{"title":"/tenants/wallet","summary":"Ensure the tenant has a dedicated EOA wallet","prefix":{"name":"post","color":"post"},"badges":[],"link":"/tenants/tenantscontroller_ensuretenantwallet","deprecated":false}]}]}]}]}},{"type":"group","label":"Admins","link":"/swagger/admins","routeSlug":"/swagger/admins","items":[{"type":"link","label":"Administrative Management","link":"/swagger/admins/administrative-management","routeSlug":"/swagger/admins/administrative-management","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Administrative Management"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"admins/administrative-management"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Administrative Management"},"children":[]}]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"div","attrs":{"style":{"fontSize":"14px","lineHeight":"1.5"}}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"\n      Administrative user management for tenant administrators. Handles admin authentication, permissions, and tenant-level administrative operations with secure access controls.\n    "},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Admin Features:"},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Admin Authentication:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Secure admin login and session management\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Permission Management:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Role-based access control for administrative functions\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Tenant Administration:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Full tenant configuration and management capabilities\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Security Controls:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Enhanced security measures for administrative access\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Multi-Level Access:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Support for different administrative privilege levels"},"children":[]}]}],"panels":[]}]}},{"label":"Get current admin profile","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/admins/adminscontroller_getcurrentadmin","routeSlug":"/swagger/admins/adminscontroller_getcurrentadmin","metadata":{"seo":{"title":"Get current admin profile","description":"ADMIN: Retrieve the currently authenticated admin profile"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"AdminsController_getCurrentAdmin","name":"Get current admin profile","isWebhook":false,"pointer":"/paths/~1admins~1me/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get current admin profile","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"ADMIN: Retrieve the currently authenticated admin profile"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/admins/me","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/admins/me","href":"admins/adminscontroller_getcurrentadmin","openApiOperationId":"AdminsController_getCurrentAdmin","summary":"Get current admin profile"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Current admin retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AdminDTO"}},"schemaId":"components/schemas/AdminDTO"}],"pointer":"/paths/~1admins~1me/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/AdminDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AdminDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/admins/adminscontroller_getcurrentadmin"}],"panels":[]}]},"httpPath":"/admins/me"},{"label":"Get all admins","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/admins/adminscontroller_getadmins","routeSlug":"/swagger/admins/adminscontroller_getadmins","metadata":{"seo":{"title":"Get all admins","description":"ADMIN: Retrieve all admins associated with the current tenant. Use pagination parameters (page & limit) for optimal performance. Legacy support: returns array without params (deprecated - will be removed in future)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"AdminsController_getAdmins","name":"Get all admins","isWebhook":false,"pointer":"/paths/~1admins/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get all admins","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ADMIN: Retrieve all admins associated with the current tenant. Use pagination parameters (page & limit) for optimal performance. Legacy support: returns array without params (deprecated - will be removed in future)."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"page","in":"query","schemaId":"schema_68","description":"Page number for pagination (1-based)"},{"name":"limit","in":"query","schemaId":"schema_68","description":"Items per page for pagination"}],"pointer":"/paths/~1admins/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/admins","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"page","in":"query","required":false,"schemaId":"schema_68"},{"name":"limit","in":"query","required":false,"schemaId":"schema_68"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/admins","href":"admins/adminscontroller_getadmins","openApiOperationId":"AdminsController_getAdmins","summary":"Get all admins"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Admins retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_69"}},"schemaId":"schema_69"}],"pointer":"/paths/~1admins/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_69","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_69"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/admins/adminscontroller_getadmins"}],"panels":[]}]},"httpPath":"/admins"},{"label":"Create or update admin","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/admins/adminscontroller_createorupdateadmin","routeSlug":"/swagger/admins/adminscontroller_createorupdateadmin","metadata":{"seo":{"title":"Create or update admin","description":"ADMIN: Create a new admin or update an existing admin within the tenant scope"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"AdminsController_createOrUpdateAdmin","name":"Create or update admin","isWebhook":false,"pointer":"/paths/~1admins/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create or update admin","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"ADMIN: Create a new admin or update an existing admin within the tenant scope"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/AdminCreateRequestDTO"}},"schemaId":"components/schemas/AdminCreateRequestDTO","pointer":"/paths/~1admins/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/admins","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/AdminCreateRequestDTO"}},"responseCodes":["200","201"],"pointer":"/admins","href":"admins/adminscontroller_createorupdateadmin","openApiOperationId":"AdminsController_createOrUpdateAdmin","summary":"Create or update admin"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/AdminCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/AdminCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Admin created or updated successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AdminDTO"}},"schemaId":"components/schemas/AdminDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AdminDTO"}},"schemaId":"components/schemas/AdminDTO"}],"pointer":"/paths/~1admins/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/AdminDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AdminDTO"}}},{"code":"201","schemaId":"components/schemas/AdminDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AdminDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/admins/adminscontroller_createorupdateadmin"}],"panels":[]}]},"httpPath":"/admins"},{"label":"Toggle admin-tenant association","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/admins/adminscontroller_toggleadmintenantassociation","routeSlug":"/swagger/admins/adminscontroller_toggleadmintenantassociation","metadata":{"seo":{"title":"Toggle admin-tenant association","description":"ADMIN: Associate or disassociate the specified admin with the current tenant. This affects admin tenant access."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"AdminsController_toggleAdminTenantAssociation","name":"Toggle admin-tenant association","isWebhook":false,"pointer":"/paths/~1admins~1{adminId}~1tenant/put","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Toggle admin-tenant association","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"ADMIN: Associate or disassociate the specified admin with the current tenant. This affects admin tenant access."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"adminId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1admins~1{adminId}~1tenant/put/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/admins/{adminId}/tenant","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"adminId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/admins/{adminId}/tenant","href":"admins/adminscontroller_toggleadmintenantassociation","openApiOperationId":"AdminsController_toggleAdminTenantAssociation","summary":"Toggle admin-tenant association"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Admin-tenant association updated successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AdminDTO"}},"schemaId":"components/schemas/AdminDTO"}],"pointer":"/paths/~1admins~1{adminId}~1tenant/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/AdminDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AdminDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/admins/adminscontroller_toggleadmintenantassociation"}],"panels":[]}]},"httpPath":"/admins/{adminId}/tenant"}],"content":{"contentType":"group","meta":{"name":"Admins"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Admins","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/admins/me","summary":"Get current admin profile","prefix":{"name":"get","color":"get"},"badges":[],"link":"/admins/adminscontroller_getcurrentadmin","deprecated":false},{"title":"/admins","summary":"Get all admins","prefix":{"name":"get","color":"get"},"badges":[],"link":"/admins/adminscontroller_getadmins","deprecated":false},{"title":"/admins","summary":"Create or update admin","prefix":{"name":"post","color":"post"},"badges":[],"link":"/admins/adminscontroller_createorupdateadmin","deprecated":false},{"title":"/admins/{adminId}/tenant","summary":"Toggle admin-tenant association","prefix":{"name":"put","color":"put"},"badges":[],"link":"/admins/adminscontroller_toggleadmintenantassociation","deprecated":false}]}]}]}]}},{"type":"group","label":"Tokens","link":"/swagger/tokens","routeSlug":"/swagger/tokens","items":[{"type":"link","label":"Token Management System","link":"/swagger/tokens/token-management-system","routeSlug":"/swagger/tokens/token-management-system","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Token Management System"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"tokens/token-management-system"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Token Management System"},"children":[]}]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"div","attrs":{"style":{"fontSize":"14px","lineHeight":"1.5"}}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"\n      Token system for PERS loyalty platform managing various token types including Credits, Rewards, and Status tokens. Provides comprehensive token lifecycle management from creation to redemption.\n    "},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Token Operations:"},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Token Creation:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Define custom token types with specific properties and rules\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Token Distribution:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Mint and distribute tokens to users through campaigns\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Balance Management:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Track token balances across user accounts  \n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Token Transfer:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Enable token transfers between users when configured\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Token Burning:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Remove tokens from circulation for deflationary mechanics\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"img","attrs":{"src":"https://s3.eu-west-1.amazonaws.com/pers.assets.prod/tenant/a0df6ebf-51cc-4c18-afcd-0de355c250dc_DemoApp_eXplorins/Documentation/Tokens_image.png","alt":"Token Module","width":"400","style":{"marginTop":"10px"}}},"children":[]}]}],"panels":[]}]}},{"label":"Get all token contracts","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/tokens/tokenscontroller_getalltokens","routeSlug":"/swagger/tokens/tokenscontroller_getalltokens","metadata":{"seo":{"title":"Get all token contracts","description":"Retrieve all token contracts for the project. Only admins can access inactive tokens via ?active=false parameter. Use pagination parameters (page & limit) for optimal performance. Legacy support: returns array without params (deprecated - will be removed in future)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TokensController_getAllTokens","name":"Get all token contracts","isWebhook":false,"pointer":"/paths/~1tokens/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get all token contracts","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Retrieve all token contracts for the project. Only admins can access inactive tokens via ?active=false parameter. Use pagination parameters (page & limit) for optimal performance. Legacy support: returns array without params (deprecated - will be removed in future)."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"active","in":"query","schemaId":"schema_67","description":"Filter for active tokens only (default: true). Non-admin users always get active tokens only."},{"name":"tokenTypes","in":"query","schemaId":"schema_67","description":"Filter by token types (comma-separated: ERC20,ERC721,ERC1155)"},{"name":"contractAddresses","in":"query","schemaId":"schema_67","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Include specific contract addresses (comma-separated). When used with tokenTypes=null, only these addresses are returned."},"children":[]}]}]}]},{"name":"page","in":"query","schemaId":"schema_67","description":"Page number for pagination (1-based)"},{"name":"limit","in":"query","schemaId":"schema_67","description":"Number of items per page"}],"pointer":"/paths/~1tokens/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/tokens","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"active","in":"query","required":false,"schemaId":"schema_67"},{"name":"tokenTypes","in":"query","required":false,"schemaId":"schema_67"},{"name":"contractAddresses","in":"query","required":false,"schemaId":"schema_67"},{"name":"page","in":"query","required":false,"schemaId":"schema_67"},{"name":"limit","in":"query","required":false,"schemaId":"schema_67"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/tokens","href":"tokens/tokenscontroller_getalltokens","openApiOperationId":"TokensController_getAllTokens","summary":"Get all token contracts"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Tokens retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_70"}},"schemaId":"schema_70"}],"pointer":"/paths/~1tokens/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_70","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_70"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tokens/tokenscontroller_getalltokens"}],"panels":[]}]},"httpPath":"/tokens"},{"label":"Create new token contract","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/tokens/tokenscontroller_createtoken","routeSlug":"/swagger/tokens/tokenscontroller_createtoken","metadata":{"seo":{"title":"Create new token contract","description":"ADMIN: Create a new testnet token contract for the project. This can later be converted to mainnet."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TokensController_createToken","name":"Create new token contract","isWebhook":false,"pointer":"/paths/~1tokens/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create new token contract","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"ADMIN: Create a new testnet token contract for the project. This can later be converted to mainnet."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TokenCreateRequestDTO"}},"schemaId":"components/schemas/TokenCreateRequestDTO","pointer":"/paths/~1tokens/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/tokens","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/TokenCreateRequestDTO"}},"responseCodes":["200","201"],"pointer":"/tokens","href":"tokens/tokenscontroller_createtoken","openApiOperationId":"TokensController_createToken","summary":"Create new token contract"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/TokenCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TokenCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Token created successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TokenDTO"}},"schemaId":"components/schemas/TokenDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TokenDTO"}},"schemaId":"components/schemas/TokenDTO"}],"pointer":"/paths/~1tokens/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TokenDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TokenDTO"}}},{"code":"201","schemaId":"components/schemas/TokenDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TokenDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tokens/tokenscontroller_createtoken"}],"panels":[]}]},"httpPath":"/tokens"},{"label":"Get token by contract address","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/tokens/tokenscontroller_gettokenbyaddress","routeSlug":"/swagger/tokens/tokenscontroller_gettokenbyaddress","metadata":{"seo":{"title":"Get token by contract address","description":"Retrieve token information by contract address"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TokensController_getTokenByAddress","name":"Get token by contract address","isWebhook":false,"pointer":"/paths/~1tokens~1address~1{contractAddress}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get token by contract address","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve token information by contract address"},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"contractAddress","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1tokens~1address~1{contractAddress}/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"contractTokenId","in":"query","schemaId":"schema_67","description":"Token ID for ERC721 or ERC1155 tokens"}],"pointer":"/paths/~1tokens~1address~1{contractAddress}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/tokens/address/{contractAddress}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"contractAddress","in":"path","required":true,"schemaId":"schema_67"}],"query":[{"name":"contractTokenId","in":"query","required":false,"schemaId":"schema_67"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/tokens/address/{contractAddress}","href":"tokens/tokenscontroller_gettokenbyaddress","openApiOperationId":"TokensController_getTokenByAddress","summary":"Get token by contract address"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Token retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TokenDTO"}},"schemaId":"components/schemas/TokenDTO"}],"pointer":"/paths/~1tokens~1address~1{contractAddress}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TokenDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TokenDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tokens/tokenscontroller_gettokenbyaddress"}],"panels":[]}]},"httpPath":"/tokens/address/{contractAddress}"},{"label":"Get active point token","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/tokens/tokenscontroller_getactivepointtoken","routeSlug":"/swagger/tokens/tokenscontroller_getactivepointtoken","metadata":{"seo":{"title":"Get active point token","description":"Retrieve the active point token contract for the project"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TokensController_getActivePointToken","name":"Get active point token","isWebhook":false,"pointer":"/paths/~1tokens~1points/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get active point token","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve the active point token contract for the project"},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/tokens/points","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/tokens/points","href":"tokens/tokenscontroller_getactivepointtoken","openApiOperationId":"TokensController_getActivePointToken","summary":"Get active point token"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Point token retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TokenDTO"}},"schemaId":"components/schemas/TokenDTO"}],"pointer":"/paths/~1tokens~1points/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TokenDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TokenDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tokens/tokenscontroller_getactivepointtoken"}],"panels":[]}]},"httpPath":"/tokens/points"},{"label":"Get all reward tokens","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/tokens/tokenscontroller_getrewardtokens","routeSlug":"/swagger/tokens/tokenscontroller_getrewardtokens","metadata":{"seo":{"title":"Get all reward tokens","description":"Retrieve all reward token contracts (ERC1155 tokens). Only admins can access inactive tokens via ?active=false parameter. Use pagination parameters (page & limit) for optimal performance. Legacy support: returns array without params (deprecated - will be removed in future)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TokensController_getRewardTokens","name":"Get all reward tokens","isWebhook":false,"pointer":"/paths/~1tokens~1rewards/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get all reward tokens","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Retrieve all reward token contracts (ERC1155 tokens). Only admins can access inactive tokens via ?active=false parameter. Use pagination parameters (page & limit) for optimal performance. Legacy support: returns array without params (deprecated - will be removed in future)."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"active","in":"query","schemaId":"schema_67","description":"Filter for active reward tokens only (default: true). Non-admin users always get active tokens only."},{"name":"page","in":"query","schemaId":"schema_67","description":"Page number for pagination (1-based)"},{"name":"limit","in":"query","schemaId":"schema_67","description":"Number of items per page"}],"pointer":"/paths/~1tokens~1rewards/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/tokens/rewards","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"active","in":"query","required":false,"schemaId":"schema_67"},{"name":"page","in":"query","required":false,"schemaId":"schema_67"},{"name":"limit","in":"query","required":false,"schemaId":"schema_67"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/tokens/rewards","href":"tokens/tokenscontroller_getrewardtokens","openApiOperationId":"TokensController_getRewardTokens","summary":"Get all reward tokens"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Reward tokens retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_70"}},"schemaId":"schema_70"}],"pointer":"/paths/~1tokens~1rewards/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_70","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_70"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tokens/tokenscontroller_getrewardtokens"}],"panels":[]}]},"httpPath":"/tokens/rewards"},{"label":"Get all stamp tokens","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/tokens/tokenscontroller_getstamptokens","routeSlug":"/swagger/tokens/tokenscontroller_getstamptokens","metadata":{"seo":{"title":"Get all stamp tokens","description":"Retrieve all stamp token contracts (ERC721 tokens). Only admins can access inactive tokens via ?active=false parameter. Use pagination parameters (page & limit) for optimal performance. Legacy support: returns array without params (deprecated - will be removed in future)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TokensController_getStampTokens","name":"Get all stamp tokens","isWebhook":false,"pointer":"/paths/~1tokens~1stamps/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get all stamp tokens","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Retrieve all stamp token contracts (ERC721 tokens). Only admins can access inactive tokens via ?active=false parameter. Use pagination parameters (page & limit) for optimal performance. Legacy support: returns array without params (deprecated - will be removed in future)."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"active","in":"query","schemaId":"schema_67","description":"Filter for active stamp tokens only (default: true). Non-admin users always get active tokens only."},{"name":"page","in":"query","schemaId":"schema_67","description":"Page number for pagination (1-based)"},{"name":"limit","in":"query","schemaId":"schema_67","description":"Number of items per page"}],"pointer":"/paths/~1tokens~1stamps/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/tokens/stamps","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"active","in":"query","required":false,"schemaId":"schema_67"},{"name":"page","in":"query","required":false,"schemaId":"schema_67"},{"name":"limit","in":"query","required":false,"schemaId":"schema_67"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/tokens/stamps","href":"tokens/tokenscontroller_getstamptokens","openApiOperationId":"TokensController_getStampTokens","summary":"Get all stamp tokens"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Stamp tokens retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_70"}},"schemaId":"schema_70"}],"pointer":"/paths/~1tokens~1stamps/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_70","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_70"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tokens/tokenscontroller_getstamptokens"}],"panels":[]}]},"httpPath":"/tokens/stamps"},{"label":"Get all token types","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/tokens/tokenscontroller_getalltokentypes","routeSlug":"/swagger/tokens/tokenscontroller_getalltokentypes","metadata":{"seo":{"title":"Get all token types","description":"Retrieve all available token types for the project. Use pagination parameters (page & limit) for optimal performance. Legacy support: returns array without params (deprecated - will be removed in future)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TokensController_getAllTokenTypes","name":"Get all token types","isWebhook":false,"pointer":"/paths/~1tokens~1types/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get all token types","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Retrieve all available token types for the project. Use pagination parameters (page & limit) for optimal performance. Legacy support: returns array without params (deprecated - will be removed in future)."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"page","in":"query","schemaId":"schema_67","description":"Page number for pagination (1-based)"},{"name":"limit","in":"query","schemaId":"schema_67","description":"Number of items per page"}],"pointer":"/paths/~1tokens~1types/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/tokens/types","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"page","in":"query","required":false,"schemaId":"schema_67"},{"name":"limit","in":"query","required":false,"schemaId":"schema_67"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/tokens/types","href":"tokens/tokenscontroller_getalltokentypes","openApiOperationId":"TokensController_getAllTokenTypes","summary":"Get all token types"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Token types retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_71"}},"schemaId":"schema_71"}],"pointer":"/paths/~1tokens~1types/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_71","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_71"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tokens/tokenscontroller_getalltokentypes"}],"panels":[]}]},"httpPath":"/tokens/types"},{"label":"Create new token type","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/tokens/tokenscontroller_createtokentype","routeSlug":"/swagger/tokens/tokenscontroller_createtokentype","metadata":{"seo":{"title":"Create new token type","description":"ADMIN: Create a new token type for the project"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TokensController_createTokenType","name":"Create new token type","isWebhook":false,"pointer":"/paths/~1tokens~1types/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create new token type","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"ADMIN: Create a new token type for the project"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TokenTypeDTO"}},"schemaId":"components/schemas/TokenTypeDTO","pointer":"/paths/~1tokens~1types/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/tokens/types","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/TokenTypeDTO"}},"responseCodes":["200","201"],"pointer":"/tokens/types","href":"tokens/tokenscontroller_createtokentype","openApiOperationId":"TokensController_createTokenType","summary":"Create new token type"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/TokenTypeDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TokenTypeDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Token type created successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TokenTypeDTO"}},"schemaId":"components/schemas/TokenTypeDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TokenTypeDTO"}},"schemaId":"components/schemas/TokenTypeDTO"}],"pointer":"/paths/~1tokens~1types/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TokenTypeDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TokenTypeDTO"}}},{"code":"201","schemaId":"components/schemas/TokenTypeDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TokenTypeDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tokens/tokenscontroller_createtokentype"}],"panels":[]}]},"httpPath":"/tokens/types"},{"label":"Get all token metadata","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/tokens/tokenscontroller_getalltokenmetadata","routeSlug":"/swagger/tokens/tokenscontroller_getalltokenmetadata","metadata":{"seo":{"title":"Get all token metadata","description":"Retrieve all token metadata with filtering and pagination. Useful for displaying rewards/stamps in tables. Non-admin users always get active metadata only."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TokensController_getAllTokenMetadata","name":"Get all token metadata","isWebhook":false,"pointer":"/paths/~1tokens~1metadata/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get all token metadata","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve all token metadata with filtering and pagination. Useful for displaying rewards/stamps in tables. Non-admin users always get active metadata only."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]},{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"active","in":"query","schemaId":"schema_67","description":"Filter by active status (default: true for non-admin)"},{"name":"tokenId","in":"query","schemaId":"schema_67","description":"Filter by parent token contract ID"},{"name":"ownerBusinessId","in":"query","schemaId":"schema_67","description":"Filter by owner business ID (returns token metadata owned by this business)"},{"name":"search","in":"query","schemaId":"schema_67","description":"Free text search across name and description"},{"name":"tags","in":"query","schemaId":"schema_67","description":"Filter by tag(s). Comma-separated for OR matching."},{"name":"page","in":"query","schemaId":"schema_68","description":"Page number for pagination (1-based)"},{"name":"limit","in":"query","schemaId":"schema_68","description":"Number of items per page"},{"name":"sortBy","in":"query","schemaId":"schema_72","description":"Sort field"},{"name":"sortOrder","in":"query","schemaId":"schema_73","description":"Sort direction"},{"name":"approvalStatus","in":"query","schemaId":"schema_74","description":"Filter by approval status (admin only)"},{"name":"include","in":"query","schemaId":"schema_75","description":"Include related entities. Valid options: ownerBusiness, mintCount, burnCount, token."},{"name":"tokenType","in":"query","schemaId":"schema_76","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Filter by token type (ERC721=stamps, ERC1155=rewards)"},"children":[]}]}]}]}],"pointer":"/paths/~1tokens~1metadata/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/tokens/metadata","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"active","in":"query","required":false,"schemaId":"schema_67"},{"name":"tokenId","in":"query","required":false,"schemaId":"schema_67"},{"name":"ownerBusinessId","in":"query","required":false,"schemaId":"schema_67"},{"name":"search","in":"query","required":false,"schemaId":"schema_67"},{"name":"tags","in":"query","required":false,"schemaId":"schema_67"},{"name":"page","in":"query","required":false,"schemaId":"schema_68"},{"name":"limit","in":"query","required":false,"schemaId":"schema_68"},{"name":"sortBy","in":"query","required":false,"schemaId":"schema_72"},{"name":"sortOrder","in":"query","required":false,"schemaId":"schema_73"},{"name":"approvalStatus","in":"query","required":false,"schemaId":"schema_74"},{"name":"include","in":"query","required":false,"schemaId":"schema_75"},{"name":"tokenType","in":"query","required":false,"schemaId":"schema_76"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]},{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/tokens/metadata","href":"tokens/tokenscontroller_getalltokenmetadata","openApiOperationId":"TokensController_getAllTokenMetadata","summary":"Get all token metadata","securityGroups":[{"authJWT":[]},{"projectKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Token metadata retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_77"}},"schemaId":"schema_77"}],"pointer":"/paths/~1tokens~1metadata/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_77","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_77"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tokens/tokenscontroller_getalltokenmetadata"}],"panels":[]}]},"httpPath":"/tokens/metadata"},{"label":"Export token metadata as CSV (Admin)","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/tokens/tokenscontroller_exporttokenmetadataascsv","routeSlug":"/swagger/tokens/tokenscontroller_exporttokenmetadataascsv","metadata":{"seo":{"title":"Export token metadata as CSV (Admin)","description":"Export all token metadata to CSV format with optional date filtering."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TokensController_exportTokenMetadataAsCsv","name":"Export token metadata as CSV (Admin)","isWebhook":false,"pointer":"/paths/~1tokens~1metadata~1export~1csv/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Export token metadata as CSV (Admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Export all token metadata to CSV format with optional date filtering."},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]},{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"dateFrom","in":"query","schemaId":"schema_67","description":"Filter by creation date (from)"},{"name":"dateTo","in":"query","schemaId":"schema_67","description":"Filter by creation date (to)"}],"pointer":"/paths/~1tokens~1metadata~1export~1csv/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/tokens/metadata/export/csv","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"dateFrom","in":"query","required":false,"schemaId":"schema_67"},{"name":"dateTo","in":"query","required":false,"schemaId":"schema_67"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]},{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/tokens/metadata/export/csv","href":"tokens/tokenscontroller_exporttokenmetadataascsv","openApiOperationId":"TokensController_exportTokenMetadataAsCsv","summary":"Export token metadata as CSV (Admin)","securityGroups":[{"projectKey":[]},{"authJWT":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200"}],"pointer":"/paths/~1tokens~1metadata~1export~1csv/get/responses"}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tokens/tokenscontroller_exporttokenmetadataascsv"}],"panels":[]}]},"httpPath":"/tokens/metadata/export/csv"},{"label":"Update token contract","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/tokens/tokenscontroller_updatetoken","routeSlug":"/swagger/tokens/tokenscontroller_updatetoken","metadata":{"seo":{"title":"Update token contract","description":"ADMIN: Update token contract information"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TokensController_updateToken","name":"Update token contract","isWebhook":false,"pointer":"/paths/~1tokens~1{id}/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update token contract","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"ADMIN: Update token contract information"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1tokens~1{id}/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TokenUpdateRequestDTO"}},"schemaId":"components/schemas/TokenUpdateRequestDTO","pointer":"/paths/~1tokens~1{id}/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/tokens/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/TokenUpdateRequestDTO"}},"responseCodes":["200"],"pointer":"/tokens/{id}","href":"tokens/tokenscontroller_updatetoken","openApiOperationId":"TokensController_updateToken","summary":"Update token contract"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/TokenUpdateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TokenUpdateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Token updated successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TokenDTO"}},"schemaId":"components/schemas/TokenDTO"}],"pointer":"/paths/~1tokens~1{id}/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TokenDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TokenDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tokens/tokenscontroller_updatetoken"}],"panels":[]}]},"httpPath":"/tokens/{id}"},{"label":"Toggle token active status","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/tokens/tokenscontroller_toggletokenstatus","routeSlug":"/swagger/tokens/tokenscontroller_toggletokenstatus","metadata":{"seo":{"title":"Toggle token active status","description":"ADMIN: Toggle token active status to enable/disable usage"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TokensController_toggleTokenStatus","name":"Toggle token active status","isWebhook":false,"pointer":"/paths/~1tokens~1{id}~1status/put","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Toggle token active status","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"ADMIN: Toggle token active status to enable/disable usage"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1tokens~1{id}~1status/put/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/tokens/{id}/status","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/tokens/{id}/status","href":"tokens/tokenscontroller_toggletokenstatus","openApiOperationId":"TokensController_toggleTokenStatus","summary":"Toggle token active status"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Token status updated successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TokenDTO"}},"schemaId":"components/schemas/TokenDTO"}],"pointer":"/paths/~1tokens~1{id}~1status/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TokenDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TokenDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tokens/tokenscontroller_toggletokenstatus"}],"panels":[]}]},"httpPath":"/tokens/{id}/status"},{"label":"Set mainnet contract address","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/tokens/tokenscontroller_setmainnetcontract","routeSlug":"/swagger/tokens/tokenscontroller_setmainnetcontract","metadata":{"seo":{"title":"Set mainnet contract address","description":"ADMIN: Associate mainnet contract address with existing testnet token"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TokensController_setMainnetContract","name":"Set mainnet contract address","isWebhook":false,"pointer":"/paths/~1tokens~1{id}~1mainnet/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Set mainnet contract address","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"ADMIN: Associate mainnet contract address with existing testnet token"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1tokens~1{id}~1mainnet/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_78"}},"schemaId":"schema_78","pointer":"/paths/~1tokens~1{id}~1mainnet/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/tokens/{id}/mainnet","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"schema_78"}},"responseCodes":["200"],"pointer":"/tokens/{id}/mainnet","href":"tokens/tokenscontroller_setmainnetcontract","openApiOperationId":"TokensController_setMainnetContract","summary":"Set mainnet contract address"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"schema_78","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_78"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Mainnet contract address set successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TokenDTO"}},"schemaId":"components/schemas/TokenDTO"}],"pointer":"/paths/~1tokens~1{id}~1mainnet/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TokenDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TokenDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tokens/tokenscontroller_setmainnetcontract"}],"panels":[]}]},"httpPath":"/tokens/{id}/mainnet"},{"label":"Create token metadata","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/tokens/tokenscontroller_createtokenmetadata","routeSlug":"/swagger/tokens/tokenscontroller_createtokenmetadata","metadata":{"seo":{"title":"Create token metadata","description":"ADMIN: Create metadata for a specific token contract"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TokensController_createTokenMetadata","name":"Create token metadata","isWebhook":false,"pointer":"/paths/~1tokens~1{id}~1metadata/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create token metadata","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"ADMIN: Create metadata for a specific token contract"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1tokens~1{id}~1metadata/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TokenMetadataCreateRequestDTO"}},"schemaId":"components/schemas/TokenMetadataCreateRequestDTO","pointer":"/paths/~1tokens~1{id}~1metadata/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/tokens/{id}/metadata","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/TokenMetadataCreateRequestDTO"}},"responseCodes":["200","201"],"pointer":"/tokens/{id}/metadata","href":"tokens/tokenscontroller_createtokenmetadata","openApiOperationId":"TokensController_createTokenMetadata","summary":"Create token metadata"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/TokenMetadataCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TokenMetadataCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Token metadata created successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TokenMetadataDTO"}},"schemaId":"components/schemas/TokenMetadataDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TokenMetadataDTO"}},"schemaId":"components/schemas/TokenMetadataDTO"}],"pointer":"/paths/~1tokens~1{id}~1metadata/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TokenMetadataDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TokenMetadataDTO"}}},{"code":"201","schemaId":"components/schemas/TokenMetadataDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TokenMetadataDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tokens/tokenscontroller_createtokenmetadata"}],"panels":[]}]},"httpPath":"/tokens/{id}/metadata"},{"label":"Update token metadata","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/tokens/tokenscontroller_updatetokenmetadata","routeSlug":"/swagger/tokens/tokenscontroller_updatetokenmetadata","metadata":{"seo":{"title":"Update token metadata","description":"Update metadata for a specific token. Business can only update their own metadata. ERC721: only affects future mints. ERC1155: ⚠️ updates ALL existing minted tokens."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TokensController_updateTokenMetadata","name":"Update token metadata","isWebhook":false,"pointer":"/paths/~1tokens~1metadata~1{metadataId}/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update token metadata","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Update metadata for a specific token. Business can only update their own metadata. ERC721: only affects future mints. ERC1155: ⚠️ updates ALL existing minted tokens."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"metadataId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1tokens~1metadata~1{metadataId}/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TokenMetadataCreateRequestDTO"}},"schemaId":"components/schemas/TokenMetadataCreateRequestDTO","pointer":"/paths/~1tokens~1metadata~1{metadataId}/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/tokens/metadata/{metadataId}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"metadataId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/TokenMetadataCreateRequestDTO"}},"responseCodes":["200"],"pointer":"/tokens/metadata/{metadataId}","href":"tokens/tokenscontroller_updatetokenmetadata","openApiOperationId":"TokensController_updateTokenMetadata","summary":"Update token metadata"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/TokenMetadataCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TokenMetadataCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Token metadata updated successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TokenMetadataDTO"}},"schemaId":"components/schemas/TokenMetadataDTO"}],"pointer":"/paths/~1tokens~1metadata~1{metadataId}/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TokenMetadataDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TokenMetadataDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tokens/tokenscontroller_updatetokenmetadata"}],"panels":[]}]},"httpPath":"/tokens/metadata/{metadataId}"},{"label":"Delete token metadata (soft delete)","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/tokens/tokenscontroller_deletetokenmetadata","routeSlug":"/swagger/tokens/tokenscontroller_deletetokenmetadata","metadata":{"seo":{"title":"Delete token metadata (soft delete)","description":"Soft delete token metadata. Business can only delete their own metadata. Returns 409 Conflict if metadata is used by active campaigns or redemptions."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TokensController_deleteTokenMetadata","name":"Delete token metadata (soft delete)","isWebhook":false,"pointer":"/paths/~1tokens~1metadata~1{metadataId}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Delete token metadata (soft delete)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Soft delete token metadata. Business can only delete their own metadata. Returns 409 Conflict if metadata is used by active campaigns or redemptions."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"metadataId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1tokens~1metadata~1{metadataId}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/tokens/metadata/{metadataId}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"metadataId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","409"],"pointer":"/tokens/metadata/{metadataId}","href":"tokens/tokenscontroller_deletetokenmetadata","openApiOperationId":"TokensController_deleteTokenMetadata","summary":"Delete token metadata (soft delete)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Token metadata deleted successfully"},{"code":"409","description":"Token metadata is in use by active campaigns or redemptions"}],"pointer":"/paths/~1tokens~1metadata~1{metadataId}/delete/responses"}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tokens/tokenscontroller_deletetokenmetadata"}],"panels":[]}]},"httpPath":"/tokens/metadata/{metadataId}"},{"label":"Toggle token metadata status","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/tokens/tokenscontroller_toggletokenmetadatastatus","routeSlug":"/swagger/tokens/tokenscontroller_toggletokenmetadatastatus","metadata":{"seo":{"title":"Toggle token metadata status","description":"ADMIN/BUSINESS: Toggle token metadata active status. Business can only toggle their own metadata."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TokensController_toggleTokenMetadataStatus","name":"Toggle token metadata status","isWebhook":false,"pointer":"/paths/~1tokens~1metadata~1{metadataId}~1status/put","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Toggle token metadata status","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"ADMIN/BUSINESS: Toggle token metadata active status. Business can only toggle their own metadata."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"metadataId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1tokens~1metadata~1{metadataId}~1status/put/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/tokens/metadata/{metadataId}/status","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"metadataId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/tokens/metadata/{metadataId}/status","href":"tokens/tokenscontroller_toggletokenmetadatastatus","openApiOperationId":"TokensController_toggleTokenMetadataStatus","summary":"Toggle token metadata status"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Token metadata status updated successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TokenMetadataDTO"}},"schemaId":"components/schemas/TokenMetadataDTO"}],"pointer":"/paths/~1tokens~1metadata~1{metadataId}~1status/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TokenMetadataDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TokenMetadataDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tokens/tokenscontroller_toggletokenmetadatastatus"}],"panels":[]}]},"httpPath":"/tokens/metadata/{metadataId}/status"},{"label":"Approve or reject a token metadata (Admin)","deprecated":false,"httpVerb":"patch","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/tokens/tokenscontroller_approveorrejecttokenmetadata","routeSlug":"/swagger/tokens/tokenscontroller_approveorrejecttokenmetadata","metadata":{"seo":{"title":"Approve or reject a token metadata (Admin)","description":"Sets approval status to approved or rejected. Rejected requires a reason."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TokensController_approveOrRejectTokenMetadata","name":"Approve or reject a token metadata (Admin)","isWebhook":false,"pointer":"/paths/~1tokens~1metadata~1{metadataId}~1approval/patch","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Approve or reject a token metadata (Admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Sets approval status to approved or rejected. Rejected requires a reason."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"metadataId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1tokens~1metadata~1{metadataId}~1approval/patch/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateApprovalDTO"}},"schemaId":"components/schemas/CreateApprovalDTO","pointer":"/paths/~1tokens~1metadata~1{metadataId}~1approval/patch/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PATCH","path":"/tokens/metadata/{metadataId}/approval","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"metadataId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/CreateApprovalDTO"}},"responseCodes":["200"],"pointer":"/tokens/metadata/{metadataId}/approval","href":"tokens/tokenscontroller_approveorrejecttokenmetadata","openApiOperationId":"TokensController_approveOrRejectTokenMetadata","summary":"Approve or reject a token metadata (Admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/CreateApprovalDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateApprovalDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Token metadata approval updated","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TokenMetadataDTO"}},"schemaId":"components/schemas/TokenMetadataDTO"}],"pointer":"/paths/~1tokens~1metadata~1{metadataId}~1approval/patch/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TokenMetadataDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TokenMetadataDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tokens/tokenscontroller_approveorrejecttokenmetadata"}],"panels":[]}]},"httpPath":"/tokens/metadata/{metadataId}/approval"},{"label":"Migrate token ownership to tenant dedicated EOA","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/tokens/tokenscontroller_migratetokenownership","routeSlug":"/swagger/tokens/tokenscontroller_migratetokenownership","metadata":{"seo":{"title":"Migrate token ownership to tenant dedicated EOA","description":"ADMIN: Transfers on-chain ownership of a legacy token proxy from the shared platform wallet to the tenant's dedicated EOA. Generates a fresh EOA and stores the secret in AWS Secrets Manager if the tenant has no dedicated wallet yet. Idempotent — safe to retry."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TokensController_migrateTokenOwnership","name":"Migrate token ownership to tenant dedicated EOA","isWebhook":false,"pointer":"/paths/~1tokens~1{contractAddress}~1migrate-ownership/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Migrate token ownership to tenant dedicated EOA","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ADMIN: Transfers on-chain ownership of a legacy token proxy from the shared platform wallet to the tenant's dedicated EOA. Generates a fresh EOA and stores the secret in AWS Secrets Manager if the tenant has no dedicated wallet yet. Idempotent — safe to retry."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"contractAddress","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1tokens~1{contractAddress}~1migrate-ownership/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_79"}},"schemaId":"schema_79","pointer":"/paths/~1tokens~1{contractAddress}~1migrate-ownership/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/tokens/{contractAddress}/migrate-ownership","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"contractAddress","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"schema_79"}},"responseCodes":["200","201"],"pointer":"/tokens/{contractAddress}/migrate-ownership","href":"tokens/tokenscontroller_migratetokenownership","openApiOperationId":"TokensController_migrateTokenOwnership","summary":"Migrate token ownership to tenant dedicated EOA"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"schema_79","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_79"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Ownership migrated successfully"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_80"}},"schemaId":"schema_80"}],"pointer":"/paths/~1tokens~1{contractAddress}~1migrate-ownership/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200"},{"code":"201","schemaId":"schema_80","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_80"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tokens/tokenscontroller_migratetokenownership"}],"panels":[]}]},"httpPath":"/tokens/{contractAddress}/migrate-ownership"},{"label":"Migrate ownership of all tenant tokens to their dedicated EOA","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/tokens/tokenscontroller_migratealltokenownerships","routeSlug":"/swagger/tokens/tokenscontroller_migratealltokenownerships","metadata":{"seo":{"title":"Migrate ownership of all tenant tokens to their dedicated EOA","description":"ADMIN: Resolves every token proxy owned by the tenant on the given chain and transfers ownership to the tenant's dedicated EOA. Requires the tenant to already have a wallet (see POST /tenants/wallet). Best-effort per contract."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TokensController_migrateAllTokenOwnerships","name":"Migrate ownership of all tenant tokens to their dedicated EOA","isWebhook":false,"pointer":"/paths/~1tokens~1migrate-ownership~1all/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Migrate ownership of all tenant tokens to their dedicated EOA","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"ADMIN: Resolves every token proxy owned by the tenant on the given chain and transfers ownership to the tenant's dedicated EOA. Requires the tenant to already have a wallet (see POST /tenants/wallet). Best-effort per contract."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_79"}},"schemaId":"schema_79","pointer":"/paths/~1tokens~1migrate-ownership~1all/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/tokens/migrate-ownership/all","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"schema_79"}},"responseCodes":["200","201"],"pointer":"/tokens/migrate-ownership/all","href":"tokens/tokenscontroller_migratealltokenownerships","openApiOperationId":"TokensController_migrateAllTokenOwnerships","summary":"Migrate ownership of all tenant tokens to their dedicated EOA"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"schema_79","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_79"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Ownership migration attempted for all tenant tokens"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_80"}},"schemaId":"schema_80"}],"pointer":"/paths/~1tokens~1migrate-ownership~1all/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200"},{"code":"201","schemaId":"schema_80","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_80"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tokens/tokenscontroller_migratealltokenownerships"}],"panels":[]}]},"httpPath":"/tokens/migrate-ownership/all"}],"content":{"contentType":"group","meta":{"name":"Tokens"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Tokens","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/tokens","summary":"Get all token contracts","prefix":{"name":"get","color":"get"},"badges":[],"link":"/tokens/tokenscontroller_getalltokens","deprecated":false},{"title":"/tokens","summary":"Create new token contract","prefix":{"name":"post","color":"post"},"badges":[],"link":"/tokens/tokenscontroller_createtoken","deprecated":false},{"title":"/tokens/address/{contractAddress}","summary":"Get token by contract address","prefix":{"name":"get","color":"get"},"badges":[],"link":"/tokens/tokenscontroller_gettokenbyaddress","deprecated":false},{"title":"/tokens/points","summary":"Get active point token","prefix":{"name":"get","color":"get"},"badges":[],"link":"/tokens/tokenscontroller_getactivepointtoken","deprecated":false},{"title":"/tokens/rewards","summary":"Get all reward tokens","prefix":{"name":"get","color":"get"},"badges":[],"link":"/tokens/tokenscontroller_getrewardtokens","deprecated":false},{"title":"/tokens/stamps","summary":"Get all stamp tokens","prefix":{"name":"get","color":"get"},"badges":[],"link":"/tokens/tokenscontroller_getstamptokens","deprecated":false},{"title":"/tokens/types","summary":"Get all token types","prefix":{"name":"get","color":"get"},"badges":[],"link":"/tokens/tokenscontroller_getalltokentypes","deprecated":false},{"title":"/tokens/types","summary":"Create new token type","prefix":{"name":"post","color":"post"},"badges":[],"link":"/tokens/tokenscontroller_createtokentype","deprecated":false},{"title":"/tokens/metadata","summary":"Get all token metadata","prefix":{"name":"get","color":"get"},"badges":[],"link":"/tokens/tokenscontroller_getalltokenmetadata","deprecated":false},{"title":"/tokens/metadata/export/csv","summary":"Export token metadata as CSV (Admin)","prefix":{"name":"get","color":"get"},"badges":[],"link":"/tokens/tokenscontroller_exporttokenmetadataascsv","deprecated":false},{"title":"/tokens/{id}","summary":"Update token contract","prefix":{"name":"put","color":"put"},"badges":[],"link":"/tokens/tokenscontroller_updatetoken","deprecated":false},{"title":"/tokens/{id}/status","summary":"Toggle token active status","prefix":{"name":"put","color":"put"},"badges":[],"link":"/tokens/tokenscontroller_toggletokenstatus","deprecated":false},{"title":"/tokens/{id}/mainnet","summary":"Set mainnet contract address","prefix":{"name":"put","color":"put"},"badges":[],"link":"/tokens/tokenscontroller_setmainnetcontract","deprecated":false},{"title":"/tokens/{id}/metadata","summary":"Create token metadata","prefix":{"name":"post","color":"post"},"badges":[],"link":"/tokens/tokenscontroller_createtokenmetadata","deprecated":false},{"title":"/tokens/metadata/{metadataId}","summary":"Update token metadata","prefix":{"name":"put","color":"put"},"badges":[],"link":"/tokens/tokenscontroller_updatetokenmetadata","deprecated":false},{"title":"/tokens/metadata/{metadataId}","summary":"Delete token metadata (soft delete)","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/tokens/tokenscontroller_deletetokenmetadata","deprecated":false},{"title":"/tokens/metadata/{metadataId}/status","summary":"Toggle token metadata status","prefix":{"name":"put","color":"put"},"badges":[],"link":"/tokens/tokenscontroller_toggletokenmetadatastatus","deprecated":false},{"title":"/tokens/metadata/{metadataId}/approval","summary":"Approve or reject a token metadata (Admin)","prefix":{"name":"patch","color":"patch"},"badges":[],"link":"/tokens/tokenscontroller_approveorrejecttokenmetadata","deprecated":false},{"title":"/tokens/{contractAddress}/migrate-ownership","summary":"Migrate token ownership to tenant dedicated EOA","prefix":{"name":"post","color":"post"},"badges":[],"link":"/tokens/tokenscontroller_migratetokenownership","deprecated":false},{"title":"/tokens/migrate-ownership/all","summary":"Migrate ownership of all tenant tokens to their dedicated EOA","prefix":{"name":"post","color":"post"},"badges":[],"link":"/tokens/tokenscontroller_migratealltokenownerships","deprecated":false}]}]}]}]}},{"type":"group","label":"Campaigns","link":"/swagger/campaigns","routeSlug":"/swagger/campaigns","items":[{"type":"link","label":"Core Campaign Management","link":"/swagger/campaigns/core-campaign-management","routeSlug":"/swagger/campaigns/core-campaign-management","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Core Campaign Management"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"campaigns/core-campaign-management"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Core Campaign Management"},"children":[]}]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"div","attrs":{"style":{"fontSize":"14px","lineHeight":"1.5"}}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"\n      Core campaign CRUD operations with intelligent access detection. Handles campaign lifecycle management including creation, updates, activation, and querying with role-based access control.\n    "},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Campaign Operations:"},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Campaign Discovery:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Public browsing of active campaigns without authentication\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Advanced Filtering:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Query campaigns by tags, status, and custom criteria\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Lifecycle Management:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Full campaign CRUD with proper state transitions\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Environment Control:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Toggle campaigns between testnet and mainnet modes\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Access Intelligence:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Automatic privilege detection for appropriate data exposure\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"img","attrs":{"src":"https://s3.eu-west-1.amazonaws.com/pers.assets.prod/tenant/a0df6ebf-51cc-4c18-afcd-0de355c250dc_DemoApp_eXplorins/Documentation/Campaign_image.png","alt":"Campaign Module","width":"400","style":{"marginTop":"10px"}}},"children":[]}]}],"panels":[]}]}},{"label":"Get campaigns (Intelligent Access)","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaigns/campaignscontroller_getcampaigns","routeSlug":"/swagger/campaigns/campaignscontroller_getcampaigns","metadata":{"seo":{"title":"Get campaigns (Intelligent Access)","description":"Endpoint that adapts based on authentication: Public users get active campaigns with filtering, Business users get all campaigns (active+inactive) for their business only, Admin users get all campaigns with full filtering. Use pagination parameters (page & limit) for optimal performance - critical for large campaign datasets. Legacy support: returns array without params (deprecated - will be removed in future). Replaces GET /campaign and GET /campaign/admin"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignsController_getCampaigns","name":"Get campaigns (Intelligent Access)","isWebhook":false,"pointer":"/paths/~1campaigns/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get campaigns (Intelligent Access)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Endpoint that adapts based on authentication: Public users get active campaigns with filtering, Business users get all campaigns (active+inactive) for their business only, Admin users get all campaigns with full filtering. Use pagination parameters (page & limit) for optimal performance - critical for large campaign datasets. Legacy support: returns array without params (deprecated - will be removed in future). Replaces GET /campaign and GET /campaign/admin"},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]},{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"active","in":"query","schemaId":"schema_81","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Filter by active status (Admin only: true=active, false=inactive, omit=all). Ignored for public/business access."},"children":[]}]}]}]},{"name":"search","in":"query","schemaId":"schema_67","description":"Free text search across campaign name, description, and tags (case-insensitive)"},{"name":"businessId","in":"query","schemaId":"schema_67","description":"Filter by business participation via TriggerSources (returns campaigns with a TriggerSource assigned to this business). Ignored for business access (auto-filtered to own business)."},{"name":"ownerBusinessId","in":"query","schemaId":"schema_67","description":"Filter by owner business ID (returns campaigns owned by this business)."},{"name":"page","in":"query","schemaId":"schema_68","description":"Page number (1-based). When provided with limit, enables DB-level pagination for optimal performance."},{"name":"limit","in":"query","schemaId":"schema_68","description":"Items per page (default: 50, max: 10000)"},{"name":"startDate","in":"query","schemaId":"schema_67","description":"Filter campaigns starting on or after this date (ISO 8601 format)"},{"name":"endDate","in":"query","schemaId":"schema_67","description":"Filter campaigns ending on or before this date (ISO 8601 format)"},{"name":"sortBy","in":"query","schemaId":"schema_82","description":"Sort field (defaults to order ASC for display ordering)"},{"name":"sortOrder","in":"query","schemaId":"schema_73","description":"Sort direction"},{"name":"approvalStatus","in":"query","schemaId":"schema_74","description":"Filter by approval status (admin only)"},{"name":"include","in":"query","schemaId":"schema_75","description":"Include related entities. Valid options: triggerSources, businesses, claimCount, ownerBusiness. Use comma-separated for multiple."},{"name":"tag","in":"query","schemaId":"schema_75","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"@deprecated Use tags instead. Filter by tag(s)."},"children":[]}]}]}],"deprecated":true},{"name":"tags","in":"query","schemaId":"schema_75","description":"Filter by tag(s). Comma-separated or multiple params for OR matching."}],"pointer":"/paths/~1campaigns/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/campaigns","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"active","in":"query","required":false,"schemaId":"schema_81"},{"name":"search","in":"query","required":false,"schemaId":"schema_67"},{"name":"businessId","in":"query","required":false,"schemaId":"schema_67"},{"name":"ownerBusinessId","in":"query","required":false,"schemaId":"schema_67"},{"name":"page","in":"query","required":false,"schemaId":"schema_68"},{"name":"limit","in":"query","required":false,"schemaId":"schema_68"},{"name":"startDate","in":"query","required":false,"schemaId":"schema_67"},{"name":"endDate","in":"query","required":false,"schemaId":"schema_67"},{"name":"sortBy","in":"query","required":false,"schemaId":"schema_82"},{"name":"sortOrder","in":"query","required":false,"schemaId":"schema_73"},{"name":"approvalStatus","in":"query","required":false,"schemaId":"schema_74"},{"name":"include","in":"query","required":false,"schemaId":"schema_75"},{"name":"tag","in":"query","required":false,"schemaId":"schema_75"},{"name":"tags","in":"query","required":false,"schemaId":"schema_75"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]},{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/campaigns","href":"campaigns/campaignscontroller_getcampaigns","openApiOperationId":"CampaignsController_getCampaigns","summary":"Get campaigns (Intelligent Access)","securityGroups":[{"authJWT":[]},{"projectKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Campaigns retrieved based on access level","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_83"}},"schemaId":"schema_83"}],"pointer":"/paths/~1campaigns/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_83","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_83"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaigns/campaignscontroller_getcampaigns"}],"panels":[]}]},"httpPath":"/campaigns"},{"label":"Create campaign (Admin)","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaigns/campaignscontroller_createcampaign","routeSlug":"/swagger/campaigns/campaignscontroller_createcampaign","metadata":{"seo":{"title":"Create campaign (Admin)","description":"Create a new campaign. Admin-only operation. Replaces POST /campaign/admin/"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignsController_createCampaign","name":"Create campaign (Admin)","isWebhook":false,"pointer":"/paths/~1campaigns/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create campaign (Admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Create a new campaign. Admin-only operation. Replaces POST /campaign/admin/"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CampaignCreateRequestDTO"}},"schemaId":"components/schemas/CampaignCreateRequestDTO","pointer":"/paths/~1campaigns/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/campaigns","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/CampaignCreateRequestDTO"}},"responseCodes":["200","201"],"pointer":"/campaigns","href":"campaigns/campaignscontroller_createcampaign","openApiOperationId":"CampaignsController_createCampaign","summary":"Create campaign (Admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/CampaignCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CampaignCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Campaign created successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}},"schemaId":"components/schemas/CampaignDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}},"schemaId":"components/schemas/CampaignDTO"}],"pointer":"/paths/~1campaigns/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CampaignDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}}},{"code":"201","schemaId":"components/schemas/CampaignDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaigns/campaignscontroller_createcampaign"}],"panels":[]}]},"httpPath":"/campaigns"},{"label":"Get campaign by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaigns/campaignscontroller_getcampaignbyid","routeSlug":"/swagger/campaigns/campaignscontroller_getcampaignbyid","metadata":{"seo":{"title":"Get campaign by ID","description":"Get single campaign details by ID. Available to public with project key. Replaces GET /campaign/{id}"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignsController_getCampaignById","name":"Get campaign by ID","isWebhook":false,"pointer":"/paths/~1campaigns~1{id}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get campaign by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Get single campaign details by ID. Available to public with project key. Replaces GET /campaign/{id}"},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1campaigns~1{id}/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"include","in":"query","schemaId":"schema_75","description":"Include related entities. Valid options: triggerSources, businesses, claimCount, ownerBusiness. Use comma-separated for multiple."}],"pointer":"/paths/~1campaigns~1{id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/campaigns/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[{"name":"include","in":"query","required":false,"schemaId":"schema_75"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/campaigns/{id}","href":"campaigns/campaignscontroller_getcampaignbyid","openApiOperationId":"CampaignsController_getCampaignById","summary":"Get campaign by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Campaign retrieved","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}},"schemaId":"components/schemas/CampaignDTO"}],"pointer":"/paths/~1campaigns~1{id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CampaignDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaigns/campaignscontroller_getcampaignbyid"}],"panels":[]}]},"httpPath":"/campaigns/{id}"},{"label":"Update campaign","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaigns/campaignscontroller_updatecampaign","routeSlug":"/swagger/campaigns/campaignscontroller_updatecampaign","metadata":{"seo":{"title":"Update campaign","description":"Update an existing campaign. Business can only update their own campaigns."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignsController_updateCampaign","name":"Update campaign","isWebhook":false,"pointer":"/paths/~1campaigns~1{id}/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update campaign","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Update an existing campaign. Business can only update their own campaigns."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1campaigns~1{id}/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CampaignCreateRequestDTO"}},"schemaId":"components/schemas/CampaignCreateRequestDTO","pointer":"/paths/~1campaigns~1{id}/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/campaigns/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/CampaignCreateRequestDTO"}},"responseCodes":["200"],"pointer":"/campaigns/{id}","href":"campaigns/campaignscontroller_updatecampaign","openApiOperationId":"CampaignsController_updateCampaign","summary":"Update campaign"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/CampaignCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CampaignCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Campaign updated successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}},"schemaId":"components/schemas/CampaignDTO"}],"pointer":"/paths/~1campaigns~1{id}/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CampaignDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaigns/campaignscontroller_updatecampaign"}],"panels":[]}]},"httpPath":"/campaigns/{id}"},{"label":"Delete campaign","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaigns/campaignscontroller_deletecampaign","routeSlug":"/swagger/campaigns/campaignscontroller_deletecampaign","metadata":{"seo":{"title":"Delete campaign","description":"Delete an existing campaign. Business can only delete their own campaigns."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignsController_deleteCampaign","name":"Delete campaign","isWebhook":false,"pointer":"/paths/~1campaigns~1{id}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Delete campaign","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Delete an existing campaign. Business can only delete their own campaigns."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1campaigns~1{id}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/campaigns/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/campaigns/{id}","href":"campaigns/campaignscontroller_deletecampaign","openApiOperationId":"CampaignsController_deleteCampaign","summary":"Delete campaign"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Campaign deleted successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_81"}},"schemaId":"schema_81"}],"pointer":"/paths/~1campaigns~1{id}/delete/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_81","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_81"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaigns/campaignscontroller_deletecampaign"}],"panels":[]}]},"httpPath":"/campaigns/{id}"},{"label":"Toggle campaign status","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaigns/campaignscontroller_togglecampaignstatus","routeSlug":"/swagger/campaigns/campaignscontroller_togglecampaignstatus","metadata":{"seo":{"title":"Toggle campaign status","description":"Toggle campaign active/inactive status. Business can only toggle their own campaigns."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignsController_toggleCampaignStatus","name":"Toggle campaign status","isWebhook":false,"pointer":"/paths/~1campaigns~1{id}~1status/put","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Toggle campaign status","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Toggle campaign active/inactive status. Business can only toggle their own campaigns."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1campaigns~1{id}~1status/put/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/campaigns/{id}/status","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/campaigns/{id}/status","href":"campaigns/campaignscontroller_togglecampaignstatus","openApiOperationId":"CampaignsController_toggleCampaignStatus","summary":"Toggle campaign status"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Campaign status toggled successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}},"schemaId":"components/schemas/CampaignDTO"}],"pointer":"/paths/~1campaigns~1{id}~1status/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CampaignDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaigns/campaignscontroller_togglecampaignstatus"}],"panels":[]}]},"httpPath":"/campaigns/{id}/status"},{"label":"Toggle campaign environment","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaigns/campaignscontroller_togglecampaignenvironment","routeSlug":"/swagger/campaigns/campaignscontroller_togglecampaignenvironment","metadata":{"seo":{"title":"Toggle campaign environment","description":"Toggle campaign between testnet and mainnet environment. Accessible by tenant admin and business owner. Replaces PUT /campaign/admin/{id}/environment"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignsController_toggleCampaignEnvironment","name":"Toggle campaign environment","isWebhook":false,"pointer":"/paths/~1campaigns~1{id}~1environment/put","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Toggle campaign environment","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Toggle campaign between testnet and mainnet environment. Accessible by tenant admin and business owner. Replaces PUT /campaign/admin/{id}/environment"},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1campaigns~1{id}~1environment/put/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/campaigns/{id}/environment","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/campaigns/{id}/environment","href":"campaigns/campaignscontroller_togglecampaignenvironment","openApiOperationId":"CampaignsController_toggleCampaignEnvironment","summary":"Toggle campaign environment"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Campaign environment toggled successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}},"schemaId":"components/schemas/CampaignDTO"}],"pointer":"/paths/~1campaigns~1{id}~1environment/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CampaignDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaigns/campaignscontroller_togglecampaignenvironment"}],"panels":[]}]},"httpPath":"/campaigns/{id}/environment"},{"label":"Assign trigger source to campaign (Admin / Business)","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaigns/campaignscontroller_assigntriggersourcetocampaign","routeSlug":"/swagger/campaigns/campaignscontroller_assigntriggersourcetocampaign","metadata":{"seo":{"title":"Assign trigger source to campaign (Admin / Business)","description":"Assign a trigger source to a campaign. Businesses may only assign trigger sources they own to campaigns they own."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignsController_assignTriggerSourceToCampaign","name":"Assign trigger source to campaign (Admin / Business)","isWebhook":false,"pointer":"/paths/~1campaigns~1{id}~1trigger-sources~1{triggerSourceId}/put","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Assign trigger source to campaign (Admin / Business)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Assign a trigger source to a campaign. Businesses may only assign trigger sources they own to campaigns they own."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true},{"name":"triggerSourceId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1campaigns~1{id}~1trigger-sources~1{triggerSourceId}/put/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/campaigns/{id}/trigger-sources/{triggerSourceId}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"},{"name":"triggerSourceId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/campaigns/{id}/trigger-sources/{triggerSourceId}","href":"campaigns/campaignscontroller_assigntriggersourcetocampaign","openApiOperationId":"CampaignsController_assignTriggerSourceToCampaign","summary":"Assign trigger source to campaign (Admin / Business)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Trigger source assigned to campaign successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}},"schemaId":"components/schemas/CampaignDTO"}],"pointer":"/paths/~1campaigns~1{id}~1trigger-sources~1{triggerSourceId}/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CampaignDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaigns/campaignscontroller_assigntriggersourcetocampaign"}],"panels":[]}]},"httpPath":"/campaigns/{id}/trigger-sources/{triggerSourceId}"},{"label":"Remove trigger source from campaign (Admin / Business)","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaigns/campaignscontroller_removetriggersourcefromcampaign","routeSlug":"/swagger/campaigns/campaignscontroller_removetriggersourcefromcampaign","metadata":{"seo":{"title":"Remove trigger source from campaign (Admin / Business)","description":"Remove a trigger source assignment from a campaign. Businesses may only modify campaigns they own."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignsController_removeTriggerSourceFromCampaign","name":"Remove trigger source from campaign (Admin / Business)","isWebhook":false,"pointer":"/paths/~1campaigns~1{id}~1trigger-sources~1{triggerSourceId}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Remove trigger source from campaign (Admin / Business)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Remove a trigger source assignment from a campaign. Businesses may only modify campaigns they own."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true},{"name":"triggerSourceId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1campaigns~1{id}~1trigger-sources~1{triggerSourceId}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/campaigns/{id}/trigger-sources/{triggerSourceId}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"},{"name":"triggerSourceId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/campaigns/{id}/trigger-sources/{triggerSourceId}","href":"campaigns/campaignscontroller_removetriggersourcefromcampaign","openApiOperationId":"CampaignsController_removeTriggerSourceFromCampaign","summary":"Remove trigger source from campaign (Admin / Business)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Trigger source removed from campaign successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}},"schemaId":"components/schemas/CampaignDTO"}],"pointer":"/paths/~1campaigns~1{id}~1trigger-sources~1{triggerSourceId}/delete/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CampaignDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaigns/campaignscontroller_removetriggersourcefromcampaign"}],"panels":[]}]},"httpPath":"/campaigns/{id}/trigger-sources/{triggerSourceId}"},{"label":"Export campaigns as CSV (Admin)","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaigns/campaignscontroller_exportcampaignsascsv","routeSlug":"/swagger/campaigns/campaignscontroller_exportcampaignsascsv","metadata":{"seo":{"title":"Export campaigns as CSV (Admin)","description":"Export all campaigns to CSV format with optional date filtering."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignsController_exportCampaignsAsCsv","name":"Export campaigns as CSV (Admin)","isWebhook":false,"pointer":"/paths/~1campaigns~1export~1csv/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Export campaigns as CSV (Admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Export all campaigns to CSV format with optional date filtering."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"dateFrom","in":"query","schemaId":"schema_67","description":"Filter campaigns starting from this date (ISO format)"},{"name":"dateTo","in":"query","schemaId":"schema_67","description":"Filter campaigns up to this date (ISO format)"}],"pointer":"/paths/~1campaigns~1export~1csv/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/campaigns/export/csv","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"dateFrom","in":"query","required":false,"schemaId":"schema_67"},{"name":"dateTo","in":"query","required":false,"schemaId":"schema_67"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/campaigns/export/csv","href":"campaigns/campaignscontroller_exportcampaignsascsv","openApiOperationId":"CampaignsController_exportCampaignsAsCsv","summary":"Export campaigns as CSV (Admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200"}],"pointer":"/paths/~1campaigns~1export~1csv/get/responses"}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaigns/campaignscontroller_exportcampaignsascsv"}],"panels":[]}]},"httpPath":"/campaigns/export/csv"},{"label":"Approve or reject a campaign (Admin)","deprecated":false,"httpVerb":"patch","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaigns/campaignscontroller_approveorrejectcampaign","routeSlug":"/swagger/campaigns/campaignscontroller_approveorrejectcampaign","metadata":{"seo":{"title":"Approve or reject a campaign (Admin)","description":"Sets approval status to approved or rejected. Rejected requires a reason."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignsController_approveOrRejectCampaign","name":"Approve or reject a campaign (Admin)","isWebhook":false,"pointer":"/paths/~1campaigns~1{id}~1approval/patch","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Approve or reject a campaign (Admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Sets approval status to approved or rejected. Rejected requires a reason."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1campaigns~1{id}~1approval/patch/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateApprovalDTO"}},"schemaId":"components/schemas/CreateApprovalDTO","pointer":"/paths/~1campaigns~1{id}~1approval/patch/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PATCH","path":"/campaigns/{id}/approval","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/CreateApprovalDTO"}},"responseCodes":["200"],"pointer":"/campaigns/{id}/approval","href":"campaigns/campaignscontroller_approveorrejectcampaign","openApiOperationId":"CampaignsController_approveOrRejectCampaign","summary":"Approve or reject a campaign (Admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/CreateApprovalDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateApprovalDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Campaign approval updated","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}},"schemaId":"components/schemas/CampaignDTO"}],"pointer":"/paths/~1campaigns~1{id}~1approval/patch/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CampaignDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaigns/campaignscontroller_approveorrejectcampaign"}],"panels":[]}]},"httpPath":"/campaigns/{id}/approval"}],"content":{"contentType":"group","meta":{"name":"Campaigns"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Campaigns","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/campaigns","summary":"Get campaigns (Intelligent Access)","prefix":{"name":"get","color":"get"},"badges":[],"link":"/campaigns/campaignscontroller_getcampaigns","deprecated":false},{"title":"/campaigns","summary":"Create campaign (Admin)","prefix":{"name":"post","color":"post"},"badges":[],"link":"/campaigns/campaignscontroller_createcampaign","deprecated":false},{"title":"/campaigns/{id}","summary":"Get campaign by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/campaigns/campaignscontroller_getcampaignbyid","deprecated":false},{"title":"/campaigns/{id}","summary":"Update campaign","prefix":{"name":"put","color":"put"},"badges":[],"link":"/campaigns/campaignscontroller_updatecampaign","deprecated":false},{"title":"/campaigns/{id}","summary":"Delete campaign","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/campaigns/campaignscontroller_deletecampaign","deprecated":false},{"title":"/campaigns/{id}/status","summary":"Toggle campaign status","prefix":{"name":"put","color":"put"},"badges":[],"link":"/campaigns/campaignscontroller_togglecampaignstatus","deprecated":false},{"title":"/campaigns/{id}/environment","summary":"Toggle campaign environment","prefix":{"name":"put","color":"put"},"badges":[],"link":"/campaigns/campaignscontroller_togglecampaignenvironment","deprecated":false},{"title":"/campaigns/{id}/trigger-sources/{triggerSourceId}","summary":"Assign trigger source to campaign (Admin / Business)","prefix":{"name":"put","color":"put"},"badges":[],"link":"/campaigns/campaignscontroller_assigntriggersourcetocampaign","deprecated":false},{"title":"/campaigns/{id}/trigger-sources/{triggerSourceId}","summary":"Remove trigger source from campaign (Admin / Business)","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/campaigns/campaignscontroller_removetriggersourcefromcampaign","deprecated":false},{"title":"/campaigns/export/csv","summary":"Export campaigns as CSV (Admin)","prefix":{"name":"get","color":"get"},"badges":[],"link":"/campaigns/campaignscontroller_exportcampaignsascsv","deprecated":false},{"title":"/campaigns/{id}/approval","summary":"Approve or reject a campaign (Admin)","prefix":{"name":"patch","color":"patch"},"badges":[],"link":"/campaigns/campaignscontroller_approveorrejectcampaign","deprecated":false}]}]}]}]}},{"type":"group","label":"Campaign Tags","link":"/swagger/campaign-tags","routeSlug":"/swagger/campaign-tags","items":[{"type":"link","label":"Campaign Organization System","link":"/swagger/campaign-tags/campaign-organization-system","routeSlug":"/swagger/campaign-tags/campaign-organization-system","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Campaign Organization System"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"campaign-tags/campaign-organization-system"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Campaign Organization System"},"children":[]}]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"div","attrs":{"style":{"fontSize":"14px","lineHeight":"1.5"}}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"\n      Campaign tagging system for organization and categorization. Enables efficient campaign discovery through tag-based filtering and provides comprehensive tag management.\n    "},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Tag Management:"},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Tag Discovery:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Browse all unique tags across campaign catalog  \n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Campaign Tagging:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Associate multiple descriptive tags with campaigns\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Tag-Based Filtering:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Enhanced campaign search and discovery via tags\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Tag Administration:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Complete tag CRUD operations for administrators\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Organization Tools:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Categorize campaigns by business criteria and themes"},"children":[]}]}],"panels":[]}]}},{"label":"Get all unique campaign tags (Admin)","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaign-tags/campaigntagscontroller_getalluniquetags","routeSlug":"/swagger/campaign-tags/campaigntagscontroller_getalluniquetags","metadata":{"seo":{"title":"Get all unique campaign tags (Admin)","description":"Get all unique tags used across all campaigns. Use pagination parameters (page & limit) for optimal performance. Legacy support: returns array without params (deprecated - will be removed in future). Admin-only operation for tag management. Set campaignId to \"all\" to retrieve tags from all campaigns."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignTagsController_getAllUniqueTags","name":"Get all unique campaign tags (Admin)","isWebhook":false,"pointer":"/paths/~1campaigns~1{campaignId}~1tags/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get all unique campaign tags (Admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Get all unique tags used across all campaigns. Use pagination parameters (page & limit) for optimal performance. Legacy support: returns array without params (deprecated - will be removed in future). Admin-only operation for tag management. Set campaignId to \"all\" to retrieve tags from all campaigns."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"campaignId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1campaigns~1{campaignId}~1tags/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"page","in":"query","schemaId":"schema_68","description":"Page number (1-based)"},{"name":"limit","in":"query","schemaId":"schema_68","description":"Items per page"}],"pointer":"/paths/~1campaigns~1{campaignId}~1tags/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/campaigns/{campaignId}/tags","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"campaignId","in":"path","required":true,"schemaId":"schema_67"}],"query":[{"name":"page","in":"query","required":false,"schemaId":"schema_68"},{"name":"limit","in":"query","required":false,"schemaId":"schema_68"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/campaigns/{campaignId}/tags","href":"campaign-tags/campaigntagscontroller_getalluniquetags","openApiOperationId":"CampaignTagsController_getAllUniqueTags","summary":"Get all unique campaign tags (Admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"All unique campaign tags retrieved","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_75"}},"schemaId":"schema_75"}],"pointer":"/paths/~1campaigns~1{campaignId}~1tags/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_75","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_75"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaign-tags/campaigntagscontroller_getalluniquetags"}],"panels":[]}]},"httpPath":"/campaigns/{campaignId}/tags"},{"label":"Update campaign tags (Admin)","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaign-tags/campaigntagscontroller_updatecampaigntags","routeSlug":"/swagger/campaign-tags/campaigntagscontroller_updatecampaigntags","metadata":{"seo":{"title":"Update campaign tags (Admin)","description":"Replace all tags for a campaign with new tag list. Admin-only operation. Replaces PUT /campaign/admin/{id}/tags"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignTagsController_updateCampaignTags","name":"Update campaign tags (Admin)","isWebhook":false,"pointer":"/paths/~1campaigns~1{campaignId}~1tags/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update campaign tags (Admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Replace all tags for a campaign with new tag list. Admin-only operation. Replaces PUT /campaign/admin/{id}/tags"},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"campaignId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1campaigns~1{campaignId}~1tags/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/AddTagsRequestDTO"}},"schemaId":"components/schemas/AddTagsRequestDTO","pointer":"/paths/~1campaigns~1{campaignId}~1tags/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/campaigns/{campaignId}/tags","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"campaignId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/AddTagsRequestDTO"}},"responseCodes":["200"],"pointer":"/campaigns/{campaignId}/tags","href":"campaign-tags/campaigntagscontroller_updatecampaigntags","openApiOperationId":"CampaignTagsController_updateCampaignTags","summary":"Update campaign tags (Admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/AddTagsRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/AddTagsRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Campaign tags updated successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}},"schemaId":"components/schemas/CampaignDTO"}],"pointer":"/paths/~1campaigns~1{campaignId}~1tags/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CampaignDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaign-tags/campaigntagscontroller_updatecampaigntags"}],"panels":[]}]},"httpPath":"/campaigns/{campaignId}/tags"},{"label":"Add tags to campaign (Admin)","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaign-tags/campaigntagscontroller_addtagstocampaign","routeSlug":"/swagger/campaign-tags/campaigntagscontroller_addtagstocampaign","metadata":{"seo":{"title":"Add tags to campaign (Admin)","description":"Add new tags to existing campaign tags without removing existing ones. Admin-only operation. Replaces POST /campaign/admin/{id}/tags"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignTagsController_addTagsToCampaign","name":"Add tags to campaign (Admin)","isWebhook":false,"pointer":"/paths/~1campaigns~1{campaignId}~1tags/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Add tags to campaign (Admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Add new tags to existing campaign tags without removing existing ones. Admin-only operation. Replaces POST /campaign/admin/{id}/tags"},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"campaignId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1campaigns~1{campaignId}~1tags/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/AddTagsRequestDTO"}},"schemaId":"components/schemas/AddTagsRequestDTO","pointer":"/paths/~1campaigns~1{campaignId}~1tags/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/campaigns/{campaignId}/tags","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"campaignId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/AddTagsRequestDTO"}},"responseCodes":["200","201"],"pointer":"/campaigns/{campaignId}/tags","href":"campaign-tags/campaigntagscontroller_addtagstocampaign","openApiOperationId":"CampaignTagsController_addTagsToCampaign","summary":"Add tags to campaign (Admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/AddTagsRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/AddTagsRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Tags added to campaign successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}},"schemaId":"components/schemas/CampaignDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}},"schemaId":"components/schemas/CampaignDTO"}],"pointer":"/paths/~1campaigns~1{campaignId}~1tags/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CampaignDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}}},{"code":"201","schemaId":"components/schemas/CampaignDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaign-tags/campaigntagscontroller_addtagstocampaign"}],"panels":[]}]},"httpPath":"/campaigns/{campaignId}/tags"},{"label":"Remove tag from campaign (Admin)","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaign-tags/campaigntagscontroller_removetagfromcampaign","routeSlug":"/swagger/campaign-tags/campaigntagscontroller_removetagfromcampaign","metadata":{"seo":{"title":"Remove tag from campaign (Admin)","description":"Remove a specific tag from campaign while preserving other tags. Admin-only operation. Replaces DELETE /campaign/admin/{id}/tags/{tag}"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignTagsController_removeTagFromCampaign","name":"Remove tag from campaign (Admin)","isWebhook":false,"pointer":"/paths/~1campaigns~1{campaignId}~1tags~1{tag}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Remove tag from campaign (Admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Remove a specific tag from campaign while preserving other tags. Admin-only operation. Replaces DELETE /campaign/admin/{id}/tags/{tag}"},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"campaignId","in":"path","schemaId":"schema_67","required":true},{"name":"tag","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1campaigns~1{campaignId}~1tags~1{tag}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/campaigns/{campaignId}/tags/{tag}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"campaignId","in":"path","required":true,"schemaId":"schema_67"},{"name":"tag","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/campaigns/{campaignId}/tags/{tag}","href":"campaign-tags/campaigntagscontroller_removetagfromcampaign","openApiOperationId":"CampaignTagsController_removeTagFromCampaign","summary":"Remove tag from campaign (Admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Tag removed from campaign successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}},"schemaId":"components/schemas/CampaignDTO"}],"pointer":"/paths/~1campaigns~1{campaignId}~1tags~1{tag}/delete/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CampaignDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaign-tags/campaigntagscontroller_removetagfromcampaign"}],"panels":[]}]},"httpPath":"/campaigns/{campaignId}/tags/{tag}"}],"content":{"contentType":"group","meta":{"name":"Campaign Tags"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Campaign Tags","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/campaigns/{campaignId}/tags","summary":"Get all unique campaign tags (Admin)","prefix":{"name":"get","color":"get"},"badges":[],"link":"/campaign-tags/campaigntagscontroller_getalluniquetags","deprecated":false},{"title":"/campaigns/{campaignId}/tags","summary":"Update campaign tags (Admin)","prefix":{"name":"put","color":"put"},"badges":[],"link":"/campaign-tags/campaigntagscontroller_updatecampaigntags","deprecated":false},{"title":"/campaigns/{campaignId}/tags","summary":"Add tags to campaign (Admin)","prefix":{"name":"post","color":"post"},"badges":[],"link":"/campaign-tags/campaigntagscontroller_addtagstocampaign","deprecated":false},{"title":"/campaigns/{campaignId}/tags/{tag}","summary":"Remove tag from campaign (Admin)","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/campaign-tags/campaigntagscontroller_removetagfromcampaign","deprecated":false}]}]}]}]}},{"type":"group","label":"Campaign Tokens","link":"/swagger/campaign-tokens","routeSlug":"/swagger/campaign-tokens","items":[{"type":"link","label":"Campaign Reward Configuration","link":"/swagger/campaign-tokens/campaign-reward-configuration","routeSlug":"/swagger/campaign-tokens/campaign-reward-configuration","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Campaign Reward Configuration"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"campaign-tokens/campaign-reward-configuration"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Campaign Reward Configuration"},"children":[]}]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"div","attrs":{"style":{"fontSize":"14px","lineHeight":"1.5"}}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"\n      Token unit management for campaign reward distribution. Defines specific token rewards that users receive when campaign participation conditions are met.\n    "},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Reward Configuration:"},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Token Association:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Link specific token types and amounts to campaigns\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Reward Rules:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Define token distribution rules and conditions\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Multi-Token Support:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Configure multiple token types per campaign\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Reward Calculation:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Set fixed or variable token amounts based on actions\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Distribution Management:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Control how and when tokens are distributed to users"},"children":[]}]}],"panels":[]}]}},{"label":"Create campaign token unit","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaign-tokens/campaigntokenscontroller_createcampaigntokenunit","routeSlug":"/swagger/campaign-tokens/campaigntokenscontroller_createcampaigntokenunit","metadata":{"seo":{"title":"Create campaign token unit","description":"Add a new token unit to campaign for reward distribution. Admin or owning business."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignTokensController_createCampaignTokenUnit","name":"Create campaign token unit","isWebhook":false,"pointer":"/paths/~1campaigns~1{campaignId}~1tokens/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create campaign token unit","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Add a new token unit to campaign for reward distribution. Admin or owning business."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"campaignId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1campaigns~1{campaignId}~1tokens/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TokenUnitCreateRequestDTO"}},"schemaId":"components/schemas/TokenUnitCreateRequestDTO","pointer":"/paths/~1campaigns~1{campaignId}~1tokens/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/campaigns/{campaignId}/tokens","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"campaignId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/TokenUnitCreateRequestDTO"}},"responseCodes":["200","201"],"pointer":"/campaigns/{campaignId}/tokens","href":"campaign-tokens/campaigntokenscontroller_createcampaigntokenunit","openApiOperationId":"CampaignTokensController_createCampaignTokenUnit","summary":"Create campaign token unit"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/TokenUnitCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TokenUnitCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Campaign token unit created successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}},"schemaId":"components/schemas/CampaignDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}},"schemaId":"components/schemas/CampaignDTO"}],"pointer":"/paths/~1campaigns~1{campaignId}~1tokens/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CampaignDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}}},{"code":"201","schemaId":"components/schemas/CampaignDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaign-tokens/campaigntokenscontroller_createcampaigntokenunit"}],"panels":[]}]},"httpPath":"/campaigns/{campaignId}/tokens"},{"label":"Update campaign token unit","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaign-tokens/campaigntokenscontroller_updatecampaigntokenunit","routeSlug":"/swagger/campaign-tokens/campaigntokenscontroller_updatecampaigntokenunit","metadata":{"seo":{"title":"Update campaign token unit","description":"Update an existing token unit in campaign. Admin or owning business."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignTokensController_updateCampaignTokenUnit","name":"Update campaign token unit","isWebhook":false,"pointer":"/paths/~1campaigns~1{campaignId}~1tokens~1{tokenUnitId}/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update campaign token unit","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Update an existing token unit in campaign. Admin or owning business."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"campaignId","in":"path","schemaId":"schema_67","required":true},{"name":"tokenUnitId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1campaigns~1{campaignId}~1tokens~1{tokenUnitId}/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TokenUnitCreateRequestDTO"}},"schemaId":"components/schemas/TokenUnitCreateRequestDTO","pointer":"/paths/~1campaigns~1{campaignId}~1tokens~1{tokenUnitId}/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/campaigns/{campaignId}/tokens/{tokenUnitId}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"campaignId","in":"path","required":true,"schemaId":"schema_67"},{"name":"tokenUnitId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/TokenUnitCreateRequestDTO"}},"responseCodes":["200"],"pointer":"/campaigns/{campaignId}/tokens/{tokenUnitId}","href":"campaign-tokens/campaigntokenscontroller_updatecampaigntokenunit","openApiOperationId":"CampaignTokensController_updateCampaignTokenUnit","summary":"Update campaign token unit"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/TokenUnitCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TokenUnitCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Campaign token unit updated successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}},"schemaId":"components/schemas/CampaignDTO"}],"pointer":"/paths/~1campaigns~1{campaignId}~1tokens~1{tokenUnitId}/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CampaignDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaign-tokens/campaigntokenscontroller_updatecampaigntokenunit"}],"panels":[]}]},"httpPath":"/campaigns/{campaignId}/tokens/{tokenUnitId}"},{"label":"Remove campaign token unit","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaign-tokens/campaigntokenscontroller_removecampaigntokenunit","routeSlug":"/swagger/campaign-tokens/campaigntokenscontroller_removecampaigntokenunit","metadata":{"seo":{"title":"Remove campaign token unit","description":"Remove a token unit from campaign. Admin or owning business."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignTokensController_removeCampaignTokenUnit","name":"Remove campaign token unit","isWebhook":false,"pointer":"/paths/~1campaigns~1{campaignId}~1tokens~1{tokenUnitId}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Remove campaign token unit","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Remove a token unit from campaign. Admin or owning business."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"campaignId","in":"path","schemaId":"schema_67","required":true},{"name":"tokenUnitId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1campaigns~1{campaignId}~1tokens~1{tokenUnitId}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/campaigns/{campaignId}/tokens/{tokenUnitId}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"campaignId","in":"path","required":true,"schemaId":"schema_67"},{"name":"tokenUnitId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/campaigns/{campaignId}/tokens/{tokenUnitId}","href":"campaign-tokens/campaigntokenscontroller_removecampaigntokenunit","openApiOperationId":"CampaignTokensController_removeCampaignTokenUnit","summary":"Remove campaign token unit"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Campaign token unit removed successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}},"schemaId":"components/schemas/CampaignDTO"}],"pointer":"/paths/~1campaigns~1{campaignId}~1tokens~1{tokenUnitId}/delete/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CampaignDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaign-tokens/campaigntokenscontroller_removecampaigntokenunit"}],"panels":[]}]},"httpPath":"/campaigns/{campaignId}/tokens/{tokenUnitId}"}],"content":{"contentType":"group","meta":{"name":"Campaign Tokens"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Campaign Tokens","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/campaigns/{campaignId}/tokens","summary":"Create campaign token unit","prefix":{"name":"post","color":"post"},"badges":[],"link":"/campaign-tokens/campaigntokenscontroller_createcampaigntokenunit","deprecated":false},{"title":"/campaigns/{campaignId}/tokens/{tokenUnitId}","summary":"Update campaign token unit","prefix":{"name":"put","color":"put"},"badges":[],"link":"/campaign-tokens/campaigntokenscontroller_updatecampaigntokenunit","deprecated":false},{"title":"/campaigns/{campaignId}/tokens/{tokenUnitId}","summary":"Remove campaign token unit","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/campaign-tokens/campaigntokenscontroller_removecampaigntokenunit","deprecated":false}]}]}]}]}},{"type":"group","label":"Campaign Triggers","link":"/swagger/campaign-triggers","routeSlug":"/swagger/campaign-triggers","items":[{"type":"link","label":"Campaign Activation System","link":"/swagger/campaign-triggers/campaign-activation-system","routeSlug":"/swagger/campaign-triggers/campaign-activation-system","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Campaign Activation System"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"campaign-triggers/campaign-activation-system"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Campaign Activation System"},"children":[]}]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"div","attrs":{"style":{"fontSize":"14px","lineHeight":"1.5"}}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"\n      Campaign trigger system managing activation rules and eligibility conditions. Defines when and how campaigns activate including complex condition management for sophisticated campaign logic.\n    "},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Trigger Features:"},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Trigger Catalog:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Public browsing of available campaign activation triggers\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Condition Management:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Create complex trigger conditions with multiple criteria  \n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Campaign Assignment:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Link triggers to campaigns for automated activation\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Eligibility Rules:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Define sophisticated user participation requirements\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Event-Based Activation:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Trigger campaigns based on user actions and external events"},"children":[]}]}],"panels":[]}]}},{"label":"Get all triggers (Public Catalog)","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaign-triggers/campaigntriggerscontroller_getalltriggers","routeSlug":"/swagger/campaign-triggers/campaigntriggerscontroller_getalltriggers","metadata":{"seo":{"title":"Get all triggers (Public Catalog)","description":"Get all available triggers for campaign configuration. Public access for catalog browsing. Use pagination parameters (page & limit) for optimal performance. Legacy support: returns array without params (deprecated - will be removed in future). Replaces GET /campaign/trigger/all"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignTriggersController_getAllTriggers","name":"Get all triggers (Public Catalog)","isWebhook":false,"pointer":"/paths/~1campaign-triggers/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get all triggers (Public Catalog)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Get all available triggers for campaign configuration. Public access for catalog browsing. Use pagination parameters (page & limit) for optimal performance. Legacy support: returns array without params (deprecated - will be removed in future). Replaces GET /campaign/trigger/all"},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"page","in":"query","schemaId":"schema_68","description":"Page number for pagination (1-based)"},{"name":"limit","in":"query","schemaId":"schema_68","description":"Items per page for pagination"}],"pointer":"/paths/~1campaign-triggers/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/campaign-triggers","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"page","in":"query","required":false,"schemaId":"schema_68"},{"name":"limit","in":"query","required":false,"schemaId":"schema_68"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/campaign-triggers","href":"campaign-triggers/campaigntriggerscontroller_getalltriggers","openApiOperationId":"CampaignTriggersController_getAllTriggers","summary":"Get all triggers (Public Catalog)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"All available triggers retrieved","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_84"}},"schemaId":"schema_84"}],"pointer":"/paths/~1campaign-triggers/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_84","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_84"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaign-triggers/campaigntriggerscontroller_getalltriggers"}],"panels":[]}]},"httpPath":"/campaign-triggers"},{"label":"Create campaign trigger (Admin / Business)","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaign-triggers/campaigntriggerscontroller_createcampaigntrigger","routeSlug":"/swagger/campaign-triggers/campaigntriggerscontroller_createcampaigntrigger","metadata":{"seo":{"title":"Create campaign trigger (Admin / Business)","description":"Create a new campaign trigger for use in campaigns. Businesses create trigger rules owned by themselves; tenant admins can create shared (tenant-level) trigger rules. Replaces POST /campaign/admin/trigger"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignTriggersController_createCampaignTrigger","name":"Create campaign trigger (Admin / Business)","isWebhook":false,"pointer":"/paths/~1campaign-triggers/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create campaign trigger (Admin / Business)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Create a new campaign trigger for use in campaigns. Businesses create trigger rules owned by themselves; tenant admins can create shared (tenant-level) trigger rules. Replaces POST /campaign/admin/trigger"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CampaignTriggerCreateRequestDTO"}},"schemaId":"components/schemas/CampaignTriggerCreateRequestDTO","pointer":"/paths/~1campaign-triggers/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/campaign-triggers","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/CampaignTriggerCreateRequestDTO"}},"responseCodes":["200","201"],"pointer":"/campaign-triggers","href":"campaign-triggers/campaigntriggerscontroller_createcampaigntrigger","openApiOperationId":"CampaignTriggersController_createCampaignTrigger","summary":"Create campaign trigger (Admin / Business)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/CampaignTriggerCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CampaignTriggerCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Campaign trigger created successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignTriggerDTO"}},"schemaId":"components/schemas/CampaignTriggerDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignTriggerDTO"}},"schemaId":"components/schemas/CampaignTriggerDTO"}],"pointer":"/paths/~1campaign-triggers/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CampaignTriggerDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignTriggerDTO"}}},{"code":"201","schemaId":"components/schemas/CampaignTriggerDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignTriggerDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaign-triggers/campaigntriggerscontroller_createcampaigntrigger"}],"panels":[]}]},"httpPath":"/campaign-triggers"},{"label":"Get trigger by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaign-triggers/campaigntriggerscontroller_gettriggerbyid","routeSlug":"/swagger/campaign-triggers/campaigntriggerscontroller_gettriggerbyid","metadata":{"seo":{"title":"Get trigger by ID","description":"Get a specific campaign trigger by ID. Useful for dashboard selection and preview."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignTriggersController_getTriggerById","name":"Get trigger by ID","isWebhook":false,"pointer":"/paths/~1campaign-triggers~1{triggerId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get trigger by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Get a specific campaign trigger by ID. Useful for dashboard selection and preview."},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"triggerId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1campaign-triggers~1{triggerId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/campaign-triggers/{triggerId}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"triggerId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/campaign-triggers/{triggerId}","href":"campaign-triggers/campaigntriggerscontroller_gettriggerbyid","openApiOperationId":"CampaignTriggersController_getTriggerById","summary":"Get trigger by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Trigger retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignTriggerDTO"}},"schemaId":"components/schemas/CampaignTriggerDTO"}],"pointer":"/paths/~1campaign-triggers~1{triggerId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CampaignTriggerDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignTriggerDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaign-triggers/campaigntriggerscontroller_gettriggerbyid"}],"panels":[]}]},"httpPath":"/campaign-triggers/{triggerId}"},{"label":"Update campaign trigger (Admin / Business)","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaign-triggers/campaigntriggerscontroller_updatecampaigntrigger","routeSlug":"/swagger/campaign-triggers/campaigntriggerscontroller_updatecampaigntrigger","metadata":{"seo":{"title":"Update campaign trigger (Admin / Business)","description":"Update an existing campaign trigger. Businesses may only update trigger rules they own. Replaces PUT /campaign/admin/trigger/{id}"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignTriggersController_updateCampaignTrigger","name":"Update campaign trigger (Admin / Business)","isWebhook":false,"pointer":"/paths/~1campaign-triggers~1{triggerId}/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update campaign trigger (Admin / Business)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Update an existing campaign trigger. Businesses may only update trigger rules they own. Replaces PUT /campaign/admin/trigger/{id}"},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"triggerId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1campaign-triggers~1{triggerId}/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CampaignTriggerCreateRequestDTO"}},"schemaId":"components/schemas/CampaignTriggerCreateRequestDTO","pointer":"/paths/~1campaign-triggers~1{triggerId}/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/campaign-triggers/{triggerId}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"triggerId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/CampaignTriggerCreateRequestDTO"}},"responseCodes":["200"],"pointer":"/campaign-triggers/{triggerId}","href":"campaign-triggers/campaigntriggerscontroller_updatecampaigntrigger","openApiOperationId":"CampaignTriggersController_updateCampaignTrigger","summary":"Update campaign trigger (Admin / Business)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/CampaignTriggerCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CampaignTriggerCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Campaign trigger updated successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignTriggerDTO"}},"schemaId":"components/schemas/CampaignTriggerDTO"}],"pointer":"/paths/~1campaign-triggers~1{triggerId}/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CampaignTriggerDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignTriggerDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaign-triggers/campaigntriggerscontroller_updatecampaigntrigger"}],"panels":[]}]},"httpPath":"/campaign-triggers/{triggerId}"},{"label":"Delete campaign trigger (Admin / Business)","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaign-triggers/campaigntriggerscontroller_deletecampaigntrigger","routeSlug":"/swagger/campaign-triggers/campaigntriggerscontroller_deletecampaigntrigger","metadata":{"seo":{"title":"Delete campaign trigger (Admin / Business)","description":"Delete an existing campaign trigger. Businesses may only delete trigger rules they own. Replaces DELETE /campaign/admin/trigger/{id}"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignTriggersController_deleteCampaignTrigger","name":"Delete campaign trigger (Admin / Business)","isWebhook":false,"pointer":"/paths/~1campaign-triggers~1{triggerId}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Delete campaign trigger (Admin / Business)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Delete an existing campaign trigger. Businesses may only delete trigger rules they own. Replaces DELETE /campaign/admin/trigger/{id}"},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"triggerId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1campaign-triggers~1{triggerId}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/campaign-triggers/{triggerId}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"triggerId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/campaign-triggers/{triggerId}","href":"campaign-triggers/campaigntriggerscontroller_deletecampaigntrigger","openApiOperationId":"CampaignTriggersController_deleteCampaignTrigger","summary":"Delete campaign trigger (Admin / Business)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Campaign trigger deleted successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_81"}},"schemaId":"schema_81"}],"pointer":"/paths/~1campaign-triggers~1{triggerId}/delete/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_81","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_81"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaign-triggers/campaigntriggerscontroller_deletecampaigntrigger"}],"panels":[]}]},"httpPath":"/campaign-triggers/{triggerId}"},{"label":"Assign trigger to campaign (Admin / Business)","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaign-triggers/campaigntriggerscontroller_assigntriggertocampaign","routeSlug":"/swagger/campaign-triggers/campaigntriggerscontroller_assigntriggertocampaign","metadata":{"seo":{"title":"Assign trigger to campaign (Admin / Business)","description":"Assign a trigger rule to a campaign. Businesses may only assign trigger rules they own to campaigns they own. Replaces PUT /campaign/admin/{id}/trigger/{triggerId}"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignTriggersController_assignTriggerToCampaign","name":"Assign trigger to campaign (Admin / Business)","isWebhook":false,"pointer":"/paths/~1campaign-triggers~1{triggerId}~1assign~1{campaignId}/put","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Assign trigger to campaign (Admin / Business)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Assign a trigger rule to a campaign. Businesses may only assign trigger rules they own to campaigns they own. Replaces PUT /campaign/admin/{id}/trigger/{triggerId}"},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"triggerId","in":"path","schemaId":"schema_67","required":true},{"name":"campaignId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1campaign-triggers~1{triggerId}~1assign~1{campaignId}/put/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/campaign-triggers/{triggerId}/assign/{campaignId}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"triggerId","in":"path","required":true,"schemaId":"schema_67"},{"name":"campaignId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/campaign-triggers/{triggerId}/assign/{campaignId}","href":"campaign-triggers/campaigntriggerscontroller_assigntriggertocampaign","openApiOperationId":"CampaignTriggersController_assignTriggerToCampaign","summary":"Assign trigger to campaign (Admin / Business)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Trigger assigned to campaign successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}},"schemaId":"components/schemas/CampaignDTO"}],"pointer":"/paths/~1campaign-triggers~1{triggerId}~1assign~1{campaignId}/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CampaignDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaign-triggers/campaigntriggerscontroller_assigntriggertocampaign"}],"panels":[]}]},"httpPath":"/campaign-triggers/{triggerId}/assign/{campaignId}"},{"label":"Remove trigger from campaign (Admin / Business)","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaign-triggers/campaigntriggerscontroller_removetriggerfromcampaign","routeSlug":"/swagger/campaign-triggers/campaigntriggerscontroller_removetriggerfromcampaign","metadata":{"seo":{"title":"Remove trigger from campaign (Admin / Business)","description":"Remove a trigger assignment from a campaign. Businesses may only modify campaigns they own."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignTriggersController_removeTriggerFromCampaign","name":"Remove trigger from campaign (Admin / Business)","isWebhook":false,"pointer":"/paths/~1campaign-triggers~1{triggerId}~1assign~1{campaignId}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Remove trigger from campaign (Admin / Business)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Remove a trigger assignment from a campaign. Businesses may only modify campaigns they own."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"triggerId","in":"path","schemaId":"schema_67","required":true},{"name":"campaignId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1campaign-triggers~1{triggerId}~1assign~1{campaignId}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/campaign-triggers/{triggerId}/assign/{campaignId}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"triggerId","in":"path","required":true,"schemaId":"schema_67"},{"name":"campaignId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/campaign-triggers/{triggerId}/assign/{campaignId}","href":"campaign-triggers/campaigntriggerscontroller_removetriggerfromcampaign","openApiOperationId":"CampaignTriggersController_removeTriggerFromCampaign","summary":"Remove trigger from campaign (Admin / Business)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Trigger removed from campaign successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}},"schemaId":"components/schemas/CampaignDTO"}],"pointer":"/paths/~1campaign-triggers~1{triggerId}~1assign~1{campaignId}/delete/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CampaignDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaign-triggers/campaigntriggerscontroller_removetriggerfromcampaign"}],"panels":[]}]},"httpPath":"/campaign-triggers/{triggerId}/assign/{campaignId}"},{"label":"Toggle condition in trigger (Admin / Business)","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaign-triggers/campaigntriggerscontroller_toggleconditionintrigger","routeSlug":"/swagger/campaign-triggers/campaigntriggerscontroller_toggleconditionintrigger","metadata":{"seo":{"title":"Toggle condition in trigger (Admin / Business)","description":"Add or remove a condition from a trigger rule. Businesses may only modify trigger rules they own. Replaces PUT /campaign/admin/trigger/{triggerId}/condition/{conditionId}"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignTriggersController_toggleConditionInTrigger","name":"Toggle condition in trigger (Admin / Business)","isWebhook":false,"pointer":"/paths/~1campaign-triggers~1{triggerId}~1conditions/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Toggle condition in trigger (Admin / Business)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Add or remove a condition from a trigger rule. Businesses may only modify trigger rules they own. Replaces PUT /campaign/admin/trigger/{triggerId}/condition/{conditionId}"},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"triggerId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1campaign-triggers~1{triggerId}~1conditions/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CampaignTriggerConditionDTO"}},"schemaId":"components/schemas/CampaignTriggerConditionDTO","pointer":"/paths/~1campaign-triggers~1{triggerId}~1conditions/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/campaign-triggers/{triggerId}/conditions","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"triggerId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/CampaignTriggerConditionDTO"}},"responseCodes":["200"],"pointer":"/campaign-triggers/{triggerId}/conditions","href":"campaign-triggers/campaigntriggerscontroller_toggleconditionintrigger","openApiOperationId":"CampaignTriggersController_toggleConditionInTrigger","summary":"Toggle condition in trigger (Admin / Business)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/CampaignTriggerConditionDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CampaignTriggerConditionDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Trigger condition relationship updated successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignTriggerDTO"}},"schemaId":"components/schemas/CampaignTriggerDTO"}],"pointer":"/paths/~1campaign-triggers~1{triggerId}~1conditions/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CampaignTriggerDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignTriggerDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaign-triggers/campaigntriggerscontroller_toggleconditionintrigger"}],"panels":[]}]},"httpPath":"/campaign-triggers/{triggerId}/conditions"}],"content":{"contentType":"group","meta":{"name":"Campaign Triggers"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Campaign Triggers","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/campaign-triggers","summary":"Get all triggers (Public Catalog)","prefix":{"name":"get","color":"get"},"badges":[],"link":"/campaign-triggers/campaigntriggerscontroller_getalltriggers","deprecated":false},{"title":"/campaign-triggers","summary":"Create campaign trigger (Admin / Business)","prefix":{"name":"post","color":"post"},"badges":[],"link":"/campaign-triggers/campaigntriggerscontroller_createcampaigntrigger","deprecated":false},{"title":"/campaign-triggers/{triggerId}","summary":"Get trigger by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/campaign-triggers/campaigntriggerscontroller_gettriggerbyid","deprecated":false},{"title":"/campaign-triggers/{triggerId}","summary":"Update campaign trigger (Admin / Business)","prefix":{"name":"put","color":"put"},"badges":[],"link":"/campaign-triggers/campaigntriggerscontroller_updatecampaigntrigger","deprecated":false},{"title":"/campaign-triggers/{triggerId}","summary":"Delete campaign trigger (Admin / Business)","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/campaign-triggers/campaigntriggerscontroller_deletecampaigntrigger","deprecated":false},{"title":"/campaign-triggers/{triggerId}/assign/{campaignId}","summary":"Assign trigger to campaign (Admin / Business)","prefix":{"name":"put","color":"put"},"badges":[],"link":"/campaign-triggers/campaigntriggerscontroller_assigntriggertocampaign","deprecated":false},{"title":"/campaign-triggers/{triggerId}/assign/{campaignId}","summary":"Remove trigger from campaign (Admin / Business)","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/campaign-triggers/campaigntriggerscontroller_removetriggerfromcampaign","deprecated":false},{"title":"/campaign-triggers/{triggerId}/conditions","summary":"Toggle condition in trigger (Admin / Business)","prefix":{"name":"put","color":"put"},"badges":[],"link":"/campaign-triggers/campaigntriggerscontroller_toggleconditionintrigger","deprecated":false}]}]}]}]}},{"type":"group","label":"Campaign Engagements","link":"/swagger/campaign-engagements","routeSlug":"/swagger/campaign-engagements","items":[{"type":"link","label":"Business Relationship Management","link":"/swagger/campaign-engagements/business-relationship-management","routeSlug":"/swagger/campaign-engagements/business-relationship-management","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Business Relationship Management"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"campaign-engagements/business-relationship-management"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Business Relationship Management"},"children":[]}]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"div","attrs":{"style":{"fontSize":"14px","lineHeight":"1.5"}}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"\n      B2B engagement management for multi-business campaign relationships. Handles business partnerships and enterprise-level campaign participation in complex loyalty ecosystems.\n    "},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"B2B Features:"},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Partner Integration:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Manage business-to-business campaign relationships  \n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Enterprise Programs:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Support complex multi-business loyalty initiatives\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Engagement Tracking:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Monitor business participation and performance metrics\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Partnership Management:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Configure B2B reward sharing and attribution\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Cross-Business Rewards:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Enable rewards that span multiple business partners"},"children":[]}]}],"panels":[]}]}},{"label":"Create business engagement for campaign (Admin)","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaign-engagements/campaignengagementscontroller_createbusinessengagementforcampaign","routeSlug":"/swagger/campaign-engagements/campaignengagementscontroller_createbusinessengagementforcampaign","metadata":{"seo":{"title":"Create business engagement for campaign (Admin)","description":"Add a business engagement relationship to campaign for business-specific rewards. Admin-only operation. Replaces POST /campaign/admin/{id}/business-engagement"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignEngagementsController_createBusinessEngagementForCampaign","name":"Create business engagement for campaign (Admin)","isWebhook":false,"pointer":"/paths/~1campaigns~1{campaignId}~1engagements/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create business engagement for campaign (Admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Add a business engagement relationship to campaign for business-specific rewards. Admin-only operation. Replaces POST /campaign/admin/{id}/business-engagement"},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"campaignId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1campaigns~1{campaignId}~1engagements/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CampaignBusinessEngagementCreateRequestDTO"}},"schemaId":"components/schemas/CampaignBusinessEngagementCreateRequestDTO","pointer":"/paths/~1campaigns~1{campaignId}~1engagements/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/campaigns/{campaignId}/engagements","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"campaignId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/CampaignBusinessEngagementCreateRequestDTO"}},"responseCodes":["200","201"],"pointer":"/campaigns/{campaignId}/engagements","href":"campaign-engagements/campaignengagementscontroller_createbusinessengagementforcampaign","openApiOperationId":"CampaignEngagementsController_createBusinessEngagementForCampaign","summary":"Create business engagement for campaign (Admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/CampaignBusinessEngagementCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CampaignBusinessEngagementCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Business engagement added to campaign successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}},"schemaId":"components/schemas/CampaignDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}},"schemaId":"components/schemas/CampaignDTO"}],"pointer":"/paths/~1campaigns~1{campaignId}~1engagements/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CampaignDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}}},{"code":"201","schemaId":"components/schemas/CampaignDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaign-engagements/campaignengagementscontroller_createbusinessengagementforcampaign"}],"panels":[]}]},"httpPath":"/campaigns/{campaignId}/engagements"},{"label":"Update business engagement in campaign (Admin)","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaign-engagements/campaignengagementscontroller_updatebusinessengagementincampaign","routeSlug":"/swagger/campaign-engagements/campaignengagementscontroller_updatebusinessengagementincampaign","metadata":{"seo":{"title":"Update business engagement in campaign (Admin)","description":"Update an existing business engagement relationship in campaign. Admin-only operation. Replaces PUT /campaign/admin/{id}/business-engagement/{businessEngagementId}"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignEngagementsController_updateBusinessEngagementInCampaign","name":"Update business engagement in campaign (Admin)","isWebhook":false,"pointer":"/paths/~1campaigns~1{campaignId}~1engagements~1{businessEngagementId}/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update business engagement in campaign (Admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Update an existing business engagement relationship in campaign. Admin-only operation. Replaces PUT /campaign/admin/{id}/business-engagement/{businessEngagementId}"},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"campaignId","in":"path","schemaId":"schema_67","required":true},{"name":"businessEngagementId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1campaigns~1{campaignId}~1engagements~1{businessEngagementId}/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CampaignBusinessEngagementCreateRequestDTO"}},"schemaId":"components/schemas/CampaignBusinessEngagementCreateRequestDTO","pointer":"/paths/~1campaigns~1{campaignId}~1engagements~1{businessEngagementId}/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/campaigns/{campaignId}/engagements/{businessEngagementId}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"campaignId","in":"path","required":true,"schemaId":"schema_67"},{"name":"businessEngagementId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/CampaignBusinessEngagementCreateRequestDTO"}},"responseCodes":["200"],"pointer":"/campaigns/{campaignId}/engagements/{businessEngagementId}","href":"campaign-engagements/campaignengagementscontroller_updatebusinessengagementincampaign","openApiOperationId":"CampaignEngagementsController_updateBusinessEngagementInCampaign","summary":"Update business engagement in campaign (Admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/CampaignBusinessEngagementCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CampaignBusinessEngagementCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Business engagement updated in campaign successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}},"schemaId":"components/schemas/CampaignDTO"}],"pointer":"/paths/~1campaigns~1{campaignId}~1engagements~1{businessEngagementId}/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CampaignDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaign-engagements/campaignengagementscontroller_updatebusinessengagementincampaign"}],"panels":[]}]},"httpPath":"/campaigns/{campaignId}/engagements/{businessEngagementId}"},{"label":"Remove business engagement from campaign (Admin)","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaign-engagements/campaignengagementscontroller_removebusinessengagementfromcampaign","routeSlug":"/swagger/campaign-engagements/campaignengagementscontroller_removebusinessengagementfromcampaign","metadata":{"seo":{"title":"Remove business engagement from campaign (Admin)","description":"Remove a business engagement relationship from campaign. Admin-only operation. Replaces DELETE /campaign/admin/{id}/business-engagement/{businessEngagementId}"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignEngagementsController_removeBusinessEngagementFromCampaign","name":"Remove business engagement from campaign (Admin)","isWebhook":false,"pointer":"/paths/~1campaigns~1{campaignId}~1engagements~1{businessEngagementId}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Remove business engagement from campaign (Admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Remove a business engagement relationship from campaign. Admin-only operation. Replaces DELETE /campaign/admin/{id}/business-engagement/{businessEngagementId}"},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"campaignId","in":"path","schemaId":"schema_67","required":true},{"name":"businessEngagementId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1campaigns~1{campaignId}~1engagements~1{businessEngagementId}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/campaigns/{campaignId}/engagements/{businessEngagementId}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"campaignId","in":"path","required":true,"schemaId":"schema_67"},{"name":"businessEngagementId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/campaigns/{campaignId}/engagements/{businessEngagementId}","href":"campaign-engagements/campaignengagementscontroller_removebusinessengagementfromcampaign","openApiOperationId":"CampaignEngagementsController_removeBusinessEngagementFromCampaign","summary":"Remove business engagement from campaign (Admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Business engagement removed from campaign successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}},"schemaId":"components/schemas/CampaignDTO"}],"pointer":"/paths/~1campaigns~1{campaignId}~1engagements~1{businessEngagementId}/delete/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CampaignDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaign-engagements/campaignengagementscontroller_removebusinessengagementfromcampaign"}],"panels":[]}]},"httpPath":"/campaigns/{campaignId}/engagements/{businessEngagementId}"}],"content":{"contentType":"group","meta":{"name":"Campaign Engagements"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Campaign Engagements","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/campaigns/{campaignId}/engagements","summary":"Create business engagement for campaign (Admin)","prefix":{"name":"post","color":"post"},"badges":[],"link":"/campaign-engagements/campaignengagementscontroller_createbusinessengagementforcampaign","deprecated":false},{"title":"/campaigns/{campaignId}/engagements/{businessEngagementId}","summary":"Update business engagement in campaign (Admin)","prefix":{"name":"put","color":"put"},"badges":[],"link":"/campaign-engagements/campaignengagementscontroller_updatebusinessengagementincampaign","deprecated":false},{"title":"/campaigns/{campaignId}/engagements/{businessEngagementId}","summary":"Remove business engagement from campaign (Admin)","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/campaign-engagements/campaignengagementscontroller_removebusinessengagementfromcampaign","deprecated":false}]}]}]}]}},{"type":"group","label":"Campaign Claims","link":"/swagger/campaign-claims","routeSlug":"/swagger/campaign-claims","items":[{"type":"link","label":"Reward Claims Processing","link":"/swagger/campaign-claims/reward-claims-processing","routeSlug":"/swagger/campaign-claims/reward-claims-processing","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Reward Claims Processing"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"campaign-claims/reward-claims-processing"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Reward Claims Processing"},"children":[]}]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"div","attrs":{"style":{"fontSize":"14px","lineHeight":"1.5"}}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"\n      Multi-level reward claim processing with comprehensive security features and audit trails. Handles reward distribution with full security features.\n    "},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Security Features:"},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Multi-Level Access:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" USER, BUSINESS, SYSTEM, ADMIN claim processing levels\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Security Monitoring:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" IP tracking and behavioral analysis for security\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Audit Tracking:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Complete transaction history and activity logs  \n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Context Attribution:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" User and business context preservation for tracking\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Claim Verification:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Multi-step verification process for high-value rewards\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Access Levels:"},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"USER:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Direct customer reward claims with user authentication\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"BUSINESS:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" B2B reward processing with business context attribution  \n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"SYSTEM:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Automated claims processing via secure API integration\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"ADMIN:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Complete administrative oversight and manual claim processing"},"children":[]}]}],"panels":[]}]}},{"label":"Create campaign claim","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaign-claims/campaignclaimscontroller_createcampaignclaim","routeSlug":"/swagger/campaign-claims/campaignclaimscontroller_createcampaignclaim","metadata":{"seo":{"title":"Create campaign claim","description":"Process campaign reward claims using role-based detection."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignClaimsController_createCampaignClaim","name":"Create campaign claim","isWebhook":false,"pointer":"/paths/~1campaigns~1claims/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create campaign claim","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Process campaign reward claims using role-based detection."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Understanding Campaign Claim Flow:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":true,"marker":"."},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"WHO can claim (campaign.trigger.triggerType):"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CLAIM_BY_USER"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": End users initiate claims (scan QR, tap NFC, enter geofence)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CLAIM_BY_BUSINESS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": Business claims on behalf of users (POS, kiosk)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CLAIM_BY_SYSTEM"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": Server/webhook automated claims"},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"HOW to claim (campaign.triggerSources[].type):"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"QR_CODE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": User scans QR code → App extracts triggerSourceId"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"NFC_TAG"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": User taps NFC tag → App reads triggerSourceId"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GPS_GEOFENCE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": User enters location → App sends lat/lng"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"API_WEBHOOK"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": External system triggers via API"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"TRANSACTION"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": Purchase event triggers claim"},"children":[]}]}]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Request Body Fields:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"triggerSourceId"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (preferred): The specific trigger source ID from QR/NFC/etc"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"campaignId"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (legacy, deprecated): Will be removed Q2 2026"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"latitude/longitude"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": Required for GPS_GEOFENCE or distance-validated claims"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"userIdentifier"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": Email/external ID for business/system claims"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"userInfo"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": Additional user data if required by campaign"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"metadata"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": Custom claim data"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"multiplier"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": Reward multiplier (default: 1.0)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"context"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": Dynamic context for ERC721 token personalization (see below)"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC721 Dynamic Context & Template Interpolation:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"For ERC721 tokens, you can provide a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"context"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" object whose values become available as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{context.xxx}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" placeholders in the token's name/description and AI prompts."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Context sources (merge order):"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":true,"marker":"."},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"TokenMetadata.defaultPromptContext"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" → "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{defaults.xxx}}"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"TriggerSource.context"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (admin QR/NFC) → "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{context.xxx}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (always applied)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CampaignClaimRequest.context"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (this field) → "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{context.xxx}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (only if "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"allowExternalContextOverwrite=true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Example - Hotel check-in:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"triggerSourceId\": \"room-305-qr-uuid\",\n  \"context\": {\n    \"guestName\": \"María García\",\n    \"roomNumber\": \"305\",\n    \"validityEndDate\": \"2026-04-20T11:00:00Z\"\n  }\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"triggerSourceId\": \"room-305-qr-uuid\",\n  \"context\": {\n    \"guestName\": \"María García\",\n    \"roomNumber\": \"305\",\n    \"validityEndDate\": \"2026-04-20T11:00:00Z\"\n  }\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"With TokenMetadata name: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"\"Welcome {{context.guestName}} - Room {{context.roomNumber}}\""},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Result: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"\"Welcome María García - Room 305\""},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"App Integration Example:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"// 1. Get campaign with trigger sources\nconst campaign = await getActiveCampaigns({ include: ['triggerSources'] });\n\n// 2. Determine claim method\nconst triggerTypes = campaign.included?.triggerSources?.map(ts => ts.type);\n// → ['QR_CODE', 'NFC_TAG']\n\n// 3. Based on type, show appropriate UI and call claim\nif (triggerTypes.includes('QR_CODE')) {\n  // Open camera, scan QR, extract triggerSourceId\n  claimCampaign({ triggerSourceId: 'scanned-id' });\n}\n","language":"typescript"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"// 1. Get campaign with trigger sources\nconst campaign = await getActiveCampaigns({ include: ['triggerSources'] });\n\n// 2. Determine claim method\nconst triggerTypes = campaign.included?.triggerSources?.map(ts => ts.type);\n// → ['QR_CODE', 'NFC_TAG']\n\n// 3. Based on type, show appropriate UI and call claim\nif (triggerTypes.includes('QR_CODE')) {\n  // Open camera, scan QR, extract triggerSourceId\n  claimCampaign({ triggerSourceId: 'scanned-id' });\n}\n"},"children":[]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CampaignClaimRequestDTO"}},"schemaId":"components/schemas/CampaignClaimRequestDTO","pointer":"/paths/~1campaigns~1claims/post/requestBody","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Campaign claim request payload."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Preferred approach (new implementations):"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"triggerSourceId\": \"uuid-from-qr-or-nfc\",\n  \"latitude\": 47.6062,\n  \"longitude\": -122.3321,\n  \"metadata\": { \"source\": \"mobile-app\" }\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"triggerSourceId\": \"uuid-from-qr-or-nfc\",\n  \"latitude\": 47.6062,\n  \"longitude\": -122.3321,\n  \"metadata\": { \"source\": \"mobile-app\" }\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Business/System claims (on behalf of user):"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"triggerSourceId\": \"trigger-uuid\",\n  \"userIdentifier\": \"user@example.com\",\n  \"userInfo\": {\n    \"email\": \"user@example.com\",\n    \"firstName\": \"John\",\n    \"phoneNumber\": \"+1234567890\"\n  }\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"triggerSourceId\": \"trigger-uuid\",\n  \"userIdentifier\": \"user@example.com\",\n  \"userInfo\": {\n    \"email\": \"user@example.com\",\n    \"firstName\": \"John\",\n    \"phoneNumber\": \"+1234567890\"\n  }\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Legacy approach (deprecated):"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"campaignId\": \"campaign-uuid\",\n  \"businessId\": \"business-uuid\"\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"campaignId\": \"campaign-uuid\",\n  \"businessId\": \"business-uuid\"\n}\n"},"children":[]}]}]}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/campaigns/claims","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/CampaignClaimRequestDTO"}},"responseCodes":["200","201"],"pointer":"/campaigns/claims","href":"campaign-claims/campaignclaimscontroller_createcampaignclaim","openApiOperationId":"CampaignClaimsController_createCampaignClaim","summary":"Create campaign claim"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/CampaignClaimRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CampaignClaimRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Campaign claim processed successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignClaimDTO"}},"schemaId":"components/schemas/CampaignClaimDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignClaimDTO"}},"schemaId":"components/schemas/CampaignClaimDTO"}],"pointer":"/paths/~1campaigns~1claims/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CampaignClaimDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignClaimDTO"}}},{"code":"201","schemaId":"components/schemas/CampaignClaimDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignClaimDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaign-claims/campaignclaimscontroller_createcampaignclaim"}],"panels":[]}]},"httpPath":"/campaigns/claims"},{"label":"Get campaign claims with advanced filtering","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaign-claims/campaignclaimscontroller_getcampaignclaims","routeSlug":"/swagger/campaign-claims/campaignclaimscontroller_getcampaignclaims","metadata":{"seo":{"title":"Get campaign claims with advanced filtering","description":"Get campaign claims with comprehensive filtering options. Use pagination parameters (page & limit) for optimal performance - critical for high-volume campaigns. Legacy support: returns array without params (deprecated - will be removed in future)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignClaimsController_getCampaignClaims","name":"Get campaign claims with advanced filtering","isWebhook":false,"pointer":"/paths/~1campaigns~1claims/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get campaign claims with advanced filtering","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Get campaign claims with comprehensive filtering options. Use pagination parameters (page & limit) for optimal performance - critical for high-volume campaigns. Legacy support: returns array without params (deprecated - will be removed in future)."},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"campaignId: Filter by specific campaign (optional)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"userId: Filter by specific user ID (admin only)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"businessId: Filter by specific business ID (admin only)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"include: Optionally include related entities (campaign, user, business, transactions)"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Access Control:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Users: See only their own claims, campaignId optional"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Business: See only claims associated with their business account, campaignId optional"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Admin: Can filter by any combination of parameters or see all claims"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Security Notes:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Users cannot access userId or businessId parameters (automatically filtered)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Business accounts automatically filter to their own businessId regardless of parameter"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Admin has full access to all filtering options"},"children":[]}]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]},{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"campaignId","in":"query","schemaId":"schema_67","description":"Filter by specific campaign ID"},{"name":"userId","in":"query","schemaId":"schema_67","description":"Filter by specific user ID (admin only)"},{"name":"businessId","in":"query","schemaId":"schema_67","description":"Filter by specific business ID (admin only)"},{"name":"include","in":"query","schemaId":"schema_75","description":"Include related entities: campaign, user, business, triggerSource, transactions (comma-separated)"},{"name":"page","in":"query","schemaId":"schema_68","description":"Page number (1-based)"},{"name":"limit","in":"query","schemaId":"schema_68","description":"Items per page"},{"name":"dateFrom","in":"query","schemaId":"schema_85","description":"Filter items created after this date (ISO 8601)"},{"name":"dateTo","in":"query","schemaId":"schema_85","description":"Filter items created before this date (ISO 8601)"},{"name":"sortBy","in":"query","schemaId":"schema_86","description":"Sort field"},{"name":"sortOrder","in":"query","schemaId":"schema_73","description":"Sort order (ASC or DESC)"}],"pointer":"/paths/~1campaigns~1claims/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/campaigns/claims","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"campaignId","in":"query","required":false,"schemaId":"schema_67"},{"name":"userId","in":"query","required":false,"schemaId":"schema_67"},{"name":"businessId","in":"query","required":false,"schemaId":"schema_67"},{"name":"include","in":"query","required":false,"schemaId":"schema_75"},{"name":"page","in":"query","required":false,"schemaId":"schema_68"},{"name":"limit","in":"query","required":false,"schemaId":"schema_68"},{"name":"dateFrom","in":"query","required":false,"schemaId":"schema_85"},{"name":"dateTo","in":"query","required":false,"schemaId":"schema_85"},{"name":"sortBy","in":"query","required":false,"schemaId":"schema_86"},{"name":"sortOrder","in":"query","required":false,"schemaId":"schema_73"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]},{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/campaigns/claims","href":"campaign-claims/campaignclaimscontroller_getcampaignclaims","openApiOperationId":"CampaignClaimsController_getCampaignClaims","summary":"Get campaign claims with advanced filtering","securityGroups":[{"projectKey":[]},{"authJWT":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Campaign claims retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_87"}},"schemaId":"schema_87"}],"pointer":"/paths/~1campaigns~1claims/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_87","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_87"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaign-claims/campaignclaimscontroller_getcampaignclaims"}],"panels":[]}]},"httpPath":"/campaigns/claims"},{"label":"Get my campaign claims (Convenience)","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaign-claims/campaignclaimscontroller_getmycampaignclaims","routeSlug":"/swagger/campaign-claims/campaignclaimscontroller_getmycampaignclaims","metadata":{"seo":{"title":"Get my campaign claims (Convenience)","description":"Convenience endpoint for authenticated users to retrieve their own campaign claims."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignClaimsController_getMyCampaignClaims","name":"Get my campaign claims (Convenience)","isWebhook":false,"pointer":"/paths/~1campaigns~1claims~1me/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get my campaign claims (Convenience)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Convenience endpoint for authenticated users to retrieve their own campaign claims."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Equivalent to GET /campaign-claims but with required authentication and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"automatic filtering to current user context. Use pagination parameters (page & limit) for optimal performance - recommended for active users. Legacy support: returns array without params (deprecated - will be removed in future)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Features:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Automatic user context (no userId parameter needed)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Optional campaign filtering"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requires user authentication"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Simplified response structure"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Optional entity inclusion (campaign, user, business, transactions)"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Usage Examples:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"GET /campaign-claims/me (all claims for authenticated user)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"GET /campaign-claims/me?campaignId=123 (user claims for specific campaign)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"GET /campaign-claims/me?include=campaign,transactions (with related entities)"},"children":[]}]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"campaignId","in":"query","schemaId":"schema_67","description":"Filter by specific campaign ID"},{"name":"include","in":"query","schemaId":"schema_75","description":"Include related entities: campaign, user, business, triggerSource, transactions (comma-separated)"},{"name":"page","in":"query","schemaId":"schema_68","description":"Page number (1-based)"},{"name":"limit","in":"query","schemaId":"schema_68","description":"Items per page"},{"name":"dateFrom","in":"query","schemaId":"schema_85","description":"Filter items created after this date (ISO 8601)"},{"name":"dateTo","in":"query","schemaId":"schema_85","description":"Filter items created before this date (ISO 8601)"}],"pointer":"/paths/~1campaigns~1claims~1me/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/campaigns/claims/me","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"campaignId","in":"query","required":false,"schemaId":"schema_67"},{"name":"include","in":"query","required":false,"schemaId":"schema_75"},{"name":"page","in":"query","required":false,"schemaId":"schema_68"},{"name":"limit","in":"query","required":false,"schemaId":"schema_68"},{"name":"dateFrom","in":"query","required":false,"schemaId":"schema_85"},{"name":"dateTo","in":"query","required":false,"schemaId":"schema_85"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/campaigns/claims/me","href":"campaign-claims/campaignclaimscontroller_getmycampaignclaims","openApiOperationId":"CampaignClaimsController_getMyCampaignClaims","summary":"Get my campaign claims (Convenience)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"User campaign claims retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_87"}},"schemaId":"schema_87"}],"pointer":"/paths/~1campaigns~1claims~1me/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_87","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_87"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaign-claims/campaignclaimscontroller_getmycampaignclaims"}],"panels":[]}]},"httpPath":"/campaigns/claims/me"},{"label":"Export campaign claims as CSV (Admin)","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/campaign-claims/campaignclaimscontroller_exportclaimsascsv","routeSlug":"/swagger/campaign-claims/campaignclaimscontroller_exportclaimsascsv","metadata":{"seo":{"title":"Export campaign claims as CSV (Admin)","description":"Export all campaign claims to CSV format with optional filtering."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CampaignClaimsController_exportClaimsAsCsv","name":"Export campaign claims as CSV (Admin)","isWebhook":false,"pointer":"/paths/~1campaigns~1claims~1export~1csv/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Export campaign claims as CSV (Admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Export all campaign claims to CSV format with optional filtering."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"dateFrom","in":"query","schemaId":"schema_67","description":"Filter claims from this date (ISO format)"},{"name":"dateTo","in":"query","schemaId":"schema_67","description":"Filter claims up to this date (ISO format)"},{"name":"campaignId","in":"query","schemaId":"schema_67","description":"Filter claims by campaign ID"}],"pointer":"/paths/~1campaigns~1claims~1export~1csv/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/campaigns/claims/export/csv","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"dateFrom","in":"query","required":false,"schemaId":"schema_67"},{"name":"dateTo","in":"query","required":false,"schemaId":"schema_67"},{"name":"campaignId","in":"query","required":false,"schemaId":"schema_67"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/campaigns/claims/export/csv","href":"campaign-claims/campaignclaimscontroller_exportclaimsascsv","openApiOperationId":"CampaignClaimsController_exportClaimsAsCsv","summary":"Export campaign claims as CSV (Admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200"}],"pointer":"/paths/~1campaigns~1claims~1export~1csv/get/responses"}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/campaign-claims/campaignclaimscontroller_exportclaimsascsv"}],"panels":[]}]},"httpPath":"/campaigns/claims/export/csv"}],"content":{"contentType":"group","meta":{"name":"Campaign Claims"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Campaign Claims","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/campaigns/claims","summary":"Create campaign claim","prefix":{"name":"post","color":"post"},"badges":[],"link":"/campaign-claims/campaignclaimscontroller_createcampaignclaim","deprecated":false},{"title":"/campaigns/claims","summary":"Get campaign claims with advanced filtering","prefix":{"name":"get","color":"get"},"badges":[],"link":"/campaign-claims/campaignclaimscontroller_getcampaignclaims","deprecated":false},{"title":"/campaigns/claims/me","summary":"Get my campaign claims (Convenience)","prefix":{"name":"get","color":"get"},"badges":[],"link":"/campaign-claims/campaignclaimscontroller_getmycampaignclaims","deprecated":false},{"title":"/campaigns/claims/export/csv","summary":"Export campaign claims as CSV (Admin)","prefix":{"name":"get","color":"get"},"badges":[],"link":"/campaign-claims/campaignclaimscontroller_exportclaimsascsv","deprecated":false}]}]}]}]}},{"type":"group","label":"Redemptions","link":"/swagger/redemptions","routeSlug":"/swagger/redemptions","items":[{"type":"link","label":"Token Exchange System","link":"/swagger/redemptions/token-exchange-system","routeSlug":"/swagger/redemptions/token-exchange-system","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Token Exchange System"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"redemptions/token-exchange-system"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Token Exchange System"},"children":[]}]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"div","attrs":{"style":{"fontSize":"14px","lineHeight":"1.5"}}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"\n      Token exchange system facilitating conversion between different token types and redemption for rewards. Provides flexible reward experiences through diverse redemption options.\n    "},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Redemption Features:"},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Token Exchange:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Convert between different token types with exchange rates\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Reward Catalog:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Browse available rewards for token redemption\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Exchange Rules:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Configure conversion rates and redemption requirements  \n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Partner Ecosystem:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Redemption options across business partner networks\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Flexible Rewards:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Support for products, services, and digital rewards\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"img","attrs":{"src":"https://s3.eu-west-1.amazonaws.com/pers.assets.prod/tenant/a0df6ebf-51cc-4c18-afcd-0de355c250dc_DemoApp_eXplorins/Documentation/Redemption_image.png","alt":"Redemption Module","width":"400","style":{"marginTop":"10px"}}},"children":[]}]}],"panels":[]}]}},{"label":"Get redemption by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/redemptions/redemptionscontroller_getredemptionbyid","routeSlug":"/swagger/redemptions/redemptionscontroller_getredemptionbyid","metadata":{"seo":{"title":"Get redemption by ID","description":"Get specific redemption details by ID. Requires valid project API key. Include missingUserFields to check which required fields the authenticated user is missing."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RedemptionsController_getRedemptionById","name":"Get redemption by ID","isWebhook":false,"pointer":"/paths/~1redemptions~1{id}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get redemption by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Get specific redemption details by ID. Requires valid project API key. Include missingUserFields to check which required fields the authenticated user is missing."},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1redemptions~1{id}/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"include","in":"query","schemaId":"schema_75","description":"Include computed fields. Valid options: redeemCount, ownerBusiness, requiredUserInfo, booking."}],"pointer":"/paths/~1redemptions~1{id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/redemptions/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[{"name":"include","in":"query","required":false,"schemaId":"schema_75"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/redemptions/{id}","href":"redemptions/redemptionscontroller_getredemptionbyid","openApiOperationId":"RedemptionsController_getRedemptionById","summary":"Get redemption by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Redemption details retrieved","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionDTO"}},"schemaId":"components/schemas/RedemptionDTO"}],"pointer":"/paths/~1redemptions~1{id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/RedemptionDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/redemptions/redemptionscontroller_getredemptionbyid"}],"panels":[]}]},"httpPath":"/redemptions/{id}"},{"label":"Update redemption","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/redemptions/redemptionscontroller_updateredemption","routeSlug":"/swagger/redemptions/redemptionscontroller_updateredemption","metadata":{"seo":{"title":"Update redemption","description":"Update existing redemption. Business can only update their own redemptions."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RedemptionsController_updateRedemption","name":"Update redemption","isWebhook":false,"pointer":"/paths/~1redemptions~1{id}/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update redemption","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Update existing redemption. Business can only update their own redemptions."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1redemptions~1{id}/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/RedemptionCreateRequestDTO"}},"schemaId":"components/schemas/RedemptionCreateRequestDTO","pointer":"/paths/~1redemptions~1{id}/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/redemptions/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/RedemptionCreateRequestDTO"}},"responseCodes":["200"],"pointer":"/redemptions/{id}","href":"redemptions/redemptionscontroller_updateredemption","openApiOperationId":"RedemptionsController_updateRedemption","summary":"Update redemption"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/RedemptionCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/RedemptionCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Redemption updated successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionDTO"}},"schemaId":"components/schemas/RedemptionDTO"}],"pointer":"/paths/~1redemptions~1{id}/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/RedemptionDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/redemptions/redemptionscontroller_updateredemption"}],"panels":[]}]},"httpPath":"/redemptions/{id}"},{"label":"Delete redemption","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/redemptions/redemptionscontroller_deleteredemption","routeSlug":"/swagger/redemptions/redemptionscontroller_deleteredemption","metadata":{"seo":{"title":"Delete redemption","description":"Permanently delete a redemption. Business can only delete their own redemptions."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RedemptionsController_deleteRedemption","name":"Delete redemption","isWebhook":false,"pointer":"/paths/~1redemptions~1{id}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Delete redemption","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Permanently delete a redemption. Business can only delete their own redemptions."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1redemptions~1{id}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/redemptions/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/redemptions/{id}","href":"redemptions/redemptionscontroller_deleteredemption","openApiOperationId":"RedemptionsController_deleteRedemption","summary":"Delete redemption"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Redemption deleted successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_81"}},"schemaId":"schema_81"}],"pointer":"/paths/~1redemptions~1{id}/delete/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_81","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_81"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/redemptions/redemptionscontroller_deleteredemption"}],"panels":[]}]},"httpPath":"/redemptions/{id}"},{"label":"Get redemption available supply","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/redemptions/redemptionscontroller_getavailablesupply","routeSlug":"/swagger/redemptions/redemptionscontroller_getavailablesupply","metadata":{"seo":{"title":"Get redemption available supply","description":"Get the available supply count for a specific redemption. Used for inventory display."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RedemptionsController_getAvailableSupply","name":"Get redemption available supply","isWebhook":false,"pointer":"/paths/~1redemptions~1{id}~1supply/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get redemption available supply","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Get the available supply count for a specific redemption. Used for inventory display."},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1redemptions~1{id}~1supply/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/redemptions/{id}/supply","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/redemptions/{id}/supply","href":"redemptions/redemptionscontroller_getavailablesupply","openApiOperationId":"RedemptionsController_getAvailableSupply","summary":"Get redemption available supply"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Available supply count","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ItemSupply"}},"schemaId":"components/schemas/ItemSupply"}],"pointer":"/paths/~1redemptions~1{id}~1supply/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/ItemSupply","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ItemSupply"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/redemptions/redemptionscontroller_getavailablesupply"}],"panels":[]}]},"httpPath":"/redemptions/{id}/supply"},{"label":"Get redemptions (Intelligent Access)","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/redemptions/redemptionscontroller_getredemptions","routeSlug":"/swagger/redemptions/redemptionscontroller_getredemptions","metadata":{"seo":{"title":"Get redemptions (Intelligent Access)","description":"Intelligent endpoint that adapts based on authentication: Public users get active redemptions only, Admin users get all redemptions with optional filtering. Consolidates GET /redemption and GET /redemption/admin. Use pagination parameters (page & limit) for optimal performance - critical for large datasets. Legacy support: returns array without params (deprecated - will be removed in future)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RedemptionsController_getRedemptions","name":"Get redemptions (Intelligent Access)","isWebhook":false,"pointer":"/paths/~1redemptions/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get redemptions (Intelligent Access)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Intelligent endpoint that adapts based on authentication: Public users get active redemptions only, Admin users get all redemptions with optional filtering. Consolidates GET /redemption and GET /redemption/admin. Use pagination parameters (page & limit) for optimal performance - critical for large datasets. Legacy support: returns array without params (deprecated - will be removed in future)."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"active","in":"query","schemaId":"schema_81","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Filter by active status (Admin only: true=active, false=inactive, omit=all). Ignored for public access."},"children":[]}]}]}]},{"name":"search","in":"query","schemaId":"schema_67","description":"Free text search across redemption name, description, and tags (case-insensitive)"},{"name":"page","in":"query","schemaId":"schema_67","description":"Page number for pagination (1-based)"},{"name":"limit","in":"query","schemaId":"schema_67","description":"Number of items per page"},{"name":"startDate","in":"query","schemaId":"schema_67","description":"Filter redemptions starting on or after this date (ISO 8601 format)"},{"name":"endDate","in":"query","schemaId":"schema_67","description":"Filter redemptions ending on or before this date (ISO 8601 format)"},{"name":"sortBy","in":"query","schemaId":"schema_82","description":"Sort field (default: order)"},{"name":"sortOrder","in":"query","schemaId":"schema_73","description":"Sort direction"},{"name":"ownerBusinessId","in":"query","schemaId":"schema_67","description":"Filter by owner business ID (returns redemptions owned by this business)."},{"name":"approvalStatus","in":"query","schemaId":"schema_74","description":"Filter by approval status (admin only)"},{"name":"include","in":"query","schemaId":"schema_75","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Include computed fields. Valid options: redeemCount, ownerBusiness, requiredUserInfo, booking."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"⚠️ "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Performance cost per option (per invocation):"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"redeemCount"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — 1 batch DB query (cheap)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ownerBusiness"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — 1 batch DB query (cheap)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"requiredUserInfo"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — fetches field definitions + resolves dynamic select option lists (e.g. countries). Adds ~300–500ms per cold invocation. Avoid on high-frequency polling or large page sizes."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"booking"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — 1 DB query per unique booking config across all redemptions. Cost scales with number of distinct booking requirement types. Avoid if booking eligibility is not displayed."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Combine only the options you actually render in the UI."},"children":[]}]}]}]},{"name":"tags","in":"query","schemaId":"schema_75","description":"Filter by tag(s). Comma-separated or multiple params for OR matching."}],"pointer":"/paths/~1redemptions/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/redemptions","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"active","in":"query","required":false,"schemaId":"schema_81"},{"name":"search","in":"query","required":false,"schemaId":"schema_67"},{"name":"page","in":"query","required":false,"schemaId":"schema_67"},{"name":"limit","in":"query","required":false,"schemaId":"schema_67"},{"name":"startDate","in":"query","required":false,"schemaId":"schema_67"},{"name":"endDate","in":"query","required":false,"schemaId":"schema_67"},{"name":"sortBy","in":"query","required":false,"schemaId":"schema_82"},{"name":"sortOrder","in":"query","required":false,"schemaId":"schema_73"},{"name":"ownerBusinessId","in":"query","required":false,"schemaId":"schema_67"},{"name":"approvalStatus","in":"query","required":false,"schemaId":"schema_74"},{"name":"include","in":"query","required":false,"schemaId":"schema_75"},{"name":"tags","in":"query","required":false,"schemaId":"schema_75"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/redemptions","href":"redemptions/redemptionscontroller_getredemptions","openApiOperationId":"RedemptionsController_getRedemptions","summary":"Get redemptions (Intelligent Access)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Redemptions retrieved based on access level","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_88"}},"schemaId":"schema_88"}],"pointer":"/paths/~1redemptions/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_88","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_88"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/redemptions/redemptionscontroller_getredemptions"}],"panels":[]}]},"httpPath":"/redemptions"},{"label":"Create redemption (Admin)","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/redemptions/redemptionscontroller_createredemption","routeSlug":"/swagger/redemptions/redemptionscontroller_createredemption","metadata":{"seo":{"title":"Create redemption (Admin)","description":"Create a new redemption with administrative privileges. Replaces POST /redemption/admin"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RedemptionsController_createRedemption","name":"Create redemption (Admin)","isWebhook":false,"pointer":"/paths/~1redemptions/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create redemption (Admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Create a new redemption with administrative privileges. Replaces POST /redemption/admin"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/RedemptionCreateRequestDTO"}},"schemaId":"components/schemas/RedemptionCreateRequestDTO","pointer":"/paths/~1redemptions/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/redemptions","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/RedemptionCreateRequestDTO"}},"responseCodes":["200","201"],"pointer":"/redemptions","href":"redemptions/redemptionscontroller_createredemption","openApiOperationId":"RedemptionsController_createRedemption","summary":"Create redemption (Admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/RedemptionCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/RedemptionCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Redemption created successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionDTO"}},"schemaId":"components/schemas/RedemptionDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionDTO"}},"schemaId":"components/schemas/RedemptionDTO"}],"pointer":"/paths/~1redemptions/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/RedemptionDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionDTO"}}},{"code":"201","schemaId":"components/schemas/RedemptionDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/redemptions/redemptionscontroller_createredemption"}],"panels":[]}]},"httpPath":"/redemptions"},{"label":"Toggle redemption status","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/redemptions/redemptionscontroller_toggleredemptionstatus","routeSlug":"/swagger/redemptions/redemptionscontroller_toggleredemptionstatus","metadata":{"seo":{"title":"Toggle redemption status","description":"Toggle redemption between active and inactive status. Business can only toggle their own redemptions."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RedemptionsController_toggleRedemptionStatus","name":"Toggle redemption status","isWebhook":false,"pointer":"/paths/~1redemptions~1{id}~1status/put","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Toggle redemption status","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Toggle redemption between active and inactive status. Business can only toggle their own redemptions."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1redemptions~1{id}~1status/put/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/redemptions/{id}/status","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/redemptions/{id}/status","href":"redemptions/redemptionscontroller_toggleredemptionstatus","openApiOperationId":"RedemptionsController_toggleRedemptionStatus","summary":"Toggle redemption status"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Redemption status toggled","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionDTO"}},"schemaId":"components/schemas/RedemptionDTO"}],"pointer":"/paths/~1redemptions~1{id}~1status/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/RedemptionDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/redemptions/redemptionscontroller_toggleredemptionstatus"}],"panels":[]}]},"httpPath":"/redemptions/{id}/status"},{"label":"Export redemptions to CSV","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/redemptions/redemptionscontroller_exportredemptionscsv","routeSlug":"/swagger/redemptions/redemptionscontroller_exportredemptionscsv","metadata":{"seo":{"title":"Export redemptions to CSV","description":"Export all redemptions as a CSV file. Supports date filtering."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RedemptionsController_exportRedemptionsCsv","name":"Export redemptions to CSV","isWebhook":false,"pointer":"/paths/~1redemptions~1export~1csv/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Export redemptions to CSV","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Export all redemptions as a CSV file. Supports date filtering."},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]},{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"dateFrom","in":"query","schemaId":"schema_67","description":"Filter from date (ISO format)"},{"name":"dateTo","in":"query","schemaId":"schema_67","description":"Filter to date (ISO format)"}],"pointer":"/paths/~1redemptions~1export~1csv/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/redemptions/export/csv","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"dateFrom","in":"query","required":false,"schemaId":"schema_67"},{"name":"dateTo","in":"query","required":false,"schemaId":"schema_67"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]},{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/redemptions/export/csv","href":"redemptions/redemptionscontroller_exportredemptionscsv","openApiOperationId":"RedemptionsController_exportRedemptionsCsv","summary":"Export redemptions to CSV","securityGroups":[{"projectKey":[]},{"authJWT":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"CSV file stream"}],"pointer":"/paths/~1redemptions~1export~1csv/get/responses"}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/redemptions/redemptionscontroller_exportredemptionscsv"}],"panels":[]}]},"httpPath":"/redemptions/export/csv"},{"label":"Approve or reject a redemption (Admin)","deprecated":false,"httpVerb":"patch","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/redemptions/redemptionscontroller_approveorrejectredemption","routeSlug":"/swagger/redemptions/redemptionscontroller_approveorrejectredemption","metadata":{"seo":{"title":"Approve or reject a redemption (Admin)","description":"Sets approval status to approved or rejected. Rejected requires a reason."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RedemptionsController_approveOrRejectRedemption","name":"Approve or reject a redemption (Admin)","isWebhook":false,"pointer":"/paths/~1redemptions~1{id}~1approval/patch","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Approve or reject a redemption (Admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Sets approval status to approved or rejected. Rejected requires a reason."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1redemptions~1{id}~1approval/patch/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateApprovalDTO"}},"schemaId":"components/schemas/CreateApprovalDTO","pointer":"/paths/~1redemptions~1{id}~1approval/patch/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PATCH","path":"/redemptions/{id}/approval","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/CreateApprovalDTO"}},"responseCodes":["200"],"pointer":"/redemptions/{id}/approval","href":"redemptions/redemptionscontroller_approveorrejectredemption","openApiOperationId":"RedemptionsController_approveOrRejectRedemption","summary":"Approve or reject a redemption (Admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/CreateApprovalDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateApprovalDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Redemption approval updated","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionDTO"}},"schemaId":"components/schemas/RedemptionDTO"}],"pointer":"/paths/~1redemptions~1{id}~1approval/patch/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/RedemptionDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/redemptions/redemptionscontroller_approveorrejectredemption"}],"panels":[]}]},"httpPath":"/redemptions/{id}/approval"}],"content":{"contentType":"group","meta":{"name":"Redemptions"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Redemptions","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/redemptions/{id}","summary":"Get redemption by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/redemptions/redemptionscontroller_getredemptionbyid","deprecated":false},{"title":"/redemptions/{id}","summary":"Update redemption","prefix":{"name":"put","color":"put"},"badges":[],"link":"/redemptions/redemptionscontroller_updateredemption","deprecated":false},{"title":"/redemptions/{id}","summary":"Delete redemption","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/redemptions/redemptionscontroller_deleteredemption","deprecated":false},{"title":"/redemptions/{id}/supply","summary":"Get redemption available supply","prefix":{"name":"get","color":"get"},"badges":[],"link":"/redemptions/redemptionscontroller_getavailablesupply","deprecated":false},{"title":"/redemptions","summary":"Get redemptions (Intelligent Access)","prefix":{"name":"get","color":"get"},"badges":[],"link":"/redemptions/redemptionscontroller_getredemptions","deprecated":false},{"title":"/redemptions","summary":"Create redemption (Admin)","prefix":{"name":"post","color":"post"},"badges":[],"link":"/redemptions/redemptionscontroller_createredemption","deprecated":false},{"title":"/redemptions/{id}/status","summary":"Toggle redemption status","prefix":{"name":"put","color":"put"},"badges":[],"link":"/redemptions/redemptionscontroller_toggleredemptionstatus","deprecated":false},{"title":"/redemptions/export/csv","summary":"Export redemptions to CSV","prefix":{"name":"get","color":"get"},"badges":[],"link":"/redemptions/redemptionscontroller_exportredemptionscsv","deprecated":false},{"title":"/redemptions/{id}/approval","summary":"Approve or reject a redemption (Admin)","prefix":{"name":"patch","color":"patch"},"badges":[],"link":"/redemptions/redemptionscontroller_approveorrejectredemption","deprecated":false}]}]}]}]}},{"type":"group","label":"Purchases","link":"/swagger/purchases","routeSlug":"/swagger/purchases","items":[{"type":"link","label":"Payment Processing System","link":"/swagger/purchases/payment-processing-system","routeSlug":"/swagger/purchases/payment-processing-system","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Payment Processing System"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"purchases/payment-processing-system"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Payment Processing System"},"children":[]}]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"div","attrs":{"style":{"fontSize":"14px","lineHeight":"1.5"}}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"\n      Secure payment processing for account balance top-ups through credit card payments. Provides secure financial transactions for premium features and account funding within the loyalty ecosystem.\n    "},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Payment Features:"},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Secure Payments:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Credit card processing with industry-standard security\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Balance Top-Up:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Add funds to user accounts for premium features\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Payment Methods:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Support for multiple payment providers and methods\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Transaction Security:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Encrypted payment data and fraud protection\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Account Integration:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Seamless integration with token and reward systems\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"img","attrs":{"src":"https://s3.eu-west-1.amazonaws.com/pers.assets.prod/tenant/a0df6ebf-51cc-4c18-afcd-0de355c250dc_DemoApp_eXplorins/Documentation/Purchase_image.png","alt":"Purchase Module","width":"400","style":{"marginTop":"10px"}}},"children":[]}]}],"panels":[]}]}},{"label":"Stripe payment webhook (Critical)","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/purchases/purchasescontroller_handlestripewebhook","routeSlug":"/swagger/purchases/purchasescontroller_handlestripewebhook","metadata":{"seo":{"title":"Stripe payment webhook (Critical)","description":"Handles Stripe payment events for financial reconciliation. CRITICAL: Do not modify without extensive testing. Replaces POST /purchase/stripe-webhook"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"PurchasesController_handleStripeWebhook","name":"Stripe payment webhook (Critical)","isWebhook":false,"pointer":"/paths/~1purchases~1webhooks~1stripe/post","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Stripe payment webhook (Critical)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Handles Stripe payment events for financial reconciliation. CRITICAL: Do not modify without extensive testing. Replaces POST /purchase/stripe-webhook"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/purchases/webhooks/stripe","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[],"responseCodes":["200","201"],"pointer":"/purchases/webhooks/stripe","href":"purchases/purchasescontroller_handlestripewebhook","openApiOperationId":"PurchasesController_handleStripeWebhook","summary":"Stripe payment webhook (Critical)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Webhook processed successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_81"}},"schemaId":"schema_81"},{"code":"201"}],"pointer":"/paths/~1purchases~1webhooks~1stripe/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_81","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_81"}}},{"code":"201"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/purchases/purchasescontroller_handlestripewebhook"}],"panels":[]}]},"httpPath":"/purchases/webhooks/stripe"},{"label":"Get purchase tokens (Intelligent Access)","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/purchases/purchasescontroller_getpurchasetokens","routeSlug":"/swagger/purchases/purchasescontroller_getpurchasetokens","metadata":{"seo":{"title":"Get purchase tokens (Intelligent Access)","description":"Intelligent endpoint that adapts based on authentication. Use pagination parameters (page & limit) for optimal performance. Legacy support: returns array without params (deprecated - will be removed in future). Public users get active tokens only, Admin users get filtered tokens. Replaces GET /purchase/token"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"PurchasesController_getPurchaseTokens","name":"Get purchase tokens (Intelligent Access)","isWebhook":false,"pointer":"/paths/~1purchases~1tokens/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get purchase tokens (Intelligent Access)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Intelligent endpoint that adapts based on authentication. Use pagination parameters (page & limit) for optimal performance. Legacy support: returns array without params (deprecated - will be removed in future). Public users get active tokens only, Admin users get filtered tokens. Replaces GET /purchase/token"},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"active","in":"query","schemaId":"schema_81","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Filter by active status (Admin only: true=active, false=inactive, omit=all). Ignored for public access."},"children":[]}]}]}]},{"name":"page","in":"query","schemaId":"schema_68","description":"Page number (1-based)"},{"name":"limit","in":"query","schemaId":"schema_68","description":"Items per page"}],"pointer":"/paths/~1purchases~1tokens/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/purchases/tokens","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"active","in":"query","required":false,"schemaId":"schema_81"},{"name":"page","in":"query","required":false,"schemaId":"schema_68"},{"name":"limit","in":"query","required":false,"schemaId":"schema_68"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/purchases/tokens","href":"purchases/purchasescontroller_getpurchasetokens","openApiOperationId":"PurchasesController_getPurchaseTokens","summary":"Get purchase tokens (Intelligent Access)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Purchase tokens retrieved based on access level","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_89"}},"schemaId":"schema_89"}],"pointer":"/paths/~1purchases~1tokens/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_89","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_89"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/purchases/purchasescontroller_getpurchasetokens"}],"panels":[]}]},"httpPath":"/purchases/tokens"},{"label":"Create purchase token (Admin)","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/purchases/purchasescontroller_createpurchasetoken","routeSlug":"/swagger/purchases/purchasescontroller_createpurchasetoken","metadata":{"seo":{"title":"Create purchase token (Admin)","description":"Create a new purchase token for the product catalog. Admin-only operation. Replaces POST /purchase/admin/token"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"PurchasesController_createPurchaseToken","name":"Create purchase token (Admin)","isWebhook":false,"pointer":"/paths/~1purchases~1tokens/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create purchase token (Admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Create a new purchase token for the product catalog. Admin-only operation. Replaces POST /purchase/admin/token"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PurchaseTokenCreateRequestDTO"}},"schemaId":"components/schemas/PurchaseTokenCreateRequestDTO","pointer":"/paths/~1purchases~1tokens/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/purchases/tokens","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/PurchaseTokenCreateRequestDTO"}},"responseCodes":["200","201"],"pointer":"/purchases/tokens","href":"purchases/purchasescontroller_createpurchasetoken","openApiOperationId":"PurchasesController_createPurchaseToken","summary":"Create purchase token (Admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/PurchaseTokenCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PurchaseTokenCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Purchase token created successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PurchaseTokenDTO"}},"schemaId":"components/schemas/PurchaseTokenDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PurchaseTokenDTO"}},"schemaId":"components/schemas/PurchaseTokenDTO"}],"pointer":"/paths/~1purchases~1tokens/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PurchaseTokenDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PurchaseTokenDTO"}}},{"code":"201","schemaId":"components/schemas/PurchaseTokenDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PurchaseTokenDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/purchases/purchasescontroller_createpurchasetoken"}],"panels":[]}]},"httpPath":"/purchases/tokens"},{"label":"Get donation types","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/purchases/purchasescontroller_getdonationtypes","routeSlug":"/swagger/purchases/purchasescontroller_getdonationtypes","metadata":{"seo":{"title":"Get donation types","description":"Get all available donation types for public catalog browsing. Use pagination parameters (page & limit) for optimal performance. Legacy support: returns array without params (deprecated - will be removed in future). Requires valid project API key. Replaces GET /purchase/donation/type"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"PurchasesController_getDonationTypes","name":"Get donation types","isWebhook":false,"pointer":"/paths/~1purchases~1donation-types/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get donation types","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Get all available donation types for public catalog browsing. Use pagination parameters (page & limit) for optimal performance. Legacy support: returns array without params (deprecated - will be removed in future). Requires valid project API key. Replaces GET /purchase/donation/type"},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"page","in":"query","schemaId":"schema_68","description":"Page number (1-based)"},{"name":"limit","in":"query","schemaId":"schema_68","description":"Items per page"}],"pointer":"/paths/~1purchases~1donation-types/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/purchases/donation-types","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"page","in":"query","required":false,"schemaId":"schema_68"},{"name":"limit","in":"query","required":false,"schemaId":"schema_68"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/purchases/donation-types","href":"purchases/purchasescontroller_getdonationtypes","openApiOperationId":"PurchasesController_getDonationTypes","summary":"Get donation types"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Donation types retrieved","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_90"}},"schemaId":"schema_90"}],"pointer":"/paths/~1purchases~1donation-types/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_90","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_90"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/purchases/purchasescontroller_getdonationtypes"}],"panels":[]}]},"httpPath":"/purchases/donation-types"},{"label":"Create donation type (Admin)","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/purchases/purchasescontroller_createdonationtype","routeSlug":"/swagger/purchases/purchasescontroller_createdonationtype","metadata":{"seo":{"title":"Create donation type (Admin)","description":"Create a new donation type for system configuration. Admin-only operation. Replaces POST /purchase/admin/donation/type"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"PurchasesController_createDonationType","name":"Create donation type (Admin)","isWebhook":false,"pointer":"/paths/~1purchases~1donation-types/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create donation type (Admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Create a new donation type for system configuration. Admin-only operation. Replaces POST /purchase/admin/donation/type"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/DonationTypeCreateRequestDTO"}},"schemaId":"components/schemas/DonationTypeCreateRequestDTO","pointer":"/paths/~1purchases~1donation-types/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/purchases/donation-types","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/DonationTypeCreateRequestDTO"}},"responseCodes":["200","201"],"pointer":"/purchases/donation-types","href":"purchases/purchasescontroller_createdonationtype","openApiOperationId":"PurchasesController_createDonationType","summary":"Create donation type (Admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/DonationTypeCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/DonationTypeCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Donation type created successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/DonationTypeDTO"}},"schemaId":"components/schemas/DonationTypeDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/DonationTypeDTO"}},"schemaId":"components/schemas/DonationTypeDTO"}],"pointer":"/paths/~1purchases~1donation-types/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/DonationTypeDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/DonationTypeDTO"}}},{"code":"201","schemaId":"components/schemas/DonationTypeDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/DonationTypeDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/purchases/purchasescontroller_createdonationtype"}],"panels":[]}]},"httpPath":"/purchases/donation-types"},{"label":"Create payment intent (Financial)","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/purchases/purchasescontroller_createpaymentintent","routeSlug":"/swagger/purchases/purchasescontroller_createpaymentintent","metadata":{"seo":{"title":"Create payment intent (Financial)","description":"Create a new Stripe payment intent for purchase processing. Requires tenant context for Stripe API key. FINANCIAL OPERATION - handle with care. Replaces POST /purchase/payment-intent"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"PurchasesController_createPaymentIntent","name":"Create payment intent (Financial)","isWebhook":false,"pointer":"/paths/~1purchases~1payment-intents/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create payment intent (Financial)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Create a new Stripe payment intent for purchase processing. Requires tenant context for Stripe API key. FINANCIAL OPERATION - handle with care. Replaces POST /purchase/payment-intent"},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PaymentIntentCreateDTO"}},"schemaId":"components/schemas/PaymentIntentCreateDTO","pointer":"/paths/~1purchases~1payment-intents/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/purchases/payment-intents","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/PaymentIntentCreateDTO"}},"responseCodes":["200","201"],"pointer":"/purchases/payment-intents","href":"purchases/purchasescontroller_createpaymentintent","openApiOperationId":"PurchasesController_createPaymentIntent","summary":"Create payment intent (Financial)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/PaymentIntentCreateDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PaymentIntentCreateDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Payment intent created successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PaymentIntentDTO"}},"schemaId":"components/schemas/PaymentIntentDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PaymentIntentDTO"}},"schemaId":"components/schemas/PaymentIntentDTO"}],"pointer":"/paths/~1purchases~1payment-intents/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PaymentIntentDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PaymentIntentDTO"}}},{"code":"201","schemaId":"components/schemas/PaymentIntentDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PaymentIntentDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/purchases/purchasescontroller_createpaymentintent"}],"panels":[]}]},"httpPath":"/purchases/payment-intents"},{"label":"Update payment intent (Financial)","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/purchases/purchasescontroller_updatepaymentintent","routeSlug":"/swagger/purchases/purchasescontroller_updatepaymentintent","metadata":{"seo":{"title":"Update payment intent (Financial)","description":"Update an existing Stripe payment intent. Requires tenant context for Stripe API key. FINANCIAL OPERATION - handle with care. Replaces PUT /purchase/payment-intent/{paymentIntentId}"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"PurchasesController_updatePaymentIntent","name":"Update payment intent (Financial)","isWebhook":false,"pointer":"/paths/~1purchases~1payment-intents~1{paymentIntentId}/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update payment intent (Financial)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Update an existing Stripe payment intent. Requires tenant context for Stripe API key. FINANCIAL OPERATION - handle with care. Replaces PUT /purchase/payment-intent/{paymentIntentId}"},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"paymentIntentId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1purchases~1payment-intents~1{paymentIntentId}/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PaymentIntentCreateDTO"}},"schemaId":"components/schemas/PaymentIntentCreateDTO","pointer":"/paths/~1purchases~1payment-intents~1{paymentIntentId}/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/purchases/payment-intents/{paymentIntentId}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"paymentIntentId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/PaymentIntentCreateDTO"}},"responseCodes":["200"],"pointer":"/purchases/payment-intents/{paymentIntentId}","href":"purchases/purchasescontroller_updatepaymentintent","openApiOperationId":"PurchasesController_updatePaymentIntent","summary":"Update payment intent (Financial)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/PaymentIntentCreateDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PaymentIntentCreateDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Payment intent updated successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PaymentIntentDTO"}},"schemaId":"components/schemas/PaymentIntentDTO"}],"pointer":"/paths/~1purchases~1payment-intents~1{paymentIntentId}/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PaymentIntentDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PaymentIntentDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/purchases/purchasescontroller_updatepaymentintent"}],"panels":[]}]},"httpPath":"/purchases/payment-intents/{paymentIntentId}"},{"label":"Cancel payment intent (Financial)","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/purchases/purchasescontroller_cancelpaymentintent","routeSlug":"/swagger/purchases/purchasescontroller_cancelpaymentintent","metadata":{"seo":{"title":"Cancel payment intent (Financial)","description":"Cancel an existing Stripe payment intent. Requires tenant context for Stripe API key. FINANCIAL OPERATION - handle with care. Replaces DELETE /purchase/payment-intent/{paymentIntentId}"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"PurchasesController_cancelPaymentIntent","name":"Cancel payment intent (Financial)","isWebhook":false,"pointer":"/paths/~1purchases~1payment-intents~1{paymentIntentId}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Cancel payment intent (Financial)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Cancel an existing Stripe payment intent. Requires tenant context for Stripe API key. FINANCIAL OPERATION - handle with care. Replaces DELETE /purchase/payment-intent/{paymentIntentId}"},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"paymentIntentId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1purchases~1payment-intents~1{paymentIntentId}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/purchases/payment-intents/{paymentIntentId}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"paymentIntentId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/purchases/payment-intents/{paymentIntentId}","href":"purchases/purchasescontroller_cancelpaymentintent","openApiOperationId":"PurchasesController_cancelPaymentIntent","summary":"Cancel payment intent (Financial)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Payment intent cancelled successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PaymentIntentDTO"}},"schemaId":"components/schemas/PaymentIntentDTO"}],"pointer":"/paths/~1purchases~1payment-intents~1{paymentIntentId}/delete/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PaymentIntentDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PaymentIntentDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/purchases/purchasescontroller_cancelpaymentintent"}],"panels":[]}]},"httpPath":"/purchases/payment-intents/{paymentIntentId}"},{"label":"Create user purchase (Financial Transaction)","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/purchases/purchasescontroller_createuserpurchase","routeSlug":"/swagger/purchases/purchasescontroller_createuserpurchase","metadata":{"seo":{"title":"Create user purchase (Financial Transaction)","description":"Create a new purchase for the authenticated user. BUSINESS CRITICAL - handles real financial transactions with Stripe integration. Requires user and tenant context. Replaces POST /purchase/auth"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"PurchasesController_createUserPurchase","name":"Create user purchase (Financial Transaction)","isWebhook":false,"pointer":"/paths/~1purchases/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create user purchase (Financial Transaction)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Create a new purchase for the authenticated user. BUSINESS CRITICAL - handles real financial transactions with Stripe integration. Requires user and tenant context. Replaces POST /purchase/auth"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PurchaseCreateRequestDTO"}},"schemaId":"components/schemas/PurchaseCreateRequestDTO","pointer":"/paths/~1purchases/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/purchases","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/PurchaseCreateRequestDTO"}},"responseCodes":["200","201"],"pointer":"/purchases","href":"purchases/purchasescontroller_createuserpurchase","openApiOperationId":"PurchasesController_createUserPurchase","summary":"Create user purchase (Financial Transaction)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/PurchaseCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PurchaseCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Purchase created successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PurchaseCreateResponseDTO"}},"schemaId":"components/schemas/PurchaseCreateResponseDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PurchaseCreateResponseDTO"}},"schemaId":"components/schemas/PurchaseCreateResponseDTO"}],"pointer":"/paths/~1purchases/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PurchaseCreateResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PurchaseCreateResponseDTO"}}},{"code":"201","schemaId":"components/schemas/PurchaseCreateResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PurchaseCreateResponseDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/purchases/purchasescontroller_createuserpurchase"}],"panels":[]}]},"httpPath":"/purchases"},{"label":"Get user purchase history","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/purchases/purchasescontroller_getuserpurchasehistory","routeSlug":"/swagger/purchases/purchasescontroller_getuserpurchasehistory","metadata":{"seo":{"title":"Get user purchase history","description":"Get all purchases made by the authenticated user. Use pagination parameters (page & limit) for optimal performance - recommended for users with many purchases. Legacy support: returns array without params (deprecated - will be removed in future)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"PurchasesController_getUserPurchaseHistory","name":"Get user purchase history","isWebhook":false,"pointer":"/paths/~1purchases~1me/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get user purchase history","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Get all purchases made by the authenticated user. Use pagination parameters (page & limit) for optimal performance - recommended for users with many purchases. Legacy support: returns array without params (deprecated - will be removed in future)."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"page","in":"query","schemaId":"schema_68","description":"Page number (1-based)"},{"name":"limit","in":"query","schemaId":"schema_68","description":"Items per page"}],"pointer":"/paths/~1purchases~1me/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/purchases/me","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"page","in":"query","required":false,"schemaId":"schema_68"},{"name":"limit","in":"query","required":false,"schemaId":"schema_68"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/purchases/me","href":"purchases/purchasescontroller_getuserpurchasehistory","openApiOperationId":"PurchasesController_getUserPurchaseHistory","summary":"Get user purchase history"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"User purchase history retrieved","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_91"}},"schemaId":"schema_91"}],"pointer":"/paths/~1purchases~1me/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_91","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_91"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/purchases/purchasescontroller_getuserpurchasehistory"}],"panels":[]}]},"httpPath":"/purchases/me"},{"label":"Export purchases as CSV (Admin)","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/purchases/purchasescontroller_exporttocsv","routeSlug":"/swagger/purchases/purchasescontroller_exporttocsv","metadata":{"seo":{"title":"Export purchases as CSV (Admin)","description":"Export all purchases as a CSV file. Supports date filtering."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"PurchasesController_exportToCsv","name":"Export purchases as CSV (Admin)","isWebhook":false,"pointer":"/paths/~1purchases~1export~1csv/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Export purchases as CSV (Admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Export all purchases as a CSV file. Supports date filtering."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"dateFrom","in":"query","schemaId":"schema_67","description":"Filter from date (ISO format)"},{"name":"dateTo","in":"query","schemaId":"schema_67","description":"Filter to date (ISO format)"}],"pointer":"/paths/~1purchases~1export~1csv/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/purchases/export/csv","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"dateFrom","in":"query","required":false,"schemaId":"schema_67"},{"name":"dateTo","in":"query","required":false,"schemaId":"schema_67"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/purchases/export/csv","href":"purchases/purchasescontroller_exporttocsv","openApiOperationId":"PurchasesController_exportToCsv","summary":"Export purchases as CSV (Admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"CSV file of purchases"}],"pointer":"/paths/~1purchases~1export~1csv/get/responses"}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/purchases/purchasescontroller_exporttocsv"}],"panels":[]}]},"httpPath":"/purchases/export/csv"},{"label":"Update purchase token (Admin)","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/purchases/purchasescontroller_updatepurchasetoken","routeSlug":"/swagger/purchases/purchasescontroller_updatepurchasetoken","metadata":{"seo":{"title":"Update purchase token (Admin)","description":"Update an existing purchase token in the product catalog. Admin-only operation. Replaces PUT /purchase/admin/token/{id}"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"PurchasesController_updatePurchaseToken","name":"Update purchase token (Admin)","isWebhook":false,"pointer":"/paths/~1purchases~1tokens~1{id}/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update purchase token (Admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Update an existing purchase token in the product catalog. Admin-only operation. Replaces PUT /purchase/admin/token/{id}"},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1purchases~1tokens~1{id}/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PurchaseTokenUpdateRequestDTO"}},"schemaId":"components/schemas/PurchaseTokenUpdateRequestDTO","pointer":"/paths/~1purchases~1tokens~1{id}/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/purchases/tokens/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/PurchaseTokenUpdateRequestDTO"}},"responseCodes":["200"],"pointer":"/purchases/tokens/{id}","href":"purchases/purchasescontroller_updatepurchasetoken","openApiOperationId":"PurchasesController_updatePurchaseToken","summary":"Update purchase token (Admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/PurchaseTokenUpdateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PurchaseTokenUpdateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Purchase token updated successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PurchaseTokenDTO"}},"schemaId":"components/schemas/PurchaseTokenDTO"}],"pointer":"/paths/~1purchases~1tokens~1{id}/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PurchaseTokenDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PurchaseTokenDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/purchases/purchasescontroller_updatepurchasetoken"}],"panels":[]}]},"httpPath":"/purchases/tokens/{id}"},{"label":"Delete purchase token (Admin)","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/purchases/purchasescontroller_deletepurchasetoken","routeSlug":"/swagger/purchases/purchasescontroller_deletepurchasetoken","metadata":{"seo":{"title":"Delete purchase token (Admin)","description":"Delete an existing purchase token from the product catalog. Admin-only operation. Replaces DELETE /purchase/admin/token/{id}"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"PurchasesController_deletePurchaseToken","name":"Delete purchase token (Admin)","isWebhook":false,"pointer":"/paths/~1purchases~1tokens~1{id}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Delete purchase token (Admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Delete an existing purchase token from the product catalog. Admin-only operation. Replaces DELETE /purchase/admin/token/{id}"},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1purchases~1tokens~1{id}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/purchases/tokens/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/purchases/tokens/{id}","href":"purchases/purchasescontroller_deletepurchasetoken","openApiOperationId":"PurchasesController_deletePurchaseToken","summary":"Delete purchase token (Admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Purchase token deleted successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_81"}},"schemaId":"schema_81"}],"pointer":"/paths/~1purchases~1tokens~1{id}/delete/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_81","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_81"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/purchases/purchasescontroller_deletepurchasetoken"}],"panels":[]}]},"httpPath":"/purchases/tokens/{id}"},{"label":"Create purchase type (Admin)","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/purchases/purchasescontroller_createpurchasetype","routeSlug":"/swagger/purchases/purchasescontroller_createpurchasetype","metadata":{"seo":{"title":"Create purchase type (Admin)","description":"Create a new purchase type for system configuration. Admin-only operation. Replaces POST /purchase/admin/type"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"PurchasesController_createPurchaseType","name":"Create purchase type (Admin)","isWebhook":false,"pointer":"/paths/~1purchases~1types/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create purchase type (Admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Create a new purchase type for system configuration. Admin-only operation. Replaces POST /purchase/admin/type"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PurchaseTypeCreateRequestDTO"}},"schemaId":"components/schemas/PurchaseTypeCreateRequestDTO","pointer":"/paths/~1purchases~1types/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/purchases/types","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/PurchaseTypeCreateRequestDTO"}},"responseCodes":["200","201"],"pointer":"/purchases/types","href":"purchases/purchasescontroller_createpurchasetype","openApiOperationId":"PurchasesController_createPurchaseType","summary":"Create purchase type (Admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/PurchaseTypeCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PurchaseTypeCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Purchase type created successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PurchaseTypeDTO"}},"schemaId":"components/schemas/PurchaseTypeDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PurchaseTypeDTO"}},"schemaId":"components/schemas/PurchaseTypeDTO"}],"pointer":"/paths/~1purchases~1types/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PurchaseTypeDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PurchaseTypeDTO"}}},{"code":"201","schemaId":"components/schemas/PurchaseTypeDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PurchaseTypeDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/purchases/purchasescontroller_createpurchasetype"}],"panels":[]}]},"httpPath":"/purchases/types"}],"content":{"contentType":"group","meta":{"name":"Purchases"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Purchases","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/purchases/webhooks/stripe","summary":"Stripe payment webhook (Critical)","prefix":{"name":"post","color":"post"},"badges":[],"link":"/purchases/purchasescontroller_handlestripewebhook","deprecated":false},{"title":"/purchases/tokens","summary":"Get purchase tokens (Intelligent Access)","prefix":{"name":"get","color":"get"},"badges":[],"link":"/purchases/purchasescontroller_getpurchasetokens","deprecated":false},{"title":"/purchases/tokens","summary":"Create purchase token (Admin)","prefix":{"name":"post","color":"post"},"badges":[],"link":"/purchases/purchasescontroller_createpurchasetoken","deprecated":false},{"title":"/purchases/donation-types","summary":"Get donation types","prefix":{"name":"get","color":"get"},"badges":[],"link":"/purchases/purchasescontroller_getdonationtypes","deprecated":false},{"title":"/purchases/donation-types","summary":"Create donation type (Admin)","prefix":{"name":"post","color":"post"},"badges":[],"link":"/purchases/purchasescontroller_createdonationtype","deprecated":false},{"title":"/purchases/payment-intents","summary":"Create payment intent (Financial)","prefix":{"name":"post","color":"post"},"badges":[],"link":"/purchases/purchasescontroller_createpaymentintent","deprecated":false},{"title":"/purchases/payment-intents/{paymentIntentId}","summary":"Update payment intent (Financial)","prefix":{"name":"put","color":"put"},"badges":[],"link":"/purchases/purchasescontroller_updatepaymentintent","deprecated":false},{"title":"/purchases/payment-intents/{paymentIntentId}","summary":"Cancel payment intent (Financial)","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/purchases/purchasescontroller_cancelpaymentintent","deprecated":false},{"title":"/purchases","summary":"Create user purchase (Financial Transaction)","prefix":{"name":"post","color":"post"},"badges":[],"link":"/purchases/purchasescontroller_createuserpurchase","deprecated":false},{"title":"/purchases/me","summary":"Get user purchase history","prefix":{"name":"get","color":"get"},"badges":[],"link":"/purchases/purchasescontroller_getuserpurchasehistory","deprecated":false},{"title":"/purchases/export/csv","summary":"Export purchases as CSV (Admin)","prefix":{"name":"get","color":"get"},"badges":[],"link":"/purchases/purchasescontroller_exporttocsv","deprecated":false},{"title":"/purchases/tokens/{id}","summary":"Update purchase token (Admin)","prefix":{"name":"put","color":"put"},"badges":[],"link":"/purchases/purchasescontroller_updatepurchasetoken","deprecated":false},{"title":"/purchases/tokens/{id}","summary":"Delete purchase token (Admin)","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/purchases/purchasescontroller_deletepurchasetoken","deprecated":false},{"title":"/purchases/types","summary":"Create purchase type (Admin)","prefix":{"name":"post","color":"post"},"badges":[],"link":"/purchases/purchasescontroller_createpurchasetype","deprecated":false}]}]}]}]}},{"type":"group","label":"Businesses","link":"/swagger/businesses","routeSlug":"/swagger/businesses","items":[{"type":"link","label":"Partner Ecosystem Management","link":"/swagger/businesses/partner-ecosystem-management","routeSlug":"/swagger/businesses/partner-ecosystem-management","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Partner Ecosystem Management"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"businesses/partner-ecosystem-management"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Partner Ecosystem Management"},"children":[]}]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"div","attrs":{"style":{"fontSize":"14px","lineHeight":"1.5"}}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"\n      Business partner management for multi-stakeholder loyalty programs. Handles partner onboarding, collaboration frameworks, and performance tracking within the reward ecosystem.\n    "},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Partner Management:"},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Partner Onboarding:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Register and configure business partners in the ecosystem\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Collaboration Tools:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Facilitate joint campaigns and cross-partner rewards\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Performance Analytics:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Track partner engagement and contribution metrics  \n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Incentive Structures:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Configure partner-specific reward and commission models\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Community Building:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Foster collaborative relationships between ecosystem partners"},"children":[]}]}],"panels":[]}]}},{"label":"Get current business info","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/businesses/businessescontroller_getcurrentbusiness","routeSlug":"/swagger/businesses/businessescontroller_getcurrentbusiness","metadata":{"seo":{"title":"Get current business info","description":"Get business info with current token balances and virtual counterfactual wallet addresses for all active chains (business authentication required)"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"BusinessesController_getCurrentBusiness","name":"Get current business info","isWebhook":false,"pointer":"/paths/~1businesses~1me/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get current business info","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Get business info with current token balances and virtual counterfactual wallet addresses for all active chains (business authentication required)"},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]},{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/businesses/me","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]},{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","404"],"pointer":"/businesses/me","href":"businesses/businessescontroller_getcurrentbusiness","openApiOperationId":"BusinessesController_getCurrentBusiness","summary":"Get current business info","securityGroups":[{"projectKey":[]},{"authJWT":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Business found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessTokenBalancesDTO"}},"schemaId":"components/schemas/BusinessTokenBalancesDTO"},{"code":"404","description":"Business not found"}],"pointer":"/paths/~1businesses~1me/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/BusinessTokenBalancesDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessTokenBalancesDTO"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/businesses/businessescontroller_getcurrentbusiness"}],"panels":[]}]},"httpPath":"/businesses/me"},{"label":"Get all businesses","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/businesses/businessescontroller_getallbusinesses","routeSlug":"/swagger/businesses/businessescontroller_getallbusinesses","metadata":{"seo":{"title":"Get all businesses","description":"Get all businesses. Use pagination parameters (page & limit) for optimal performance. Legacy support: returns array without params (deprecated - will be removed in future). Project API key users get active businesses only. Admin users (with valid JWT) get full access with query parameters."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"BusinessesController_getAllBusinesses","name":"Get all businesses","isWebhook":false,"pointer":"/paths/~1businesses/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get all businesses","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Get all businesses. Use pagination parameters (page & limit) for optimal performance. Legacy support: returns array without params (deprecated - will be removed in future). Project API key users get active businesses only. Admin users (with valid JWT) get full access with query parameters."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]},{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"active","in":"query","schemaId":"schema_67","description":"Filter by active status (admin only for inactive)"},{"name":"search","in":"query","schemaId":"schema_67","description":"Free text search across business name and legal name (case-insensitive)"},{"name":"sanitize","in":"query","schemaId":"schema_67","description":"Sanitize user models: soft checks for current wallet address, hard overwrites wallet in case of update (use with caution, admin only)"},{"name":"page","in":"query","schemaId":"schema_68","description":"Page number (1-based)"},{"name":"limit","in":"query","schemaId":"schema_68","description":"Items per page"},{"name":"sortBy","in":"query","schemaId":"schema_92","description":"Sort field"},{"name":"sortOrder","in":"query","schemaId":"schema_73","description":"Sort direction"},{"name":"businessTypeId","in":"query","schemaId":"schema_68","description":"Filter by business type ID"},{"name":"city","in":"query","schemaId":"schema_67","description":"Filter by city (case-insensitive)"},{"name":"countryCode","in":"query","schemaId":"schema_67","description":"Filter by country code (ISO 3166-1 alpha-2, e.g., QA, US)"},{"name":"country","in":"query","schemaId":"schema_67","description":"Filter by country name (case-insensitive)"},{"name":"neighborhood","in":"query","schemaId":"schema_67","description":"Filter by neighborhood (case-insensitive)"},{"name":"district","in":"query","schemaId":"schema_67","description":"Filter by district (case-insensitive)"},{"name":"latitude","in":"query","schemaId":"schema_93","description":"Latitude for geographic radius search (must be used with longitude and radiusMeters)"},{"name":"longitude","in":"query","schemaId":"schema_94","description":"Longitude for geographic radius search (must be used with latitude and radiusMeters)"},{"name":"radiusMeters","in":"query","schemaId":"schema_95","description":"Radius in meters for geographic search (must be used with latitude and longitude)"},{"name":"approvalStatus","in":"query","schemaId":"schema_74","description":"Filter by approval status (admin only)"},{"name":"canMintToken","in":"query","schemaId":"schema_67","description":"Filter by ERC20 delegated-mint capability"},{"name":"canChargeToken","in":"query","schemaId":"schema_67","description":"Filter by point-of-sale token-charge capability"},{"name":"canManageUsers","in":"query","schemaId":"schema_67","description":"Filter by user-management capability"},{"name":"canReceiveDonation","in":"query","schemaId":"schema_67","description":"Filter by donation-receiving capability"},{"name":"tags","in":"query","schemaId":"schema_75","description":"Filter by tag(s). Comma-separated or multiple params for OR matching."}],"pointer":"/paths/~1businesses/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/businesses","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"active","in":"query","required":false,"schemaId":"schema_67"},{"name":"search","in":"query","required":false,"schemaId":"schema_67"},{"name":"sanitize","in":"query","required":false,"schemaId":"schema_67"},{"name":"page","in":"query","required":false,"schemaId":"schema_68"},{"name":"limit","in":"query","required":false,"schemaId":"schema_68"},{"name":"sortBy","in":"query","required":false,"schemaId":"schema_92"},{"name":"sortOrder","in":"query","required":false,"schemaId":"schema_73"},{"name":"businessTypeId","in":"query","required":false,"schemaId":"schema_68"},{"name":"city","in":"query","required":false,"schemaId":"schema_67"},{"name":"countryCode","in":"query","required":false,"schemaId":"schema_67"},{"name":"country","in":"query","required":false,"schemaId":"schema_67"},{"name":"neighborhood","in":"query","required":false,"schemaId":"schema_67"},{"name":"district","in":"query","required":false,"schemaId":"schema_67"},{"name":"latitude","in":"query","required":false,"example":25.2854,"schemaId":"schema_93"},{"name":"longitude","in":"query","required":false,"example":51.531,"schemaId":"schema_94"},{"name":"radiusMeters","in":"query","required":false,"example":500,"schemaId":"schema_95"},{"name":"approvalStatus","in":"query","required":false,"schemaId":"schema_74"},{"name":"canMintToken","in":"query","required":false,"schemaId":"schema_67"},{"name":"canChargeToken","in":"query","required":false,"schemaId":"schema_67"},{"name":"canManageUsers","in":"query","required":false,"schemaId":"schema_67"},{"name":"canReceiveDonation","in":"query","required":false,"schemaId":"schema_67"},{"name":"tags","in":"query","required":false,"schemaId":"schema_75"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]},{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200","404"],"pointer":"/businesses","href":"businesses/businessescontroller_getallbusinesses","openApiOperationId":"BusinessesController_getAllBusinesses","summary":"Get all businesses","securityGroups":[{"authJWT":[]},{"projectKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Businesses found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_96"}},"schemaId":"schema_96"},{"code":"404","description":"Businesses not found"}],"pointer":"/paths/~1businesses/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_96","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_96"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/businesses/businessescontroller_getallbusinesses"}],"panels":[]}]},"httpPath":"/businesses"},{"label":"Create a new business","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/businesses/businessescontroller_createbusiness","routeSlug":"/swagger/businesses/businessescontroller_createbusiness","metadata":{"seo":{"title":"Create a new business","description":"Create a new business account, will be inactive until activated by admin"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"BusinessesController_createBusiness","name":"Create a new business","isWebhook":false,"pointer":"/paths/~1businesses/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create a new business","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Create a new business account, will be inactive until activated by admin"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/BusinessCreateRequestDTO"}},"schemaId":"components/schemas/BusinessCreateRequestDTO","pointer":"/paths/~1businesses/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/businesses","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/BusinessCreateRequestDTO"}},"responseCodes":["200","201"],"pointer":"/businesses","href":"businesses/businessescontroller_createbusiness","openApiOperationId":"BusinessesController_createBusiness","summary":"Create a new business"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/BusinessCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/BusinessCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Business created","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessDTO"}},"schemaId":"components/schemas/BusinessDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessDTO"}},"schemaId":"components/schemas/BusinessDTO"}],"pointer":"/paths/~1businesses/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/BusinessDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessDTO"}}},{"code":"201","schemaId":"components/schemas/BusinessDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/businesses/businessescontroller_createbusiness"}],"panels":[]}]},"httpPath":"/businesses"},{"label":"Get business by account address","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/businesses/businessescontroller_getbyaccountaddress","routeSlug":"/swagger/businesses/businessescontroller_getbyaccountaddress","metadata":{"seo":{"title":"Get business by account address","description":"Get business info by account address"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"BusinessesController_getByAccountAddress","name":"Get business by account address","isWebhook":false,"pointer":"/paths/~1businesses~1account~1{accountAddress}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get business by account address","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Get business info by account address"},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountAddress","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1businesses~1account~1{accountAddress}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/businesses/account/{accountAddress}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"accountAddress","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200","404"],"pointer":"/businesses/account/{accountAddress}","href":"businesses/businessescontroller_getbyaccountaddress","openApiOperationId":"BusinessesController_getByAccountAddress","summary":"Get business by account address"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Business found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessDTO"}},"schemaId":"components/schemas/BusinessDTO"},{"code":"404","description":"Business not found"}],"pointer":"/paths/~1businesses~1account~1{accountAddress}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/BusinessDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessDTO"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/businesses/businessescontroller_getbyaccountaddress"}],"panels":[]}]},"httpPath":"/businesses/account/{accountAddress}"},{"label":"Get business by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/businesses/businessescontroller_getbyid","routeSlug":"/swagger/businesses/businessescontroller_getbyid","metadata":{"seo":{"title":"Get business by ID","description":"Get business info by ID"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"BusinessesController_getById","name":"Get business by ID","isWebhook":false,"pointer":"/paths/~1businesses~1{id}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get business by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Get business info by ID"},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1businesses~1{id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/businesses/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200","404"],"pointer":"/businesses/{id}","href":"businesses/businessescontroller_getbyid","openApiOperationId":"BusinessesController_getById","summary":"Get business by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Business found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessDTO"}},"schemaId":"components/schemas/BusinessDTO"},{"code":"404","description":"Business not found"}],"pointer":"/paths/~1businesses~1{id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/BusinessDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessDTO"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/businesses/businessescontroller_getbyid"}],"panels":[]}]},"httpPath":"/businesses/{id}"},{"label":"Update a business","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/businesses/businessescontroller_updatebusiness","routeSlug":"/swagger/businesses/businessescontroller_updatebusiness","metadata":{"seo":{"title":"Update a business","description":"Update a business account. Business tokens may only update their own business."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"BusinessesController_updateBusiness","name":"Update a business","isWebhook":false,"pointer":"/paths/~1businesses~1{id}/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update a business","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Update a business account. Business tokens may only update their own business."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1businesses~1{id}/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/BusinessCreateRequestDTO"}},"schemaId":"components/schemas/BusinessCreateRequestDTO","pointer":"/paths/~1businesses~1{id}/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/businesses/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/BusinessCreateRequestDTO"}},"responseCodes":["200","403"],"pointer":"/businesses/{id}","href":"businesses/businessescontroller_updatebusiness","openApiOperationId":"BusinessesController_updateBusiness","summary":"Update a business"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/BusinessCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/BusinessCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Business updated successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessDTO"}},"schemaId":"components/schemas/BusinessDTO"},{"code":"403","description":"Business token may only update its own business"}],"pointer":"/paths/~1businesses~1{id}/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/BusinessDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessDTO"}}},{"code":"403"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/businesses/businessescontroller_updatebusiness"}],"panels":[]}]},"httpPath":"/businesses/{id}"},{"label":"Create multiple businesses","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/businesses/businessescontroller_createbusinessesbulk","routeSlug":"/swagger/businesses/businessescontroller_createbusinessesbulk","metadata":{"seo":{"title":"Create multiple businesses","description":"Create multiple business accounts from a JSON array in the request body."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"BusinessesController_createBusinessesBulk","name":"Create multiple businesses","isWebhook":false,"pointer":"/paths/~1businesses~1bulk/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create multiple businesses","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Create multiple business accounts from a JSON array in the request body."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/BusinessBulkCreateRequestDTO"}},"schemaId":"components/schemas/BusinessBulkCreateRequestDTO","pointer":"/paths/~1businesses~1bulk/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/businesses/bulk","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/BusinessBulkCreateRequestDTO"}},"responseCodes":["200","201"],"pointer":"/businesses/bulk","href":"businesses/businessescontroller_createbusinessesbulk","openApiOperationId":"BusinessesController_createBusinessesBulk","summary":"Create multiple businesses"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/BusinessBulkCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/BusinessBulkCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Businesses created","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_96"}},"schemaId":"schema_96"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_96"}},"schemaId":"schema_96"}],"pointer":"/paths/~1businesses~1bulk/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_96","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_96"}}},{"code":"201","schemaId":"schema_96","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_96"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/businesses/businessescontroller_createbusinessesbulk"}],"panels":[]}]},"httpPath":"/businesses/bulk"},{"label":"Create multiple businesses from URL","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/businesses/businessescontroller_createbusinessesfromurl","routeSlug":"/swagger/businesses/businessescontroller_createbusinessesfromurl","metadata":{"seo":{"title":"Create multiple businesses from URL","description":"Create multiple business accounts by fetching a JSON file from the provided URL. The file at the URL is expected to be a JSON object conforming to the BusinessBulkCreateRequestDTO structure, containing an array of business data."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"BusinessesController_createBusinessesFromUrl","name":"Create multiple businesses from URL","isWebhook":false,"pointer":"/paths/~1businesses~1bulk~1url/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create multiple businesses from URL","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Create multiple business accounts by fetching a JSON file from the provided URL. The file at the URL is expected to be a JSON object conforming to the BusinessBulkCreateRequestDTO structure, containing an array of business data."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UrlRequestDTO"}},"schemaId":"components/schemas/UrlRequestDTO","pointer":"/paths/~1businesses~1bulk~1url/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/businesses/bulk/url","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/UrlRequestDTO"}},"responseCodes":["200","201","404"],"pointer":"/businesses/bulk/url","href":"businesses/businessescontroller_createbusinessesfromurl","openApiOperationId":"BusinessesController_createBusinessesFromUrl","summary":"Create multiple businesses from URL"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/UrlRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UrlRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Businesses created","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_96"}},"schemaId":"schema_96"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_96"}},"schemaId":"schema_96"},{"code":"404","description":"Businesses not found"}],"pointer":"/paths/~1businesses~1bulk~1url/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_96","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_96"}}},{"code":"201","schemaId":"schema_96","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_96"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/businesses/businessescontroller_createbusinessesfromurl"}],"panels":[]}]},"httpPath":"/businesses/bulk/url"},{"label":"Toggle business status","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/businesses/businessescontroller_togglebusinessstatus","routeSlug":"/swagger/businesses/businessescontroller_togglebusinessstatus","metadata":{"seo":{"title":"Toggle business status","description":"Toggle business active status. Business owners can toggle isActive only; capability flags (canMintToken etc) require tenant admin."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"BusinessesController_toggleBusinessStatus","name":"Toggle business status","isWebhook":false,"pointer":"/paths/~1businesses~1{id}~1status/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Toggle business status","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Toggle business active status. Business owners can toggle isActive only; capability flags (canMintToken etc) require tenant admin."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1businesses~1{id}~1status/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/BusinessToggleActiveRequestDTO"}},"schemaId":"components/schemas/BusinessToggleActiveRequestDTO","pointer":"/paths/~1businesses~1{id}~1status/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/businesses/{id}/status","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/BusinessToggleActiveRequestDTO"}},"responseCodes":["200"],"pointer":"/businesses/{id}/status","href":"businesses/businessescontroller_togglebusinessstatus","openApiOperationId":"BusinessesController_toggleBusinessStatus","summary":"Toggle business status"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/BusinessToggleActiveRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/BusinessToggleActiveRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Business status updated","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessDTO"}},"schemaId":"components/schemas/BusinessDTO"}],"pointer":"/paths/~1businesses~1{id}~1status/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/BusinessDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/businesses/businessescontroller_togglebusinessstatus"}],"panels":[]}]},"httpPath":"/businesses/{id}/status"},{"label":"Provision stamp token metadata for all businesses","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/businesses/businessescontroller_provisionstamptoken","routeSlug":"/swagger/businesses/businessescontroller_provisionstamptoken","metadata":{"seo":{"title":"Provision stamp token metadata for all businesses","description":"ADMIN: Backfill stamp token metadata for a specific token across all existing businesses. Optional — metadata is otherwise provisioned lazily on first real usage. Use this to eagerly pre-provision instead of waiting for usage."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"BusinessesController_provisionStampToken","name":"Provision stamp token metadata for all businesses","isWebhook":false,"pointer":"/paths/~1businesses~1stamp-tokens~1{tokenId}~1provision/post","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Provision stamp token metadata for all businesses","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ADMIN: Backfill stamp token metadata for a specific token across all existing businesses. Optional — metadata is otherwise provisioned lazily on first real usage. Use this to eagerly pre-provision instead of waiting for usage."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"tokenId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1businesses~1stamp-tokens~1{tokenId}~1provision/post/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/businesses/stamp-tokens/{tokenId}/provision","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"tokenId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","201"],"pointer":"/businesses/stamp-tokens/{tokenId}/provision","href":"businesses/businessescontroller_provisionstamptoken","openApiOperationId":"BusinessesController_provisionStampToken","summary":"Provision stamp token metadata for all businesses"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Provisioning triggered successfully"},{"code":"201"}],"pointer":"/paths/~1businesses~1stamp-tokens~1{tokenId}~1provision/post/responses"}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/businesses/businessescontroller_provisionstamptoken"}],"panels":[]}]},"httpPath":"/businesses/stamp-tokens/{tokenId}/provision"},{"label":"List business members","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/businesses/businessescontroller_getbusinessmembers","routeSlug":"/swagger/businesses/businessescontroller_getbusinessmembers","metadata":{"seo":{"title":"List business members","description":"Get all members of a business. Use pagination parameters (page & limit) for optimal performance. Legacy support: returns array without params (deprecated - will be removed in future). Requires BUSINESS auth (min role: VIEWER) or TENANT admin."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"BusinessesController_getBusinessMembers","name":"List business members","isWebhook":false,"pointer":"/paths/~1businesses~1{businessId}~1members/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List business members","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Get all members of a business. Use pagination parameters (page & limit) for optimal performance. Legacy support: returns array without params (deprecated - will be removed in future). Requires BUSINESS auth (min role: VIEWER) or TENANT admin."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]},{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"businessId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1businesses~1{businessId}~1members/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"page","in":"query","schemaId":"schema_68","description":"Page number (1-based)"},{"name":"limit","in":"query","schemaId":"schema_68","description":"Items per page"},{"name":"include","in":"query","schemaId":"schema_75","description":"Include related entities (comma-separated). Valid options: user, business"}],"pointer":"/paths/~1businesses~1{businessId}~1members/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/businesses/{businessId}/members","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"businessId","in":"path","required":true,"schemaId":"schema_67"}],"query":[{"name":"page","in":"query","required":false,"schemaId":"schema_68"},{"name":"limit","in":"query","required":false,"schemaId":"schema_68"},{"name":"include","in":"query","required":false,"schemaId":"schema_75"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]},{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","403"],"pointer":"/businesses/{businessId}/members","href":"businesses/businessescontroller_getbusinessmembers","openApiOperationId":"BusinessesController_getBusinessMembers","summary":"List business members","securityGroups":[{"projectKey":[]},{"authJWT":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_97"}},"schemaId":"schema_97"},{"code":"403","description":"Insufficient role (requires VIEWER or higher)"}],"pointer":"/paths/~1businesses~1{businessId}~1members/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_97","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_97"}}},{"code":"403"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/businesses/businessescontroller_getbusinessmembers"}],"panels":[]}]},"httpPath":"/businesses/{businessId}/members"},{"label":"Add member to business","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/businesses/businessescontroller_addbusinessmember","routeSlug":"/swagger/businesses/businessescontroller_addbusinessmember","metadata":{"seo":{"title":"Add member to business","description":"Add a user as a member of the business. Requires BUSINESS auth (min role: ADMIN) or TENANT admin."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"BusinessesController_addBusinessMember","name":"Add member to business","isWebhook":false,"pointer":"/paths/~1businesses~1{businessId}~1members/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Add member to business","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Add a user as a member of the business. Requires BUSINESS auth (min role: ADMIN) or TENANT admin."},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]},{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"businessId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1businesses~1{businessId}~1members/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/AddBusinessMemberRequestDTO"}},"schemaId":"components/schemas/AddBusinessMemberRequestDTO","pointer":"/paths/~1businesses~1{businessId}~1members/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/businesses/{businessId}/members","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"businessId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]},{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/AddBusinessMemberRequestDTO"}},"responseCodes":["200","201","403"],"pointer":"/businesses/{businessId}/members","href":"businesses/businessescontroller_addbusinessmember","openApiOperationId":"BusinessesController_addBusinessMember","summary":"Add member to business","securityGroups":[{"projectKey":[]},{"authJWT":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/AddBusinessMemberRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/AddBusinessMemberRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessMembershipDTO"}},"schemaId":"components/schemas/BusinessMembershipDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessMembershipDTO"}},"schemaId":"components/schemas/BusinessMembershipDTO"},{"code":"403","description":"Insufficient role (requires ADMIN or higher)"}],"pointer":"/paths/~1businesses~1{businessId}~1members/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/BusinessMembershipDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessMembershipDTO"}}},{"code":"201","schemaId":"components/schemas/BusinessMembershipDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessMembershipDTO"}}},{"code":"403"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/businesses/businessescontroller_addbusinessmember"}],"panels":[]}]},"httpPath":"/businesses/{businessId}/members"},{"label":"Update member role","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/businesses/businessescontroller_updatememberrole","routeSlug":"/swagger/businesses/businessescontroller_updatememberrole","metadata":{"seo":{"title":"Update member role","description":"Update the role of an existing business member. Requires BUSINESS auth (min role: ADMIN) or TENANT admin."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"BusinessesController_updateMemberRole","name":"Update member role","isWebhook":false,"pointer":"/paths/~1businesses~1{businessId}~1members~1{userId}/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update member role","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Update the role of an existing business member. Requires BUSINESS auth (min role: ADMIN) or TENANT admin."},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]},{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"businessId","in":"path","schemaId":"schema_67","required":true},{"name":"userId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1businesses~1{businessId}~1members~1{userId}/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/BusinessMembershipUpdateRequestDTO"}},"schemaId":"components/schemas/BusinessMembershipUpdateRequestDTO","pointer":"/paths/~1businesses~1{businessId}~1members~1{userId}/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/businesses/{businessId}/members/{userId}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"businessId","in":"path","required":true,"schemaId":"schema_67"},{"name":"userId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]},{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/BusinessMembershipUpdateRequestDTO"}},"responseCodes":["200","403"],"pointer":"/businesses/{businessId}/members/{userId}","href":"businesses/businessescontroller_updatememberrole","openApiOperationId":"BusinessesController_updateMemberRole","summary":"Update member role","securityGroups":[{"projectKey":[]},{"authJWT":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/BusinessMembershipUpdateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/BusinessMembershipUpdateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessMembershipDTO"}},"schemaId":"components/schemas/BusinessMembershipDTO"},{"code":"403","description":"Insufficient role (requires ADMIN or higher)"}],"pointer":"/paths/~1businesses~1{businessId}~1members~1{userId}/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/BusinessMembershipDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessMembershipDTO"}}},{"code":"403"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/businesses/businessescontroller_updatememberrole"}],"panels":[]}]},"httpPath":"/businesses/{businessId}/members/{userId}"},{"label":"Remove member from business","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/businesses/businessescontroller_removebusinessmember","routeSlug":"/swagger/businesses/businessescontroller_removebusinessmember","metadata":{"seo":{"title":"Remove member from business","description":"Remove a user from business membership. Requires BUSINESS auth (min role: ADMIN) or TENANT admin."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"BusinessesController_removeBusinessMember","name":"Remove member from business","isWebhook":false,"pointer":"/paths/~1businesses~1{businessId}~1members~1{userId}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Remove member from business","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Remove a user from business membership. Requires BUSINESS auth (min role: ADMIN) or TENANT admin."},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]},{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"businessId","in":"path","schemaId":"schema_67","required":true},{"name":"userId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1businesses~1{businessId}~1members~1{userId}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/businesses/{businessId}/members/{userId}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"businessId","in":"path","required":true,"schemaId":"schema_67"},{"name":"userId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]},{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","403"],"pointer":"/businesses/{businessId}/members/{userId}","href":"businesses/businessescontroller_removebusinessmember","openApiOperationId":"BusinessesController_removeBusinessMember","summary":"Remove member from business","securityGroups":[{"projectKey":[]},{"authJWT":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Member removed"},{"code":"403","description":"Insufficient role (requires ADMIN or higher)"}],"pointer":"/paths/~1businesses~1{businessId}~1members~1{userId}/delete/responses"}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/businesses/businessescontroller_removebusinessmember"}],"panels":[]}]},"httpPath":"/businesses/{businessId}/members/{userId}"},{"label":"Export businesses as CSV (Admin)","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/businesses/businessescontroller_exportbusinessesascsv","routeSlug":"/swagger/businesses/businessescontroller_exportbusinessesascsv","metadata":{"seo":{"title":"Export businesses as CSV (Admin)","description":"Export all businesses to CSV format with optional date filtering."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"BusinessesController_exportBusinessesAsCsv","name":"Export businesses as CSV (Admin)","isWebhook":false,"pointer":"/paths/~1businesses~1export~1csv/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Export businesses as CSV (Admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Export all businesses to CSV format with optional date filtering."},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]},{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"dateFrom","in":"query","schemaId":"schema_67","description":"Filter by creation date (from)"},{"name":"dateTo","in":"query","schemaId":"schema_67","description":"Filter by creation date (to)"}],"pointer":"/paths/~1businesses~1export~1csv/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/businesses/export/csv","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"dateFrom","in":"query","required":false,"schemaId":"schema_67"},{"name":"dateTo","in":"query","required":false,"schemaId":"schema_67"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]},{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/businesses/export/csv","href":"businesses/businessescontroller_exportbusinessesascsv","openApiOperationId":"BusinessesController_exportBusinessesAsCsv","summary":"Export businesses as CSV (Admin)","securityGroups":[{"projectKey":[]},{"authJWT":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200"}],"pointer":"/paths/~1businesses~1export~1csv/get/responses"}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/businesses/businessescontroller_exportbusinessesascsv"}],"panels":[]}]},"httpPath":"/businesses/export/csv"},{"label":"Approve or reject a business (Admin)","deprecated":false,"httpVerb":"patch","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/businesses/businessescontroller_approveorrejectbusiness","routeSlug":"/swagger/businesses/businessescontroller_approveorrejectbusiness","metadata":{"seo":{"title":"Approve or reject a business (Admin)","description":"Sets approval status to approved or rejected. Rejected requires a reason."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"BusinessesController_approveOrRejectBusiness","name":"Approve or reject a business (Admin)","isWebhook":false,"pointer":"/paths/~1businesses~1{id}~1approval/patch","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Approve or reject a business (Admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Sets approval status to approved or rejected. Rejected requires a reason."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1businesses~1{id}~1approval/patch/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateApprovalDTO"}},"schemaId":"components/schemas/CreateApprovalDTO","pointer":"/paths/~1businesses~1{id}~1approval/patch/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PATCH","path":"/businesses/{id}/approval","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/CreateApprovalDTO"}},"responseCodes":["200"],"pointer":"/businesses/{id}/approval","href":"businesses/businessescontroller_approveorrejectbusiness","openApiOperationId":"BusinessesController_approveOrRejectBusiness","summary":"Approve or reject a business (Admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/CreateApprovalDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateApprovalDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Business approval updated","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessDTO"}},"schemaId":"components/schemas/BusinessDTO"}],"pointer":"/paths/~1businesses~1{id}~1approval/patch/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/BusinessDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/businesses/businessescontroller_approveorrejectbusiness"}],"panels":[]}]},"httpPath":"/businesses/{id}/approval"}],"content":{"contentType":"group","meta":{"name":"Businesses"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Businesses","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/businesses/me","summary":"Get current business info","prefix":{"name":"get","color":"get"},"badges":[],"link":"/businesses/businessescontroller_getcurrentbusiness","deprecated":false},{"title":"/businesses","summary":"Get all businesses","prefix":{"name":"get","color":"get"},"badges":[],"link":"/businesses/businessescontroller_getallbusinesses","deprecated":false},{"title":"/businesses","summary":"Create a new business","prefix":{"name":"post","color":"post"},"badges":[],"link":"/businesses/businessescontroller_createbusiness","deprecated":false},{"title":"/businesses/account/{accountAddress}","summary":"Get business by account address","prefix":{"name":"get","color":"get"},"badges":[],"link":"/businesses/businessescontroller_getbyaccountaddress","deprecated":false},{"title":"/businesses/{id}","summary":"Get business by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/businesses/businessescontroller_getbyid","deprecated":false},{"title":"/businesses/{id}","summary":"Update a business","prefix":{"name":"put","color":"put"},"badges":[],"link":"/businesses/businessescontroller_updatebusiness","deprecated":false},{"title":"/businesses/bulk","summary":"Create multiple businesses","prefix":{"name":"post","color":"post"},"badges":[],"link":"/businesses/businessescontroller_createbusinessesbulk","deprecated":false},{"title":"/businesses/bulk/url","summary":"Create multiple businesses from URL","prefix":{"name":"post","color":"post"},"badges":[],"link":"/businesses/businessescontroller_createbusinessesfromurl","deprecated":false},{"title":"/businesses/{id}/status","summary":"Toggle business status","prefix":{"name":"put","color":"put"},"badges":[],"link":"/businesses/businessescontroller_togglebusinessstatus","deprecated":false},{"title":"/businesses/stamp-tokens/{tokenId}/provision","summary":"Provision stamp token metadata for all businesses","prefix":{"name":"post","color":"post"},"badges":[],"link":"/businesses/businessescontroller_provisionstamptoken","deprecated":false},{"title":"/businesses/{businessId}/members","summary":"List business members","prefix":{"name":"get","color":"get"},"badges":[],"link":"/businesses/businessescontroller_getbusinessmembers","deprecated":false},{"title":"/businesses/{businessId}/members","summary":"Add member to business","prefix":{"name":"post","color":"post"},"badges":[],"link":"/businesses/businessescontroller_addbusinessmember","deprecated":false},{"title":"/businesses/{businessId}/members/{userId}","summary":"Update member role","prefix":{"name":"put","color":"put"},"badges":[],"link":"/businesses/businessescontroller_updatememberrole","deprecated":false},{"title":"/businesses/{businessId}/members/{userId}","summary":"Remove member from business","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/businesses/businessescontroller_removebusinessmember","deprecated":false},{"title":"/businesses/export/csv","summary":"Export businesses as CSV (Admin)","prefix":{"name":"get","color":"get"},"badges":[],"link":"/businesses/businessescontroller_exportbusinessesascsv","deprecated":false},{"title":"/businesses/{id}/approval","summary":"Approve or reject a business (Admin)","prefix":{"name":"patch","color":"patch"},"badges":[],"link":"/businesses/businessescontroller_approveorrejectbusiness","deprecated":false}]}]}]}]}},{"type":"group","label":"Transactions","link":"/swagger/transactions","routeSlug":"/swagger/transactions","items":[{"type":"link","label":"Transaction Management System","link":"/swagger/transactions/transaction-management-system","routeSlug":"/swagger/transactions/transaction-management-system","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Transaction Management System"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"transactions/transaction-management-system"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Transaction Management System"},"children":[]}]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"div","attrs":{"style":{"fontSize":"14px","lineHeight":"1.5"}}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"\n      Comprehensive transaction management for credits and tokens with secure processing and real-time balance updates. Handles all operations within the loyalty platform.\n    "},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Transaction Operations:"},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Token Minting:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Create new tokens and add to user accounts\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Token Transfers:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Secure peer-to-peer token transfers between users\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Token Burning:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Remove tokens from circulation with proper audit trails\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Balance Queries:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Real-time balance checks across multiple token types  \n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Transaction Authorization:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Verify user permissions and sufficient balances\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Transaction History:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Complete audit logs for all operations\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Tokenomics — Issuance Modes "},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"&"},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Spend Semantics:"},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"Every reward transaction records an "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"code","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"issuanceMode"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" describing how it was economically issued:\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"TENANT_DELEGATED_MINT:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" tenant master wallet mints (ERC20 with canMintToken, or NFTs without a business owner)\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"BUSINESS_OWNED_MINT:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" business custodial wallet mints its own NFT template (MINTER_ROLE granted at ownership assignment)\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"BUSINESS_BALANCE_TRANSFER:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" business transfers ERC20 from its own balance (canMintToken=false)\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"At point of sale, "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"code","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"web3TransactionType"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" is always respected by the platform. For NFT charges, BURN destroys the token (ticket consumed); TRANSFER moves it to the business wallet (custody/deposit). Caller chooses."},"children":[]}]}],"panels":[]}]}},{"label":"Get current user/business transactions","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/transactions/transactionscontroller_getcurrentusertransactions","routeSlug":"/swagger/transactions/transactionscontroller_getcurrentusertransactions","metadata":{"seo":{"title":"Get current user/business transactions","description":"Consolidated endpoint for user/business transactions. Use role parameter to filter: SENDER (sent), RECIPIENT (received), or omit for all transactions. Use include parameter to enrich with full entity data. Always returns PaginatedResponseDTO."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TransactionsController_getCurrentUserTransactions","name":"Get current user/business transactions","isWebhook":false,"pointer":"/paths/~1transactions~1me/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get current user/business transactions","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Consolidated endpoint for user/business transactions. Use role parameter to filter: SENDER (sent), RECIPIENT (received), or omit for all transactions. Use include parameter to enrich with full entity data. Always returns PaginatedResponseDTO."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"include","in":"query","schemaId":"schema_75","description":"Optional relations to enrich: sender (User/Business), recipient (User/Business), business (engaged Business). Omit for fast response with IDs only."},{"name":"search","in":"query","schemaId":"schema_67","description":"Wildcard search for ID, address or transaction hash"},{"name":"participantAddress","in":"query","schemaId":"schema_67","description":"Filter by specific wallet address (must belong to authentication context for non-admins)"},{"name":"tokenAddress","in":"query","schemaId":"schema_67"},{"name":"engagedBusinessId","in":"query","schemaId":"schema_67","description":"Filter by engaged business ID (for campaign claim transactions)"},{"name":"page","in":"query","schemaId":"schema_68","description":"Page number (1-based)"},{"name":"limit","in":"query","schemaId":"schema_68","description":"Items per page"},{"name":"sortBy","in":"query","schemaId":"schema_98","description":"Sort field"},{"name":"sortOrder","in":"query","schemaId":"schema_73","description":"Sort order"},{"name":"dateFrom","in":"query","schemaId":"schema_67","description":"Filter items created after this date (ISO 8601)"},{"name":"dateTo","in":"query","schemaId":"schema_67","description":"Filter items created before this date (ISO 8601)"},{"name":"type","in":"query","schemaId":"schema_99"},{"name":"tokenType","in":"query","schemaId":"schema_100"},{"name":"status","in":"query","schemaId":"schema_101"},{"name":"role","in":"query","schemaId":"schema_102","description":"Filter by transaction role: SENDER, RECIPIENT, or omit for all"}],"pointer":"/paths/~1transactions~1me/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/transactions/me","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"include","in":"query","required":false,"schemaId":"schema_75"},{"name":"search","in":"query","required":false,"schemaId":"schema_67"},{"name":"participantAddress","in":"query","required":false,"schemaId":"schema_67"},{"name":"tokenAddress","in":"query","required":false,"schemaId":"schema_67"},{"name":"engagedBusinessId","in":"query","required":false,"schemaId":"schema_67"},{"name":"page","in":"query","required":false,"schemaId":"schema_68"},{"name":"limit","in":"query","required":false,"schemaId":"schema_68"},{"name":"sortBy","in":"query","required":false,"schemaId":"schema_98"},{"name":"sortOrder","in":"query","required":false,"schemaId":"schema_73"},{"name":"dateFrom","in":"query","required":false,"schemaId":"schema_67"},{"name":"dateTo","in":"query","required":false,"schemaId":"schema_67"},{"name":"type","in":"query","required":false,"schemaId":"schema_99"},{"name":"tokenType","in":"query","required":false,"schemaId":"schema_100"},{"name":"status","in":"query","required":false,"schemaId":"schema_101"},{"name":"role","in":"query","required":false,"schemaId":"schema_102"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/transactions/me","href":"transactions/transactionscontroller_getcurrentusertransactions","openApiOperationId":"TransactionsController_getCurrentUserTransactions","summary":"Get current user/business transactions"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200"}],"pointer":"/paths/~1transactions~1me/get/responses"}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/transactions/transactionscontroller_getcurrentusertransactions"}],"panels":[]}]},"httpPath":"/transactions/me"},{"label":"Get all transactions with advanced filtering","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/transactions/transactionscontroller_getalltransactions","routeSlug":"/swagger/transactions/transactionscontroller_getalltransactions","metadata":{"seo":{"title":"Get all transactions with advanced filtering","description":"Get transactions with comprehensive filtering options:"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TransactionsController_getAllTransactions","name":"Get all transactions with advanced filtering","isWebhook":false,"pointer":"/paths/~1transactions/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get all transactions with advanced filtering","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Get transactions with comprehensive filtering options:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"include: Enrich with full entity data (sender, recipient, business)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"search: Wildcard search for ID, address or transaction hash"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"participantId: Filter by user/business/tenant ID"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"role: Filter by SENDER, RECIPIENT, or both (omit for all)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"status: Filter by transaction status"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"tokenType: Filter by token type"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"type: Filter by transaction type (MINT, BURN, TRANSFER)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Always returns PaginatedResponseDTO"},"children":[]}]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"include","in":"query","schemaId":"schema_75","description":"Optional relations to enrich: sender (User/Business), recipient (User/Business), business (engaged Business). Omit for fast response with IDs only."},{"name":"search","in":"query","schemaId":"schema_67","description":"Wildcard search for ID, address or transaction hash"},{"name":"participantId","in":"query","schemaId":"schema_67"},{"name":"participantAddress","in":"query","schemaId":"schema_67"},{"name":"tokenAddress","in":"query","schemaId":"schema_67"},{"name":"engagedBusinessId","in":"query","schemaId":"schema_67","description":"Filter by engaged business ID (for campaign claim transactions)"},{"name":"page","in":"query","schemaId":"schema_68","description":"Page number (1-based)"},{"name":"limit","in":"query","schemaId":"schema_68","description":"Items per page"},{"name":"sortBy","in":"query","schemaId":"schema_98","description":"Sort field"},{"name":"sortOrder","in":"query","schemaId":"schema_73","description":"Sort order"},{"name":"dateFrom","in":"query","schemaId":"schema_67","description":"Filter items created after this date (ISO 8601)"},{"name":"dateTo","in":"query","schemaId":"schema_67","description":"Filter items created before this date (ISO 8601)"},{"name":"type","in":"query","schemaId":"schema_99"},{"name":"tokenType","in":"query","schemaId":"schema_100"},{"name":"status","in":"query","schemaId":"schema_101"},{"name":"role","in":"query","schemaId":"schema_102"}],"pointer":"/paths/~1transactions/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/transactions","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"include","in":"query","required":false,"schemaId":"schema_75"},{"name":"search","in":"query","required":false,"schemaId":"schema_67"},{"name":"participantId","in":"query","required":false,"schemaId":"schema_67"},{"name":"participantAddress","in":"query","required":false,"schemaId":"schema_67"},{"name":"tokenAddress","in":"query","required":false,"schemaId":"schema_67"},{"name":"engagedBusinessId","in":"query","required":false,"schemaId":"schema_67"},{"name":"page","in":"query","required":false,"schemaId":"schema_68"},{"name":"limit","in":"query","required":false,"schemaId":"schema_68"},{"name":"sortBy","in":"query","required":false,"schemaId":"schema_98"},{"name":"sortOrder","in":"query","required":false,"schemaId":"schema_73"},{"name":"dateFrom","in":"query","required":false,"schemaId":"schema_67"},{"name":"dateTo","in":"query","required":false,"schemaId":"schema_67"},{"name":"type","in":"query","required":false,"schemaId":"schema_99"},{"name":"tokenType","in":"query","required":false,"schemaId":"schema_100"},{"name":"status","in":"query","required":false,"schemaId":"schema_101"},{"name":"role","in":"query","required":false,"schemaId":"schema_102"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/transactions","href":"transactions/transactionscontroller_getalltransactions","openApiOperationId":"TransactionsController_getAllTransactions","summary":"Get all transactions with advanced filtering"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200"}],"pointer":"/paths/~1transactions/get/responses"}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/transactions/transactionscontroller_getalltransactions"}],"panels":[]}]},"httpPath":"/transactions"},{"label":"Create transaction","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/transactions/transactionscontroller_createsystemtransaction","routeSlug":"/swagger/transactions/transactionscontroller_createsystemtransaction","metadata":{"seo":{"title":"Create transaction","description":"Create any type of transaction (MINT/TRANSFER/BURN) using role-based trigger detection."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TransactionsController_createSystemTransaction","name":"Create transaction","isWebhook":false,"pointer":"/paths/~1transactions/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create transaction","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Create any type of transaction (MINT/TRANSFER/BURN) using role-based trigger detection."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Sender resolution — "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"sender"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" field is optional:"},"children":[]}]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"If "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"sender"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is omitted, it defaults to the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"authenticated caller"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":":"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Business JWT → sender = your business ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{ accountId: <your business id>, accountType: \"business\" }"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"User JWT → sender = your user"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Tenant/admin JWT → sender = the tenant"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"So a business that wants to send from itself can simply omit "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"sender"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and only provide "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"recipient"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" + "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"amount"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"blockquote","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Business \"pull from user\" rule:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" When a "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"business"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" initiates a charge where the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"sender"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is a "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"user"},"children":[]}]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(not the business itself), the business must have "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"canChargeToken = true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", otherwise the request is "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rejected"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"403"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"recipient"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" omitted → automatically set to the authenticated business (convenience for POS flows)."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"recipient"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" explicitly set to the business → allowed."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"recipient"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" explicitly set to anyone else → "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rejected"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"403"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). A business cannot route a user's tokens to a third party."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"This rule only applies when the business is pulling from a user. When the business is the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"sender"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(rewarding / sending its own tokens), "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"recipient"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is required and may be any valid account."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"blockquote","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Note:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" If "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"sender"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"is"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" provided, the value is used as-is (no override). The create call does not"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"reject a mismatched "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"sender.accountId"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", but the transaction cannot actually settle from an account the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"caller does not control: signing/submission enforce custody ownership downstream (a business must be the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"sender or engaged business to sign; the sender's custodial wallet is required to submit). Prefer omitting"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"sender"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when acting as yourself."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Token resolution — "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" field is optional:"},"children":[]}]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"If "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is omitted, the server automatically resolves the active credit token for the tenant."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"This works for all sender types (user, business, tenant)."},"children":[]}]}]},{"$$mdtype":"Node","type":"blockquote","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Production recommendation:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Always specify "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" explicitly using "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"contractAddress"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" + "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"chainId"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The fallback is safe as long as there is exactly one active credit token per tenant (the standard setup),"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"but omitting it makes the intent implicit and harder to debug. If a second credit token were ever"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"activated, the fallback would silently pick one with no error."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Spend semantics — caller-controlled via "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"web3TransactionType"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":":"},"children":[]}]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"web3TransactionType"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" you provide is always respected. The platform uses one simple rule to derive intent when you omit it:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"recipient"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" present → "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"TRANSFER"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (balance or token moves to the recipient)."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"recipient"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" absent → "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"BURN"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (token is destroyed; no recipient on chain)."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"For "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC721 / ERC1155"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" charges at point of sale, you choose the right semantic:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"BURN"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — user presents a ticket/stamp and it is consumed (destroyed on-chain). Omit "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"recipient"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or pass "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"web3TransactionType: \"BURN\""},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"TRANSFER"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — user gives custody of the NFT to the business (trade, deposit). Set "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"recipient"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" = business and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"web3TransactionType: \"TRANSFER\""},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"For "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC20"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (credits/points) charges, use "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"TRANSFER"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" so the balance moves to the business wallet."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Reward issuance mode ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"issuanceMode"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on the response):"},"children":[]}]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Reward-generating transactions (campaign claims, redemption rewards) record how the token was economically issued:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"TENANT_DELEGATED_MINT"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — tenant master wallet mints (ERC20 with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"canMintToken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or NFTs without a business owner)."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"BUSINESS_OWNED_MINT"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — business custodial wallet mints its own NFT template."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"BUSINESS_BALANCE_TRANSFER"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — business transfers ERC20 from its own balance ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"canMintToken=false"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Non-reward transactions leave "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"issuanceMode"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" = "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". See the Tokenomics guide in the platform documentation for the full model."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC721 MINT with Dynamic Context:"},"children":[]}]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"For ERC721 mints, you can provide a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"context"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" object for template interpolation and AI prompts."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Values become available as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{context.xxx}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" placeholders in TokenMetadata name/description."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Example — minimal credit transfer (token omitted, fallback applies):"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"web3TransactionType\": \"TRANSFER\",\n  \"sender\":    { \"accountId\": \"user-uuid\",     \"accountType\": \"user\" },\n  \"recipient\": { \"accountId\": \"business-uuid\", \"accountType\": \"business\" },\n  \"amount\": 100\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"web3TransactionType\": \"TRANSFER\",\n  \"sender\":    { \"accountId\": \"user-uuid\",     \"accountType\": \"user\" },\n  \"recipient\": { \"accountId\": \"business-uuid\", \"accountType\": \"business\" },\n  \"amount\": 100\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Example — explicit token (recommended for production):"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"web3TransactionType\": \"TRANSFER\",\n  \"sender\":    { \"accountId\": \"user-uuid\",     \"accountType\": \"user\" },\n  \"recipient\": { \"accountId\": \"business-uuid\", \"accountType\": \"business\" },\n  \"token\":     { \"contractAddress\": \"0x...\", \"chainId\": 39123 },\n  \"amount\": 100\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"web3TransactionType\": \"TRANSFER\",\n  \"sender\":    { \"accountId\": \"user-uuid\",     \"accountType\": \"user\" },\n  \"recipient\": { \"accountId\": \"business-uuid\", \"accountType\": \"business\" },\n  \"token\":     { \"contractAddress\": \"0x...\", \"chainId\": 39123 },\n  \"amount\": 100\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Example — ERC721 MINT with dynamic context:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"web3TransactionType\": \"MINT\",\n  \"recipient\": { \"accountId\": \"user-uuid\", \"accountType\": \"user\" },\n  \"token\": { \"tokenEntityId\": \"token-uuid\" },\n  \"amount\": 1,\n  \"context\": {\n    \"awardReason\": \"Employee of the Month\",\n    \"recipientName\": \"John Smith\"\n  }\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"web3TransactionType\": \"MINT\",\n  \"recipient\": { \"accountId\": \"user-uuid\", \"accountType\": \"user\" },\n  \"token\": { \"tokenEntityId\": \"token-uuid\" },\n  \"amount\": 1,\n  \"context\": {\n    \"awardReason\": \"Employee of the Month\",\n    \"recipientName\": \"John Smith\"\n  }\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Depending on transaction type and signing context, returns prepared transaction for client-side signing or executes server-side directly."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TransactionRequestDTO"}},"schemaId":"components/schemas/TransactionRequestDTO","pointer":"/paths/~1transactions/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/transactions","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/TransactionRequestDTO"}},"responseCodes":["200","201"],"pointer":"/transactions","href":"transactions/transactionscontroller_createsystemtransaction","openApiOperationId":"TransactionsController_createSystemTransaction","summary":"Create transaction"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/TransactionRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TransactionRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"transaction created","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TransactionRequestResponseDTO"}},"schemaId":"components/schemas/TransactionRequestResponseDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TransactionRequestResponseDTO"}},"schemaId":"components/schemas/TransactionRequestResponseDTO"}],"pointer":"/paths/~1transactions/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TransactionRequestResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TransactionRequestResponseDTO"}}},{"code":"201","schemaId":"components/schemas/TransactionRequestResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TransactionRequestResponseDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/transactions/transactionscontroller_createsystemtransaction"}],"panels":[]}]},"httpPath":"/transactions"},{"label":"Get transaction by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/transactions/transactionscontroller_gettransactionbyid","routeSlug":"/swagger/transactions/transactionscontroller_gettransactionbyid","metadata":{"seo":{"title":"Get transaction by ID","description":"Get single transaction by ID with optional entity inclusion. Use include parameter to enrich with full entity data. Requires valid project API key."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TransactionsController_getTransactionById","name":"Get transaction by ID","isWebhook":false,"pointer":"/paths/~1transactions~1{id}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get transaction by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Get single transaction by ID with optional entity inclusion. Use include parameter to enrich with full entity data. Requires valid project API key."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1transactions~1{id}/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"include","in":"query","schemaId":"schema_75","description":"Optional relations to enrich: sender (User/Business), recipient (User/Business), business (engaged Business). Omit for fast response with IDs only."}],"pointer":"/paths/~1transactions~1{id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/transactions/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[{"name":"include","in":"query","required":false,"schemaId":"schema_75"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/transactions/{id}","href":"transactions/transactionscontroller_gettransactionbyid","openApiOperationId":"TransactionsController_getTransactionById","summary":"Get transaction by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Transaction found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TransactionDTO"}},"schemaId":"components/schemas/TransactionDTO"}],"pointer":"/paths/~1transactions~1{id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TransactionDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TransactionDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/transactions/transactionscontroller_gettransactionbyid"}],"panels":[]}]},"httpPath":"/transactions/{id}"},{"label":"Prepare existing transaction for client-side signing","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/transactions/transactionscontroller_preparetransactionbyid","routeSlug":"/swagger/transactions/transactionscontroller_preparetransactionbyid","metadata":{"seo":{"title":"Prepare existing transaction for client-side signing","description":"Prepares transaction data for client-side execution from existing transaction ID. Returns the data needed for the client to sign and submit the transaction."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TransactionsController_prepareTransactionById","name":"Prepare existing transaction for client-side signing","isWebhook":false,"pointer":"/paths/~1transactions~1{id}~1prepare/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Prepare existing transaction for client-side signing","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Prepares transaction data for client-side execution from existing transaction ID. Returns the data needed for the client to sign and submit the transaction."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1transactions~1{id}~1prepare/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/transactions/{id}/prepare","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/transactions/{id}/prepare","href":"transactions/transactionscontroller_preparetransactionbyid","openApiOperationId":"TransactionsController_prepareTransactionById","summary":"Prepare existing transaction for client-side signing"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Transaction prepared successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TransactionRequestResponseDTO"}},"schemaId":"components/schemas/TransactionRequestResponseDTO"}],"pointer":"/paths/~1transactions~1{id}~1prepare/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TransactionRequestResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TransactionRequestResponseDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/transactions/transactionscontroller_preparetransactionbyid"}],"panels":[]}]},"httpPath":"/transactions/{id}/prepare"},{"label":"Sign transaction and return signature only (no submission)","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/transactions/transactionscontroller_signtransactiononly","routeSlug":"/swagger/transactions/transactionscontroller_signtransactiononly","metadata":{"seo":{"title":"Sign transaction and return signature only (no submission)","description":"Signs a custodial EIP-712 transaction and returns the signature without submitting to the blockchain. Use this for business interface flows where the signature is displayed/scanned and submitted separately."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TransactionsController_signTransactionOnly","name":"Sign transaction and return signature only (no submission)","isWebhook":false,"pointer":"/paths/~1transactions~1{id}~1sign/post","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Sign transaction and return signature only (no submission)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Signs a custodial EIP-712 transaction and returns the signature without submitting to the blockchain. Use this for business interface flows where the signature is displayed/scanned and submitted separately."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1transactions~1{id}~1sign/post/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/transactions/{id}/sign","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","201"],"pointer":"/transactions/{id}/sign","href":"transactions/transactionscontroller_signtransactiononly","openApiOperationId":"TransactionsController_signTransactionOnly","summary":"Sign transaction and return signature only (no submission)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Transaction signed successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TransactionRequestResponseDTO"}},"schemaId":"components/schemas/TransactionRequestResponseDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TransactionRequestResponseDTO"}},"schemaId":"components/schemas/TransactionRequestResponseDTO"}],"pointer":"/paths/~1transactions~1{id}~1sign/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TransactionRequestResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TransactionRequestResponseDTO"}}},{"code":"201","schemaId":"components/schemas/TransactionRequestResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TransactionRequestResponseDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/transactions/transactionscontroller_signtransactiononly"}],"panels":[]}]},"httpPath":"/transactions/{id}/sign"},{"label":"Submit client-side signed transaction","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/transactions/transactionscontroller_submittransaction","routeSlug":"/swagger/transactions/transactionscontroller_submittransaction","metadata":{"seo":{"title":"Submit client-side signed transaction","description":"Submits a signed transaction from the client. This method is used to finalize the transaction after the client has signed it."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TransactionsController_submitTransaction","name":"Submit client-side signed transaction","isWebhook":false,"pointer":"/paths/~1transactions~1submit/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Submit client-side signed transaction","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Submits a signed transaction from the client. This method is used to finalize the transaction after the client has signed it."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TransactionSubmissionRequestDTO"}},"schemaId":"components/schemas/TransactionSubmissionRequestDTO","pointer":"/paths/~1transactions~1submit/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/transactions/submit","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/TransactionSubmissionRequestDTO"}},"responseCodes":["200","201"],"pointer":"/transactions/submit","href":"transactions/transactionscontroller_submittransaction","openApiOperationId":"TransactionsController_submitTransaction","summary":"Submit client-side signed transaction"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/TransactionSubmissionRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TransactionSubmissionRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Transaction submitted successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TransactionRequestResponseDTO"}},"schemaId":"components/schemas/TransactionRequestResponseDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TransactionRequestResponseDTO"}},"schemaId":"components/schemas/TransactionRequestResponseDTO"}],"pointer":"/paths/~1transactions~1submit/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TransactionRequestResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TransactionRequestResponseDTO"}}},{"code":"201","schemaId":"components/schemas/TransactionRequestResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TransactionRequestResponseDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/transactions/transactionscontroller_submittransaction"}],"panels":[]}]},"httpPath":"/transactions/submit"},{"label":"Export transactions as CSV with business names","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/transactions/transactionscontroller_exporttransactionsascsv","routeSlug":"/swagger/transactions/transactionscontroller_exporttransactionsascsv","metadata":{"seo":{"title":"Export transactions as CSV with business names","description":"Downloads transactions as CSV with business names resolved. Supports filtering by date range and status. Includes engagedBusinessName column for easy analysis. RLS ensures tenant isolation automatically."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TransactionsController_exportTransactionsAsCsv","name":"Export transactions as CSV with business names","isWebhook":false,"pointer":"/paths/~1transactions~1export~1csv/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Export transactions as CSV with business names","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Downloads transactions as CSV with business names resolved. Supports filtering by date range and status. Includes engagedBusinessName column for easy analysis. RLS ensures tenant isolation automatically."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"dateFrom","in":"query","schemaId":"schema_103","description":"Filter from date (ISO format)"},{"name":"dateTo","in":"query","schemaId":"schema_104","description":"Filter to date (ISO format)"},{"name":"status","in":"query","schemaId":"schema_105","description":"Filter by transaction status (e.g., SUCCEEDED, FAILED). Supports comma-separated values for multiple statuses."}],"pointer":"/paths/~1transactions~1export~1csv/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/transactions/export/csv","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"dateFrom","in":"query","required":false,"example":"2026-01-01","schemaId":"schema_103"},{"name":"dateTo","in":"query","required":false,"example":"2026-12-31","schemaId":"schema_104"},{"name":"status","in":"query","required":false,"example":"SUCCEEDED","schemaId":"schema_105"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/transactions/export/csv","href":"transactions/transactionscontroller_exporttransactionsascsv","openApiOperationId":"TransactionsController_exportTransactionsAsCsv","summary":"Export transactions as CSV with business names"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"CSV file download with business names included","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_106"}},"schemaId":"schema_106","headers":{"Content-Type":{"description":"MIME type of the file","schema":{"type":"string","example":"text/csv"}},"Content-Disposition":{"description":"File download attachment","schema":{"type":"string","example":"attachment; filename=\"transactions_2024-01-15.csv\""}}},"headerSchemaId":"schema_107"}],"pointer":"/paths/~1transactions~1export~1csv/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_106","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_106"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/transactions/transactionscontroller_exporttransactionsascsv"}],"panels":[]}]},"httpPath":"/transactions/export/csv"}],"content":{"contentType":"group","meta":{"name":"Transactions"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Transactions","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/transactions/me","summary":"Get current user/business transactions","prefix":{"name":"get","color":"get"},"badges":[],"link":"/transactions/transactionscontroller_getcurrentusertransactions","deprecated":false},{"title":"/transactions","summary":"Get all transactions with advanced filtering","prefix":{"name":"get","color":"get"},"badges":[],"link":"/transactions/transactionscontroller_getalltransactions","deprecated":false},{"title":"/transactions","summary":"Create transaction","prefix":{"name":"post","color":"post"},"badges":[],"link":"/transactions/transactionscontroller_createsystemtransaction","deprecated":false},{"title":"/transactions/{id}","summary":"Get transaction by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/transactions/transactionscontroller_gettransactionbyid","deprecated":false},{"title":"/transactions/{id}/prepare","summary":"Prepare existing transaction for client-side signing","prefix":{"name":"get","color":"get"},"badges":[],"link":"/transactions/transactionscontroller_preparetransactionbyid","deprecated":false},{"title":"/transactions/{id}/sign","summary":"Sign transaction and return signature only (no submission)","prefix":{"name":"post","color":"post"},"badges":[],"link":"/transactions/transactionscontroller_signtransactiononly","deprecated":false},{"title":"/transactions/submit","summary":"Submit client-side signed transaction","prefix":{"name":"post","color":"post"},"badges":[],"link":"/transactions/transactionscontroller_submittransaction","deprecated":false},{"title":"/transactions/export/csv","summary":"Export transactions as CSV with business names","prefix":{"name":"get","color":"get"},"badges":[],"link":"/transactions/transactionscontroller_exporttransactionsascsv","deprecated":false}]}]}]}]}},{"type":"group","label":"Users","link":"/swagger/users","routeSlug":"/swagger/users","items":[{"type":"link","label":"User Account Management","link":"/swagger/users/user-account-management","routeSlug":"/swagger/users/user-account-management","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"User Account Management"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"users/user-account-management"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"User Account Management"},"children":[]}]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"div","attrs":{"style":{"fontSize":"14px","lineHeight":"1.5"}}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"\n      User account management and profile operations for loyalty platform participants. Handles user registration, authentication, profile management, and account lifecycle.\n    "},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"User Operations:"},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Account Registration:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" User signup and profile creation with verification\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Authentication:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Secure login and session management  \n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Profile Management:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" User profile updates and preference configuration\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Account Security:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Password management and two-factor authentication\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Privacy Controls:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Data management and privacy settings for users"},"children":[]}]}],"panels":[]}]}},{"label":"Get current user info","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/users/userscontroller_getcurrentuser","routeSlug":"/swagger/users/userscontroller_getcurrentuser","metadata":{"seo":{"title":"Get current user info","description":"Get authenticated user account info. Use include=status,balances to include related data. Note: Including status/balances adds latency - consider separate calls for performance-critical scenarios. Wallets include virtual counterfactual addresses for chains with active tokens."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"UsersController_getCurrentUser","name":"Get current user info","isWebhook":false,"pointer":"/paths/~1users~1me/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get current user info","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Get authenticated user account info. Use include=status,balances to include related data. Note: Including status/balances adds latency - consider separate calls for performance-critical scenarios. Wallets include virtual counterfactual addresses for chains with active tokens."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"include","in":"query","schemaId":"schema_75","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Include related data (comma-separated). Valid options: status, balances. ⚠️ Performance: status and balances require additional queries - use sparingly."},"children":[]}]}]}]}],"pointer":"/paths/~1users~1me/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/users/me","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"include","in":"query","required":false,"schemaId":"schema_75"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","404"],"pointer":"/users/me","href":"users/userscontroller_getcurrentuser","openApiOperationId":"UsersController_getCurrentUser","summary":"Get current user info"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"User found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserDTO"}},"schemaId":"components/schemas/UserDTO"},{"code":"404","description":"User not found"}],"pointer":"/paths/~1users~1me/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/UserDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserDTO"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/users/userscontroller_getcurrentuser"}],"panels":[]}]},"httpPath":"/users/me"},{"label":"Update current user","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/users/userscontroller_updatecurrentuser","routeSlug":"/swagger/users/userscontroller_updatecurrentuser","metadata":{"seo":{"title":"Update current user","description":"Update authenticated user account"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"UsersController_updateCurrentUser","name":"Update current user","isWebhook":false,"pointer":"/paths/~1users~1me/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update current user","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Update authenticated user account"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UserCreateRequestDTO"}},"schemaId":"components/schemas/UserCreateRequestDTO","pointer":"/paths/~1users~1me/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/users/me","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/UserCreateRequestDTO"}},"responseCodes":["200","404"],"pointer":"/users/me","href":"users/userscontroller_updatecurrentuser","openApiOperationId":"UsersController_updateCurrentUser","summary":"Update current user"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/UserCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UserCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"User updated","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserDTO"}},"schemaId":"components/schemas/UserDTO"},{"code":"404","description":"User not found"}],"pointer":"/paths/~1users~1me/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/UserDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserDTO"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/users/userscontroller_updatecurrentuser"}],"panels":[]}]},"httpPath":"/users/me"},{"label":"Get current user status","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/users/userscontroller_getcurrentuserstatus","routeSlug":"/swagger/users/userscontroller_getcurrentuserstatus","metadata":{"seo":{"title":"Get current user status","description":"Get authenticated user status types. Use pagination parameters (page & limit) for optimal performance. Legacy support: returns array without params (deprecated - will be removed in future)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"UsersController_getCurrentUserStatus","name":"Get current user status","isWebhook":false,"pointer":"/paths/~1users~1me~1status/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get current user status","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Get authenticated user status types. Use pagination parameters (page & limit) for optimal performance. Legacy support: returns array without params (deprecated - will be removed in future)."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"page","in":"query","schemaId":"schema_68","description":"Page number (1-based)"},{"name":"limit","in":"query","schemaId":"schema_68","description":"Items per page"}],"pointer":"/paths/~1users~1me~1status/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/users/me/status","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"page","in":"query","required":false,"schemaId":"schema_68"},{"name":"limit","in":"query","required":false,"schemaId":"schema_68"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","404"],"pointer":"/users/me/status","href":"users/userscontroller_getcurrentuserstatus","openApiOperationId":"UsersController_getCurrentUserStatus","summary":"Get current user status"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"User status found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_108"}},"schemaId":"schema_108"},{"code":"404","description":"User status not found"}],"pointer":"/paths/~1users~1me~1status/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_108","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_108"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/users/userscontroller_getcurrentuserstatus"}],"panels":[]}]},"httpPath":"/users/me/status"},{"label":"Check if user exists","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/users/userscontroller_checkuserexists","routeSlug":"/swagger/users/userscontroller_checkuserexists","metadata":{"seo":{"title":"Check if user exists","description":"Check if a user exists using any identifier field (id, email, etc.)"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"UsersController_checkUserExists","name":"Check if user exists","isWebhook":false,"pointer":"/paths/~1users~1exists/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Check if user exists","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Check if a user exists using any identifier field (id, email, etc.)"},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"filterValue","in":"query","schemaId":"schema_67","description":"Value to search for","required":true},{"name":"filterKey","in":"query","schemaId":"schema_109","description":"Field to use for identification (id, email, instagramAccountId, etc.)"}],"pointer":"/paths/~1users~1exists/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/users/exists","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"filterValue","in":"query","required":true,"schemaId":"schema_67"},{"name":"filterKey","in":"query","required":false,"schemaId":"schema_109"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200","400","404"],"pointer":"/users/exists","href":"users/userscontroller_checkuserexists","openApiOperationId":"UsersController_checkUserExists","summary":"Check if user exists"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"User existence check result","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_110"}},"schemaId":"schema_110"},{"code":"400","description":"Invalid filter parameters"},{"code":"404","description":"User not found"}],"pointer":"/paths/~1users~1exists/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_110","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_110"}}},{"code":"400"},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/users/userscontroller_checkuserexists"}],"panels":[]}]},"httpPath":"/users/exists"},{"label":"Get all public profiles","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/users/userscontroller_getallpublicprofiles","routeSlug":"/swagger/users/userscontroller_getallpublicprofiles","metadata":{"seo":{"title":"Get all public profiles","description":"Get all public user profiles. Use pagination parameters (page & limit) for optimal performance - essential for large user bases. Legacy support: returns array without params (deprecated - will be removed in future)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"UsersController_getAllPublicProfiles","name":"Get all public profiles","isWebhook":false,"pointer":"/paths/~1users~1public/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get all public profiles","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Get all public user profiles. Use pagination parameters (page & limit) for optimal performance - essential for large user bases. Legacy support: returns array without params (deprecated - will be removed in future)."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"filterKey","in":"query","schemaId":"schema_67","description":"Property key in publicProfile to filter by"},{"name":"filterValue","in":"query","schemaId":"schema_67","description":"Value to match in the publicProfile property"},{"name":"page","in":"query","schemaId":"schema_68","description":"Page number (1-based)"},{"name":"limit","in":"query","schemaId":"schema_68","description":"Items per page"}],"pointer":"/paths/~1users~1public/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/users/public","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"filterKey","in":"query","required":false,"schemaId":"schema_67"},{"name":"filterValue","in":"query","required":false,"schemaId":"schema_67"},{"name":"page","in":"query","required":false,"schemaId":"schema_68"},{"name":"limit","in":"query","required":false,"schemaId":"schema_68"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200","404"],"pointer":"/users/public","href":"users/userscontroller_getallpublicprofiles","openApiOperationId":"UsersController_getAllPublicProfiles","summary":"Get all public profiles"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Public profiles","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_111"}},"schemaId":"schema_111"},{"code":"404","description":"Public profiles not found"}],"pointer":"/paths/~1users~1public/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_111","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_111"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/users/userscontroller_getallpublicprofiles"}],"panels":[]}]},"httpPath":"/users/public"},{"label":"Get public profile","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/users/userscontroller_getpublicprofile","routeSlug":"/swagger/users/userscontroller_getpublicprofile","metadata":{"seo":{"title":"Get public profile","description":"Get a public profile by user ID"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"UsersController_getPublicProfile","name":"Get public profile","isWebhook":false,"pointer":"/paths/~1users~1public~1{id}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get public profile","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Get a public profile by user ID"},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1users~1public~1{id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/users/public/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200","404"],"pointer":"/users/public/{id}","href":"users/userscontroller_getpublicprofile","openApiOperationId":"UsersController_getPublicProfile","summary":"Get public profile"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Public profile","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicUserDTO"}},"schemaId":"components/schemas/PublicUserDTO"},{"code":"404","description":"Public profile not found"}],"pointer":"/paths/~1users~1public~1{id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PublicUserDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicUserDTO"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/users/userscontroller_getpublicprofile"}],"panels":[]}]},"httpPath":"/users/public/{id}"},{"label":"Get all user status types","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/users/userscontroller_getalluserstatustypes","routeSlug":"/swagger/users/userscontroller_getalluserstatustypes","metadata":{"seo":{"title":"Get all user status types","description":"Get all available user status types. Use pagination parameters (page & limit) for optimal performance. Legacy support: returns array without params (deprecated - will be removed in future)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"UsersController_getAllUserStatusTypes","name":"Get all user status types","isWebhook":false,"pointer":"/paths/~1users~1status-types/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get all user status types","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Get all available user status types. Use pagination parameters (page & limit) for optimal performance. Legacy support: returns array without params (deprecated - will be removed in future)."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"page","in":"query","schemaId":"schema_68","description":"Page number (1-based)"},{"name":"limit","in":"query","schemaId":"schema_68","description":"Items per page"}],"pointer":"/paths/~1users~1status-types/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/users/status-types","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"page","in":"query","required":false,"schemaId":"schema_68"},{"name":"limit","in":"query","required":false,"schemaId":"schema_68"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/users/status-types","href":"users/userscontroller_getalluserstatustypes","openApiOperationId":"UsersController_getAllUserStatusTypes","summary":"Get all user status types"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"User status types","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_108"}},"schemaId":"schema_108"}],"pointer":"/paths/~1users~1status-types/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_108","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_108"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/users/userscontroller_getalluserstatustypes"}],"panels":[]}]},"httpPath":"/users/status-types"},{"label":"Create user status type","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/users/userscontroller_createuserstatustype","routeSlug":"/swagger/users/userscontroller_createuserstatustype","metadata":{"seo":{"title":"Create user status type","description":"Create user status type as admin"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"UsersController_createUserStatusType","name":"Create user status type","isWebhook":false,"pointer":"/paths/~1users~1status-types/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create user status type","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Create user status type as admin"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UserStatusTypeCreateRequestDTO"}},"schemaId":"components/schemas/UserStatusTypeCreateRequestDTO","pointer":"/paths/~1users~1status-types/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/users/status-types","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/UserStatusTypeCreateRequestDTO"}},"responseCodes":["200","201"],"pointer":"/users/status-types","href":"users/userscontroller_createuserstatustype","openApiOperationId":"UsersController_createUserStatusType","summary":"Create user status type"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/UserStatusTypeCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UserStatusTypeCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"User status type created","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserStatusTypeDTO"}},"schemaId":"components/schemas/UserStatusTypeDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserStatusTypeDTO"}},"schemaId":"components/schemas/UserStatusTypeDTO"}],"pointer":"/paths/~1users~1status-types/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/UserStatusTypeDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserStatusTypeDTO"}}},{"code":"201","schemaId":"components/schemas/UserStatusTypeDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserStatusTypeDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/users/userscontroller_createuserstatustype"}],"panels":[]}]},"httpPath":"/users/status-types"},{"label":"Get user status type","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/users/userscontroller_getuserstatustype","routeSlug":"/swagger/users/userscontroller_getuserstatustype","metadata":{"seo":{"title":"Get user status type","description":"Get a user status type by ID"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"UsersController_getUserStatusType","name":"Get user status type","isWebhook":false,"pointer":"/paths/~1users~1status-types~1{id}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get user status type","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Get a user status type by ID"},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1users~1status-types~1{id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/users/status-types/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200","404"],"pointer":"/users/status-types/{id}","href":"users/userscontroller_getuserstatustype","openApiOperationId":"UsersController_getUserStatusType","summary":"Get user status type"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"User status type","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserStatusTypeDTO"}},"schemaId":"components/schemas/UserStatusTypeDTO"},{"code":"404","description":"User status type not found"}],"pointer":"/paths/~1users~1status-types~1{id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/UserStatusTypeDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserStatusTypeDTO"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/users/userscontroller_getuserstatustype"}],"panels":[]}]},"httpPath":"/users/status-types/{id}"},{"label":"Update user status type","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/users/userscontroller_updateuserstatustype","routeSlug":"/swagger/users/userscontroller_updateuserstatustype","metadata":{"seo":{"title":"Update user status type","description":"Update user status type as admin"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"UsersController_updateUserStatusType","name":"Update user status type","isWebhook":false,"pointer":"/paths/~1users~1status-types~1{id}/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update user status type","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Update user status type as admin"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1users~1status-types~1{id}/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UserStatusTypeCreateRequestDTO"}},"schemaId":"components/schemas/UserStatusTypeCreateRequestDTO","pointer":"/paths/~1users~1status-types~1{id}/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/users/status-types/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/UserStatusTypeCreateRequestDTO"}},"responseCodes":["200","404"],"pointer":"/users/status-types/{id}","href":"users/userscontroller_updateuserstatustype","openApiOperationId":"UsersController_updateUserStatusType","summary":"Update user status type"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/UserStatusTypeCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UserStatusTypeCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"User status type updated","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserStatusTypeDTO"}},"schemaId":"components/schemas/UserStatusTypeDTO"},{"code":"404","description":"User status type not found"}],"pointer":"/paths/~1users~1status-types~1{id}/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/UserStatusTypeDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserStatusTypeDTO"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/users/userscontroller_updateuserstatustype"}],"panels":[]}]},"httpPath":"/users/status-types/{id}"},{"label":"Delete user status type","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/users/userscontroller_deleteuserstatustype","routeSlug":"/swagger/users/userscontroller_deleteuserstatustype","metadata":{"seo":{"title":"Delete user status type","description":"Delete user status type as admin"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"UsersController_deleteUserStatusType","name":"Delete user status type","isWebhook":false,"pointer":"/paths/~1users~1status-types~1{id}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Delete user status type","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Delete user status type as admin"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1users~1status-types~1{id}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/users/status-types/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","404"],"pointer":"/users/status-types/{id}","href":"users/userscontroller_deleteuserstatustype","openApiOperationId":"UsersController_deleteUserStatusType","summary":"Delete user status type"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"User status type deleted"},{"code":"404","description":"User status type not found"}],"pointer":"/paths/~1users~1status-types~1{id}/delete/responses"}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/users/userscontroller_deleteuserstatustype"}],"panels":[]}]},"httpPath":"/users/status-types/{id}"},{"label":"Update eligible token for status type","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/users/userscontroller_updateuserstatustypeeligibletoken","routeSlug":"/swagger/users/userscontroller_updateuserstatustypeeligibletoken","metadata":{"seo":{"title":"Update eligible token for status type","description":"Add or remove eligible token for user status type as admin"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"UsersController_updateUserStatusTypeEligibleToken","name":"Update eligible token for status type","isWebhook":false,"pointer":"/paths/~1users~1status-types~1{id}~1eligible-tokens~1{tokenAddress}/put","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update eligible token for status type","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Add or remove eligible token for user status type as admin"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true},{"name":"tokenAddress","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1users~1status-types~1{id}~1eligible-tokens~1{tokenAddress}/put/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/users/status-types/{id}/eligible-tokens/{tokenAddress}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"},{"name":"tokenAddress","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","404"],"pointer":"/users/status-types/{id}/eligible-tokens/{tokenAddress}","href":"users/userscontroller_updateuserstatustypeeligibletoken","openApiOperationId":"UsersController_updateUserStatusTypeEligibleToken","summary":"Update eligible token for status type"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"User status type updated","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserStatusTypeDTO"}},"schemaId":"components/schemas/UserStatusTypeDTO"},{"code":"404","description":"User status type not found"}],"pointer":"/paths/~1users~1status-types~1{id}~1eligible-tokens~1{tokenAddress}/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/UserStatusTypeDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserStatusTypeDTO"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/users/userscontroller_updateuserstatustypeeligibletoken"}],"panels":[]}]},"httpPath":"/users/status-types/{id}/eligible-tokens/{tokenAddress}"},{"label":"Get user info","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/users/userscontroller_getuserinfo","routeSlug":"/swagger/users/userscontroller_getuserinfo","metadata":{"seo":{"title":"Get user info","description":"Get user account info (business with user management permission OR admin authentication required). Identifier is passed in the request body (safe for PII such as email). Use include parameter for related data. Note: Including status/balances adds latency - consider separate calls for performance-critical scenarios."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"UsersController_getUserInfo","name":"Get user info","isWebhook":false,"pointer":"/paths/~1users~1info/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get user info","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Get user account info (business with user management permission OR admin authentication required). Identifier is passed in the request body (safe for PII such as email). Use include parameter for related data. Note: Including status/balances adds latency - consider separate calls for performance-critical scenarios."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]},{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"include","in":"query","schemaId":"schema_75","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Include related data (comma-separated). Valid options: status, balances. ⚠️ Performance: status and balances require additional queries - use sparingly."},"children":[]}]}]}]}],"pointer":"/paths/~1users~1info/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UserCreateRequestDTO"}},"schemaId":"components/schemas/UserCreateRequestDTO","pointer":"/paths/~1users~1info/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/users/info","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"include","in":"query","required":false,"schemaId":"schema_75"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]},{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/UserCreateRequestDTO"}},"responseCodes":["200","201","404"],"pointer":"/users/info","href":"users/userscontroller_getuserinfo","openApiOperationId":"UsersController_getUserInfo","summary":"Get user info","securityGroups":[{"authJWT":[]},{"projectKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/UserCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UserCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"User found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserDTO"}},"schemaId":"components/schemas/UserDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserDTO"}},"schemaId":"components/schemas/UserDTO"},{"code":"404","description":"User not found"}],"pointer":"/paths/~1users~1info/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/UserDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserDTO"}}},{"code":"201","schemaId":"components/schemas/UserDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserDTO"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/users/userscontroller_getuserinfo"}],"panels":[]}]},"httpPath":"/users/info"},{"label":"Create or update user account","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/users/userscontroller_createorupdateuser","routeSlug":"/swagger/users/userscontroller_createorupdateuser","metadata":{"seo":{"title":"Create or update user account","description":"Create or update user account(s). Supports single user (business/admin) or bulk operations (admin only)"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"UsersController_createOrUpdateUser","name":"Create or update user account","isWebhook":false,"pointer":"/paths/~1users/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create or update user account","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Create or update user account(s). Supports single user (business/admin) or bulk operations (admin only)"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]},{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_112"}},"schemaId":"schema_112","pointer":"/paths/~1users/post/requestBody","description":"Single user object or array of users (bulk operations require admin authentication)"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/users","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]},{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"schema_112"}},"responseCodes":["200","201"],"pointer":"/users","href":"users/userscontroller_createorupdateuser","openApiOperationId":"UsersController_createOrUpdateUser","summary":"Create or update user account","securityGroups":[{"authJWT":[]},{"projectKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"schema_112","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_112"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"User(s) created/updated","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_113"}},"schemaId":"schema_113"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_80"}},"schemaId":"schema_80"}],"pointer":"/paths/~1users/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_113","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_113"}}},{"code":"201","schemaId":"schema_80","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_80"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/users/userscontroller_createorupdateuser"}],"panels":[]}]},"httpPath":"/users"},{"label":"Get all users","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/users/userscontroller_getallusers","routeSlug":"/swagger/users/userscontroller_getallusers","metadata":{"seo":{"title":"Get all users","description":"Get all users with role-based access. Use pagination parameters (page & limit) for optimal performance. With merge param, only checks duplicates for users on current page (smart merge). Project API key users get public profiles only. Admin users get full access."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"UsersController_getAllUsers","name":"Get all users","isWebhook":false,"pointer":"/paths/~1users/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get all users","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Get all users with role-based access. Use pagination parameters (page & limit) for optimal performance. With merge param, only checks duplicates for users on current page (smart merge). Project API key users get public profiles only. Admin users get full access."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]},{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"merge","in":"query","schemaId":"schema_114","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Merge duplicate users: soft = detect only, hard = auto-merge. Only checks duplicates for current page (fast). Admin only."},"children":[]}]}]}]},{"name":"search","in":"query","schemaId":"schema_67","description":"Search users by email, firstName, lastName, userIdentifier, externalId, or accountAddress (partial match, case-insensitive)"},{"name":"page","in":"query","schemaId":"schema_68","description":"Page number (1-based)"},{"name":"limit","in":"query","schemaId":"schema_68","description":"Items per page"},{"name":"sortBy","in":"query","schemaId":"schema_67","description":"Sort by field (any scalar UserDTO field: id, email, identifierEmail, firstName, lastName, externalId, accountAddress, isActive, createdAt, updatedAt, etc.). Default: createdAt"},{"name":"sortOrder","in":"query","schemaId":"schema_73","description":"Sort order: ASC or DESC. Default: DESC"}],"pointer":"/paths/~1users/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/users","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"merge","in":"query","required":false,"schemaId":"schema_114"},{"name":"search","in":"query","required":false,"schemaId":"schema_67"},{"name":"page","in":"query","required":false,"schemaId":"schema_68"},{"name":"limit","in":"query","required":false,"schemaId":"schema_68"},{"name":"sortBy","in":"query","required":false,"schemaId":"schema_67"},{"name":"sortOrder","in":"query","required":false,"schemaId":"schema_73"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]},{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/users","href":"users/userscontroller_getallusers","openApiOperationId":"UsersController_getAllUsers","summary":"Get all users","securityGroups":[{"authJWT":[]},{"projectKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Users found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_115"}},"schemaId":"schema_115"}],"pointer":"/paths/~1users/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_115","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_115"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/users/userscontroller_getallusers"}],"panels":[]}]},"httpPath":"/users"},{"label":"Get user by identifier","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/users/userscontroller_getuserbyidentifier","routeSlug":"/swagger/users/userscontroller_getuserbyidentifier","metadata":{"seo":{"title":"Get user by identifier","description":"Get user by any unique identifier field (id, email, externalId, accountAddress, etc.). Business (with user management permission) or admin. ⚠️ The identifier travels in the URL - for PII such as email prefer POST /users/info (identifier in body). Use include parameter for related data. Note: Including status/balances adds latency - consider separate calls for performance-critical scenarios."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"UsersController_getUserByIdentifier","name":"Get user by identifier","isWebhook":false,"pointer":"/paths/~1users~1{identifier}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get user by identifier","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Get user by any unique identifier field (id, email, externalId, accountAddress, etc.). Business (with user management permission) or admin. ⚠️ The identifier travels in the URL - for PII such as email prefer POST /users/info (identifier in body). Use include parameter for related data. Note: Including status/balances adds latency - consider separate calls for performance-critical scenarios."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]},{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"identifier","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1users~1{identifier}/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"include","in":"query","schemaId":"schema_75","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Include related data (comma-separated). Valid options: status, balances. ⚠️ Performance: status and balances require additional queries - use sparingly."},"children":[]}]}]}]}],"pointer":"/paths/~1users~1{identifier}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/users/{identifier}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"identifier","in":"path","required":true,"schemaId":"schema_67"}],"query":[{"name":"include","in":"query","required":false,"schemaId":"schema_75"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]},{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200","404"],"pointer":"/users/{identifier}","href":"users/userscontroller_getuserbyidentifier","openApiOperationId":"UsersController_getUserByIdentifier","summary":"Get user by identifier","securityGroups":[{"authJWT":[]},{"projectKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"User found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserDTO"}},"schemaId":"components/schemas/UserDTO"},{"code":"404","description":"User not found"}],"pointer":"/paths/~1users~1{identifier}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/UserDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserDTO"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/users/userscontroller_getuserbyidentifier"}],"panels":[]}]},"httpPath":"/users/{identifier}"},{"label":"Update user by identifier (admin)","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/users/userscontroller_updateuserbyidentifier","routeSlug":"/swagger/users/userscontroller_updateuserbyidentifier","metadata":{"seo":{"title":"Update user by identifier (admin)","description":"Update user account by any unique identifier field (id, email, externalId, accountAddress, etc.). Admin only."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"UsersController_updateUserByIdentifier","name":"Update user by identifier (admin)","isWebhook":false,"pointer":"/paths/~1users~1{identifier}/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update user by identifier (admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Update user account by any unique identifier field (id, email, externalId, accountAddress, etc.). Admin only."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"identifier","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1users~1{identifier}/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UserCreateRequestDTO"}},"schemaId":"components/schemas/UserCreateRequestDTO","pointer":"/paths/~1users~1{identifier}/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/users/{identifier}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"identifier","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/UserCreateRequestDTO"}},"responseCodes":["200","404"],"pointer":"/users/{identifier}","href":"users/userscontroller_updateuserbyidentifier","openApiOperationId":"UsersController_updateUserByIdentifier","summary":"Update user by identifier (admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/UserCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UserCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"User updated","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserDTO"}},"schemaId":"components/schemas/UserDTO"},{"code":"404","description":"User not found"}],"pointer":"/paths/~1users~1{identifier}/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/UserDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserDTO"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/users/userscontroller_updateuserbyidentifier"}],"panels":[]}]},"httpPath":"/users/{identifier}"},{"label":"Delete user by identifier (admin)","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/users/userscontroller_deleteuserbyidentifier","routeSlug":"/swagger/users/userscontroller_deleteuserbyidentifier","metadata":{"seo":{"title":"Delete user by identifier (admin)","description":"Soft delete user by any unique identifier field (id, email, externalId, accountAddress, etc.). Admin only. ⚠️ This operation is irreversible via API - consider using PUT /users/{identifier}/status for temporary deactivation."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"UsersController_deleteUserByIdentifier","name":"Delete user by identifier (admin)","isWebhook":false,"pointer":"/paths/~1users~1{identifier}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Delete user by identifier (admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Soft delete user by any unique identifier field (id, email, externalId, accountAddress, etc.). Admin only. ⚠️ This operation is irreversible via API - consider using PUT /users/{identifier}/status for temporary deactivation."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"identifier","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1users~1{identifier}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/users/{identifier}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"identifier","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","404"],"pointer":"/users/{identifier}","href":"users/userscontroller_deleteuserbyidentifier","openApiOperationId":"UsersController_deleteUserByIdentifier","summary":"Delete user by identifier (admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"User deleted successfully"},{"code":"404","description":"User not found"}],"pointer":"/paths/~1users~1{identifier}/delete/responses"}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/users/userscontroller_deleteuserbyidentifier"}],"panels":[]}]},"httpPath":"/users/{identifier}"},{"label":"Create users from URL (admin)","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/users/userscontroller_createusersfromurl","routeSlug":"/swagger/users/userscontroller_createusersfromurl","metadata":{"seo":{"title":"Create users from URL (admin)","description":"Create user accounts from external URL as admin"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"UsersController_createUsersFromUrl","name":"Create users from URL (admin)","isWebhook":false,"pointer":"/paths/~1users~1bulk~1url/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create users from URL (admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Create user accounts from external URL as admin"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UrlRequestDTO"}},"schemaId":"components/schemas/UrlRequestDTO","pointer":"/paths/~1users~1bulk~1url/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/users/bulk/url","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/UrlRequestDTO"}},"responseCodes":["200","201","404"],"pointer":"/users/bulk/url","href":"users/userscontroller_createusersfromurl","openApiOperationId":"UsersController_createUsersFromUrl","summary":"Create users from URL (admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/UrlRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UrlRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Users created","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_115"}},"schemaId":"schema_115"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_115"}},"schemaId":"schema_115"},{"code":"404","description":"User not found"}],"pointer":"/paths/~1users~1bulk~1url/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_115","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_115"}}},{"code":"201","schemaId":"schema_115","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_115"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/users/userscontroller_createusersfromurl"}],"panels":[]}]},"httpPath":"/users/bulk/url"},{"label":"Set or toggle user status by identifier","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/users/userscontroller_toggleuserstatusbyidentifier","routeSlug":"/swagger/users/userscontroller_toggleuserstatusbyidentifier","metadata":{"seo":{"title":"Set or toggle user status by identifier","description":"Set or toggle user active status by any unique identifier field (id, email, externalId, accountAddress, etc.). If body contains { isActive: true/false }, sets explicitly. If no body, toggles. Admin only."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"UsersController_toggleUserStatusByIdentifier","name":"Set or toggle user status by identifier","isWebhook":false,"pointer":"/paths/~1users~1{identifier}~1status/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Set or toggle user status by identifier","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Set or toggle user active status by any unique identifier field (id, email, externalId, accountAddress, etc.). If body contains { isActive: true/false }, sets explicitly. If no body, toggles. Admin only."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"identifier","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1users~1{identifier}~1status/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":false,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_116"}},"schemaId":"schema_116","pointer":"/paths/~1users~1{identifier}~1status/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/users/{identifier}/status","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"identifier","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"schema_116"}},"responseCodes":["200","404"],"pointer":"/users/{identifier}/status","href":"users/userscontroller_toggleuserstatusbyidentifier","openApiOperationId":"UsersController_toggleUserStatusByIdentifier","summary":"Set or toggle user status by identifier"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"schema_116","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_116"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"User status updated","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserDTO"}},"schemaId":"components/schemas/UserDTO"},{"code":"404","description":"User not found"}],"pointer":"/paths/~1users~1{identifier}~1status/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/UserDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserDTO"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/users/userscontroller_toggleuserstatusbyidentifier"}],"panels":[]}]},"httpPath":"/users/{identifier}/status"},{"label":"Restore deleted user (admin)","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/users/userscontroller_restoreuserbyidentifier","routeSlug":"/swagger/users/userscontroller_restoreuserbyidentifier","metadata":{"seo":{"title":"Restore deleted user (admin)","description":"Restore a soft-deleted user within the 30-day grace period. After GDPR anonymization, restoration is not possible."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"UsersController_restoreUserByIdentifier","name":"Restore deleted user (admin)","isWebhook":false,"pointer":"/paths/~1users~1{identifier}~1restore/post","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Restore deleted user (admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Restore a soft-deleted user within the 30-day grace period. After GDPR anonymization, restoration is not possible."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"identifier","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1users~1{identifier}~1restore/post/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/users/{identifier}/restore","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"identifier","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","201","400","404"],"pointer":"/users/{identifier}/restore","href":"users/userscontroller_restoreuserbyidentifier","openApiOperationId":"UsersController_restoreUserByIdentifier","summary":"Restore deleted user (admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"User restored successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserDTO"}},"schemaId":"components/schemas/UserDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserDTO"}},"schemaId":"components/schemas/UserDTO"},{"code":"400","description":"User already anonymized or not deleted"},{"code":"404","description":"User not found"}],"pointer":"/paths/~1users~1{identifier}~1restore/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/UserDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserDTO"}}},{"code":"201","schemaId":"components/schemas/UserDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserDTO"}}},{"code":"400"},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/users/userscontroller_restoreuserbyidentifier"}],"panels":[]}]},"httpPath":"/users/{identifier}/restore"},{"label":"Export users as CSV","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/users/userscontroller_exportusersascsv","routeSlug":"/swagger/users/userscontroller_exportusersascsv","metadata":{"seo":{"title":"Export users as CSV","description":"Export all users to CSV format. Optional date filtering by createdAt."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"UsersController_exportUsersAsCsv","name":"Export users as CSV","isWebhook":false,"pointer":"/paths/~1users~1export~1csv/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Export users as CSV","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Export all users to CSV format. Optional date filtering by createdAt."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"dateFrom","in":"query","schemaId":"schema_67","description":"Filter users created from this date (ISO format)"},{"name":"dateTo","in":"query","schemaId":"schema_67","description":"Filter users created until this date (ISO format)"}],"pointer":"/paths/~1users~1export~1csv/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/users/export/csv","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"dateFrom","in":"query","required":false,"schemaId":"schema_67"},{"name":"dateTo","in":"query","required":false,"schemaId":"schema_67"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/users/export/csv","href":"users/userscontroller_exportusersascsv","openApiOperationId":"UsersController_exportUsersAsCsv","summary":"Export users as CSV"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"CSV file with user data"}],"pointer":"/paths/~1users~1export~1csv/get/responses"}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/users/userscontroller_exportusersascsv"}],"panels":[]}]},"httpPath":"/users/export/csv"},{"label":"Get current user balance","deprecated":true,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/users/userscontroller_getcurrentuserbalance","routeSlug":"/swagger/users/userscontroller_getcurrentuserbalance","metadata":{"seo":{"title":"Get current user balance","description":"Get authenticated user account with current token balances"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"UsersController_getCurrentUserBalance","name":"Get current user balance","deprecated":true,"isWebhook":false,"pointer":"/paths/~1users~1me~1balance/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get current user balance","isWebhook":false,"deprecated":true,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Get authenticated user account with current token balances"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/users/me/balance","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","404"],"pointer":"/users/me/balance","href":"users/userscontroller_getcurrentuserbalance","openApiOperationId":"UsersController_getCurrentUserBalance","summary":"Get current user balance"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"User found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserTokenBalancesDTO"}},"schemaId":"components/schemas/UserTokenBalancesDTO"},{"code":"404","description":"User not found"}],"pointer":"/paths/~1users~1me~1balance/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/UserTokenBalancesDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserTokenBalancesDTO"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/users/userscontroller_getcurrentuserbalance"}],"panels":[]}]},"httpPath":"/users/me/balance"},{"label":"Get user balance","deprecated":true,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/users/userscontroller_getuserbalance","routeSlug":"/swagger/users/userscontroller_getuserbalance","metadata":{"seo":{"title":"Get user balance","description":"DEPRECATED: Use POST /users/info?include=balances instead. Get user account with current token balances (business with user management permission OR admin authentication required)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"UsersController_getUserBalance","name":"Get user balance","deprecated":true,"isWebhook":false,"pointer":"/paths/~1users~1balance/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get user balance","isWebhook":false,"deprecated":true,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"DEPRECATED: Use POST /users/info?include=balances instead. Get user account with current token balances (business with user management permission OR admin authentication required)."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]},{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UserCreateRequestDTO"}},"schemaId":"components/schemas/UserCreateRequestDTO","pointer":"/paths/~1users~1balance/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/users/balance","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]},{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/UserCreateRequestDTO"}},"responseCodes":["200","201","404"],"pointer":"/users/balance","href":"users/userscontroller_getuserbalance","openApiOperationId":"UsersController_getUserBalance","summary":"Get user balance","securityGroups":[{"authJWT":[]},{"projectKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/UserCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UserCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"User found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserTokenBalancesDTO"}},"schemaId":"components/schemas/UserTokenBalancesDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserTokenBalancesDTO"}},"schemaId":"components/schemas/UserTokenBalancesDTO"},{"code":"404","description":"User not found"}],"pointer":"/paths/~1users~1balance/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/UserTokenBalancesDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserTokenBalancesDTO"}}},{"code":"201","schemaId":"components/schemas/UserTokenBalancesDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserTokenBalancesDTO"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/users/userscontroller_getuserbalance"}],"panels":[]}]},"httpPath":"/users/balance"}],"content":{"contentType":"group","meta":{"name":"Users"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Users","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/users/me","summary":"Get current user info","prefix":{"name":"get","color":"get"},"badges":[],"link":"/users/userscontroller_getcurrentuser","deprecated":false},{"title":"/users/me","summary":"Update current user","prefix":{"name":"put","color":"put"},"badges":[],"link":"/users/userscontroller_updatecurrentuser","deprecated":false},{"title":"/users/me/status","summary":"Get current user status","prefix":{"name":"get","color":"get"},"badges":[],"link":"/users/userscontroller_getcurrentuserstatus","deprecated":false},{"title":"/users/exists","summary":"Check if user exists","prefix":{"name":"get","color":"get"},"badges":[],"link":"/users/userscontroller_checkuserexists","deprecated":false},{"title":"/users/public","summary":"Get all public profiles","prefix":{"name":"get","color":"get"},"badges":[],"link":"/users/userscontroller_getallpublicprofiles","deprecated":false},{"title":"/users/public/{id}","summary":"Get public profile","prefix":{"name":"get","color":"get"},"badges":[],"link":"/users/userscontroller_getpublicprofile","deprecated":false},{"title":"/users/status-types","summary":"Get all user status types","prefix":{"name":"get","color":"get"},"badges":[],"link":"/users/userscontroller_getalluserstatustypes","deprecated":false},{"title":"/users/status-types","summary":"Create user status type","prefix":{"name":"post","color":"post"},"badges":[],"link":"/users/userscontroller_createuserstatustype","deprecated":false},{"title":"/users/status-types/{id}","summary":"Get user status type","prefix":{"name":"get","color":"get"},"badges":[],"link":"/users/userscontroller_getuserstatustype","deprecated":false},{"title":"/users/status-types/{id}","summary":"Update user status type","prefix":{"name":"put","color":"put"},"badges":[],"link":"/users/userscontroller_updateuserstatustype","deprecated":false},{"title":"/users/status-types/{id}","summary":"Delete user status type","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/users/userscontroller_deleteuserstatustype","deprecated":false},{"title":"/users/status-types/{id}/eligible-tokens/{tokenAddress}","summary":"Update eligible token for status type","prefix":{"name":"put","color":"put"},"badges":[],"link":"/users/userscontroller_updateuserstatustypeeligibletoken","deprecated":false},{"title":"/users/info","summary":"Get user info","prefix":{"name":"post","color":"post"},"badges":[],"link":"/users/userscontroller_getuserinfo","deprecated":false},{"title":"/users","summary":"Create or update user account","prefix":{"name":"post","color":"post"},"badges":[],"link":"/users/userscontroller_createorupdateuser","deprecated":false},{"title":"/users","summary":"Get all users","prefix":{"name":"get","color":"get"},"badges":[],"link":"/users/userscontroller_getallusers","deprecated":false},{"title":"/users/{identifier}","summary":"Get user by identifier","prefix":{"name":"get","color":"get"},"badges":[],"link":"/users/userscontroller_getuserbyidentifier","deprecated":false},{"title":"/users/{identifier}","summary":"Update user by identifier (admin)","prefix":{"name":"put","color":"put"},"badges":[],"link":"/users/userscontroller_updateuserbyidentifier","deprecated":false},{"title":"/users/{identifier}","summary":"Delete user by identifier (admin)","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/users/userscontroller_deleteuserbyidentifier","deprecated":false},{"title":"/users/bulk/url","summary":"Create users from URL (admin)","prefix":{"name":"post","color":"post"},"badges":[],"link":"/users/userscontroller_createusersfromurl","deprecated":false},{"title":"/users/{identifier}/status","summary":"Set or toggle user status by identifier","prefix":{"name":"put","color":"put"},"badges":[],"link":"/users/userscontroller_toggleuserstatusbyidentifier","deprecated":false},{"title":"/users/{identifier}/restore","summary":"Restore deleted user (admin)","prefix":{"name":"post","color":"post"},"badges":[],"link":"/users/userscontroller_restoreuserbyidentifier","deprecated":false},{"title":"/users/export/csv","summary":"Export users as CSV","prefix":{"name":"get","color":"get"},"badges":[],"link":"/users/userscontroller_exportusersascsv","deprecated":false},{"title":"/users/me/balance","summary":"Get current user balance","prefix":{"name":"get","color":"http-deprecated"},"badges":[],"link":"/users/userscontroller_getcurrentuserbalance","deprecated":true},{"title":"/users/balance","summary":"Get user balance","prefix":{"name":"post","color":"http-deprecated"},"badges":[],"link":"/users/userscontroller_getuserbalance","deprecated":true}]}]}]}]}},{"type":"group","label":"Balances","link":"/swagger/balances","routeSlug":"/swagger/balances","items":[{"type":"link","label":"Account Balance Management","link":"/swagger/balances/account-balance-management","routeSlug":"/swagger/balances/account-balance-management","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Account Balance Management"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"balances/account-balance-management"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Account Balance Management"},"children":[]}]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"div","attrs":{"style":{"fontSize":"14px","lineHeight":"1.5"}}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"\n      Real-time balance tracking and management across all token types and user accounts. Provides comprehensive balance queries and balance-related operations.\n    "},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Balance Features:"},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Multi-Token Balances:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Track balances across different token types per user\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Real-Time Updates:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Instant balance updates from all transaction sources\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Balance History:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Historical balance tracking and change audit trails\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Balance Queries:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Flexible balance lookup with filtering and aggregation\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Balance Notifications:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Alert systems for balance changes and thresholds"},"children":[]}]}],"panels":[]}]}},{"label":"Get account balance by address (Admin)","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/balances/balancescontroller_getaccountbalance","routeSlug":"/swagger/balances/balancescontroller_getaccountbalance","metadata":{"seo":{"title":"Get account balance by address (Admin)","description":"Get detailed balance information including token metadata for any account address. Requires tenant admin privileges. Replaces GET /balance/admin/account/{accountAddress}"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"BalancesController_getAccountBalance","name":"Get account balance by address (Admin)","isWebhook":false,"pointer":"/paths/~1balances~1accounts~1{accountAddress}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get account balance by address (Admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Get detailed balance information including token metadata for any account address. Requires tenant admin privileges. Replaces GET /balance/admin/account/{accountAddress}"},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountAddress","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1balances~1accounts~1{accountAddress}/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"includeInactive","in":"query","schemaId":"schema_81","description":"Include inactive tokens in balance response (default: false)"}],"pointer":"/paths/~1balances~1accounts~1{accountAddress}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/balances/accounts/{accountAddress}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"accountAddress","in":"path","required":true,"schemaId":"schema_67"}],"query":[{"name":"includeInactive","in":"query","required":false,"schemaId":"schema_81"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","404"],"pointer":"/balances/accounts/{accountAddress}","href":"balances/balancescontroller_getaccountbalance","openApiOperationId":"BalancesController_getAccountBalance","summary":"Get account balance by address (Admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Account balance retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AccountTokenBalancesDTO"}},"schemaId":"components/schemas/AccountTokenBalancesDTO"},{"code":"404","description":"Account not found or invalid address format"}],"pointer":"/paths/~1balances~1accounts~1{accountAddress}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/AccountTokenBalancesDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AccountTokenBalancesDTO"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/balances/balancescontroller_getaccountbalance"}],"panels":[]}]},"httpPath":"/balances/accounts/{accountAddress}"},{"label":"Get active credit token holders (Admin)","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/balances/balancescontroller_getactivecredittokenholders","routeSlug":"/swagger/balances/balancescontroller_getactivecredittokenholders","metadata":{"seo":{"title":"Get active credit token holders (Admin)","description":"Convenience endpoint: automatically resolves the tenant's active ERC20 credit token and returns paginated holders enriched with PERS wallet and optional user data."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"BalancesController_getActiveCreditTokenHolders","name":"Get active credit token holders (Admin)","isWebhook":false,"pointer":"/paths/~1balances~1tokens~1credit~1holders/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get active credit token holders (Admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Convenience endpoint: automatically resolves the tenant's active ERC20 credit token and returns paginated holders enriched with PERS wallet and optional user data."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"page","in":"query","schemaId":"schema_68","description":"Page number (default: 1)"},{"name":"limit","in":"query","schemaId":"schema_68","description":"Items per page (default: 50)"},{"name":"include","in":"query","schemaId":"schema_75","description":"Optional relations to embed. Use user to include full UserDTO for USER-owned wallets."}],"pointer":"/paths/~1balances~1tokens~1credit~1holders/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/balances/tokens/credit/holders","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"page","in":"query","required":false,"schemaId":"schema_68"},{"name":"limit","in":"query","required":false,"schemaId":"schema_68"},{"name":"include","in":"query","required":false,"schemaId":"schema_75"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/balances/tokens/credit/holders","href":"balances/balancescontroller_getactivecredittokenholders","openApiOperationId":"BalancesController_getActiveCreditTokenHolders","summary":"Get active credit token holders (Admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Credit token holders retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PaginatedResponseDTO"}},"schemaId":"components/schemas/PaginatedResponseDTO"}],"pointer":"/paths/~1balances~1tokens~1credit~1holders/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PaginatedResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PaginatedResponseDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/balances/balancescontroller_getactivecredittokenholders"}],"panels":[]}]},"httpPath":"/balances/tokens/credit/holders"},{"label":"Get token holders by contract address (Admin)","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/balances/balancescontroller_gettokenholders","routeSlug":"/swagger/balances/balancescontroller_gettokenholders","metadata":{"seo":{"title":"Get token holders by contract address (Admin)","description":"Returns all addresses holding the specified token, enriched with PERS ownerId and ownerType where the address is a tracked wallet. Uses Blockscout for on-chain data."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"BalancesController_getTokenHolders","name":"Get token holders by contract address (Admin)","isWebhook":false,"pointer":"/paths/~1balances~1tokens~1{contractAddress}~1holders/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get token holders by contract address (Admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Returns all addresses holding the specified token, enriched with PERS ownerId and ownerType where the address is a tracked wallet. Uses Blockscout for on-chain data."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"contractAddress","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1balances~1tokens~1{contractAddress}~1holders/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"chainId","in":"query","schemaId":"schema_68","description":"Chain ID (defaults to PERS Besu mainnet)"},{"name":"page","in":"query","schemaId":"schema_68","description":"Page number (default: 1)"},{"name":"limit","in":"query","schemaId":"schema_68","description":"Items per page (default: 50)"},{"name":"include","in":"query","schemaId":"schema_75","description":"Optional relations to embed. Use user to include full UserDTO for USER-owned wallets."}],"pointer":"/paths/~1balances~1tokens~1{contractAddress}~1holders/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/balances/tokens/{contractAddress}/holders","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"contractAddress","in":"path","required":true,"schemaId":"schema_67"}],"query":[{"name":"chainId","in":"query","required":false,"schemaId":"schema_68"},{"name":"page","in":"query","required":false,"schemaId":"schema_68"},{"name":"limit","in":"query","required":false,"schemaId":"schema_68"},{"name":"include","in":"query","required":false,"schemaId":"schema_75"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/balances/tokens/{contractAddress}/holders","href":"balances/balancescontroller_gettokenholders","openApiOperationId":"BalancesController_getTokenHolders","summary":"Get token holders by contract address (Admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Token holders retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PaginatedResponseDTO"}},"schemaId":"components/schemas/PaginatedResponseDTO"}],"pointer":"/paths/~1balances~1tokens~1{contractAddress}~1holders/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PaginatedResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PaginatedResponseDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/balances/balancescontroller_gettokenholders"}],"panels":[]}]},"httpPath":"/balances/tokens/{contractAddress}/holders"}],"content":{"contentType":"group","meta":{"name":"Balances"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Balances","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/balances/accounts/{accountAddress}","summary":"Get account balance by address (Admin)","prefix":{"name":"get","color":"get"},"badges":[],"link":"/balances/balancescontroller_getaccountbalance","deprecated":false},{"title":"/balances/tokens/credit/holders","summary":"Get active credit token holders (Admin)","prefix":{"name":"get","color":"get"},"badges":[],"link":"/balances/balancescontroller_getactivecredittokenholders","deprecated":false},{"title":"/balances/tokens/{contractAddress}/holders","summary":"Get token holders by contract address (Admin)","prefix":{"name":"get","color":"get"},"badges":[],"link":"/balances/balancescontroller_gettokenholders","deprecated":false}]}]}]}]}},{"type":"group","label":"Files","link":"/swagger/files","routeSlug":"/swagger/files","items":[{"type":"link","label":"File Management System","link":"/swagger/files/file-management-system","routeSlug":"/swagger/files/file-management-system","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"File Management System"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"files/file-management-system"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"File Management System"},"children":[]}]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"div","attrs":{"style":{"fontSize":"14px","lineHeight":"1.5"}}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"\n      File upload and management system for platform assets including campaign images, user avatars, and document attachments with secure storage and access control.\n    "},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"File Operations:"},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Secure Upload:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" File upload with type validation and security scanning\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Asset Management:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Organize and manage platform media assets\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Access Control:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Role-based file access and sharing permissions\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"CDN Integration:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Fast global file delivery through content delivery networks\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"File Processing:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Automatic image resizing and format optimization"},"children":[]}]}],"panels":[]}]}},{"label":"Generate signed URL for entity storage","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/files/filescontroller_getentitystorageurl","routeSlug":"/swagger/files/filescontroller_getentitystorageurl","metadata":{"seo":{"title":"Generate signed URL for entity storage","description":"Creates S3 signed URLs for uploading or downloading entity files. Supports both business and admin authentication flows."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"FilesController_getEntityStorageUrl","name":"Generate signed URL for entity storage","isWebhook":false,"pointer":"/paths/~1files~1entity-storage-url/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Generate signed URL for entity storage","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Creates S3 signed URLs for uploading or downloading entity files. Supports both business and admin authentication flows."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]},{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/EntityStorageUrlDTO"}},"schemaId":"components/schemas/EntityStorageUrlDTO","pointer":"/paths/~1files~1entity-storage-url/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/files/entity-storage-url","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]},{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/EntityStorageUrlDTO"}},"responseCodes":["201"],"pointer":"/files/entity-storage-url","href":"files/filescontroller_getentitystorageurl","openApiOperationId":"FilesController_getEntityStorageUrl","summary":"Generate signed URL for entity storage","securityGroups":[{"authJWT":[]},{"projectKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/EntityStorageUrlDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/EntityStorageUrlDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"201","description":"Signed URL generated successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CreateSignedURLResponseDTO"}},"schemaId":"components/schemas/CreateSignedURLResponseDTO"}],"pointer":"/paths/~1files~1entity-storage-url/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"201","schemaId":"components/schemas/CreateSignedURLResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CreateSignedURLResponseDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/files/filescontroller_getentitystorageurl"}],"panels":[]}]},"httpPath":"/files/entity-storage-url"}],"content":{"contentType":"group","meta":{"name":"Files"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Files","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/files/entity-storage-url","summary":"Generate signed URL for entity storage","prefix":{"name":"post","color":"post"},"badges":[],"link":"/files/filescontroller_getentitystorageurl","deprecated":false}]}]}]}]}},{"type":"group","label":"Web3 Chains","link":"/swagger/web3-chains","routeSlug":"/swagger/web3-chains","items":[{"type":"link","label":"Blockchain Network Management","link":"/swagger/web3-chains/blockchain-network-management","routeSlug":"/swagger/web3-chains/blockchain-network-management","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Blockchain Network Management"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"web3-chains/blockchain-network-management"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Blockchain Network Management"},"children":[]}]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"div","attrs":{"style":{"fontSize":"14px","lineHeight":"1.5"}}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"\n      Blockchain network configuration and management for multi-chain token operations. Handles network connections, chain switching, and blockchain-specific operations.\n    "},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Chain Operations:"},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Multi-Chain Support:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Connect to multiple blockchain networks simultaneously  \n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Network Configuration:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Configure blockchain endpoints and network parameters\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Chain Switching:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Dynamic switching between different blockchain networks\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Network Status:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Real-time monitoring of blockchain network health and status\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Gas Management:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Optimize transaction costs across different networks"},"children":[]}]}],"panels":[]}]}},{"label":"Get Web3 chain data by chain ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/web3-chains/web3chainscontroller_getchaindata","routeSlug":"/swagger/web3-chains/web3chainscontroller_getchaindata","metadata":{"seo":{"title":"Get Web3 chain data by chain ID","description":"Retrieve comprehensive chain data including authentication JWT token valid for 30 days. Supports both mainnet and testnet chains."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"Web3ChainsController_getChainData","name":"Get Web3 chain data by chain ID","isWebhook":false,"pointer":"/paths/~1chains~1{chainId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get Web3 chain data by chain ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve comprehensive chain data including authentication JWT token valid for 30 days. Supports both mainnet and testnet chains."},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"chainId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1chains~1{chainId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/chains/{chainId}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"chainId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/chains/{chainId}","href":"web3-chains/web3chainscontroller_getchaindata","openApiOperationId":"Web3ChainsController_getChainData","summary":"Get Web3 chain data by chain ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ChainDataDTO"}},"schemaId":"components/schemas/ChainDataDTO"}],"pointer":"/paths/~1chains~1{chainId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/ChainDataDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ChainDataDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/web3-chains/web3chainscontroller_getchaindata"}],"panels":[]}]},"httpPath":"/chains/{chainId}"}],"content":{"contentType":"group","meta":{"name":"Web3 Chains"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Web3 Chains","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/chains/{chainId}","summary":"Get Web3 chain data by chain ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/web3-chains/web3chainscontroller_getchaindata","deprecated":false}]}]}]}]}},{"type":"group","label":"Contracts","link":"/swagger/contracts","routeSlug":"/swagger/contracts","items":[{"type":"link","label":"Smart Contract Management","link":"/swagger/contracts/smart-contract-management","routeSlug":"/swagger/contracts/smart-contract-management","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Smart Contract Management"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"contracts/smart-contract-management"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Smart Contract Management"},"children":[]}]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"div","attrs":{"style":{"fontSize":"14px","lineHeight":"1.5"}}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"\n      Smart contract deployment and interaction management for blockchain-based loyalty operations. Handles contract lifecycle and blockchain integration.\n    "},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Contract Operations:"},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Contract Deployment:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Deploy loyalty-related smart contracts to blockchain networks\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Contract Interaction:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Execute smart contract functions for token operations\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Contract Monitoring:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Track contract events and transaction confirmations  \n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Contract Upgrades:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Manage contract versioning and upgrade procedures\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Multi-Chain Contracts:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Deploy and manage contracts across multiple blockchains"},"children":[]}]}],"panels":[]}]}},{"label":"Create a new Web3 contract (Admin)","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/contracts/web3contractscontroller_createcontract","routeSlug":"/swagger/contracts/web3contractscontroller_createcontract","metadata":{"seo":{"title":"Create a new Web3 contract (Admin)","description":"Create a new Web3 contract with administrative privileges. Requires tenant admin access. Replaces POST /contract"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"Web3ContractsController_createContract","name":"Create a new Web3 contract (Admin)","isWebhook":false,"pointer":"/paths/~1contracts/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create a new Web3 contract (Admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Create a new Web3 contract with administrative privileges. Requires tenant admin access. Replaces POST /contract"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/Web3ContractCreateRequestDTO"}},"schemaId":"components/schemas/Web3ContractCreateRequestDTO","pointer":"/paths/~1contracts/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/contracts","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/Web3ContractCreateRequestDTO"}},"responseCodes":["200","201"],"pointer":"/contracts","href":"contracts/web3contractscontroller_createcontract","openApiOperationId":"Web3ContractsController_createContract","summary":"Create a new Web3 contract (Admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/Web3ContractCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/Web3ContractCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Contract created successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Web3ContractDTO"}},"schemaId":"components/schemas/Web3ContractDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Web3ContractDTO"}},"schemaId":"components/schemas/Web3ContractDTO"}],"pointer":"/paths/~1contracts/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/Web3ContractDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Web3ContractDTO"}}},{"code":"201","schemaId":"components/schemas/Web3ContractDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Web3ContractDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/contracts/web3contractscontroller_createcontract"}],"panels":[]}]},"httpPath":"/contracts"}],"content":{"contentType":"group","meta":{"name":"Contracts"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Contracts","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/contracts","summary":"Create a new Web3 contract (Admin)","prefix":{"name":"post","color":"post"},"badges":[],"link":"/contracts/web3contractscontroller_createcontract","deprecated":false}]}]}]}]}},{"type":"group","label":"Auth","link":"/swagger/auth","routeSlug":"/swagger/auth","items":[{"type":"link","label":"Authentication & Authorization","link":"/swagger/auth/authentication-and-authorization","routeSlug":"/swagger/auth/authentication-and-authorization","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Authentication & Authorization"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"auth/authentication-and-authorization"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Authentication & Authorization"},"children":[]}]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"div","attrs":{"style":{"fontSize":"14px","lineHeight":"1.5"}}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"\n      Comprehensive authentication and authorization system supporting multiple access levels including users, businesses, admins, and system-level access with JWT-based security.\n    "},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Auth Features:"},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Multi-Level Access:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Support for USER, BUSINESS, ADMIN, SYSTEM authentication levels\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"JWT Security:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" JSON Web Token-based authentication with secure key management\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Role-Based Access:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Fine-grained permission system with role hierarchy  \n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"API Key Management:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Secure API key generation and validation for system integrations\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Session Management:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Secure session handling with automatic expiration and refresh"},"children":[]}]}],"panels":[]}]}},{"label":"Create authentication token","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/auth/authcontroller_createtoken","routeSlug":"/swagger/auth/authcontroller_createtoken","metadata":{"seo":{"title":"Create authentication token","description":"Universal token creation with consistent token-in-body pattern."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"AuthController_createToken","name":"Create authentication token","isWebhook":false,"pointer":"/paths/~1auth~1token/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create authentication token","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Universal token creation with consistent token-in-body pattern."},"children":[]}]}]},{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"auth/authcontroller_createtoken/request/authentication-flows","deepLinkHash":"/auth/authcontroller_createtoken#auth/authcontroller_createtoken/request/authentication-flows"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Authentication Flows"},"children":[]}]}]},{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"auth/authcontroller_createtoken/request/user-authentication","deepLinkHash":"/auth/authcontroller_createtoken#auth/authcontroller_createtoken/request/user-authentication"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"USER AUTHENTICATION"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Header"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"x-project-key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (tenant identification)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Body"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{ authToken: \"jwt_from_provider\", authType: \"user\" }"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returns"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": User session with PERS JWT tokens"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"auth/authcontroller_createtoken/request/business-authentication","deepLinkHash":"/auth/authcontroller_createtoken#auth/authcontroller_createtoken/request/business-authentication"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"BUSINESS AUTHENTICATION"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Header"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"x-project-key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (tenant identification)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Body"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{ authToken: \"jwt_from_provider\", authType: \"business\", context: { businessId: \"uuid\" } }"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returns"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": Business session with PERS JWT tokens (includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"role"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in JWT)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"If user has single business membership, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"context.businessId"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is auto-selected"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"If user has multiple memberships without "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"context.businessId"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", returns "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"MULTIPLE_CONTEXT_SELECTION_REQUIRED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" error with available options"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"auth/authcontroller_createtoken/request/admin-authentication","deepLinkHash":"/auth/authcontroller_createtoken#auth/authcontroller_createtoken/request/admin-authentication"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ADMIN AUTHENTICATION"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Header"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"x-project-key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (tenant identification)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Body"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{ authToken: \"firebase_jwt\", authType: \"tenant\" }"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returns"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": Admin session with PERS JWT tokens"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"hr","attributes":{},"children":[]},{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"auth/authcontroller_createtoken/request/third-party-jwt-requirements","deepLinkHash":"/auth/authcontroller_createtoken#auth/authcontroller_createtoken/request/third-party-jwt-requirements"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Third-Party JWT Requirements"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"When providing "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"authToken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" from an external identity provider, the JWT must meet these requirements:"},"children":[]}]}]},{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"auth/authcontroller_createtoken/request/jwt-header","deepLinkHash":"/auth/authcontroller_createtoken#auth/authcontroller_createtoken/request/jwt-header"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"JWT Header"},"children":[]}]}]},{"$$mdtype":"Node","type":"table","attributes":{},"children":[{"$$mdtype":"Node","type":"thead","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Field"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Required"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Description"},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"tbody","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"kid"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Yes"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Key ID matching a key in your JWKS"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"alg"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Yes"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Signing algorithm (RS256, ES256, EdDSA)"},"children":[]}]}]}]}]}]},{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"auth/authcontroller_createtoken/request/jwt-payload-claims","deepLinkHash":"/auth/authcontroller_createtoken#auth/authcontroller_createtoken/request/jwt-payload-claims"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"JWT Payload Claims"},"children":[]}]}]},{"$$mdtype":"Node","type":"table","attributes":{},"children":[{"$$mdtype":"Node","type":"thead","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Claim"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Required"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Description"},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"tbody","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"iss"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Yes"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Issuer URL (used for JWKS discovery)"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"sub"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Yes"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Subject identifier (user ID)"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"aud"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Yes"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Audience (your registered client ID)"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"exp"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Yes"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Expiration timestamp (Unix epoch)"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"iat"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Yes"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Issued at timestamp (Unix epoch)"},"children":[]}]}]}]}]}]},{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"auth/authcontroller_createtoken/request/provider-requirements","deepLinkHash":"/auth/authcontroller_createtoken#auth/authcontroller_createtoken/request/provider-requirements"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Provider Requirements"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Your identity provider must expose public keys via "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"one of"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":":"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":true,"marker":"."},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{issuer}/.well-known/jwks.json"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (JWKS endpoint)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{issuer}/.well-known/openid-configuration"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (OIDC discovery with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"jwks_uri"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"auth/authcontroller_createtoken/request/verification-flow","deepLinkHash":"/auth/authcontroller_createtoken#auth/authcontroller_createtoken/request/verification-flow"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Verification Flow"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":true,"marker":"."},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"PERS extracts "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"iss"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" claim from JWT"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Fetches JWKS from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{issuer}/.well-known/jwks.json"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Matches "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"kid"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header to find signing public key"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Verifies signature using matched key"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Validates "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"exp"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"iat"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"aud"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" claims"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Issues PERS access/refresh tokens on success"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"auth/authcontroller_createtoken/request/pers-jwks-(for-verifying-our-tokens)","deepLinkHash":"/auth/authcontroller_createtoken#auth/authcontroller_createtoken/request/pers-jwks-(for-verifying-our-tokens)"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"PERS JWKS (For verifying our tokens)"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"JWKS: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"https://api.pers.ninja/.well-known/jwks.json"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Discovery: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"https://api.pers.ninja/.well-known/openid-configuration"},"children":[]}]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/SessionAuthRequestDTO"}},"schemaId":"components/schemas/SessionAuthRequestDTO","pointer":"/paths/~1auth~1token/post/requestBody","description":"Authentication request with token and type. authType defaults to \"user\" if not specified."}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/auth/token","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/SessionAuthRequestDTO"}},"responseCodes":["200","201","400","401"],"pointer":"/auth/token","href":"auth/authcontroller_createtoken","openApiOperationId":"AuthController_createToken","summary":"Create authentication token"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/SessionAuthRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/SessionAuthRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Token created successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/SessionAuthResponseDTO"}},"schemaId":"components/schemas/SessionAuthResponseDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/SessionAuthContextResponseDTO"}},"schemaId":"components/schemas/SessionAuthContextResponseDTO"},{"code":"400","description":"Malformed request or missing authentication data"},{"code":"401","description":"Invalid credentials or authentication context"}],"pointer":"/paths/~1auth~1token/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/SessionAuthResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/SessionAuthResponseDTO"}}},{"code":"201","schemaId":"components/schemas/SessionAuthContextResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/SessionAuthContextResponseDTO"}}},{"code":"400"},{"code":"401"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/auth/authcontroller_createtoken"}],"panels":[]}]},"httpPath":"/auth/token"},{"label":"Refresh authentication tokens","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/auth/authcontroller_refresh","routeSlug":"/swagger/auth/authcontroller_refresh","metadata":{"seo":{"title":"Refresh authentication tokens","description":"Refresh access tokens using valid refresh token"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"AuthController_refresh","name":"Refresh authentication tokens","isWebhook":false,"pointer":"/paths/~1auth~1refresh/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Refresh authentication tokens","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Refresh access tokens using valid refresh token"},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/RefreshTokenRequestDTO"}},"schemaId":"components/schemas/RefreshTokenRequestDTO","pointer":"/paths/~1auth~1refresh/post/requestBody","description":"Refresh token request"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/auth/refresh","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/RefreshTokenRequestDTO"}},"responseCodes":["200","201","401"],"pointer":"/auth/refresh","href":"auth/authcontroller_refresh","openApiOperationId":"AuthController_refresh","summary":"Refresh authentication tokens"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/RefreshTokenRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/RefreshTokenRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"New access token created","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/SessionAuthResponseDTO"}},"schemaId":"components/schemas/SessionAuthResponseDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/SessionAuthResponseDTO"}},"schemaId":"components/schemas/SessionAuthResponseDTO"},{"code":"401","description":"Invalid or expired refresh token"}],"pointer":"/paths/~1auth~1refresh/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/SessionAuthResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/SessionAuthResponseDTO"}}},{"code":"201","schemaId":"components/schemas/SessionAuthResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/SessionAuthResponseDTO"}}},{"code":"401"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/auth/authcontroller_refresh"}],"panels":[]}]},"httpPath":"/auth/refresh"},{"label":"Verify JWT token","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/auth/authcontroller_verifytoken","routeSlug":"/swagger/auth/authcontroller_verifytoken","metadata":{"seo":{"title":"Verify JWT token","description":"Verify JWT tokens with automatic issuer detection:"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"AuthController_verifyToken","name":"Verify JWT token","isWebhook":false,"pointer":"/paths/~1auth~1verify/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Verify JWT token","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Verify JWT tokens with automatic issuer detection:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Decodes JWT to extract issuer claim"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"PERS tokens: Verified internally"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"External tokens: Future support planned"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Standards-compliant JWT verification"},"children":[]}]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TokenVerificationRequestDTO"}},"schemaId":"components/schemas/TokenVerificationRequestDTO","pointer":"/paths/~1auth~1verify/post/requestBody","description":"Token verification request"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/auth/verify","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/TokenVerificationRequestDTO"}},"responseCodes":["200","400"],"pointer":"/auth/verify","href":"auth/authcontroller_verifytoken","openApiOperationId":"AuthController_verifyToken","summary":"Verify JWT token"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/TokenVerificationRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TokenVerificationRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Token verification completed (check valid field for result)","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AuthTokenVerificationDTO"}},"schemaId":"components/schemas/AuthTokenVerificationDTO"},{"code":"400","description":"Invalid request format or missing token"}],"pointer":"/paths/~1auth~1verify/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/AuthTokenVerificationDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AuthTokenVerificationDTO"}}},{"code":"400"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/auth/authcontroller_verifytoken"}],"panels":[]}]},"httpPath":"/auth/verify"},{"label":"Send magic link email","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/auth/authcontroller_sendmagiclink","routeSlug":"/swagger/auth/authcontroller_sendmagiclink","metadata":{"seo":{"title":"Send magic link email","description":"Send a magic link email for passwordless authentication. Rate limited to 3 requests per email per 10 minutes."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"AuthController_sendMagicLink","name":"Send magic link email","isWebhook":false,"pointer":"/paths/~1auth~1magic-link~1send/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Send magic link email","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Send a magic link email for passwordless authentication. Rate limited to 3 requests per email per 10 minutes."},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/SendMagicLinkRequestDTO"}},"schemaId":"components/schemas/SendMagicLinkRequestDTO","pointer":"/paths/~1auth~1magic-link~1send/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/auth/magic-link/send","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/SendMagicLinkRequestDTO"}},"responseCodes":["200","429"],"pointer":"/auth/magic-link/send","href":"auth/authcontroller_sendmagiclink","openApiOperationId":"AuthController_sendMagicLink","summary":"Send magic link email"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/SendMagicLinkRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/SendMagicLinkRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Magic link sent successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/SendMagicLinkResponseDTO"}},"schemaId":"components/schemas/SendMagicLinkResponseDTO"},{"code":"429","description":"Rate limit exceeded"}],"pointer":"/paths/~1auth~1magic-link~1send/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/SendMagicLinkResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/SendMagicLinkResponseDTO"}}},{"code":"429"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/auth/authcontroller_sendmagiclink"}],"panels":[]}]},"httpPath":"/auth/magic-link/send"}],"content":{"contentType":"group","meta":{"name":"Auth"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Auth","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/auth/token","summary":"Create authentication token","prefix":{"name":"post","color":"post"},"badges":[],"link":"/auth/authcontroller_createtoken","deprecated":false},{"title":"/auth/refresh","summary":"Refresh authentication tokens","prefix":{"name":"post","color":"post"},"badges":[],"link":"/auth/authcontroller_refresh","deprecated":false},{"title":"/auth/verify","summary":"Verify JWT token","prefix":{"name":"post","color":"post"},"badges":[],"link":"/auth/authcontroller_verifytoken","deprecated":false},{"title":"/auth/magic-link/send","summary":"Send magic link email","prefix":{"name":"post","color":"post"},"badges":[],"link":"/auth/authcontroller_sendmagiclink","deprecated":false}]}]}]}]}},{"type":"group","label":"Root","link":"/swagger/root","routeSlug":"/swagger/root","items":[{"type":"link","label":"Platform Infrastructure","link":"/swagger/root/platform-infrastructure","routeSlug":"/swagger/root/platform-infrastructure","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Platform Infrastructure"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"root/platform-infrastructure"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Platform Infrastructure"},"children":[]}]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"div","attrs":{"style":{"fontSize":"14px","lineHeight":"1.5"}}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"\n      Core platform infrastructure endpoints including health checks, system status, and platform configuration. Provides essential system-level operations and monitoring.\n    "},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Infrastructure Operations:"},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Health Monitoring:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" System health checks and status reporting\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Platform Status:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Real-time platform operational status\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Configuration Access:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" System configuration and environment information\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Diagnostic Tools:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Platform diagnostics and troubleshooting endpoints\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"System Integration:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Core infrastructure for system-level operations"},"children":[]}]}],"panels":[]}]}},{"label":"RootController_get","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/root/rootcontroller_get","routeSlug":"/swagger/root/rootcontroller_get","metadata":{"seo":{"title":"RootController_get"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RootController_get","name":"RootController_get","isWebhook":false,"pointer":"/paths/~1/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"RootController_get","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"empty-message","label":"No request data","labelTranslationKey":"noRequestData"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[],"responseCodes":["200"],"pointer":"/","href":"root/rootcontroller_get","openApiOperationId":"RootController_get"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200"}],"pointer":"/paths/~1/get/responses"}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/root/rootcontroller_get"}],"panels":[]}]},"httpPath":"/"},{"label":"RootController_getCurrentTime","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/root/rootcontroller_getcurrenttime","routeSlug":"/swagger/root/rootcontroller_getcurrenttime","metadata":{"seo":{"title":"RootController_getCurrentTime"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RootController_getCurrentTime","name":"RootController_getCurrentTime","isWebhook":false,"pointer":"/paths/~1healthcheck/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"RootController_getCurrentTime","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/healthcheck","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/healthcheck","href":"root/rootcontroller_getcurrenttime","openApiOperationId":"RootController_getCurrentTime"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200"}],"pointer":"/paths/~1healthcheck/get/responses"}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/root/rootcontroller_getcurrenttime"}],"panels":[]}]},"httpPath":"/healthcheck"},{"label":"Check if tenant system api key is valid","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/root/rootcontroller_getsystem","routeSlug":"/swagger/root/rootcontroller_getsystem","metadata":{"seo":{"title":"Check if tenant system api key is valid","description":"Check if tenant system api key is valid"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RootController_getSystem","name":"Check if tenant system api key is valid","isWebhook":false,"pointer":"/paths/~1system/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Check if tenant system api key is valid","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Check if tenant system api key is valid"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/system","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/system","href":"root/rootcontroller_getsystem","openApiOperationId":"RootController_getSystem","summary":"Check if tenant system api key is valid"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200"}],"pointer":"/paths/~1system/get/responses"}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/root/rootcontroller_getsystem"}],"panels":[]}]},"httpPath":"/system"},{"label":"ADMIN: Check if admin","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/root/rootcontroller_getadmin","routeSlug":"/swagger/root/rootcontroller_getadmin","metadata":{"seo":{"title":"ADMIN: Check if admin","description":"Get if admin"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RootController_getAdmin","name":"ADMIN: Check if admin","isWebhook":false,"pointer":"/paths/~1admin/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"ADMIN: Check if admin","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Get if admin"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/admin","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/admin","href":"root/rootcontroller_getadmin","openApiOperationId":"RootController_getAdmin","summary":"ADMIN: Check if admin"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200"}],"pointer":"/paths/~1admin/get/responses"}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/root/rootcontroller_getadmin"}],"panels":[]}]},"httpPath":"/admin"},{"label":"RootController_testGeo","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/root/rootcontroller_testgeo","routeSlug":"/swagger/root/rootcontroller_testgeo","metadata":{"seo":{"title":"RootController_testGeo"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RootController_testGeo","name":"RootController_testGeo","isWebhook":false,"pointer":"/paths/~1geolocation/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"RootController_testGeo","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/geolocation","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/geolocation","href":"root/rootcontroller_testgeo","openApiOperationId":"RootController_testGeo"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_80"}},"schemaId":"schema_80"}],"pointer":"/paths/~1geolocation/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_80","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_80"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/root/rootcontroller_testgeo"}],"panels":[]}]},"httpPath":"/geolocation"}],"content":{"contentType":"group","meta":{"name":"Root"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Root","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/","summary":"RootController_get","prefix":{"name":"get","color":"get"},"badges":[],"link":"/root/rootcontroller_get","deprecated":false},{"title":"/healthcheck","summary":"RootController_getCurrentTime","prefix":{"name":"get","color":"get"},"badges":[],"link":"/root/rootcontroller_getcurrenttime","deprecated":false},{"title":"/system","summary":"Check if tenant system api key is valid","prefix":{"name":"get","color":"get"},"badges":[],"link":"/root/rootcontroller_getsystem","deprecated":false},{"title":"/admin","summary":"ADMIN: Check if admin","prefix":{"name":"get","color":"get"},"badges":[],"link":"/root/rootcontroller_getadmin","deprecated":false},{"title":"/geolocation","summary":"RootController_testGeo","prefix":{"name":"get","color":"get"},"badges":[],"link":"/root/rootcontroller_testgeo","deprecated":false}]}]}]}]}},{"type":"group","label":"Well-known","link":"/swagger/well-known","routeSlug":"/swagger/well-known","items":[{"type":"link","label":"Security Infrastructure","link":"/swagger/well-known/security-infrastructure","routeSlug":"/swagger/well-known/security-infrastructure","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Security Infrastructure"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"well-known/security-infrastructure"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Security Infrastructure"},"children":[]}]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"div","attrs":{"style":{"fontSize":"14px","lineHeight":"1.5"}}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"\n      JSON Web Key Set (JWKS) endpoints for JWT token verification. Provides public keys for secure authentication token validation across the platform ecosystem.\n    "},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Security Features:"},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"JWKS Endpoints:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Standard JSON Web Key Set for JWT verification\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Public Key Distribution:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Secure distribution of verification keys\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Token Validation:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Enable third-party JWT token verification\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Security Standards:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Compliance with OAuth 2.0 and OpenID Connect\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Cross-Platform Auth:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Support for distributed authentication verification"},"children":[]}]}],"panels":[]}]}},{"label":"Get JSON Web Key Set (JWKS)","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/well-known/jwkscontroller_getjwks","routeSlug":"/swagger/well-known/jwkscontroller_getjwks","metadata":{"seo":{"title":"Get JSON Web Key Set (JWKS)","description":"Get JSON Web Key Set (JWKS)"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"JwksController_getJwks","name":"Get JSON Web Key Set (JWKS)","isWebhook":false,"pointer":"/paths/~1jwks.json/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get JSON Web Key Set (JWKS)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/jwks.json","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/jwks.json","href":"well-known/jwkscontroller_getjwks","openApiOperationId":"JwksController_getJwks","summary":"Get JSON Web Key Set (JWKS)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200"}],"pointer":"/paths/~1jwks.json/get/responses"}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/well-known/jwkscontroller_getjwks"}],"panels":[]}]},"httpPath":"/jwks.json"},{"label":"Get OIDC Discovery Document","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/well-known/jwkscontroller_getopenidconfiguration","routeSlug":"/swagger/well-known/jwkscontroller_getopenidconfiguration","metadata":{"seo":{"title":"Get OIDC Discovery Document","description":"Get OIDC Discovery Document"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"JwksController_getOpenIdConfiguration","name":"Get OIDC Discovery Document","isWebhook":false,"pointer":"/paths/~1openid-configuration/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get OIDC Discovery Document","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/openid-configuration","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/openid-configuration","href":"well-known/jwkscontroller_getopenidconfiguration","openApiOperationId":"JwksController_getOpenIdConfiguration","summary":"Get OIDC Discovery Document"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_80"}},"schemaId":"schema_80"}],"pointer":"/paths/~1openid-configuration/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_80","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_80"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/well-known/jwkscontroller_getopenidconfiguration"}],"panels":[]}]},"httpPath":"/openid-configuration"}],"content":{"contentType":"group","meta":{"name":"Well-known"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Well-known","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/jwks.json","summary":"Get JSON Web Key Set (JWKS)","prefix":{"name":"get","color":"get"},"badges":[],"link":"/well-known/jwkscontroller_getjwks","deprecated":false},{"title":"/openid-configuration","summary":"Get OIDC Discovery Document","prefix":{"name":"get","color":"get"},"badges":[],"link":"/well-known/jwkscontroller_getopenidconfiguration","deprecated":false}]}]}]}]}},{"type":"group","label":"Webhooks","link":"/swagger/webhooks","routeSlug":"/swagger/webhooks","items":[{"type":"link","label":"Webhook Integration System","link":"/swagger/webhooks/webhook-integration-system","routeSlug":"/swagger/webhooks/webhook-integration-system","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Webhook Integration System"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"webhooks/webhook-integration-system"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Webhook Integration System"},"children":[]}]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"div","attrs":{"style":{"fontSize":"14px","lineHeight":"1.5"}}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"\n      Webhook proxy and integration system for external service notifications. Handles incoming webhook events and integrates with external platforms for real-time data synchronization.\n    "},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Webhook Features:"},"children":[]}]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Webhook Proxy:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Secure proxy for external webhook integrations\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Event Processing:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Real-time processing of external service events\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Integration Management:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Manage connections with external platforms\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Security Validation:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Webhook signature verification and authentication\n    "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","attributes":{"content":"• "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","attributes":{"name":"b","attrs":{}},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Event Routing:"},"children":[]}]},{"$$mdtype":"Node","type":"text","attributes":{"content":" Intelligent routing of webhook events to appropriate handlers"},"children":[]}]}],"panels":[]}]}},{"label":"Create webhook","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/webhooks/webhookcontroller_create","routeSlug":"/swagger/webhooks/webhookcontroller_create","metadata":{"seo":{"title":"Create webhook","description":"Create webhook"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"WebhookController_create","name":"Create webhook","isWebhook":false,"pointer":"/paths/~1hooks/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create webhook","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/WebhookCreateRequestDTO"}},"schemaId":"components/schemas/WebhookCreateRequestDTO","pointer":"/paths/~1hooks/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/hooks","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/WebhookCreateRequestDTO"}},"responseCodes":["201"],"pointer":"/hooks","href":"webhooks/webhookcontroller_create","openApiOperationId":"WebhookController_create","summary":"Create webhook"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/WebhookCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/WebhookCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"201","description":"Webhook created successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookDTO"}},"schemaId":"components/schemas/WebhookDTO"}],"pointer":"/paths/~1hooks/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"201","schemaId":"components/schemas/WebhookDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/webhooks/webhookcontroller_create"}],"panels":[]}]},"httpPath":"/hooks"},{"label":"List webhooks","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/webhooks/webhookcontroller_list","routeSlug":"/swagger/webhooks/webhookcontroller_list","metadata":{"seo":{"title":"List webhooks","description":"List webhooks"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"WebhookController_list","name":"List webhooks","isWebhook":false,"pointer":"/paths/~1hooks/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List webhooks","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"page","in":"query","schemaId":"schema_67","description":"Page number (default: 1)"},{"name":"limit","in":"query","schemaId":"schema_67","description":"Items per page (default: 50)"}],"pointer":"/paths/~1hooks/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/hooks","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"page","in":"query","required":false,"schemaId":"schema_67"},{"name":"limit","in":"query","required":false,"schemaId":"schema_67"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/hooks","href":"webhooks/webhookcontroller_list","openApiOperationId":"WebhookController_list","summary":"List webhooks"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Paginated list of webhooks","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PaginatedResponseDTO"}},"schemaId":"components/schemas/PaginatedResponseDTO"}],"pointer":"/paths/~1hooks/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PaginatedResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PaginatedResponseDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/webhooks/webhookcontroller_list"}],"panels":[]}]},"httpPath":"/hooks"},{"label":"Get webhook executions","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/webhooks/webhookcontroller_getexecutions","routeSlug":"/swagger/webhooks/webhookcontroller_getexecutions","metadata":{"seo":{"title":"Get webhook executions","description":"Get webhook execution history with filtering options."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"WebhookController_getExecutions","name":"Get webhook executions","isWebhook":false,"pointer":"/paths/~1hooks~1executions/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get webhook executions","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Get webhook execution history with filtering options."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Filters:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"hookId: Filter by specific webhook (optional - omit for all webhooks)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"status: Filter by execution status (success, failed, pending)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"dateFrom: Filter executions after this date (ISO 8601)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"dateTo: Filter executions before this date (ISO 8601)"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Use pagination parameters (page & limit) for optimal performance."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"hookId","in":"query","schemaId":"schema_67","description":"Filter by specific webhook ID"},{"name":"status","in":"query","schemaId":"schema_67","description":"Filter by execution status (success, failed, pending)"},{"name":"dateFrom","in":"query","schemaId":"schema_67","description":"Filter executions after this date (ISO 8601)"},{"name":"dateTo","in":"query","schemaId":"schema_67","description":"Filter executions before this date (ISO 8601)"},{"name":"page","in":"query","schemaId":"schema_67","description":"Page number (default: 1)"},{"name":"limit","in":"query","schemaId":"schema_67","description":"Items per page (default: 50)"}],"pointer":"/paths/~1hooks~1executions/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/hooks/executions","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"hookId","in":"query","required":false,"schemaId":"schema_67"},{"name":"status","in":"query","required":false,"schemaId":"schema_67"},{"name":"dateFrom","in":"query","required":false,"schemaId":"schema_67"},{"name":"dateTo","in":"query","required":false,"schemaId":"schema_67"},{"name":"page","in":"query","required":false,"schemaId":"schema_67"},{"name":"limit","in":"query","required":false,"schemaId":"schema_67"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/hooks/executions","href":"webhooks/webhookcontroller_getexecutions","openApiOperationId":"WebhookController_getExecutions","summary":"Get webhook executions"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Paginated list of webhook executions","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PaginatedResponseDTO"}},"schemaId":"components/schemas/PaginatedResponseDTO"}],"pointer":"/paths/~1hooks~1executions/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PaginatedResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PaginatedResponseDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/webhooks/webhookcontroller_getexecutions"}],"panels":[]}]},"httpPath":"/hooks/executions"},{"label":"Get webhook","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/webhooks/webhookcontroller_get","routeSlug":"/swagger/webhooks/webhookcontroller_get","metadata":{"seo":{"title":"Get webhook","description":"Get webhook"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"WebhookController_get","name":"Get webhook","isWebhook":false,"pointer":"/paths/~1hooks~1{hookId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get webhook","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"hookId","in":"path","schemaId":"schema_67","description":"Webhook ID","required":true}],"pointer":"/paths/~1hooks~1{hookId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/hooks/{hookId}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"hookId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/hooks/{hookId}","href":"webhooks/webhookcontroller_get","openApiOperationId":"WebhookController_get","summary":"Get webhook"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Webhook details","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookDTO"}},"schemaId":"components/schemas/WebhookDTO"}],"pointer":"/paths/~1hooks~1{hookId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/WebhookDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/webhooks/webhookcontroller_get"}],"panels":[]}]},"httpPath":"/hooks/{hookId}"},{"label":"Update webhook","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/webhooks/webhookcontroller_update","routeSlug":"/swagger/webhooks/webhookcontroller_update","metadata":{"seo":{"title":"Update webhook","description":"Update webhook"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"WebhookController_update","name":"Update webhook","isWebhook":false,"pointer":"/paths/~1hooks~1{hookId}/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update webhook","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"hookId","in":"path","schemaId":"schema_67","description":"Webhook ID","required":true}],"pointer":"/paths/~1hooks~1{hookId}/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/WebhookUpdateRequestDTO"}},"schemaId":"components/schemas/WebhookUpdateRequestDTO","pointer":"/paths/~1hooks~1{hookId}/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/hooks/{hookId}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"hookId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/WebhookUpdateRequestDTO"}},"responseCodes":["200"],"pointer":"/hooks/{hookId}","href":"webhooks/webhookcontroller_update","openApiOperationId":"WebhookController_update","summary":"Update webhook"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/WebhookUpdateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/WebhookUpdateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Webhook updated successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookDTO"}},"schemaId":"components/schemas/WebhookDTO"}],"pointer":"/paths/~1hooks~1{hookId}/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/WebhookDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/webhooks/webhookcontroller_update"}],"panels":[]}]},"httpPath":"/hooks/{hookId}"},{"label":"Delete webhook","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/webhooks/webhookcontroller_delete","routeSlug":"/swagger/webhooks/webhookcontroller_delete","metadata":{"seo":{"title":"Delete webhook","description":"Delete webhook"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"WebhookController_delete","name":"Delete webhook","isWebhook":false,"pointer":"/paths/~1hooks~1{hookId}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Delete webhook","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"hookId","in":"path","schemaId":"schema_67","description":"Webhook ID","required":true}],"pointer":"/paths/~1hooks~1{hookId}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/hooks/{hookId}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"hookId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/hooks/{hookId}","href":"webhooks/webhookcontroller_delete","openApiOperationId":"WebhookController_delete","summary":"Delete webhook"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Webhook deleted successfully"}],"pointer":"/paths/~1hooks~1{hookId}/delete/responses"}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/webhooks/webhookcontroller_delete"}],"panels":[]}]},"httpPath":"/hooks/{hookId}"}],"content":{"contentType":"group","meta":{"name":"Webhooks"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Webhooks","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/hooks","summary":"Create webhook","prefix":{"name":"post","color":"post"},"badges":[],"link":"/webhooks/webhookcontroller_create","deprecated":false},{"title":"/hooks","summary":"List webhooks","prefix":{"name":"get","color":"get"},"badges":[],"link":"/webhooks/webhookcontroller_list","deprecated":false},{"title":"/hooks/executions","summary":"Get webhook executions","prefix":{"name":"get","color":"get"},"badges":[],"link":"/webhooks/webhookcontroller_getexecutions","deprecated":false},{"title":"/hooks/{hookId}","summary":"Get webhook","prefix":{"name":"get","color":"get"},"badges":[],"link":"/webhooks/webhookcontroller_get","deprecated":false},{"title":"/hooks/{hookId}","summary":"Update webhook","prefix":{"name":"put","color":"put"},"badges":[],"link":"/webhooks/webhookcontroller_update","deprecated":false},{"title":"/hooks/{hookId}","summary":"Delete webhook","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/webhooks/webhookcontroller_delete","deprecated":false}]}]}]}]}},{"type":"group","label":"Trigger Sources","link":"/swagger/trigger-sources","routeSlug":"/swagger/trigger-sources","items":[{"label":"Create trigger source","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/trigger-sources/triggersourcescontroller_createtriggersource","routeSlug":"/swagger/trigger-sources/triggersourcescontroller_createtriggersource","metadata":{"seo":{"title":"Create trigger source","description":"Create a new trigger source (QR code, NFC tag, webhook, geofence, etc.). Businesses create trigger sources owned by themselves; tenant admins can create shared (tenant-level) trigger sources."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TriggerSourcesController_createTriggerSource","name":"Create trigger source","isWebhook":false,"pointer":"/paths/~1trigger-sources/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create trigger source","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Create a new trigger source (QR code, NFC tag, webhook, geofence, etc.). Businesses create trigger sources owned by themselves; tenant admins can create shared (tenant-level) trigger sources."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TriggerSourceCreateRequestDTO"}},"schemaId":"components/schemas/TriggerSourceCreateRequestDTO","pointer":"/paths/~1trigger-sources/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/trigger-sources","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/TriggerSourceCreateRequestDTO"}},"responseCodes":["201","400","409"],"pointer":"/trigger-sources","href":"trigger-sources/triggersourcescontroller_createtriggersource","openApiOperationId":"TriggerSourcesController_createTriggerSource","summary":"Create trigger source"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/TriggerSourceCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TriggerSourceCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"201","description":"Trigger source created successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TriggerSourceDTO"}},"schemaId":"components/schemas/TriggerSourceDTO"},{"code":"400","description":"Invalid input data"},{"code":"409","description":"Trigger source already exists"}],"pointer":"/paths/~1trigger-sources/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"201","schemaId":"components/schemas/TriggerSourceDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TriggerSourceDTO"}}},{"code":"400"},{"code":"409"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/trigger-sources/triggersourcescontroller_createtriggersource"}],"panels":[]}]},"httpPath":"/trigger-sources"},{"label":"Get all trigger sources","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/trigger-sources/triggersourcescontroller_getalltriggersources","routeSlug":"/swagger/trigger-sources/triggersourcescontroller_getalltriggersources","metadata":{"seo":{"title":"Get all trigger sources","description":"Retrieve all trigger sources with optional filtering and pagination. Use pagination parameters (page & limit) for optimal performance. Legacy support: returns array without params (deprecated - will be removed in future)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TriggerSourcesController_getAllTriggerSources","name":"Get all trigger sources","isWebhook":false,"pointer":"/paths/~1trigger-sources/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get all trigger sources","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Retrieve all trigger sources with optional filtering and pagination. Use pagination parameters (page & limit) for optimal performance. Legacy support: returns array without params (deprecated - will be removed in future)."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"type","in":"query","schemaId":"schema_117","description":"Filter by trigger source type"},{"name":"businessId","in":"query","schemaId":"schema_67","description":"Filter by business ID"},{"name":"campaignId","in":"query","schemaId":"schema_67","description":"Filter by associated campaign ID"},{"name":"active","in":"query","schemaId":"schema_81","description":"Filter by active status"},{"name":"limit","in":"query","schemaId":"schema_68","description":"Items per page for pagination"},{"name":"page","in":"query","schemaId":"schema_68","description":"Page number for pagination (1-based)"},{"name":"sortBy","in":"query","schemaId":"schema_118","description":"Field to sort by"},{"name":"sortOrder","in":"query","schemaId":"schema_73","description":"Sort order"},{"name":"city","in":"query","schemaId":"schema_67","description":"Filter by city (case-insensitive)"},{"name":"countryCode","in":"query","schemaId":"schema_67","description":"Filter by country code (ISO 3166-1 alpha-2, e.g., QA, US)"},{"name":"country","in":"query","schemaId":"schema_67","description":"Filter by country name (case-insensitive)"},{"name":"neighborhood","in":"query","schemaId":"schema_67","description":"Filter by neighborhood (case-insensitive)"},{"name":"district","in":"query","schemaId":"schema_67","description":"Filter by district (case-insensitive)"}],"pointer":"/paths/~1trigger-sources/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/trigger-sources","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"type","in":"query","required":false,"schemaId":"schema_117"},{"name":"businessId","in":"query","required":false,"schemaId":"schema_67"},{"name":"campaignId","in":"query","required":false,"schemaId":"schema_67"},{"name":"active","in":"query","required":false,"schemaId":"schema_81"},{"name":"limit","in":"query","required":false,"schemaId":"schema_68"},{"name":"page","in":"query","required":false,"schemaId":"schema_68"},{"name":"sortBy","in":"query","required":false,"schemaId":"schema_118"},{"name":"sortOrder","in":"query","required":false,"schemaId":"schema_73"},{"name":"city","in":"query","required":false,"schemaId":"schema_67"},{"name":"countryCode","in":"query","required":false,"schemaId":"schema_67"},{"name":"country","in":"query","required":false,"schemaId":"schema_67"},{"name":"neighborhood","in":"query","required":false,"schemaId":"schema_67"},{"name":"district","in":"query","required":false,"schemaId":"schema_67"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/trigger-sources","href":"trigger-sources/triggersourcescontroller_getalltriggersources","openApiOperationId":"TriggerSourcesController_getAllTriggerSources","summary":"Get all trigger sources"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"List of trigger sources","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119"}},"schemaId":"schema_119"}],"pointer":"/paths/~1trigger-sources/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_119","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/trigger-sources/triggersourcescontroller_getalltriggersources"}],"panels":[]}]},"httpPath":"/trigger-sources"},{"label":"Get trigger source by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/trigger-sources/triggersourcescontroller_gettriggersource","routeSlug":"/swagger/trigger-sources/triggersourcescontroller_gettriggersource","metadata":{"seo":{"title":"Get trigger source by ID","description":"Retrieve a specific trigger source with its configuration"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TriggerSourcesController_getTriggerSource","name":"Get trigger source by ID","isWebhook":false,"pointer":"/paths/~1trigger-sources~1{id}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get trigger source by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve a specific trigger source with its configuration"},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","description":"Trigger source ID","required":true}],"pointer":"/paths/~1trigger-sources~1{id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/trigger-sources/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200","404"],"pointer":"/trigger-sources/{id}","href":"trigger-sources/triggersourcescontroller_gettriggersource","openApiOperationId":"TriggerSourcesController_getTriggerSource","summary":"Get trigger source by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Trigger source retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TriggerSourceDTO"}},"schemaId":"components/schemas/TriggerSourceDTO"},{"code":"404","description":"Trigger source not found"}],"pointer":"/paths/~1trigger-sources~1{id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TriggerSourceDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TriggerSourceDTO"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/trigger-sources/triggersourcescontroller_gettriggersource"}],"panels":[]}]},"httpPath":"/trigger-sources/{id}"},{"label":"Update trigger source","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/trigger-sources/triggersourcescontroller_updatetriggersource","routeSlug":"/swagger/trigger-sources/triggersourcescontroller_updatetriggersource","metadata":{"seo":{"title":"Update trigger source","description":"Update an existing trigger source configuration. Businesses may only update trigger sources they own."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TriggerSourcesController_updateTriggerSource","name":"Update trigger source","isWebhook":false,"pointer":"/paths/~1trigger-sources~1{id}/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update trigger source","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Update an existing trigger source configuration. Businesses may only update trigger sources they own."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","description":"Trigger source ID","required":true}],"pointer":"/paths/~1trigger-sources~1{id}/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TriggerSourceCreateRequestDTO"}},"schemaId":"components/schemas/TriggerSourceCreateRequestDTO","pointer":"/paths/~1trigger-sources~1{id}/put/requestBody","description":"Trigger source update data"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/trigger-sources/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/TriggerSourceCreateRequestDTO"}},"responseCodes":["200","400","404"],"pointer":"/trigger-sources/{id}","href":"trigger-sources/triggersourcescontroller_updatetriggersource","openApiOperationId":"TriggerSourcesController_updateTriggerSource","summary":"Update trigger source"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/TriggerSourceCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TriggerSourceCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Trigger source updated successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TriggerSourceDTO"}},"schemaId":"components/schemas/TriggerSourceDTO"},{"code":"400","description":"Invalid input data"},{"code":"404","description":"Trigger source not found"}],"pointer":"/paths/~1trigger-sources~1{id}/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TriggerSourceDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TriggerSourceDTO"}}},{"code":"400"},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/trigger-sources/triggersourcescontroller_updatetriggersource"}],"panels":[]}]},"httpPath":"/trigger-sources/{id}"},{"label":"Delete trigger source","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/trigger-sources/triggersourcescontroller_deletetriggersource","routeSlug":"/swagger/trigger-sources/triggersourcescontroller_deletetriggersource","metadata":{"seo":{"title":"Delete trigger source","description":"Soft delete a trigger source. Businesses may only delete trigger sources they own."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"TriggerSourcesController_deleteTriggerSource","name":"Delete trigger source","isWebhook":false,"pointer":"/paths/~1trigger-sources~1{id}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Delete trigger source","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Soft delete a trigger source. Businesses may only delete trigger sources they own."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","description":"Trigger source ID","required":true}],"pointer":"/paths/~1trigger-sources~1{id}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/trigger-sources/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["204","404"],"pointer":"/trigger-sources/{id}","href":"trigger-sources/triggersourcescontroller_deletetriggersource","openApiOperationId":"TriggerSourcesController_deleteTriggerSource","summary":"Delete trigger source"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"204","description":"Trigger source deleted successfully"},{"code":"404","description":"Trigger source not found"}],"pointer":"/paths/~1trigger-sources~1{id}/delete/responses"}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/trigger-sources/triggersourcescontroller_deletetriggersource"}],"panels":[]}]},"httpPath":"/trigger-sources/{id}"}],"content":{"contentType":"group","meta":{"name":"Trigger Sources"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Trigger Sources","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/trigger-sources","summary":"Create trigger source","prefix":{"name":"post","color":"post"},"badges":[],"link":"/trigger-sources/triggersourcescontroller_createtriggersource","deprecated":false},{"title":"/trigger-sources","summary":"Get all trigger sources","prefix":{"name":"get","color":"get"},"badges":[],"link":"/trigger-sources/triggersourcescontroller_getalltriggersources","deprecated":false},{"title":"/trigger-sources/{id}","summary":"Get trigger source by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/trigger-sources/triggersourcescontroller_gettriggersource","deprecated":false},{"title":"/trigger-sources/{id}","summary":"Update trigger source","prefix":{"name":"put","color":"put"},"badges":[],"link":"/trigger-sources/triggersourcescontroller_updatetriggersource","deprecated":false},{"title":"/trigger-sources/{id}","summary":"Delete trigger source","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/trigger-sources/triggersourcescontroller_deletetriggersource","deprecated":false}]}]}]}]}},{"type":"group","label":"Business Types","link":"/swagger/business-types","routeSlug":"/swagger/business-types","items":[{"label":"Create a new business type","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/business-types/businesstypescontroller_createbusinesstype","routeSlug":"/swagger/business-types/businesstypescontroller_createbusinesstype","metadata":{"seo":{"title":"Create a new business type","description":"Create a new business type"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"BusinessTypesController_createBusinessType","name":"Create a new business type","isWebhook":false,"pointer":"/paths/~1businesses~1types/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create a new business type","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Create a new business type"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/BusinessTypeCreateRequestDTO"}},"schemaId":"components/schemas/BusinessTypeCreateRequestDTO","pointer":"/paths/~1businesses~1types/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/businesses/types","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/BusinessTypeCreateRequestDTO"}},"responseCodes":["200","201"],"pointer":"/businesses/types","href":"business-types/businesstypescontroller_createbusinesstype","openApiOperationId":"BusinessTypesController_createBusinessType","summary":"Create a new business type"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/BusinessTypeCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/BusinessTypeCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Business type created","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessTypeDTO"}},"schemaId":"components/schemas/BusinessTypeDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessTypeDTO"}},"schemaId":"components/schemas/BusinessTypeDTO"}],"pointer":"/paths/~1businesses~1types/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/BusinessTypeDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessTypeDTO"}}},{"code":"201","schemaId":"components/schemas/BusinessTypeDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessTypeDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/business-types/businesstypescontroller_createbusinesstype"}],"panels":[]}]},"httpPath":"/businesses/types"},{"label":"Update a business type","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/business-types/businesstypescontroller_updatebusinesstype","routeSlug":"/swagger/business-types/businesstypescontroller_updatebusinesstype","metadata":{"seo":{"title":"Update a business type","description":"Update a business type"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"BusinessTypesController_updateBusinessType","name":"Update a business type","isWebhook":false,"pointer":"/paths/~1businesses~1types/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update a business type","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Update a business type"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/BusinessTypeDTO"}},"schemaId":"components/schemas/BusinessTypeDTO","pointer":"/paths/~1businesses~1types/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/businesses/types","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/BusinessTypeDTO"}},"responseCodes":["200"],"pointer":"/businesses/types","href":"business-types/businesstypescontroller_updatebusinesstype","openApiOperationId":"BusinessTypesController_updateBusinessType","summary":"Update a business type"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/BusinessTypeDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/BusinessTypeDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Business type updated","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessTypeDTO"}},"schemaId":"components/schemas/BusinessTypeDTO"}],"pointer":"/paths/~1businesses~1types/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/BusinessTypeDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessTypeDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/business-types/businesstypescontroller_updatebusinesstype"}],"panels":[]}]},"httpPath":"/businesses/types"},{"label":"Get all business types","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/business-types/businesstypescontroller_getallbusinesstypes","routeSlug":"/swagger/business-types/businesstypescontroller_getallbusinesstypes","metadata":{"seo":{"title":"Get all business types","description":"Get all business types. Use pagination parameters (page & limit) for optimal performance. Legacy support: returns array without params (deprecated - will be removed in future)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"BusinessTypesController_getAllBusinessTypes","name":"Get all business types","isWebhook":false,"pointer":"/paths/~1businesses~1types/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get all business types","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Get all business types. Use pagination parameters (page & limit) for optimal performance. Legacy support: returns array without params (deprecated - will be removed in future)."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"page","in":"query","schemaId":"schema_68","description":"Page number (1-based)"},{"name":"limit","in":"query","schemaId":"schema_68","description":"Items per page"}],"pointer":"/paths/~1businesses~1types/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/businesses/types","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"page","in":"query","required":false,"schemaId":"schema_68"},{"name":"limit","in":"query","required":false,"schemaId":"schema_68"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/businesses/types","href":"business-types/businesstypescontroller_getallbusinesstypes","openApiOperationId":"BusinessTypesController_getAllBusinessTypes","summary":"Get all business types"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Business types found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_120"}},"schemaId":"schema_120"}],"pointer":"/paths/~1businesses~1types/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_120","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_120"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/business-types/businesstypescontroller_getallbusinesstypes"}],"panels":[]}]},"httpPath":"/businesses/types"},{"label":"Delete a business type","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/business-types/businesstypescontroller_deletebusinesstype","routeSlug":"/swagger/business-types/businesstypescontroller_deletebusinesstype","metadata":{"seo":{"title":"Delete a business type","description":"Delete a business type"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"BusinessTypesController_deleteBusinessType","name":"Delete a business type","isWebhook":false,"pointer":"/paths/~1businesses~1types~1{id}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Delete a business type","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Delete a business type"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1businesses~1types~1{id}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/businesses/types/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/businesses/types/{id}","href":"business-types/businesstypescontroller_deletebusinesstype","openApiOperationId":"BusinessTypesController_deleteBusinessType","summary":"Delete a business type"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Business type deleted","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_81"}},"schemaId":"schema_81"}],"pointer":"/paths/~1businesses~1types~1{id}/delete/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_81","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_81"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/business-types/businesstypescontroller_deletebusinesstype"}],"panels":[]}]},"httpPath":"/businesses/types/{id}"}],"content":{"contentType":"group","meta":{"name":"Business Types"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Business Types","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/businesses/types","summary":"Create a new business type","prefix":{"name":"post","color":"post"},"badges":[],"link":"/business-types/businesstypescontroller_createbusinesstype","deprecated":false},{"title":"/businesses/types","summary":"Update a business type","prefix":{"name":"put","color":"put"},"badges":[],"link":"/business-types/businesstypescontroller_updatebusinesstype","deprecated":false},{"title":"/businesses/types","summary":"Get all business types","prefix":{"name":"get","color":"get"},"badges":[],"link":"/business-types/businesstypescontroller_getallbusinesstypes","deprecated":false},{"title":"/businesses/types/{id}","summary":"Delete a business type","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/business-types/businesstypescontroller_deletebusinesstype","deprecated":false}]}]}]}]}},{"type":"group","label":"Redemption Types","link":"/swagger/redemption-types","routeSlug":"/swagger/redemption-types","items":[{"label":"Get redemption types","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/redemption-types/redemptiontypescontroller_getredemptiontypes","routeSlug":"/swagger/redemption-types/redemptiontypescontroller_getredemptiontypes","metadata":{"seo":{"title":"Get redemption types","description":"Get all available redemption types for client reference. Requires valid project API key. Use pagination parameters (page & limit) for optimal performance. Legacy support: returns array without params (deprecated - will be removed in future)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RedemptionTypesController_getRedemptionTypes","name":"Get redemption types","isWebhook":false,"pointer":"/paths/~1redemptions~1types/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get redemption types","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Get all available redemption types for client reference. Requires valid project API key. Use pagination parameters (page & limit) for optimal performance. Legacy support: returns array without params (deprecated - will be removed in future)."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"page","in":"query","schemaId":"schema_67","description":"Page number for pagination (1-based)"},{"name":"limit","in":"query","schemaId":"schema_67","description":"Number of items per page"}],"pointer":"/paths/~1redemptions~1types/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/redemptions/types","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"page","in":"query","required":false,"schemaId":"schema_67"},{"name":"limit","in":"query","required":false,"schemaId":"schema_67"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/redemptions/types","href":"redemption-types/redemptiontypescontroller_getredemptiontypes","openApiOperationId":"RedemptionTypesController_getRedemptionTypes","summary":"Get redemption types"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Redemption types retrieved","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_121"}},"schemaId":"schema_121"}],"pointer":"/paths/~1redemptions~1types/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_121","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_121"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/redemption-types/redemptiontypescontroller_getredemptiontypes"}],"panels":[]}]},"httpPath":"/redemptions/types"},{"label":"Create redemption type (Admin)","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/redemption-types/redemptiontypescontroller_createredemptiontype","routeSlug":"/swagger/redemption-types/redemptiontypescontroller_createredemptiontype","metadata":{"seo":{"title":"Create redemption type (Admin)","description":"Create a new redemption type for system configuration. Replaces POST /redemption/admin/type"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RedemptionTypesController_createRedemptionType","name":"Create redemption type (Admin)","isWebhook":false,"pointer":"/paths/~1redemptions~1types/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create redemption type (Admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Create a new redemption type for system configuration. Replaces POST /redemption/admin/type"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/RedemptionTypeCreateRequestDTO"}},"schemaId":"components/schemas/RedemptionTypeCreateRequestDTO","pointer":"/paths/~1redemptions~1types/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/redemptions/types","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/RedemptionTypeCreateRequestDTO"}},"responseCodes":["200","201"],"pointer":"/redemptions/types","href":"redemption-types/redemptiontypescontroller_createredemptiontype","openApiOperationId":"RedemptionTypesController_createRedemptionType","summary":"Create redemption type (Admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/RedemptionTypeCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/RedemptionTypeCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Redemption type created successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionTypeDTO"}},"schemaId":"components/schemas/RedemptionTypeDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionTypeDTO"}},"schemaId":"components/schemas/RedemptionTypeDTO"}],"pointer":"/paths/~1redemptions~1types/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/RedemptionTypeDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionTypeDTO"}}},{"code":"201","schemaId":"components/schemas/RedemptionTypeDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionTypeDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/redemption-types/redemptiontypescontroller_createredemptiontype"}],"panels":[]}]},"httpPath":"/redemptions/types"},{"label":"Update redemption type (Admin)","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/redemption-types/redemptiontypescontroller_updateredemptiontype","routeSlug":"/swagger/redemption-types/redemptiontypescontroller_updateredemptiontype","metadata":{"seo":{"title":"Update redemption type (Admin)","description":"Update an existing redemption type configuration"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RedemptionTypesController_updateRedemptionType","name":"Update redemption type (Admin)","isWebhook":false,"pointer":"/paths/~1redemptions~1types~1{id}/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update redemption type (Admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Update an existing redemption type configuration"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_68","required":true}],"pointer":"/paths/~1redemptions~1types~1{id}/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/RedemptionTypeCreateRequestDTO"}},"schemaId":"components/schemas/RedemptionTypeCreateRequestDTO","pointer":"/paths/~1redemptions~1types~1{id}/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/redemptions/types/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_68"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/RedemptionTypeCreateRequestDTO"}},"responseCodes":["200"],"pointer":"/redemptions/types/{id}","href":"redemption-types/redemptiontypescontroller_updateredemptiontype","openApiOperationId":"RedemptionTypesController_updateRedemptionType","summary":"Update redemption type (Admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/RedemptionTypeCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/RedemptionTypeCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Redemption type updated successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionTypeDTO"}},"schemaId":"components/schemas/RedemptionTypeDTO"}],"pointer":"/paths/~1redemptions~1types~1{id}/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/RedemptionTypeDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionTypeDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/redemption-types/redemptiontypescontroller_updateredemptiontype"}],"panels":[]}]},"httpPath":"/redemptions/types/{id}"},{"label":"Delete redemption type (Admin)","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/redemption-types/redemptiontypescontroller_deleteredemptiontype","routeSlug":"/swagger/redemption-types/redemptiontypescontroller_deleteredemptiontype","metadata":{"seo":{"title":"Delete redemption type (Admin)","description":"Delete a redemption type. Will fail if any redemptions are using this type."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RedemptionTypesController_deleteRedemptionType","name":"Delete redemption type (Admin)","isWebhook":false,"pointer":"/paths/~1redemptions~1types~1{id}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Delete redemption type (Admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Delete a redemption type. Will fail if any redemptions are using this type."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_68","required":true}],"pointer":"/paths/~1redemptions~1types~1{id}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/redemptions/types/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_68"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/redemptions/types/{id}","href":"redemption-types/redemptiontypescontroller_deleteredemptiontype","openApiOperationId":"RedemptionTypesController_deleteRedemptionType","summary":"Delete redemption type (Admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Redemption type deleted successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_81"}},"schemaId":"schema_81"}],"pointer":"/paths/~1redemptions~1types~1{id}/delete/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_81","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_81"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/redemption-types/redemptiontypescontroller_deleteredemptiontype"}],"panels":[]}]},"httpPath":"/redemptions/types/{id}"}],"content":{"contentType":"group","meta":{"name":"Redemption Types"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Redemption Types","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/redemptions/types","summary":"Get redemption types","prefix":{"name":"get","color":"get"},"badges":[],"link":"/redemption-types/redemptiontypescontroller_getredemptiontypes","deprecated":false},{"title":"/redemptions/types","summary":"Create redemption type (Admin)","prefix":{"name":"post","color":"post"},"badges":[],"link":"/redemption-types/redemptiontypescontroller_createredemptiontype","deprecated":false},{"title":"/redemptions/types/{id}","summary":"Update redemption type (Admin)","prefix":{"name":"put","color":"put"},"badges":[],"link":"/redemption-types/redemptiontypescontroller_updateredemptiontype","deprecated":false},{"title":"/redemptions/types/{id}","summary":"Delete redemption type (Admin)","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/redemption-types/redemptiontypescontroller_deleteredemptiontype","deprecated":false}]}]}]}]}},{"type":"group","label":"Redemption Redeems","link":"/swagger/redemption-redeems","routeSlug":"/swagger/redemption-redeems","items":[{"label":"Execute redemption (Unified)","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/redemption-redeems/redemptionredeemscontroller_executeredemption","routeSlug":"/swagger/redemption-redeems/redemptionredeemscontroller_executeredemption","metadata":{"seo":{"title":"Execute redemption (Unified)","description":"Process redemption execution using role-based detection. Supports user, business, and admin redemption processing."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RedemptionRedeemsController_executeRedemption","name":"Execute redemption (Unified)","isWebhook":false,"pointer":"/paths/~1redemptions~1redeems/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Execute redemption (Unified)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Process redemption execution using role-based detection. Supports user, business, and admin redemption processing."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC721 Dynamic Context & Template Interpolation:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"For ERC721 tokens, you can provide a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"context"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" object whose values become available as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{context.xxx}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" placeholders in the token's name/description and AI prompts."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Context sources (merge order):"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":true,"marker":"."},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"TokenMetadata.defaultPromptContext"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" → "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{defaults.xxx}}"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Redemption.context"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (admin-defined) → "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{context.xxx}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (always applied)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"RedemptionRedeemRequest.context"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (this field) → "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{context.xxx}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (only if "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"allowExternalContextOverwrite=true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Example - Event ticket redemption:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"redemptionId\": \"redemption-uuid\",\n  \"context\": {\n    \"seatNumber\": \"A12\",\n    \"attendeeName\": \"John Smith\"\n  }\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"redemptionId\": \"redemption-uuid\",\n  \"context\": {\n    \"seatNumber\": \"A12\",\n    \"attendeeName\": \"John Smith\"\n  }\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"With TokenMetadata name: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"\"{{context.attendeeName}} - Seat {{context.seatNumber}}\""},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Result: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"\"John Smith - Seat A12\""},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]},{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/RedemptionRedeemRequestDTO"}},"schemaId":"components/schemas/RedemptionRedeemRequestDTO","pointer":"/paths/~1redemptions~1redeems/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/redemptions/redeems","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]},{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/RedemptionRedeemRequestDTO"}},"responseCodes":["200","201"],"pointer":"/redemptions/redeems","href":"redemption-redeems/redemptionredeemscontroller_executeredemption","openApiOperationId":"RedemptionRedeemsController_executeRedemption","summary":"Execute redemption (Unified)","securityGroups":[{"projectKey":[]},{"authJWT":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/RedemptionRedeemRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/RedemptionRedeemRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Redemption executed successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionRedeemRequestResponseDTO"}},"schemaId":"components/schemas/RedemptionRedeemRequestResponseDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionRedeemRequestResponseDTO"}},"schemaId":"components/schemas/RedemptionRedeemRequestResponseDTO"}],"pointer":"/paths/~1redemptions~1redeems/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/RedemptionRedeemRequestResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionRedeemRequestResponseDTO"}}},{"code":"201","schemaId":"components/schemas/RedemptionRedeemRequestResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionRedeemRequestResponseDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/redemption-redeems/redemptionredeemscontroller_executeredemption"}],"panels":[]}]},"httpPath":"/redemptions/redeems"},{"label":"Get redemption redeems with advanced filtering","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/redemption-redeems/redemptionredeemscontroller_getredemptionredeems","routeSlug":"/swagger/redemption-redeems/redemptionredeemscontroller_getredemptionredeems","metadata":{"seo":{"title":"Get redemption redeems with advanced filtering","description":"Get redemption redeems with comprehensive filtering options:"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RedemptionRedeemsController_getRedemptionRedeems","name":"Get redemption redeems with advanced filtering","isWebhook":false,"pointer":"/paths/~1redemptions~1redeems/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get redemption redeems with advanced filtering","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Get redemption redeems with comprehensive filtering options:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"redemptionId: Filter by specific redemption (optional)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"userId: Filter by specific user ID (admin only)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"businessId: Filter by specific business ID (admin only)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"include: Optionally include related entities (redemption, user, business, transactions)"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Access Control:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Users: See only their own redemptions"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Business: See only redemptions associated with their business account"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Admin: Can filter by any combination of parameters or see all redemptions"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Security Notes:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Users cannot access userId or businessId parameters (automatically filtered)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Business accounts automatically filter to their own businessId regardless of parameter"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Admin has full access to all filtering options"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Use pagination parameters (page & limit) for optimal performance - critical for high-volume data. Legacy support: returns array without params (deprecated - will be removed in future)."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]},{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"redemptionId","in":"query","schemaId":"schema_67","description":"Filter by specific redemption ID"},{"name":"userId","in":"query","schemaId":"schema_67","description":"Filter by specific user ID (admin only)"},{"name":"businessId","in":"query","schemaId":"schema_67","description":"Filter by specific business ID (admin only)"},{"name":"status","in":"query","schemaId":"schema_122","description":"Filter by processing status (PENDING, PROCESSING, COMPLETED, FAILED)"},{"name":"include","in":"query","schemaId":"schema_75","description":"Include related entities: redemption, user, business, transactions (comma-separated)"},{"name":"page","in":"query","schemaId":"schema_67","description":"Page number for pagination (1-based)"},{"name":"limit","in":"query","schemaId":"schema_67","description":"Number of items per page"},{"name":"dateFrom","in":"query","schemaId":"schema_85","description":"Filter items created after this date (ISO 8601)"},{"name":"dateTo","in":"query","schemaId":"schema_85","description":"Filter items created before this date (ISO 8601)"},{"name":"sortBy","in":"query","schemaId":"schema_123","description":"Sort by field (default: createdAt)"},{"name":"sortOrder","in":"query","schemaId":"schema_73","description":"Sort order (default: DESC)"}],"pointer":"/paths/~1redemptions~1redeems/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/redemptions/redeems","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"redemptionId","in":"query","required":false,"schemaId":"schema_67"},{"name":"userId","in":"query","required":false,"schemaId":"schema_67"},{"name":"businessId","in":"query","required":false,"schemaId":"schema_67"},{"name":"status","in":"query","required":false,"schemaId":"schema_122"},{"name":"include","in":"query","required":false,"schemaId":"schema_75"},{"name":"page","in":"query","required":false,"schemaId":"schema_67"},{"name":"limit","in":"query","required":false,"schemaId":"schema_67"},{"name":"dateFrom","in":"query","required":false,"schemaId":"schema_85"},{"name":"dateTo","in":"query","required":false,"schemaId":"schema_85"},{"name":"sortBy","in":"query","required":false,"schemaId":"schema_123"},{"name":"sortOrder","in":"query","required":false,"schemaId":"schema_73"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]},{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/redemptions/redeems","href":"redemption-redeems/redemptionredeemscontroller_getredemptionredeems","openApiOperationId":"RedemptionRedeemsController_getRedemptionRedeems","summary":"Get redemption redeems with advanced filtering","securityGroups":[{"projectKey":[]},{"authJWT":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Redemption redeems retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_124"}},"schemaId":"schema_124"}],"pointer":"/paths/~1redemptions~1redeems/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_124","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_124"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/redemption-redeems/redemptionredeemscontroller_getredemptionredeems"}],"panels":[]}]},"httpPath":"/redemptions/redeems"},{"label":"Get my redemption redeems (Convenience)","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/redemption-redeems/redemptionredeemscontroller_getmyredemptionredeems","routeSlug":"/swagger/redemption-redeems/redemptionredeemscontroller_getmyredemptionredeems","metadata":{"seo":{"title":"Get my redemption redeems (Convenience)","description":"Convenience endpoint for authenticated users to retrieve their own redemption redeems."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RedemptionRedeemsController_getMyRedemptionRedeems","name":"Get my redemption redeems (Convenience)","isWebhook":false,"pointer":"/paths/~1redemptions~1redeems~1me/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get my redemption redeems (Convenience)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Convenience endpoint for authenticated users to retrieve their own redemption redeems."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Equivalent to GET /redemption-redeems but with required authentication and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"automatic filtering to current user context."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Features:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Automatic user context (no userId parameter needed)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Optional redemption filtering"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Optional status filtering (PENDING, PROCESSING, COMPLETED, FAILED)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requires user authentication"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Simplified response structure"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Optional entity inclusion (redemption, user, business, transactions)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Use pagination parameters (page & limit) for optimal performance - recommended for active users"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Legacy support: returns array without params (deprecated - will be removed in future)"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Usage Examples:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"GET /redemption-redeems/me (all redemptions for authenticated user)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"GET /redemption-redeems/me?redemptionId=123 (specific user redemption)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"GET /redemption-redeems/me?status=COMPLETED (only completed redemptions)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"GET /redemption-redeems/me?page=1&limit=10 (paginated results)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"GET /redemption-redeems/me?include=redemption,user (with related entities)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"GET /redemption-redeems/me?include=redemption,transactions (with transactions)"},"children":[]}]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"redemptionId","in":"query","schemaId":"schema_67","description":"Filter by specific redemption ID"},{"name":"status","in":"query","schemaId":"schema_122","description":"Filter by processing status (PENDING, PROCESSING, COMPLETED, FAILED)"},{"name":"include","in":"query","schemaId":"schema_75","description":"Include related entities: redemption, user, business, transactions (comma-separated)"},{"name":"page","in":"query","schemaId":"schema_67","description":"Page number for pagination (1-based)"},{"name":"limit","in":"query","schemaId":"schema_67","description":"Number of items per page"},{"name":"dateFrom","in":"query","schemaId":"schema_85","description":"Filter items created after this date (ISO 8601)"},{"name":"dateTo","in":"query","schemaId":"schema_85","description":"Filter items created before this date (ISO 8601)"}],"pointer":"/paths/~1redemptions~1redeems~1me/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/redemptions/redeems/me","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"redemptionId","in":"query","required":false,"schemaId":"schema_67"},{"name":"status","in":"query","required":false,"schemaId":"schema_122"},{"name":"include","in":"query","required":false,"schemaId":"schema_75"},{"name":"page","in":"query","required":false,"schemaId":"schema_67"},{"name":"limit","in":"query","required":false,"schemaId":"schema_67"},{"name":"dateFrom","in":"query","required":false,"schemaId":"schema_85"},{"name":"dateTo","in":"query","required":false,"schemaId":"schema_85"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/redemptions/redeems/me","href":"redemption-redeems/redemptionredeemscontroller_getmyredemptionredeems","openApiOperationId":"RedemptionRedeemsController_getMyRedemptionRedeems","summary":"Get my redemption redeems (Convenience)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"User redemption redeems retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_124"}},"schemaId":"schema_124"}],"pointer":"/paths/~1redemptions~1redeems~1me/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_124","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_124"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/redemption-redeems/redemptionredeemscontroller_getmyredemptionredeems"}],"panels":[]}]},"httpPath":"/redemptions/redeems/me"},{"label":"Get specific redemption redeem","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/redemption-redeems/redemptionredeemscontroller_getredemptionredeembyid","routeSlug":"/swagger/redemption-redeems/redemptionredeemscontroller_getredemptionredeembyid","metadata":{"seo":{"title":"Get specific redemption redeem","description":"Get current status of a specific redemption redeem with automatic access control based on authentication context. Optionally include related entities (redemption, user, business, transactions)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RedemptionRedeemsController_getRedemptionRedeemById","name":"Get specific redemption redeem","isWebhook":false,"pointer":"/paths/~1redemptions~1redeems~1{redeemId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get specific redemption redeem","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Get current status of a specific redemption redeem with automatic access control based on authentication context. Optionally include related entities (redemption, user, business, transactions)."},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]},{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"redeemId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1redemptions~1redeems~1{redeemId}/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"include","in":"query","schemaId":"schema_75","description":"Include related entities: redemption, user, business, transactions (comma-separated)"}],"pointer":"/paths/~1redemptions~1redeems~1{redeemId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/redemptions/redeems/{redeemId}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"redeemId","in":"path","required":true,"schemaId":"schema_67"}],"query":[{"name":"include","in":"query","required":false,"schemaId":"schema_75"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]},{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/redemptions/redeems/{redeemId}","href":"redemption-redeems/redemptionredeemscontroller_getredemptionredeembyid","openApiOperationId":"RedemptionRedeemsController_getRedemptionRedeemById","summary":"Get specific redemption redeem","securityGroups":[{"projectKey":[]},{"authJWT":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Redemption redeem retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionRedeemDTO"}},"schemaId":"components/schemas/RedemptionRedeemDTO"}],"pointer":"/paths/~1redemptions~1redeems~1{redeemId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/RedemptionRedeemDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionRedeemDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/redemption-redeems/redemptionredeemscontroller_getredemptionredeembyid"}],"panels":[]}]},"httpPath":"/redemptions/redeems/{redeemId}"},{"label":"Export redeems to CSV","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/redemption-redeems/redemptionredeemscontroller_exportredeemscsv","routeSlug":"/swagger/redemption-redeems/redemptionredeemscontroller_exportredeemscsv","metadata":{"seo":{"title":"Export redeems to CSV","description":"Export all redeems as a CSV file. Supports date filtering and including related entities."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RedemptionRedeemsController_exportRedeemsCsv","name":"Export redeems to CSV","isWebhook":false,"pointer":"/paths/~1redemptions~1redeems~1export~1csv/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Export redeems to CSV","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Export all redeems as a CSV file. Supports date filtering and including related entities."},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]},{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"dateFrom","in":"query","schemaId":"schema_67","description":"Filter from date (ISO format)"},{"name":"dateTo","in":"query","schemaId":"schema_67","description":"Filter to date (ISO format)"},{"name":"include","in":"query","schemaId":"schema_67","description":"Include related entities (comma-separated): redemption, user, transactions"}],"pointer":"/paths/~1redemptions~1redeems~1export~1csv/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/redemptions/redeems/export/csv","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"dateFrom","in":"query","required":false,"schemaId":"schema_67"},{"name":"dateTo","in":"query","required":false,"schemaId":"schema_67"},{"name":"include","in":"query","required":false,"schemaId":"schema_67"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]},{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/redemptions/redeems/export/csv","href":"redemption-redeems/redemptionredeemscontroller_exportredeemscsv","openApiOperationId":"RedemptionRedeemsController_exportRedeemsCsv","summary":"Export redeems to CSV","securityGroups":[{"projectKey":[]},{"authJWT":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"CSV file stream"}],"pointer":"/paths/~1redemptions~1redeems~1export~1csv/get/responses"}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/redemption-redeems/redemptionredeemscontroller_exportredeemscsv"}],"panels":[]}]},"httpPath":"/redemptions/redeems/export/csv"}],"content":{"contentType":"group","meta":{"name":"Redemption Redeems"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Redemption Redeems","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/redemptions/redeems","summary":"Execute redemption (Unified)","prefix":{"name":"post","color":"post"},"badges":[],"link":"/redemption-redeems/redemptionredeemscontroller_executeredemption","deprecated":false},{"title":"/redemptions/redeems","summary":"Get redemption redeems with advanced filtering","prefix":{"name":"get","color":"get"},"badges":[],"link":"/redemption-redeems/redemptionredeemscontroller_getredemptionredeems","deprecated":false},{"title":"/redemptions/redeems/me","summary":"Get my redemption redeems (Convenience)","prefix":{"name":"get","color":"get"},"badges":[],"link":"/redemption-redeems/redemptionredeemscontroller_getmyredemptionredeems","deprecated":false},{"title":"/redemptions/redeems/{redeemId}","summary":"Get specific redemption redeem","prefix":{"name":"get","color":"get"},"badges":[],"link":"/redemption-redeems/redemptionredeemscontroller_getredemptionredeembyid","deprecated":false},{"title":"/redemptions/redeems/export/csv","summary":"Export redeems to CSV","prefix":{"name":"get","color":"get"},"badges":[],"link":"/redemption-redeems/redemptionredeemscontroller_exportredeemscsv","deprecated":false}]}]}]}]}},{"type":"group","label":"Redemption Tokens","link":"/swagger/redemption-tokens","routeSlug":"/swagger/redemption-tokens","items":[{"label":"Add token unit to redemption","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/redemption-tokens/redemptiontokenscontroller_addtokenunittoredemption","routeSlug":"/swagger/redemption-tokens/redemptiontokenscontroller_addtokenunittoredemption","metadata":{"seo":{"title":"Add token unit to redemption","description":"Add a new token unit to an existing redemption. Available to Admin and Business accounts."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RedemptionTokensController_addTokenUnitToRedemption","name":"Add token unit to redemption","isWebhook":false,"pointer":"/paths/~1redemptions~1{redemptionId}~1tokens/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Add token unit to redemption","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Add a new token unit to an existing redemption. Available to Admin and Business accounts."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"redemptionId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1redemptions~1{redemptionId}~1tokens/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TokenUnitCreateRequestDTO"}},"schemaId":"components/schemas/TokenUnitCreateRequestDTO","pointer":"/paths/~1redemptions~1{redemptionId}~1tokens/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/redemptions/{redemptionId}/tokens","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"redemptionId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/TokenUnitCreateRequestDTO"}},"responseCodes":["200","201"],"pointer":"/redemptions/{redemptionId}/tokens","href":"redemption-tokens/redemptiontokenscontroller_addtokenunittoredemption","openApiOperationId":"RedemptionTokensController_addTokenUnitToRedemption","summary":"Add token unit to redemption"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/TokenUnitCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TokenUnitCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Token unit added to redemption","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionDTO"}},"schemaId":"components/schemas/RedemptionDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionDTO"}},"schemaId":"components/schemas/RedemptionDTO"}],"pointer":"/paths/~1redemptions~1{redemptionId}~1tokens/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/RedemptionDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionDTO"}}},{"code":"201","schemaId":"components/schemas/RedemptionDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/redemption-tokens/redemptiontokenscontroller_addtokenunittoredemption"}],"panels":[]}]},"httpPath":"/redemptions/{redemptionId}/tokens"},{"label":"Update redemption token unit","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/redemption-tokens/redemptiontokenscontroller_updatetokenunit","routeSlug":"/swagger/redemption-tokens/redemptiontokenscontroller_updatetokenunit","metadata":{"seo":{"title":"Update redemption token unit","description":"Update an existing token unit within a redemption. Available to Admin and Business accounts."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RedemptionTokensController_updateTokenUnit","name":"Update redemption token unit","isWebhook":false,"pointer":"/paths/~1redemptions~1{redemptionId}~1tokens~1{tokenUnitId}/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update redemption token unit","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Update an existing token unit within a redemption. Available to Admin and Business accounts."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"redemptionId","in":"path","schemaId":"schema_67","required":true},{"name":"tokenUnitId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1redemptions~1{redemptionId}~1tokens~1{tokenUnitId}/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TokenUnitCreateRequestDTO"}},"schemaId":"components/schemas/TokenUnitCreateRequestDTO","pointer":"/paths/~1redemptions~1{redemptionId}~1tokens~1{tokenUnitId}/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/redemptions/{redemptionId}/tokens/{tokenUnitId}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"redemptionId","in":"path","required":true,"schemaId":"schema_67"},{"name":"tokenUnitId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/TokenUnitCreateRequestDTO"}},"responseCodes":["200"],"pointer":"/redemptions/{redemptionId}/tokens/{tokenUnitId}","href":"redemption-tokens/redemptiontokenscontroller_updatetokenunit","openApiOperationId":"RedemptionTokensController_updateTokenUnit","summary":"Update redemption token unit"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/TokenUnitCreateRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TokenUnitCreateRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Token unit updated successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionDTO"}},"schemaId":"components/schemas/RedemptionDTO"}],"pointer":"/paths/~1redemptions~1{redemptionId}~1tokens~1{tokenUnitId}/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/RedemptionDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/redemption-tokens/redemptiontokenscontroller_updatetokenunit"}],"panels":[]}]},"httpPath":"/redemptions/{redemptionId}/tokens/{tokenUnitId}"},{"label":"Remove token unit from redemption","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/redemption-tokens/redemptiontokenscontroller_removetokenunit","routeSlug":"/swagger/redemption-tokens/redemptiontokenscontroller_removetokenunit","metadata":{"seo":{"title":"Remove token unit from redemption","description":"Remove an existing token unit from a redemption. Available to Admin and Business accounts."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RedemptionTokensController_removeTokenUnit","name":"Remove token unit from redemption","isWebhook":false,"pointer":"/paths/~1redemptions~1{redemptionId}~1tokens~1{tokenUnitId}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Remove token unit from redemption","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Remove an existing token unit from a redemption. Available to Admin and Business accounts."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"redemptionId","in":"path","schemaId":"schema_67","required":true},{"name":"tokenUnitId","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1redemptions~1{redemptionId}~1tokens~1{tokenUnitId}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/redemptions/{redemptionId}/tokens/{tokenUnitId}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"redemptionId","in":"path","required":true,"schemaId":"schema_67"},{"name":"tokenUnitId","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/redemptions/{redemptionId}/tokens/{tokenUnitId}","href":"redemption-tokens/redemptiontokenscontroller_removetokenunit","openApiOperationId":"RedemptionTokensController_removeTokenUnit","summary":"Remove token unit from redemption"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Token unit removed from redemption","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionDTO"}},"schemaId":"components/schemas/RedemptionDTO"}],"pointer":"/paths/~1redemptions~1{redemptionId}~1tokens~1{tokenUnitId}/delete/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/RedemptionDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/redemption-tokens/redemptiontokenscontroller_removetokenunit"}],"panels":[]}]},"httpPath":"/redemptions/{redemptionId}/tokens/{tokenUnitId}"}],"content":{"contentType":"group","meta":{"name":"Redemption Tokens"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Redemption Tokens","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/redemptions/{redemptionId}/tokens","summary":"Add token unit to redemption","prefix":{"name":"post","color":"post"},"badges":[],"link":"/redemption-tokens/redemptiontokenscontroller_addtokenunittoredemption","deprecated":false},{"title":"/redemptions/{redemptionId}/tokens/{tokenUnitId}","summary":"Update redemption token unit","prefix":{"name":"put","color":"put"},"badges":[],"link":"/redemption-tokens/redemptiontokenscontroller_updatetokenunit","deprecated":false},{"title":"/redemptions/{redemptionId}/tokens/{tokenUnitId}","summary":"Remove token unit from redemption","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/redemption-tokens/redemptiontokenscontroller_removetokenunit","deprecated":false}]}]}]}]}},{"type":"group","label":"API Keys","link":"/swagger/api-keys","routeSlug":"/swagger/api-keys","items":[{"label":"Get all API keys (Admin/Business)","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/api-keys/apikeyscontroller_gettenantapikeys","routeSlug":"/swagger/api-keys/apikeyscontroller_gettenantapikeys","metadata":{"seo":{"title":"Get all API keys (Admin/Business)","description":"Admin: returns all integration keys for the tenant, optionally filtered by type. Business: returns only keys scoped to their own business entity. Use pagination parameters (page & limit) for optimal performance."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"ApiKeysController_getTenantApiKeys","name":"Get all API keys (Admin/Business)","isWebhook":false,"pointer":"/paths/~1api-keys/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get all API keys (Admin/Business)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Admin: returns all integration keys for the tenant, optionally filtered by type. Business: returns only keys scoped to their own business entity. Use pagination parameters (page & limit) for optimal performance."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]},{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"type","in":"query","schemaId":"schema_125","description":"Optional filter by integration API key type (database-stored tokens that can be revoked)"},{"name":"includeRevoked","in":"query","schemaId":"schema_81","description":"Include revoked API keys in results (default: false)"},{"name":"page","in":"query","schemaId":"schema_68","description":"Page number for pagination (1-based)"},{"name":"limit","in":"query","schemaId":"schema_68","description":"Items per page for pagination"}],"pointer":"/paths/~1api-keys/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/api-keys","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"type","in":"query","required":false,"schemaId":"schema_125"},{"name":"includeRevoked","in":"query","required":false,"schemaId":"schema_81"},{"name":"page","in":"query","required":false,"schemaId":"schema_68"},{"name":"limit","in":"query","required":false,"schemaId":"schema_68"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]},{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/api-keys","href":"api-keys/apikeyscontroller_gettenantapikeys","openApiOperationId":"ApiKeysController_getTenantApiKeys","summary":"Get all API keys (Admin/Business)","securityGroups":[{"authJWT":[]},{"projectKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successfully retrieved tenant API keys","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_126"}},"schemaId":"schema_126"}],"pointer":"/paths/~1api-keys/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_126","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_126"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/api-keys/apikeyscontroller_gettenantapikeys"}],"panels":[]}]},"httpPath":"/api-keys"},{"label":"Create new system JWT token (Admin)","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/api-keys/apikeyscontroller_createapikey","routeSlug":"/swagger/api-keys/apikeyscontroller_createapikey","metadata":{"seo":{"title":"Create new system JWT token (Admin)","description":"Create a new long-lived system JWT for app integration (M2M). Provide businessId to create a business-scoped token (BUSINESS_SYSTEM_JWT) for server-to-server integrations. Omit businessId to create a tenant-scoped token (TENANT_SYSTEM_JWT). Store the returned token securely - it cannot be retrieved again."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"ApiKeysController_createApiKey","name":"Create new system JWT token (Admin)","isWebhook":false,"pointer":"/paths/~1api-keys/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create new system JWT token (Admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Create a new long-lived system JWT for app integration (M2M). Provide "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"businessId"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to create a business-scoped token (BUSINESS_SYSTEM_JWT) for server-to-server integrations. Omit "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"businessId"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to create a tenant-scoped token (TENANT_SYSTEM_JWT). Store the returned token securely - it cannot be retrieved again."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]},{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/ApiKeyRequestDTO"}},"schemaId":"components/schemas/ApiKeyRequestDTO","pointer":"/paths/~1api-keys/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/api-keys","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]},{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/ApiKeyRequestDTO"}},"responseCodes":["200","201"],"pointer":"/api-keys","href":"api-keys/apikeyscontroller_createapikey","openApiOperationId":"ApiKeysController_createApiKey","summary":"Create new system JWT token (Admin)","securityGroups":[{"authJWT":[]},{"projectKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/ApiKeyRequestDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/ApiKeyRequestDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"JWT token created successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ApiKeyCreatedDTO"}},"schemaId":"components/schemas/ApiKeyCreatedDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ApiKeyCreatedDTO"}},"schemaId":"components/schemas/ApiKeyCreatedDTO"}],"pointer":"/paths/~1api-keys/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/ApiKeyCreatedDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ApiKeyCreatedDTO"}}},{"code":"201","schemaId":"components/schemas/ApiKeyCreatedDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ApiKeyCreatedDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/api-keys/apikeyscontroller_createapikey"}],"panels":[]}]},"httpPath":"/api-keys"},{"label":"Revoke API key (Admin)","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/api-keys/apikeyscontroller_revokeapikey","routeSlug":"/swagger/api-keys/apikeyscontroller_revokeapikey","metadata":{"seo":{"title":"Revoke API key (Admin)","description":"Permanently revoke an API key. This operation cannot be undone. The key will be marked as revoked and will no longer be valid for authentication."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"ApiKeysController_revokeApiKey","name":"Revoke API key (Admin)","isWebhook":false,"pointer":"/paths/~1api-keys~1{id}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Revoke API key (Admin)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Permanently revoke an API key. This operation cannot be undone. The key will be marked as revoked and will no longer be valid for authentication."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_127","description":"Unique identifier of the API key to revoke","required":true}],"pointer":"/paths/~1api-keys~1{id}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/api-keys/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"example":"f47ac10b-58cc-4372-a567-0e02b2c3d479","schemaId":"schema_127"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/api-keys/{id}","href":"api-keys/apikeyscontroller_revokeapikey","openApiOperationId":"ApiKeysController_revokeApiKey","summary":"Revoke API key (Admin)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"API key successfully revoked","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ApiKeyVerificationDTO"}},"schemaId":"components/schemas/ApiKeyVerificationDTO"}],"pointer":"/paths/~1api-keys~1{id}/delete/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/ApiKeyVerificationDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ApiKeyVerificationDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/api-keys/apikeyscontroller_revokeapikey"}],"panels":[]}]},"httpPath":"/api-keys/{id}"}],"content":{"contentType":"group","meta":{"name":"API Keys"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"API Keys","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/api-keys","summary":"Get all API keys (Admin/Business)","prefix":{"name":"get","color":"get"},"badges":[],"link":"/api-keys/apikeyscontroller_gettenantapikeys","deprecated":false},{"title":"/api-keys","summary":"Create new system JWT token (Admin)","prefix":{"name":"post","color":"post"},"badges":[],"link":"/api-keys/apikeyscontroller_createapikey","deprecated":false},{"title":"/api-keys/{id}","summary":"Revoke API key (Admin)","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/api-keys/apikeyscontroller_revokeapikey","deprecated":false}]}]}]}]}},{"type":"group","label":"Webhook Proxy","link":"/swagger/webhook-proxy","routeSlug":"/swagger/webhook-proxy","items":[{"label":"Receive callback from external system","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/webhook-proxy/webhookproxycontroller_processcallback","routeSlug":"/swagger/webhook-proxy/webhookproxycontroller_processcallback","metadata":{"seo":{"title":"Receive callback from external system","description":"Receive workflow completion callback from external systems (e.g., n8n)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"WebhookProxyController_processCallback","name":"Receive callback from external system","isWebhook":false,"pointer":"/paths/~1hooks~1{projectKey}~1executions~1{executionId}~1callback/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Receive callback from external system","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Receive workflow completion callback from external systems (e.g., n8n)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"URL format: /hooks/{projectKey}/executions/{executionId}/callback"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Security:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Project key identifies tenant (RLS enforces isolation)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Execution ID is UUIDv4 (unguessable)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Execution must be < 1 hour old"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Execution cannot receive multiple callbacks"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"No authentication required - security via execution ID secrecy + RLS."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"executionId","in":"path","schemaId":"schema_67","description":"Webhook execution ID","required":true},{"name":"projectKey","in":"path","schemaId":"schema_128","description":"Project API key (same as in JWT callbackUrl)","required":true}],"pointer":"/paths/~1hooks~1{projectKey}~1executions~1{executionId}~1callback/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/WebhookCallbackDTO"}},"schemaId":"components/schemas/WebhookCallbackDTO","pointer":"/paths/~1hooks~1{projectKey}~1executions~1{executionId}~1callback/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/hooks/{projectKey}/executions/{executionId}/callback","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"executionId","in":"path","required":true,"schemaId":"schema_67"},{"name":"projectKey","in":"path","required":true,"schemaId":"schema_128"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/WebhookCallbackDTO"}},"responseCodes":["200","201"],"pointer":"/hooks/{projectKey}/executions/{executionId}/callback","href":"webhook-proxy/webhookproxycontroller_processcallback","openApiOperationId":"WebhookProxyController_processCallback","summary":"Receive callback from external system"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/WebhookCallbackDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/WebhookCallbackDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Callback processed successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookExecutionDTO"}},"schemaId":"components/schemas/WebhookExecutionDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookExecutionDTO"}},"schemaId":"components/schemas/WebhookExecutionDTO"}],"pointer":"/paths/~1hooks~1{projectKey}~1executions~1{executionId}~1callback/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/WebhookExecutionDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookExecutionDTO"}}},{"code":"201","schemaId":"components/schemas/WebhookExecutionDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookExecutionDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/webhook-proxy/webhookproxycontroller_processcallback"}],"panels":[]}]},"httpPath":"/hooks/{projectKey}/executions/{executionId}/callback"},{"label":"Trigger webhook (forward request to configured target)","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/webhook-proxy/webhookproxycontroller_receivewebhook_get","routeSlug":"/swagger/webhook-proxy/webhookproxycontroller_receivewebhook_get","metadata":{"seo":{"title":"Trigger webhook (forward request to configured target)","description":"Project key in URL path identifies the tenant. Configure webhook URL as: /hooks/{projectKey}/{hookId}. Returns wrapped response with execution metadata."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"WebhookProxyController_receiveWebhook_get","name":"Trigger webhook (forward request to configured target)","isWebhook":false,"pointer":"/paths/~1hooks~1{projectKey}~1{hookId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Trigger webhook (forward request to configured target)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Project key in URL path identifies the tenant. Configure webhook URL as: /hooks/{projectKey}/{hookId}. Returns wrapped response with execution metadata."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"hookId","in":"path","schemaId":"schema_67","description":"Webhook ID","required":true},{"name":"projectKey","in":"path","schemaId":"schema_128","description":"Project API key (same value as x-project-key header)","required":true}],"pointer":"/paths/~1hooks~1{projectKey}~1{hookId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/hooks/{projectKey}/{hookId}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"hookId","in":"path","required":true,"schemaId":"schema_67"},{"name":"projectKey","in":"path","required":true,"schemaId":"schema_128"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/hooks/{projectKey}/{hookId}","href":"webhook-proxy/webhookproxycontroller_receivewebhook_get","openApiOperationId":"WebhookProxyController_receiveWebhook_get","summary":"Trigger webhook (forward request to configured target)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Webhook triggered successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookTriggerResponseDTO"}},"schemaId":"components/schemas/WebhookTriggerResponseDTO"}],"pointer":"/paths/~1hooks~1{projectKey}~1{hookId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/WebhookTriggerResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookTriggerResponseDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/webhook-proxy/webhookproxycontroller_receivewebhook_get"}],"panels":[]}]},"httpPath":"/hooks/{projectKey}/{hookId}"},{"label":"Trigger webhook (forward request to configured target)","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/webhook-proxy/webhookproxycontroller_receivewebhook_post","routeSlug":"/swagger/webhook-proxy/webhookproxycontroller_receivewebhook_post","metadata":{"seo":{"title":"Trigger webhook (forward request to configured target)","description":"Project key in URL path identifies the tenant. Configure webhook URL as: /hooks/{projectKey}/{hookId}. Returns wrapped response with execution metadata."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"WebhookProxyController_receiveWebhook_post","name":"Trigger webhook (forward request to configured target)","isWebhook":false,"pointer":"/paths/~1hooks~1{projectKey}~1{hookId}/post","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Trigger webhook (forward request to configured target)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Project key in URL path identifies the tenant. Configure webhook URL as: /hooks/{projectKey}/{hookId}. Returns wrapped response with execution metadata."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"hookId","in":"path","schemaId":"schema_67","description":"Webhook ID","required":true},{"name":"projectKey","in":"path","schemaId":"schema_128","description":"Project API key (same value as x-project-key header)","required":true}],"pointer":"/paths/~1hooks~1{projectKey}~1{hookId}/post/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/hooks/{projectKey}/{hookId}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"hookId","in":"path","required":true,"schemaId":"schema_67"},{"name":"projectKey","in":"path","required":true,"schemaId":"schema_128"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/hooks/{projectKey}/{hookId}","href":"webhook-proxy/webhookproxycontroller_receivewebhook_post","openApiOperationId":"WebhookProxyController_receiveWebhook_post","summary":"Trigger webhook (forward request to configured target)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Webhook triggered successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookTriggerResponseDTO"}},"schemaId":"components/schemas/WebhookTriggerResponseDTO"}],"pointer":"/paths/~1hooks~1{projectKey}~1{hookId}/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/WebhookTriggerResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookTriggerResponseDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/webhook-proxy/webhookproxycontroller_receivewebhook_post"}],"panels":[]}]},"httpPath":"/hooks/{projectKey}/{hookId}"},{"label":"Trigger webhook (forward request to configured target)","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/webhook-proxy/webhookproxycontroller_receivewebhook_put","routeSlug":"/swagger/webhook-proxy/webhookproxycontroller_receivewebhook_put","metadata":{"seo":{"title":"Trigger webhook (forward request to configured target)","description":"Project key in URL path identifies the tenant. Configure webhook URL as: /hooks/{projectKey}/{hookId}. Returns wrapped response with execution metadata."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"WebhookProxyController_receiveWebhook_put","name":"Trigger webhook (forward request to configured target)","isWebhook":false,"pointer":"/paths/~1hooks~1{projectKey}~1{hookId}/put","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Trigger webhook (forward request to configured target)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Project key in URL path identifies the tenant. Configure webhook URL as: /hooks/{projectKey}/{hookId}. Returns wrapped response with execution metadata."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"hookId","in":"path","schemaId":"schema_67","description":"Webhook ID","required":true},{"name":"projectKey","in":"path","schemaId":"schema_128","description":"Project API key (same value as x-project-key header)","required":true}],"pointer":"/paths/~1hooks~1{projectKey}~1{hookId}/put/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/hooks/{projectKey}/{hookId}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"hookId","in":"path","required":true,"schemaId":"schema_67"},{"name":"projectKey","in":"path","required":true,"schemaId":"schema_128"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/hooks/{projectKey}/{hookId}","href":"webhook-proxy/webhookproxycontroller_receivewebhook_put","openApiOperationId":"WebhookProxyController_receiveWebhook_put","summary":"Trigger webhook (forward request to configured target)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Webhook triggered successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookTriggerResponseDTO"}},"schemaId":"components/schemas/WebhookTriggerResponseDTO"}],"pointer":"/paths/~1hooks~1{projectKey}~1{hookId}/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/WebhookTriggerResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookTriggerResponseDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/webhook-proxy/webhookproxycontroller_receivewebhook_put"}],"panels":[]}]},"httpPath":"/hooks/{projectKey}/{hookId}"},{"label":"Trigger webhook (forward request to configured target)","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/webhook-proxy/webhookproxycontroller_receivewebhook_delete","routeSlug":"/swagger/webhook-proxy/webhookproxycontroller_receivewebhook_delete","metadata":{"seo":{"title":"Trigger webhook (forward request to configured target)","description":"Project key in URL path identifies the tenant. Configure webhook URL as: /hooks/{projectKey}/{hookId}. Returns wrapped response with execution metadata."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"WebhookProxyController_receiveWebhook_delete","name":"Trigger webhook (forward request to configured target)","isWebhook":false,"pointer":"/paths/~1hooks~1{projectKey}~1{hookId}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Trigger webhook (forward request to configured target)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Project key in URL path identifies the tenant. Configure webhook URL as: /hooks/{projectKey}/{hookId}. Returns wrapped response with execution metadata."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"hookId","in":"path","schemaId":"schema_67","description":"Webhook ID","required":true},{"name":"projectKey","in":"path","schemaId":"schema_128","description":"Project API key (same value as x-project-key header)","required":true}],"pointer":"/paths/~1hooks~1{projectKey}~1{hookId}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/hooks/{projectKey}/{hookId}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"hookId","in":"path","required":true,"schemaId":"schema_67"},{"name":"projectKey","in":"path","required":true,"schemaId":"schema_128"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/hooks/{projectKey}/{hookId}","href":"webhook-proxy/webhookproxycontroller_receivewebhook_delete","openApiOperationId":"WebhookProxyController_receiveWebhook_delete","summary":"Trigger webhook (forward request to configured target)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Webhook triggered successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookTriggerResponseDTO"}},"schemaId":"components/schemas/WebhookTriggerResponseDTO"}],"pointer":"/paths/~1hooks~1{projectKey}~1{hookId}/delete/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/WebhookTriggerResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookTriggerResponseDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/webhook-proxy/webhookproxycontroller_receivewebhook_delete"}],"panels":[]}]},"httpPath":"/hooks/{projectKey}/{hookId}"},{"label":"Trigger webhook (forward request to configured target)","deprecated":false,"httpVerb":"patch","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/webhook-proxy/webhookproxycontroller_receivewebhook_patch","routeSlug":"/swagger/webhook-proxy/webhookproxycontroller_receivewebhook_patch","metadata":{"seo":{"title":"Trigger webhook (forward request to configured target)","description":"Project key in URL path identifies the tenant. Configure webhook URL as: /hooks/{projectKey}/{hookId}. Returns wrapped response with execution metadata."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"WebhookProxyController_receiveWebhook_patch","name":"Trigger webhook (forward request to configured target)","isWebhook":false,"pointer":"/paths/~1hooks~1{projectKey}~1{hookId}/patch","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Trigger webhook (forward request to configured target)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Project key in URL path identifies the tenant. Configure webhook URL as: /hooks/{projectKey}/{hookId}. Returns wrapped response with execution metadata."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"hookId","in":"path","schemaId":"schema_67","description":"Webhook ID","required":true},{"name":"projectKey","in":"path","schemaId":"schema_128","description":"Project API key (same value as x-project-key header)","required":true}],"pointer":"/paths/~1hooks~1{projectKey}~1{hookId}/patch/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PATCH","path":"/hooks/{projectKey}/{hookId}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"hookId","in":"path","required":true,"schemaId":"schema_67"},{"name":"projectKey","in":"path","required":true,"schemaId":"schema_128"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/hooks/{projectKey}/{hookId}","href":"webhook-proxy/webhookproxycontroller_receivewebhook_patch","openApiOperationId":"WebhookProxyController_receiveWebhook_patch","summary":"Trigger webhook (forward request to configured target)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Webhook triggered successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookTriggerResponseDTO"}},"schemaId":"components/schemas/WebhookTriggerResponseDTO"}],"pointer":"/paths/~1hooks~1{projectKey}~1{hookId}/patch/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/WebhookTriggerResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookTriggerResponseDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/webhook-proxy/webhookproxycontroller_receivewebhook_patch"}],"panels":[]}]},"httpPath":"/hooks/{projectKey}/{hookId}"},{"label":"Trigger webhook (forward request to configured target)","deprecated":false,"httpVerb":"options","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/webhook-proxy/webhookproxycontroller_receivewebhook_options","routeSlug":"/swagger/webhook-proxy/webhookproxycontroller_receivewebhook_options","metadata":{"seo":{"title":"Trigger webhook (forward request to configured target)","description":"Project key in URL path identifies the tenant. Configure webhook URL as: /hooks/{projectKey}/{hookId}. Returns wrapped response with execution metadata."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"WebhookProxyController_receiveWebhook_options","name":"Trigger webhook (forward request to configured target)","isWebhook":false,"pointer":"/paths/~1hooks~1{projectKey}~1{hookId}/options","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Trigger webhook (forward request to configured target)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Project key in URL path identifies the tenant. Configure webhook URL as: /hooks/{projectKey}/{hookId}. Returns wrapped response with execution metadata."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"hookId","in":"path","schemaId":"schema_67","description":"Webhook ID","required":true},{"name":"projectKey","in":"path","schemaId":"schema_128","description":"Project API key (same value as x-project-key header)","required":true}],"pointer":"/paths/~1hooks~1{projectKey}~1{hookId}/options/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"OPTIONS","path":"/hooks/{projectKey}/{hookId}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"hookId","in":"path","required":true,"schemaId":"schema_67"},{"name":"projectKey","in":"path","required":true,"schemaId":"schema_128"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/hooks/{projectKey}/{hookId}","href":"webhook-proxy/webhookproxycontroller_receivewebhook_options","openApiOperationId":"WebhookProxyController_receiveWebhook_options","summary":"Trigger webhook (forward request to configured target)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Webhook triggered successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookTriggerResponseDTO"}},"schemaId":"components/schemas/WebhookTriggerResponseDTO"}],"pointer":"/paths/~1hooks~1{projectKey}~1{hookId}/options/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/WebhookTriggerResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookTriggerResponseDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/webhook-proxy/webhookproxycontroller_receivewebhook_options"}],"panels":[]}]},"httpPath":"/hooks/{projectKey}/{hookId}"},{"label":"Trigger webhook (forward request to configured target)","deprecated":false,"httpVerb":"head","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/webhook-proxy/webhookproxycontroller_receivewebhook_head","routeSlug":"/swagger/webhook-proxy/webhookproxycontroller_receivewebhook_head","metadata":{"seo":{"title":"Trigger webhook (forward request to configured target)","description":"Project key in URL path identifies the tenant. Configure webhook URL as: /hooks/{projectKey}/{hookId}. Returns wrapped response with execution metadata."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"WebhookProxyController_receiveWebhook_head","name":"Trigger webhook (forward request to configured target)","isWebhook":false,"pointer":"/paths/~1hooks~1{projectKey}~1{hookId}/head","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Trigger webhook (forward request to configured target)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Project key in URL path identifies the tenant. Configure webhook URL as: /hooks/{projectKey}/{hookId}. Returns wrapped response with execution metadata."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"hookId","in":"path","schemaId":"schema_67","description":"Webhook ID","required":true},{"name":"projectKey","in":"path","schemaId":"schema_128","description":"Project API key (same value as x-project-key header)","required":true}],"pointer":"/paths/~1hooks~1{projectKey}~1{hookId}/head/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"HEAD","path":"/hooks/{projectKey}/{hookId}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"hookId","in":"path","required":true,"schemaId":"schema_67"},{"name":"projectKey","in":"path","required":true,"schemaId":"schema_128"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/hooks/{projectKey}/{hookId}","href":"webhook-proxy/webhookproxycontroller_receivewebhook_head","openApiOperationId":"WebhookProxyController_receiveWebhook_head","summary":"Trigger webhook (forward request to configured target)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Webhook triggered successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookTriggerResponseDTO"}},"schemaId":"components/schemas/WebhookTriggerResponseDTO"}],"pointer":"/paths/~1hooks~1{projectKey}~1{hookId}/head/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/WebhookTriggerResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookTriggerResponseDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/webhook-proxy/webhookproxycontroller_receivewebhook_head"}],"panels":[]}]},"httpPath":"/hooks/{projectKey}/{hookId}"},{"label":"Trigger webhook (forward request to configured target)","deprecated":false,"httpVerb":"search","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/webhook-proxy/webhookproxycontroller_receivewebhook_search","routeSlug":"/swagger/webhook-proxy/webhookproxycontroller_receivewebhook_search","metadata":{"seo":{"title":"Trigger webhook (forward request to configured target)","description":"Project key in URL path identifies the tenant. Configure webhook URL as: /hooks/{projectKey}/{hookId}. Returns wrapped response with execution metadata."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"WebhookProxyController_receiveWebhook_search","name":"Trigger webhook (forward request to configured target)","isWebhook":false,"pointer":"/paths/~1hooks~1{projectKey}~1{hookId}/search","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Trigger webhook (forward request to configured target)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Project key in URL path identifies the tenant. Configure webhook URL as: /hooks/{projectKey}/{hookId}. Returns wrapped response with execution metadata."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"hookId","in":"path","schemaId":"schema_67","description":"Webhook ID","required":true},{"name":"projectKey","in":"path","schemaId":"schema_128","description":"Project API key (same value as x-project-key header)","required":true}],"pointer":"/paths/~1hooks~1{projectKey}~1{hookId}/search/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"SEARCH","path":"/hooks/{projectKey}/{hookId}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"hookId","in":"path","required":true,"schemaId":"schema_67"},{"name":"projectKey","in":"path","required":true,"schemaId":"schema_128"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/hooks/{projectKey}/{hookId}","href":"webhook-proxy/webhookproxycontroller_receivewebhook_search","openApiOperationId":"WebhookProxyController_receiveWebhook_search","summary":"Trigger webhook (forward request to configured target)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Webhook triggered successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookTriggerResponseDTO"}},"schemaId":"components/schemas/WebhookTriggerResponseDTO"}],"pointer":"/paths/~1hooks~1{projectKey}~1{hookId}/search/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/WebhookTriggerResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookTriggerResponseDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/webhook-proxy/webhookproxycontroller_receivewebhook_search"}],"panels":[]}]},"httpPath":"/hooks/{projectKey}/{hookId}"}],"content":{"contentType":"group","meta":{"name":"Webhook Proxy"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Webhook Proxy","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/hooks/{projectKey}/executions/{executionId}/callback","summary":"Receive callback from external system","prefix":{"name":"post","color":"post"},"badges":[],"link":"/webhook-proxy/webhookproxycontroller_processcallback","deprecated":false},{"title":"/hooks/{projectKey}/{hookId}","summary":"Trigger webhook (forward request to configured target)","prefix":{"name":"get","color":"get"},"badges":[],"link":"/webhook-proxy/webhookproxycontroller_receivewebhook_get","deprecated":false},{"title":"/hooks/{projectKey}/{hookId}","summary":"Trigger webhook (forward request to configured target)","prefix":{"name":"post","color":"post"},"badges":[],"link":"/webhook-proxy/webhookproxycontroller_receivewebhook_post","deprecated":false},{"title":"/hooks/{projectKey}/{hookId}","summary":"Trigger webhook (forward request to configured target)","prefix":{"name":"put","color":"put"},"badges":[],"link":"/webhook-proxy/webhookproxycontroller_receivewebhook_put","deprecated":false},{"title":"/hooks/{projectKey}/{hookId}","summary":"Trigger webhook (forward request to configured target)","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/webhook-proxy/webhookproxycontroller_receivewebhook_delete","deprecated":false},{"title":"/hooks/{projectKey}/{hookId}","summary":"Trigger webhook (forward request to configured target)","prefix":{"name":"patch","color":"patch"},"badges":[],"link":"/webhook-proxy/webhookproxycontroller_receivewebhook_patch","deprecated":false},{"title":"/hooks/{projectKey}/{hookId}","summary":"Trigger webhook (forward request to configured target)","prefix":{"name":"options","color":"options"},"badges":[],"link":"/webhook-proxy/webhookproxycontroller_receivewebhook_options","deprecated":false},{"title":"/hooks/{projectKey}/{hookId}","summary":"Trigger webhook (forward request to configured target)","prefix":{"name":"head","color":"head"},"badges":[],"link":"/webhook-proxy/webhookproxycontroller_receivewebhook_head","deprecated":false},{"title":"/hooks/{projectKey}/{hookId}","summary":"Trigger webhook (forward request to configured target)","prefix":{"name":"search","color":"search"},"badges":[],"link":"/webhook-proxy/webhookproxycontroller_receivewebhook_search","deprecated":false}]}]}]}]}},{"type":"group","label":"Event Subscriptions","link":"/swagger/event-subscriptions","routeSlug":"/swagger/event-subscriptions","items":[{"label":"Register a webhook URL to receive outbox events","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/event-subscriptions/eventsubscriptioncontroller_create","routeSlug":"/swagger/event-subscriptions/eventsubscriptioncontroller_create","metadata":{"seo":{"title":"Register a webhook URL to receive outbox events","description":"Register a webhook URL to receive outbox events"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"EventSubscriptionController_create","name":"Register a webhook URL to receive outbox events","isWebhook":false,"pointer":"/paths/~1events/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Register a webhook URL to receive outbox events","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateEventSubscriptionDTO"}},"schemaId":"components/schemas/CreateEventSubscriptionDTO","pointer":"/paths/~1events/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/events","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/CreateEventSubscriptionDTO"}},"responseCodes":["201"],"pointer":"/events","href":"event-subscriptions/eventsubscriptioncontroller_create","openApiOperationId":"EventSubscriptionController_create","summary":"Register a webhook URL to receive outbox events"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/CreateEventSubscriptionDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateEventSubscriptionDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/EventSubscriptionDTO"}},"schemaId":"components/schemas/EventSubscriptionDTO"}],"pointer":"/paths/~1events/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"201","schemaId":"components/schemas/EventSubscriptionDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/EventSubscriptionDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/event-subscriptions/eventsubscriptioncontroller_create"}],"panels":[]}]},"httpPath":"/events"},{"label":"List event subscriptions","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/event-subscriptions/eventsubscriptioncontroller_list","routeSlug":"/swagger/event-subscriptions/eventsubscriptioncontroller_list","metadata":{"seo":{"title":"List event subscriptions","description":"List event subscriptions"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"EventSubscriptionController_list","name":"List event subscriptions","isWebhook":false,"pointer":"/paths/~1events/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List event subscriptions","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"page","in":"query","schemaId":"schema_67"},{"name":"limit","in":"query","schemaId":"schema_67"}],"pointer":"/paths/~1events/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/events","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"page","in":"query","required":false,"schemaId":"schema_67"},{"name":"limit","in":"query","required":false,"schemaId":"schema_67"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/events","href":"event-subscriptions/eventsubscriptioncontroller_list","openApiOperationId":"EventSubscriptionController_list","summary":"List event subscriptions"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PaginatedResponseDTO"}},"schemaId":"components/schemas/PaginatedResponseDTO"}],"pointer":"/paths/~1events/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PaginatedResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PaginatedResponseDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/event-subscriptions/eventsubscriptioncontroller_list"}],"panels":[]}]},"httpPath":"/events"},{"label":"Get event subscription by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/event-subscriptions/eventsubscriptioncontroller_getbyid","routeSlug":"/swagger/event-subscriptions/eventsubscriptioncontroller_getbyid","metadata":{"seo":{"title":"Get event subscription by ID","description":"Get event subscription by ID"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"EventSubscriptionController_getById","name":"Get event subscription by ID","isWebhook":false,"pointer":"/paths/~1events~1{id}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get event subscription by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1events~1{id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/events/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/events/{id}","href":"event-subscriptions/eventsubscriptioncontroller_getbyid","openApiOperationId":"EventSubscriptionController_getById","summary":"Get event subscription by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/EventSubscriptionDTO"}},"schemaId":"components/schemas/EventSubscriptionDTO"}],"pointer":"/paths/~1events~1{id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/EventSubscriptionDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/EventSubscriptionDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/event-subscriptions/eventsubscriptioncontroller_getbyid"}],"panels":[]}]},"httpPath":"/events/{id}"},{"label":"Update event subscription","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/event-subscriptions/eventsubscriptioncontroller_update","routeSlug":"/swagger/event-subscriptions/eventsubscriptioncontroller_update","metadata":{"seo":{"title":"Update event subscription","description":"Update event subscription"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"EventSubscriptionController_update","name":"Update event subscription","isWebhook":false,"pointer":"/paths/~1events~1{id}/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update event subscription","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1events~1{id}/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UpdateEventSubscriptionDTO"}},"schemaId":"components/schemas/UpdateEventSubscriptionDTO","pointer":"/paths/~1events~1{id}/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/events/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/UpdateEventSubscriptionDTO"}},"responseCodes":["200"],"pointer":"/events/{id}","href":"event-subscriptions/eventsubscriptioncontroller_update","openApiOperationId":"EventSubscriptionController_update","summary":"Update event subscription"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/UpdateEventSubscriptionDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UpdateEventSubscriptionDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/EventSubscriptionDTO"}},"schemaId":"components/schemas/EventSubscriptionDTO"}],"pointer":"/paths/~1events~1{id}/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/EventSubscriptionDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/EventSubscriptionDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/event-subscriptions/eventsubscriptioncontroller_update"}],"panels":[]}]},"httpPath":"/events/{id}"},{"label":"Delete event subscription","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/event-subscriptions/eventsubscriptioncontroller_delete","routeSlug":"/swagger/event-subscriptions/eventsubscriptioncontroller_delete","metadata":{"seo":{"title":"Delete event subscription","description":"Delete event subscription"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"EventSubscriptionController_delete","name":"Delete event subscription","isWebhook":false,"pointer":"/paths/~1events~1{id}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Delete event subscription","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1events~1{id}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/events/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","204"],"pointer":"/events/{id}","href":"event-subscriptions/eventsubscriptioncontroller_delete","openApiOperationId":"EventSubscriptionController_delete","summary":"Delete event subscription"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200"},{"code":"204"}],"pointer":"/paths/~1events~1{id}/delete/responses"}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/event-subscriptions/eventsubscriptioncontroller_delete"}],"panels":[]}]},"httpPath":"/events/{id}"}],"content":{"contentType":"group","meta":{"name":"Event Subscriptions"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Event Subscriptions","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/events","summary":"Register a webhook URL to receive outbox events","prefix":{"name":"post","color":"post"},"badges":[],"link":"/event-subscriptions/eventsubscriptioncontroller_create","deprecated":false},{"title":"/events","summary":"List event subscriptions","prefix":{"name":"get","color":"get"},"badges":[],"link":"/event-subscriptions/eventsubscriptioncontroller_list","deprecated":false},{"title":"/events/{id}","summary":"Get event subscription by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/event-subscriptions/eventsubscriptioncontroller_getbyid","deprecated":false},{"title":"/events/{id}","summary":"Update event subscription","prefix":{"name":"put","color":"put"},"badges":[],"link":"/event-subscriptions/eventsubscriptioncontroller_update","deprecated":false},{"title":"/events/{id}","summary":"Delete event subscription","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/event-subscriptions/eventsubscriptioncontroller_delete","deprecated":false}]}]}]}]}},{"type":"group","label":"Custom Field Definitions","link":"/swagger/custom-field-definitions","routeSlug":"/swagger/custom-field-definitions","items":[{"label":"List custom field definitions","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/custom-field-definitions/customfielddefinitionscontroller_listdefinitions","routeSlug":"/swagger/custom-field-definitions/customfielddefinitionscontroller_listdefinitions","metadata":{"seo":{"title":"List custom field definitions","description":"Get all custom field definitions for the tenant. Filter by entityType to get fields for a specific entity."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CustomFieldDefinitionsController_listDefinitions","name":"List custom field definitions","isWebhook":false,"pointer":"/paths/~1custom-field-definitions/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List custom field definitions","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Get all custom field definitions for the tenant. Filter by entityType to get fields for a specific entity."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"entityType","in":"query","schemaId":"schema_129","description":"Filter by entity type"}],"pointer":"/paths/~1custom-field-definitions/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/custom-field-definitions","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"entityType","in":"query","required":false,"schemaId":"schema_129"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/custom-field-definitions","href":"custom-field-definitions/customfielddefinitionscontroller_listdefinitions","openApiOperationId":"CustomFieldDefinitionsController_listDefinitions","summary":"List custom field definitions"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"List of custom field definitions","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_130"}},"schemaId":"schema_130"}],"pointer":"/paths/~1custom-field-definitions/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_130","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_130"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/custom-field-definitions/customfielddefinitionscontroller_listdefinitions"}],"panels":[]}]},"httpPath":"/custom-field-definitions"},{"label":"Create custom field definition","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/custom-field-definitions/customfielddefinitionscontroller_create","routeSlug":"/swagger/custom-field-definitions/customfielddefinitionscontroller_create","metadata":{"seo":{"title":"Create custom field definition","description":"Create a new custom field for the tenant. Key must be unique within tenant+entityType."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CustomFieldDefinitionsController_create","name":"Create custom field definition","isWebhook":false,"pointer":"/paths/~1custom-field-definitions/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create custom field definition","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Create a new custom field for the tenant. Key must be unique within tenant+entityType."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateCustomFieldDefinitionDTO"}},"schemaId":"components/schemas/CreateCustomFieldDefinitionDTO","pointer":"/paths/~1custom-field-definitions/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/custom-field-definitions","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/CreateCustomFieldDefinitionDTO"}},"responseCodes":["201","400","409"],"pointer":"/custom-field-definitions","href":"custom-field-definitions/customfielddefinitionscontroller_create","openApiOperationId":"CustomFieldDefinitionsController_create","summary":"Create custom field definition"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/CreateCustomFieldDefinitionDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateCustomFieldDefinitionDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"201","description":"Field created","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CustomFieldDefinitionDTO"}},"schemaId":"components/schemas/CustomFieldDefinitionDTO"},{"code":"400","description":"Invalid field configuration"},{"code":"409","description":"Duplicate key for entity type"}],"pointer":"/paths/~1custom-field-definitions/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"201","schemaId":"components/schemas/CustomFieldDefinitionDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CustomFieldDefinitionDTO"}}},{"code":"400"},{"code":"409"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/custom-field-definitions/customfielddefinitionscontroller_create"}],"panels":[]}]},"httpPath":"/custom-field-definitions"},{"label":"Get custom field definition by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/custom-field-definitions/customfielddefinitionscontroller_getbyid","routeSlug":"/swagger/custom-field-definitions/customfielddefinitionscontroller_getbyid","metadata":{"seo":{"title":"Get custom field definition by ID","description":"Get a single custom field definition by ID."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CustomFieldDefinitionsController_getById","name":"Get custom field definition by ID","isWebhook":false,"pointer":"/paths/~1custom-field-definitions~1{id}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get custom field definition by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Get a single custom field definition by ID."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","description":"Field definition UUID","required":true}],"pointer":"/paths/~1custom-field-definitions~1{id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/custom-field-definitions/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","404"],"pointer":"/custom-field-definitions/{id}","href":"custom-field-definitions/customfielddefinitionscontroller_getbyid","openApiOperationId":"CustomFieldDefinitionsController_getById","summary":"Get custom field definition by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Field definition found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CustomFieldDefinitionDTO"}},"schemaId":"components/schemas/CustomFieldDefinitionDTO"},{"code":"404","description":"Field definition not found"}],"pointer":"/paths/~1custom-field-definitions~1{id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CustomFieldDefinitionDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CustomFieldDefinitionDTO"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/custom-field-definitions/customfielddefinitionscontroller_getbyid"}],"panels":[]}]},"httpPath":"/custom-field-definitions/{id}"},{"label":"Update custom field definition","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/custom-field-definitions/customfielddefinitionscontroller_update","routeSlug":"/swagger/custom-field-definitions/customfielddefinitionscontroller_update","metadata":{"seo":{"title":"Update custom field definition","description":"Update field properties. Key and entityType cannot be changed."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CustomFieldDefinitionsController_update","name":"Update custom field definition","isWebhook":false,"pointer":"/paths/~1custom-field-definitions~1{id}/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update custom field definition","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Update field properties. Key and entityType cannot be changed."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","description":"Field definition UUID","required":true}],"pointer":"/paths/~1custom-field-definitions~1{id}/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UpdateCustomFieldDefinitionDTO"}},"schemaId":"components/schemas/UpdateCustomFieldDefinitionDTO","pointer":"/paths/~1custom-field-definitions~1{id}/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/custom-field-definitions/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/UpdateCustomFieldDefinitionDTO"}},"responseCodes":["200","404"],"pointer":"/custom-field-definitions/{id}","href":"custom-field-definitions/customfielddefinitionscontroller_update","openApiOperationId":"CustomFieldDefinitionsController_update","summary":"Update custom field definition"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/UpdateCustomFieldDefinitionDTO","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UpdateCustomFieldDefinitionDTO"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Field updated","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CustomFieldDefinitionDTO"}},"schemaId":"components/schemas/CustomFieldDefinitionDTO"},{"code":"404","description":"Field definition not found"}],"pointer":"/paths/~1custom-field-definitions~1{id}/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CustomFieldDefinitionDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CustomFieldDefinitionDTO"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/custom-field-definitions/customfielddefinitionscontroller_update"}],"panels":[]}]},"httpPath":"/custom-field-definitions/{id}"},{"label":"Delete custom field definition","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/custom-field-definitions/customfielddefinitionscontroller_delete","routeSlug":"/swagger/custom-field-definitions/customfielddefinitionscontroller_delete","metadata":{"seo":{"title":"Delete custom field definition","description":"Delete a field. Fails if field is referenced in any redemption baseRequiredUserFields/specificRequiredUserFields or campaign."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CustomFieldDefinitionsController_delete","name":"Delete custom field definition","isWebhook":false,"pointer":"/paths/~1custom-field-definitions~1{id}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Delete custom field definition","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Delete a field. Fails if field is referenced in any redemption baseRequiredUserFields/specificRequiredUserFields or campaign."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","description":"Field definition UUID","required":true}],"pointer":"/paths/~1custom-field-definitions~1{id}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/custom-field-definitions/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","404","409"],"pointer":"/custom-field-definitions/{id}","href":"custom-field-definitions/customfielddefinitionscontroller_delete","openApiOperationId":"CustomFieldDefinitionsController_delete","summary":"Delete custom field definition"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Field deleted"},{"code":"404","description":"Field definition not found"},{"code":"409","description":"Field is in use and cannot be deleted"}],"pointer":"/paths/~1custom-field-definitions~1{id}/delete/responses"}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/custom-field-definitions/customfielddefinitionscontroller_delete"}],"panels":[]}]},"httpPath":"/custom-field-definitions/{id}"},{"label":"Check field usages","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/custom-field-definitions/customfielddefinitionscontroller_getusages","routeSlug":"/swagger/custom-field-definitions/customfielddefinitionscontroller_getusages","metadata":{"seo":{"title":"Check field usages","description":"Check if a field is referenced in any redemption or campaign. Useful before deletion."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"CustomFieldDefinitionsController_getUsages","name":"Check field usages","isWebhook":false,"pointer":"/paths/~1custom-field-definitions~1{id}~1usages/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Check field usages","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Check if a field is referenced in any redemption or campaign. Useful before deletion."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","description":"Field definition UUID","required":true}],"pointer":"/paths/~1custom-field-definitions~1{id}~1usages/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/custom-field-definitions/{id}/usages","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","404"],"pointer":"/custom-field-definitions/{id}/usages","href":"custom-field-definitions/customfielddefinitionscontroller_getusages","openApiOperationId":"CustomFieldDefinitionsController_getUsages","summary":"Check field usages"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Usage count returned"},{"code":"404","description":"Field definition not found"}],"pointer":"/paths/~1custom-field-definitions~1{id}~1usages/get/responses"}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/custom-field-definitions/customfielddefinitionscontroller_getusages"}],"panels":[]}]},"httpPath":"/custom-field-definitions/{id}/usages"}],"content":{"contentType":"group","meta":{"name":"Custom Field Definitions"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Custom Field Definitions","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/custom-field-definitions","summary":"List custom field definitions","prefix":{"name":"get","color":"get"},"badges":[],"link":"/custom-field-definitions/customfielddefinitionscontroller_listdefinitions","deprecated":false},{"title":"/custom-field-definitions","summary":"Create custom field definition","prefix":{"name":"post","color":"post"},"badges":[],"link":"/custom-field-definitions/customfielddefinitionscontroller_create","deprecated":false},{"title":"/custom-field-definitions/{id}","summary":"Get custom field definition by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/custom-field-definitions/customfielddefinitionscontroller_getbyid","deprecated":false},{"title":"/custom-field-definitions/{id}","summary":"Update custom field definition","prefix":{"name":"put","color":"put"},"badges":[],"link":"/custom-field-definitions/customfielddefinitionscontroller_update","deprecated":false},{"title":"/custom-field-definitions/{id}","summary":"Delete custom field definition","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/custom-field-definitions/customfielddefinitionscontroller_delete","deprecated":false},{"title":"/custom-field-definitions/{id}/usages","summary":"Check field usages","prefix":{"name":"get","color":"get"},"badges":[],"link":"/custom-field-definitions/customfielddefinitionscontroller_getusages","deprecated":false}]}]}]}]}},{"type":"group","label":"Redirects","link":"/swagger/redirects","routeSlug":"/swagger/redirects","items":[{"label":"Create a redirect mapping","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/redirects/redirectcontroller_create","routeSlug":"/swagger/redirects/redirectcontroller_create","metadata":{"seo":{"title":"Create a redirect mapping","description":"Create a redirect mapping"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RedirectController_create","name":"Create a redirect mapping","isWebhook":false,"pointer":"/paths/~1redirects/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create a redirect mapping","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateRedirectDto"}},"schemaId":"components/schemas/CreateRedirectDto","pointer":"/paths/~1redirects/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/redirects","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/CreateRedirectDto"}},"responseCodes":["201"],"pointer":"/redirects","href":"redirects/redirectcontroller_create","openApiOperationId":"RedirectController_create","summary":"Create a redirect mapping"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/CreateRedirectDto","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateRedirectDto"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedirectModel"}},"schemaId":"components/schemas/RedirectModel"}],"pointer":"/paths/~1redirects/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"201","schemaId":"components/schemas/RedirectModel","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedirectModel"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/redirects/redirectcontroller_create"}],"panels":[]}]},"httpPath":"/redirects"},{"label":"List all redirects for this tenant","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/redirects/redirectcontroller_findall","routeSlug":"/swagger/redirects/redirectcontroller_findall","metadata":{"seo":{"title":"List all redirects for this tenant","description":"List all redirects for this tenant"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RedirectController_findAll","name":"List all redirects for this tenant","isWebhook":false,"pointer":"/paths/~1redirects/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List all redirects for this tenant","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/redirects","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/redirects","href":"redirects/redirectcontroller_findall","openApiOperationId":"RedirectController_findAll","summary":"List all redirects for this tenant"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_131"}},"schemaId":"schema_131"}],"pointer":"/paths/~1redirects/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_131","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_131"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/redirects/redirectcontroller_findall"}],"panels":[]}]},"httpPath":"/redirects"},{"label":"Public QR redirect — resolves code and issues 302 to target URL","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/redirects/redirectcontroller_redirect","routeSlug":"/swagger/redirects/redirectcontroller_redirect","metadata":{"seo":{"title":"Public QR redirect — resolves code and issues 302 to target URL","description":"Public QR redirect — resolves code and issues 302 to target URL"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RedirectController_redirect","name":"Public QR redirect — resolves code and issues 302 to target URL","isWebhook":false,"pointer":"/paths/~1redirects~1go~1{code}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public QR redirect — resolves code and issues 302 to target URL","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"code","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1redirects~1go~1{code}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/redirects/go/{code}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"code","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/redirects/go/{code}","href":"redirects/redirectcontroller_redirect","openApiOperationId":"RedirectController_redirect","summary":"Public QR redirect — resolves code and issues 302 to target URL"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200"}],"pointer":"/paths/~1redirects~1go~1{code}/get/responses"}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/redirects/redirectcontroller_redirect"}],"panels":[]}]},"httpPath":"/redirects/go/{code}"},{"label":"Get scan analytics for a redirect","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/redirects/redirectcontroller_getanalytics","routeSlug":"/swagger/redirects/redirectcontroller_getanalytics","metadata":{"seo":{"title":"Get scan analytics for a redirect","description":"Get scan analytics for a redirect"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RedirectController_getAnalytics","name":"Get scan analytics for a redirect","isWebhook":false,"pointer":"/paths/~1redirects~1{id}~1analytics/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get scan analytics for a redirect","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1redirects~1{id}~1analytics/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"from","in":"query","schemaId":"schema_67","required":true},{"name":"to","in":"query","schemaId":"schema_67","required":true}],"pointer":"/paths/~1redirects~1{id}~1analytics/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/redirects/{id}/analytics","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[{"name":"from","in":"query","required":true,"schemaId":"schema_67"},{"name":"to","in":"query","required":true,"schemaId":"schema_67"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/redirects/{id}/analytics","href":"redirects/redirectcontroller_getanalytics","openApiOperationId":"RedirectController_getAnalytics","summary":"Get scan analytics for a redirect"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_80"}},"schemaId":"schema_80"}],"pointer":"/paths/~1redirects~1{id}~1analytics/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_80","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_80"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/redirects/redirectcontroller_getanalytics"}],"panels":[]}]},"httpPath":"/redirects/{id}/analytics"},{"label":"Get a redirect by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/redirects/redirectcontroller_findone","routeSlug":"/swagger/redirects/redirectcontroller_findone","metadata":{"seo":{"title":"Get a redirect by ID","description":"Get a redirect by ID"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RedirectController_findOne","name":"Get a redirect by ID","isWebhook":false,"pointer":"/paths/~1redirects~1{id}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get a redirect by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1redirects~1{id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/redirects/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/redirects/{id}","href":"redirects/redirectcontroller_findone","openApiOperationId":"RedirectController_findOne","summary":"Get a redirect by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedirectModel"}},"schemaId":"components/schemas/RedirectModel"}],"pointer":"/paths/~1redirects~1{id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/RedirectModel","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedirectModel"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/redirects/redirectcontroller_findone"}],"panels":[]}]},"httpPath":"/redirects/{id}"},{"label":"Update a redirect label or target URL","deprecated":false,"httpVerb":"patch","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/redirects/redirectcontroller_update","routeSlug":"/swagger/redirects/redirectcontroller_update","metadata":{"seo":{"title":"Update a redirect label or target URL","description":"Update a redirect label or target URL"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RedirectController_update","name":"Update a redirect label or target URL","isWebhook":false,"pointer":"/paths/~1redirects~1{id}/patch","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update a redirect label or target URL","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1redirects~1{id}/patch/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UpdateRedirectDto"}},"schemaId":"components/schemas/UpdateRedirectDto","pointer":"/paths/~1redirects~1{id}/patch/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PATCH","path":"/redirects/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/UpdateRedirectDto"}},"responseCodes":["200"],"pointer":"/redirects/{id}","href":"redirects/redirectcontroller_update","openApiOperationId":"RedirectController_update","summary":"Update a redirect label or target URL"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/UpdateRedirectDto","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UpdateRedirectDto"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedirectModel"}},"schemaId":"components/schemas/RedirectModel"}],"pointer":"/paths/~1redirects~1{id}/patch/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/RedirectModel","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedirectModel"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/redirects/redirectcontroller_update"}],"panels":[]}]},"httpPath":"/redirects/{id}"},{"label":"Soft-delete a redirect","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/redirects/redirectcontroller_remove","routeSlug":"/swagger/redirects/redirectcontroller_remove","metadata":{"seo":{"title":"Soft-delete a redirect","description":"Soft-delete a redirect"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"RedirectController_remove","name":"Soft-delete a redirect","isWebhook":false,"pointer":"/paths/~1redirects~1{id}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Soft-delete a redirect","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_67","required":true}],"pointer":"/paths/~1redirects~1{id}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/redirects/{id}","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_67"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["204"],"pointer":"/redirects/{id}","href":"redirects/redirectcontroller_remove","openApiOperationId":"RedirectController_remove","summary":"Soft-delete a redirect"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"204"}],"pointer":"/paths/~1redirects~1{id}/delete/responses"}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/redirects/redirectcontroller_remove"}],"panels":[]}]},"httpPath":"/redirects/{id}"}],"content":{"contentType":"group","meta":{"name":"Redirects"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Redirects","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/redirects","summary":"Create a redirect mapping","prefix":{"name":"post","color":"post"},"badges":[],"link":"/redirects/redirectcontroller_create","deprecated":false},{"title":"/redirects","summary":"List all redirects for this tenant","prefix":{"name":"get","color":"get"},"badges":[],"link":"/redirects/redirectcontroller_findall","deprecated":false},{"title":"/redirects/go/{code}","summary":"Public QR redirect — resolves code and issues 302 to target URL","prefix":{"name":"get","color":"get"},"badges":[],"link":"/redirects/redirectcontroller_redirect","deprecated":false},{"title":"/redirects/{id}/analytics","summary":"Get scan analytics for a redirect","prefix":{"name":"get","color":"get"},"badges":[],"link":"/redirects/redirectcontroller_getanalytics","deprecated":false},{"title":"/redirects/{id}","summary":"Get a redirect by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/redirects/redirectcontroller_findone","deprecated":false},{"title":"/redirects/{id}","summary":"Update a redirect label or target URL","prefix":{"name":"patch","color":"patch"},"badges":[],"link":"/redirects/redirectcontroller_update","deprecated":false},{"title":"/redirects/{id}","summary":"Soft-delete a redirect","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/redirects/redirectcontroller_remove","deprecated":false}]}]}]}]}},{"type":"group","label":"Analytics","link":"/swagger/analytics","routeSlug":"/swagger/analytics","items":[{"label":"Get transaction analytics (Admin only)","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/analytics/analyticscontroller_gettransactionanalytics","routeSlug":"/swagger/analytics/analyticscontroller_gettransactionanalytics","metadata":{"seo":{"title":"Get transaction analytics (Admin only)","description":"Returns aggregated transaction data with flexible grouping and metrics. Supports complex filtering by date range, business, token, status, and more. Requires admin authentication."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"AnalyticsController_getTransactionAnalytics","name":"Get transaction analytics (Admin only)","isWebhook":false,"pointer":"/paths/~1analytics~1transactions/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get transaction analytics (Admin only)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Returns aggregated transaction data with flexible grouping and metrics. Supports complex filtering by date range, business, token, status, and more. Requires admin authentication."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TransactionAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1transactions/post/requestBody/content/application~1json/examples/stampsCount","paths/~1analytics~1transactions/post/requestBody/content/application~1json/examples/transactionsByBusiness"]}},"schemaId":"components/schemas/TransactionAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1transactions/post/requestBody/content/application~1json/examples/stampsCount","paths/~1analytics~1transactions/post/requestBody/content/application~1json/examples/transactionsByBusiness"],"pointer":"/paths/~1analytics~1transactions/post/requestBody","description":"Analytics configuration with filters, grouping, and metrics"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/analytics/transactions","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/TransactionAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1transactions/post/requestBody/content/application~1json/examples/stampsCount","paths/~1analytics~1transactions/post/requestBody/content/application~1json/examples/transactionsByBusiness"]}},"responseCodes":["200","201"],"pointer":"/analytics/transactions","href":"analytics/analyticscontroller_gettransactionanalytics","openApiOperationId":"AnalyticsController_getTransactionAnalytics","summary":"Get transaction analytics (Admin only)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/TransactionAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1transactions/post/requestBody/content/application~1json/examples/stampsCount","paths/~1analytics~1transactions/post/requestBody/content/application~1json/examples/transactionsByBusiness"],"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TransactionAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1transactions/post/requestBody/content/application~1json/examples/stampsCount","paths/~1analytics~1transactions/post/requestBody/content/application~1json/examples/transactionsByBusiness"]}},"examples":[{},{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Analytics data successfully retrieved","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TransactionAnalyticsResponseDTO"}},"schemaId":"components/schemas/TransactionAnalyticsResponseDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TransactionAnalyticsResponseDTO"}},"schemaId":"components/schemas/TransactionAnalyticsResponseDTO"}],"pointer":"/paths/~1analytics~1transactions/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TransactionAnalyticsResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TransactionAnalyticsResponseDTO"}}},{"code":"201","schemaId":"components/schemas/TransactionAnalyticsResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TransactionAnalyticsResponseDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/analytics/analyticscontroller_gettransactionanalytics"}],"panels":[]}]},"httpPath":"/analytics/transactions"},{"label":"Get campaign claim analytics (Admin/Business)","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/analytics/analyticscontroller_getcampaignclaimanalytics","routeSlug":"/swagger/analytics/analyticscontroller_getcampaignclaimanalytics","metadata":{"seo":{"title":"Get campaign claim analytics (Admin/Business)","description":"Returns aggregated campaign claim data with flexible grouping and metrics. Business users are auto-filtered to their own campaigns (ownerBusinessId). Admin users see all data."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"AnalyticsController_getCampaignClaimAnalytics","name":"Get campaign claim analytics (Admin/Business)","isWebhook":false,"pointer":"/paths/~1analytics~1campaign-claims/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get campaign claim analytics (Admin/Business)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Returns aggregated campaign claim data with flexible grouping and metrics. Business users are auto-filtered to their own campaigns (ownerBusinessId). Admin users see all data."},{"nodeType":"security","requirements":[{"schemes":[{"name":"bearer","scopes":[]}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CampaignClaimAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1campaign-claims/post/requestBody/content/application~1json/examples/claimsPerCampaign","paths/~1analytics~1campaign-claims/post/requestBody/content/application~1json/examples/claimsByStatusOverTime","paths/~1analytics~1campaign-claims/post/requestBody/content/application~1json/examples/claimsByCountry"]}},"schemaId":"components/schemas/CampaignClaimAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1campaign-claims/post/requestBody/content/application~1json/examples/claimsPerCampaign","paths/~1analytics~1campaign-claims/post/requestBody/content/application~1json/examples/claimsByStatusOverTime","paths/~1analytics~1campaign-claims/post/requestBody/content/application~1json/examples/claimsByCountry"],"pointer":"/paths/~1analytics~1campaign-claims/post/requestBody","description":"Campaign claim analytics request with grouping and metrics"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/analytics/campaign-claims","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[],"requestBody":{"application/json":{"schemaId":"components/schemas/CampaignClaimAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1campaign-claims/post/requestBody/content/application~1json/examples/claimsPerCampaign","paths/~1analytics~1campaign-claims/post/requestBody/content/application~1json/examples/claimsByStatusOverTime","paths/~1analytics~1campaign-claims/post/requestBody/content/application~1json/examples/claimsByCountry"]}},"responseCodes":["200","201"],"pointer":"/analytics/campaign-claims","href":"analytics/analyticscontroller_getcampaignclaimanalytics","openApiOperationId":"AnalyticsController_getCampaignClaimAnalytics","summary":"Get campaign claim analytics (Admin/Business)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/CampaignClaimAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1campaign-claims/post/requestBody/content/application~1json/examples/claimsPerCampaign","paths/~1analytics~1campaign-claims/post/requestBody/content/application~1json/examples/claimsByStatusOverTime","paths/~1analytics~1campaign-claims/post/requestBody/content/application~1json/examples/claimsByCountry"],"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CampaignClaimAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1campaign-claims/post/requestBody/content/application~1json/examples/claimsPerCampaign","paths/~1analytics~1campaign-claims/post/requestBody/content/application~1json/examples/claimsByStatusOverTime","paths/~1analytics~1campaign-claims/post/requestBody/content/application~1json/examples/claimsByCountry"]}},"examples":[{},{},{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Analytics data successfully retrieved","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignClaimAnalyticsResponseDTO"}},"schemaId":"components/schemas/CampaignClaimAnalyticsResponseDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignClaimAnalyticsResponseDTO"}},"schemaId":"components/schemas/CampaignClaimAnalyticsResponseDTO"}],"pointer":"/paths/~1analytics~1campaign-claims/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CampaignClaimAnalyticsResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignClaimAnalyticsResponseDTO"}}},{"code":"201","schemaId":"components/schemas/CampaignClaimAnalyticsResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CampaignClaimAnalyticsResponseDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/analytics/analyticscontroller_getcampaignclaimanalytics"}],"panels":[]}]},"httpPath":"/analytics/campaign-claims"},{"label":"Get redemption redeem analytics (Admin/Business)","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/analytics/analyticscontroller_getredemptionredeemanalytics","routeSlug":"/swagger/analytics/analyticscontroller_getredemptionredeemanalytics","metadata":{"seo":{"title":"Get redemption redeem analytics (Admin/Business)","description":"Returns aggregated redemption redeem data with flexible grouping and metrics. Business users are auto-filtered to their own redemptions (ownerBusinessId). Admin users see all data."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"AnalyticsController_getRedemptionRedeemAnalytics","name":"Get redemption redeem analytics (Admin/Business)","isWebhook":false,"pointer":"/paths/~1analytics~1redemption-redeems/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get redemption redeem analytics (Admin/Business)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Returns aggregated redemption redeem data with flexible grouping and metrics. Business users are auto-filtered to their own redemptions (ownerBusinessId). Admin users see all data."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/RedemptionRedeemAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1redemption-redeems/post/requestBody/content/application~1json/examples/redeemsPerRedemption","paths/~1analytics~1redemption-redeems/post/requestBody/content/application~1json/examples/redeemsByStatusOverTime","paths/~1analytics~1redemption-redeems/post/requestBody/content/application~1json/examples/redeemsByBusiness"]}},"schemaId":"components/schemas/RedemptionRedeemAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1redemption-redeems/post/requestBody/content/application~1json/examples/redeemsPerRedemption","paths/~1analytics~1redemption-redeems/post/requestBody/content/application~1json/examples/redeemsByStatusOverTime","paths/~1analytics~1redemption-redeems/post/requestBody/content/application~1json/examples/redeemsByBusiness"],"pointer":"/paths/~1analytics~1redemption-redeems/post/requestBody","description":"Redemption redeem analytics request with grouping and metrics"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/analytics/redemption-redeems","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/RedemptionRedeemAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1redemption-redeems/post/requestBody/content/application~1json/examples/redeemsPerRedemption","paths/~1analytics~1redemption-redeems/post/requestBody/content/application~1json/examples/redeemsByStatusOverTime","paths/~1analytics~1redemption-redeems/post/requestBody/content/application~1json/examples/redeemsByBusiness"]}},"responseCodes":["200","201"],"pointer":"/analytics/redemption-redeems","href":"analytics/analyticscontroller_getredemptionredeemanalytics","openApiOperationId":"AnalyticsController_getRedemptionRedeemAnalytics","summary":"Get redemption redeem analytics (Admin/Business)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/RedemptionRedeemAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1redemption-redeems/post/requestBody/content/application~1json/examples/redeemsPerRedemption","paths/~1analytics~1redemption-redeems/post/requestBody/content/application~1json/examples/redeemsByStatusOverTime","paths/~1analytics~1redemption-redeems/post/requestBody/content/application~1json/examples/redeemsByBusiness"],"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/RedemptionRedeemAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1redemption-redeems/post/requestBody/content/application~1json/examples/redeemsPerRedemption","paths/~1analytics~1redemption-redeems/post/requestBody/content/application~1json/examples/redeemsByStatusOverTime","paths/~1analytics~1redemption-redeems/post/requestBody/content/application~1json/examples/redeemsByBusiness"]}},"examples":[{},{},{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Analytics data successfully retrieved","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionRedeemAnalyticsResponseDTO"}},"schemaId":"components/schemas/RedemptionRedeemAnalyticsResponseDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionRedeemAnalyticsResponseDTO"}},"schemaId":"components/schemas/RedemptionRedeemAnalyticsResponseDTO"}],"pointer":"/paths/~1analytics~1redemption-redeems/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/RedemptionRedeemAnalyticsResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionRedeemAnalyticsResponseDTO"}}},{"code":"201","schemaId":"components/schemas/RedemptionRedeemAnalyticsResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RedemptionRedeemAnalyticsResponseDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/analytics/analyticscontroller_getredemptionredeemanalytics"}],"panels":[]}]},"httpPath":"/analytics/redemption-redeems"},{"label":"Get user analytics (Admin only)","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/analytics/analyticscontroller_getuseranalytics","routeSlug":"/swagger/analytics/analyticscontroller_getuseranalytics","metadata":{"seo":{"title":"Get user analytics (Admin only)","description":"Returns aggregated user statistics including total users, active users, new users, transaction metrics, campaign claims, redemptions, and engagement rate. Supports date range filtering. Requires admin authentication."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"AnalyticsController_getUserAnalytics","name":"Get user analytics (Admin only)","isWebhook":false,"pointer":"/paths/~1analytics~1users/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get user analytics (Admin only)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Returns aggregated user statistics including total users, active users, new users, transaction metrics, campaign claims, redemptions, and engagement rate. Supports date range filtering. Requires admin authentication."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UserAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1users/post/requestBody/content/application~1json/examples/allTime","paths/~1analytics~1users/post/requestBody/content/application~1json/examples/monthlyStats","paths/~1analytics~1users/post/requestBody/content/application~1json/examples/businessUsers"]}},"schemaId":"components/schemas/UserAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1users/post/requestBody/content/application~1json/examples/allTime","paths/~1analytics~1users/post/requestBody/content/application~1json/examples/monthlyStats","paths/~1analytics~1users/post/requestBody/content/application~1json/examples/businessUsers"],"pointer":"/paths/~1analytics~1users/post/requestBody","description":"User analytics request with date range filters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/analytics/users","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/UserAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1users/post/requestBody/content/application~1json/examples/allTime","paths/~1analytics~1users/post/requestBody/content/application~1json/examples/monthlyStats","paths/~1analytics~1users/post/requestBody/content/application~1json/examples/businessUsers"]}},"responseCodes":["200","201"],"pointer":"/analytics/users","href":"analytics/analyticscontroller_getuseranalytics","openApiOperationId":"AnalyticsController_getUserAnalytics","summary":"Get user analytics (Admin only)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/UserAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1users/post/requestBody/content/application~1json/examples/allTime","paths/~1analytics~1users/post/requestBody/content/application~1json/examples/monthlyStats","paths/~1analytics~1users/post/requestBody/content/application~1json/examples/businessUsers"],"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UserAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1users/post/requestBody/content/application~1json/examples/allTime","paths/~1analytics~1users/post/requestBody/content/application~1json/examples/monthlyStats","paths/~1analytics~1users/post/requestBody/content/application~1json/examples/businessUsers"]}},"examples":[{},{},{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"User analytics successfully retrieved","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserAnalyticsResponseDTO"}},"schemaId":"components/schemas/UserAnalyticsResponseDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserAnalyticsResponseDTO"}},"schemaId":"components/schemas/UserAnalyticsResponseDTO"}],"pointer":"/paths/~1analytics~1users/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/UserAnalyticsResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserAnalyticsResponseDTO"}}},{"code":"201","schemaId":"components/schemas/UserAnalyticsResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserAnalyticsResponseDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/analytics/analyticscontroller_getuseranalytics"}],"panels":[]}]},"httpPath":"/analytics/users"},{"label":"Get user transaction ranking (Admin only)","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/analytics/analyticscontroller_getuserranking","routeSlug":"/swagger/analytics/analyticscontroller_getuserranking","metadata":{"seo":{"title":"Get user transaction ranking (Admin only)","description":"Returns ranked list of users with full user details and transaction metrics. Data enrichment via efficient SQL JOINs + UNION (handles legacy transactions). Supports filtering by business, token type, date range. Requires admin authentication."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"AnalyticsController_getUserRanking","name":"Get user transaction ranking (Admin only)","isWebhook":false,"pointer":"/paths/~1analytics~1users~1ranking/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get user transaction ranking (Admin only)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returns ranked list of users with full user details and transaction metrics. Data enrichment via efficient SQL JOINs + UNION (handles legacy transactions). Supports filtering by business, token type, date range. Requires admin authentication."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UserRankingAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1users~1ranking/post/requestBody/content/application~1json/examples/topUsers","paths/~1analytics~1users~1ranking/post/requestBody/content/application~1json/examples/topStampSpenders","paths/~1analytics~1users~1ranking/post/requestBody/content/application~1json/examples/businessLeaderboard"]}},"schemaId":"components/schemas/UserRankingAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1users~1ranking/post/requestBody/content/application~1json/examples/topUsers","paths/~1analytics~1users~1ranking/post/requestBody/content/application~1json/examples/topStampSpenders","paths/~1analytics~1users~1ranking/post/requestBody/content/application~1json/examples/businessLeaderboard"],"pointer":"/paths/~1analytics~1users~1ranking/post/requestBody","description":"User ranking request with filters, sorting, and limit"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/analytics/users/ranking","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/UserRankingAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1users~1ranking/post/requestBody/content/application~1json/examples/topUsers","paths/~1analytics~1users~1ranking/post/requestBody/content/application~1json/examples/topStampSpenders","paths/~1analytics~1users~1ranking/post/requestBody/content/application~1json/examples/businessLeaderboard"]}},"responseCodes":["200","201"],"pointer":"/analytics/users/ranking","href":"analytics/analyticscontroller_getuserranking","openApiOperationId":"AnalyticsController_getUserRanking","summary":"Get user transaction ranking (Admin only)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/UserRankingAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1users~1ranking/post/requestBody/content/application~1json/examples/topUsers","paths/~1analytics~1users~1ranking/post/requestBody/content/application~1json/examples/topStampSpenders","paths/~1analytics~1users~1ranking/post/requestBody/content/application~1json/examples/businessLeaderboard"],"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UserRankingAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1users~1ranking/post/requestBody/content/application~1json/examples/topUsers","paths/~1analytics~1users~1ranking/post/requestBody/content/application~1json/examples/topStampSpenders","paths/~1analytics~1users~1ranking/post/requestBody/content/application~1json/examples/businessLeaderboard"]}},"examples":[{},{},{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"User ranking successfully retrieved","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserRankingAnalyticsResponseDTO"}},"schemaId":"components/schemas/UserRankingAnalyticsResponseDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserRankingAnalyticsResponseDTO"}},"schemaId":"components/schemas/UserRankingAnalyticsResponseDTO"}],"pointer":"/paths/~1analytics~1users~1ranking/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/UserRankingAnalyticsResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserRankingAnalyticsResponseDTO"}}},{"code":"201","schemaId":"components/schemas/UserRankingAnalyticsResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/UserRankingAnalyticsResponseDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/analytics/analyticscontroller_getuserranking"}],"panels":[]}]},"httpPath":"/analytics/users/ranking"},{"label":"Get business transaction ranking (Admin only)","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/analytics/analyticscontroller_getbusinessranking","routeSlug":"/swagger/analytics/analyticscontroller_getbusinessranking","metadata":{"seo":{"title":"Get business transaction ranking (Admin only)","description":"Returns ranked list of businesses with full business details and transaction metrics. Data enrichment via efficient SQL JOINs + UNION (handles legacy transactions). Supports filtering by token type, date range. Requires admin authentication."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"AnalyticsController_getBusinessRanking","name":"Get business transaction ranking (Admin only)","isWebhook":false,"pointer":"/paths/~1analytics~1businesses~1ranking/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get business transaction ranking (Admin only)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returns ranked list of businesses with full business details and transaction metrics. Data enrichment via efficient SQL JOINs + UNION (handles legacy transactions). Supports filtering by token type, date range. Requires admin authentication."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/BusinessRankingAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1businesses~1ranking/post/requestBody/content/application~1json/examples/topBusinesses","paths/~1analytics~1businesses~1ranking/post/requestBody/content/application~1json/examples/topStampReceivers","paths/~1analytics~1businesses~1ranking/post/requestBody/content/application~1json/examples/businessLeaderboard"]}},"schemaId":"components/schemas/BusinessRankingAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1businesses~1ranking/post/requestBody/content/application~1json/examples/topBusinesses","paths/~1analytics~1businesses~1ranking/post/requestBody/content/application~1json/examples/topStampReceivers","paths/~1analytics~1businesses~1ranking/post/requestBody/content/application~1json/examples/businessLeaderboard"],"pointer":"/paths/~1analytics~1businesses~1ranking/post/requestBody","description":"Business ranking request with filters, sorting, and limit"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/analytics/businesses/ranking","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/BusinessRankingAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1businesses~1ranking/post/requestBody/content/application~1json/examples/topBusinesses","paths/~1analytics~1businesses~1ranking/post/requestBody/content/application~1json/examples/topStampReceivers","paths/~1analytics~1businesses~1ranking/post/requestBody/content/application~1json/examples/businessLeaderboard"]}},"responseCodes":["200","201"],"pointer":"/analytics/businesses/ranking","href":"analytics/analyticscontroller_getbusinessranking","openApiOperationId":"AnalyticsController_getBusinessRanking","summary":"Get business transaction ranking (Admin only)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/BusinessRankingAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1businesses~1ranking/post/requestBody/content/application~1json/examples/topBusinesses","paths/~1analytics~1businesses~1ranking/post/requestBody/content/application~1json/examples/topStampReceivers","paths/~1analytics~1businesses~1ranking/post/requestBody/content/application~1json/examples/businessLeaderboard"],"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/BusinessRankingAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1businesses~1ranking/post/requestBody/content/application~1json/examples/topBusinesses","paths/~1analytics~1businesses~1ranking/post/requestBody/content/application~1json/examples/topStampReceivers","paths/~1analytics~1businesses~1ranking/post/requestBody/content/application~1json/examples/businessLeaderboard"]}},"examples":[{},{},{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Business ranking successfully retrieved","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessRankingAnalyticsResponseDTO"}},"schemaId":"components/schemas/BusinessRankingAnalyticsResponseDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessRankingAnalyticsResponseDTO"}},"schemaId":"components/schemas/BusinessRankingAnalyticsResponseDTO"}],"pointer":"/paths/~1analytics~1businesses~1ranking/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/BusinessRankingAnalyticsResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessRankingAnalyticsResponseDTO"}}},{"code":"201","schemaId":"components/schemas/BusinessRankingAnalyticsResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessRankingAnalyticsResponseDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/analytics/analyticscontroller_getbusinessranking"}],"panels":[]}]},"httpPath":"/analytics/businesses/ranking"},{"label":"Get cohort-based user retention analytics (Admin only)","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/analytics/analyticscontroller_getretentionanalytics","routeSlug":"/swagger/analytics/analyticscontroller_getretentionanalytics","metadata":{"seo":{"title":"Get cohort-based user retention analytics (Admin only)","description":"Returns cohort retention data showing how user cohorts perform over time. Each cohort represents users who joined in a specific month, tracked across subsequent months. Replaces 13 separate API calls with 1 efficient query. Industry-standard cohort analysis for retention heatmaps. Requires admin authentication."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"AnalyticsController_getRetentionAnalytics","name":"Get cohort-based user retention analytics (Admin only)","isWebhook":false,"pointer":"/paths/~1analytics~1users~1retention/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get cohort-based user retention analytics (Admin only)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Returns cohort retention data showing how user cohorts perform over time. Each cohort represents users who joined in a specific month, tracked across subsequent months. Replaces 13 separate API calls with 1 efficient query. Industry-standard cohort analysis for retention heatmaps. Requires admin authentication."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/RetentionAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1users~1retention/post/requestBody/content/application~1json/examples/last13Months","paths/~1analytics~1users~1retention/post/requestBody/content/application~1json/examples/last6Months","paths/~1analytics~1users~1retention/post/requestBody/content/application~1json/examples/customDateRange"]}},"schemaId":"components/schemas/RetentionAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1users~1retention/post/requestBody/content/application~1json/examples/last13Months","paths/~1analytics~1users~1retention/post/requestBody/content/application~1json/examples/last6Months","paths/~1analytics~1users~1retention/post/requestBody/content/application~1json/examples/customDateRange"],"pointer":"/paths/~1analytics~1users~1retention/post/requestBody","description":"User retention analytics request with monthsBack and filters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/analytics/users/retention","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/RetentionAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1users~1retention/post/requestBody/content/application~1json/examples/last13Months","paths/~1analytics~1users~1retention/post/requestBody/content/application~1json/examples/last6Months","paths/~1analytics~1users~1retention/post/requestBody/content/application~1json/examples/customDateRange"]}},"responseCodes":["200","201"],"pointer":"/analytics/users/retention","href":"analytics/analyticscontroller_getretentionanalytics","openApiOperationId":"AnalyticsController_getRetentionAnalytics","summary":"Get cohort-based user retention analytics (Admin only)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"components/schemas/RetentionAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1users~1retention/post/requestBody/content/application~1json/examples/last13Months","paths/~1analytics~1users~1retention/post/requestBody/content/application~1json/examples/last6Months","paths/~1analytics~1users~1retention/post/requestBody/content/application~1json/examples/customDateRange"],"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/RetentionAnalyticsRequestDTO","exampleIds":["paths/~1analytics~1users~1retention/post/requestBody/content/application~1json/examples/last13Months","paths/~1analytics~1users~1retention/post/requestBody/content/application~1json/examples/last6Months","paths/~1analytics~1users~1retention/post/requestBody/content/application~1json/examples/customDateRange"]}},"examples":[{},{},{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Cohort retention analytics successfully retrieved","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RetentionAnalyticsResponseDTO"}},"schemaId":"components/schemas/RetentionAnalyticsResponseDTO"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RetentionAnalyticsResponseDTO"}},"schemaId":"components/schemas/RetentionAnalyticsResponseDTO"}],"pointer":"/paths/~1analytics~1users~1retention/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/RetentionAnalyticsResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RetentionAnalyticsResponseDTO"}}},{"code":"201","schemaId":"components/schemas/RetentionAnalyticsResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RetentionAnalyticsResponseDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/analytics/analyticscontroller_getretentionanalytics"}],"panels":[]}]},"httpPath":"/analytics/users/retention"},{"label":"Get tag analytics across entities","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/analytics/analyticscontroller_gettaganalytics","routeSlug":"/swagger/analytics/analyticscontroller_gettaganalytics","metadata":{"seo":{"title":"Get tag analytics across entities","description":"Returns aggregated tag usage data across Campaign, Redemption, Business, TokenMetadata, and UserStatusType entities. Useful for tag filtering in apps and autocomplete suggestions."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"AnalyticsController_getTagAnalytics","name":"Get tag analytics across entities","isWebhook":false,"pointer":"/paths/~1analytics~1tags/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get tag analytics across entities","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Returns aggregated tag usage data across Campaign, Redemption, Business, TokenMetadata, and UserStatusType entities. Useful for tag filtering in apps and autocomplete suggestions."},{"nodeType":"security","requirements":[{"schemes":[{"name":"projectKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-project-key","description":"Project API key"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"entityTypes","in":"query","schemaId":"schema_132","description":"Filter by entity types. If omitted, returns tags from all taggable entities."}],"pointer":"/paths/~1analytics~1tags/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/analytics/tags","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[{"name":"entityTypes","in":"query","required":false,"schemaId":"schema_132"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"projectKey","type":"apiKey","name":"x-project-key","in":"header"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/analytics/tags","href":"analytics/analyticscontroller_gettaganalytics","openApiOperationId":"AnalyticsController_getTagAnalytics","summary":"Get tag analytics across entities"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Tag analytics successfully retrieved","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TagAnalyticsResponseDTO"}},"schemaId":"components/schemas/TagAnalyticsResponseDTO"}],"pointer":"/paths/~1analytics~1tags/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TagAnalyticsResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TagAnalyticsResponseDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/analytics/analyticscontroller_gettaganalytics"}],"panels":[]}]},"httpPath":"/analytics/tags"},{"label":"Get AI usage summary for billing (Admin only)","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/analytics/analyticscontroller_getaiusagesummary","routeSlug":"/swagger/analytics/analyticscontroller_getaiusagesummary","metadata":{"seo":{"title":"Get AI usage summary for billing (Admin only)","description":"Returns aggregated AI usage metrics with breakdown by model and operation type. Perfect for billing reports and cost monitoring. Requires admin authentication."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"AnalyticsController_getAiUsageSummary","name":"Get AI usage summary for billing (Admin only)","isWebhook":false,"pointer":"/paths/~1analytics~1ai~1usage/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get AI usage summary for billing (Admin only)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Returns aggregated AI usage metrics with breakdown by model and operation type. Perfect for billing reports and cost monitoring. Requires admin authentication."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_67","exampleIds":["paths/~1analytics~1ai~1usage/post/requestBody/content/application~1json/examples/thisMonth","paths/~1analytics~1ai~1usage/post/requestBody/content/application~1json/examples/lastWeek"]}},"schemaId":"schema_67","exampleIds":["paths/~1analytics~1ai~1usage/post/requestBody/content/application~1json/examples/thisMonth","paths/~1analytics~1ai~1usage/post/requestBody/content/application~1json/examples/lastWeek"],"pointer":"/paths/~1analytics~1ai~1usage/post/requestBody","description":"AI usage summary request with date range"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/analytics/ai/usage","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"schema_67","exampleIds":["paths/~1analytics~1ai~1usage/post/requestBody/content/application~1json/examples/thisMonth","paths/~1analytics~1ai~1usage/post/requestBody/content/application~1json/examples/lastWeek"]}},"responseCodes":["200","201"],"pointer":"/analytics/ai/usage","href":"analytics/analyticscontroller_getaiusagesummary","openApiOperationId":"AnalyticsController_getAiUsageSummary","summary":"Get AI usage summary for billing (Admin only)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"schema_67","exampleIds":["paths/~1analytics~1ai~1usage/post/requestBody/content/application~1json/examples/thisMonth","paths/~1analytics~1ai~1usage/post/requestBody/content/application~1json/examples/lastWeek"],"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_67","exampleIds":["paths/~1analytics~1ai~1usage/post/requestBody/content/application~1json/examples/thisMonth","paths/~1analytics~1ai~1usage/post/requestBody/content/application~1json/examples/lastWeek"]}},"examples":[{},{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"AI usage summary successfully retrieved"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AiUsageSummaryResponseDTO"}},"schemaId":"components/schemas/AiUsageSummaryResponseDTO"}],"pointer":"/paths/~1analytics~1ai~1usage/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200"},{"code":"201","schemaId":"components/schemas/AiUsageSummaryResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AiUsageSummaryResponseDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/analytics/analyticscontroller_getaiusagesummary"}],"panels":[]}]},"httpPath":"/analytics/ai/usage"},{"label":"Get AI analytics with dynamic grouping (Admin only)","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/analytics/analyticscontroller_getaianalytics","routeSlug":"/swagger/analytics/analyticscontroller_getaianalytics","metadata":{"seo":{"title":"Get AI analytics with dynamic grouping (Admin only)","description":"Returns aggregated AI generation data with flexible grouping and metrics. Supports filtering by model, operation type, user, and success status. Requires admin authentication."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"AnalyticsController_getAiAnalytics","name":"Get AI analytics with dynamic grouping (Admin only)","isWebhook":false,"pointer":"/paths/~1analytics~1ai/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get AI analytics with dynamic grouping (Admin only)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Returns aggregated AI generation data with flexible grouping and metrics. Supports filtering by model, operation type, user, and success status. Requires admin authentication."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_67","exampleIds":["paths/~1analytics~1ai/post/requestBody/content/application~1json/examples/costByDay","paths/~1analytics~1ai/post/requestBody/content/application~1json/examples/byModel","paths/~1analytics~1ai/post/requestBody/content/application~1json/examples/byOperationType","paths/~1analytics~1ai/post/requestBody/content/application~1json/examples/failureAnalysis"]}},"schemaId":"schema_67","exampleIds":["paths/~1analytics~1ai/post/requestBody/content/application~1json/examples/costByDay","paths/~1analytics~1ai/post/requestBody/content/application~1json/examples/byModel","paths/~1analytics~1ai/post/requestBody/content/application~1json/examples/byOperationType","paths/~1analytics~1ai/post/requestBody/content/application~1json/examples/failureAnalysis"],"pointer":"/paths/~1analytics~1ai/post/requestBody","description":"AI analytics request with grouping and metrics"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/analytics/ai","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"schema_67","exampleIds":["paths/~1analytics~1ai/post/requestBody/content/application~1json/examples/costByDay","paths/~1analytics~1ai/post/requestBody/content/application~1json/examples/byModel","paths/~1analytics~1ai/post/requestBody/content/application~1json/examples/byOperationType","paths/~1analytics~1ai/post/requestBody/content/application~1json/examples/failureAnalysis"]}},"responseCodes":["200","201"],"pointer":"/analytics/ai","href":"analytics/analyticscontroller_getaianalytics","openApiOperationId":"AnalyticsController_getAiAnalytics","summary":"Get AI analytics with dynamic grouping (Admin only)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"schema_67","exampleIds":["paths/~1analytics~1ai/post/requestBody/content/application~1json/examples/costByDay","paths/~1analytics~1ai/post/requestBody/content/application~1json/examples/byModel","paths/~1analytics~1ai/post/requestBody/content/application~1json/examples/byOperationType","paths/~1analytics~1ai/post/requestBody/content/application~1json/examples/failureAnalysis"],"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_67","exampleIds":["paths/~1analytics~1ai/post/requestBody/content/application~1json/examples/costByDay","paths/~1analytics~1ai/post/requestBody/content/application~1json/examples/byModel","paths/~1analytics~1ai/post/requestBody/content/application~1json/examples/byOperationType","paths/~1analytics~1ai/post/requestBody/content/application~1json/examples/failureAnalysis"]}},"examples":[{},{},{},{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"AI analytics successfully retrieved"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AiAnalyticsResponseDTO"}},"schemaId":"components/schemas/AiAnalyticsResponseDTO"}],"pointer":"/paths/~1analytics~1ai/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200"},{"code":"201","schemaId":"components/schemas/AiAnalyticsResponseDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AiAnalyticsResponseDTO"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/analytics/analyticscontroller_getaianalytics"}],"panels":[]}]},"httpPath":"/analytics/ai"},{"label":"Natural language analytics query","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/swagger/analytics/analyticscontroller_processnlquery","routeSlug":"/swagger/analytics/analyticscontroller_processnlquery","metadata":{"seo":{"title":"Natural language analytics query","description":"Converts a free-text question into structured analytics filters, classifies the domain, and returns results."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"AnalyticsController_processNlQuery","name":"Natural language analytics query","isWebhook":false,"pointer":"/paths/~1analytics~1nl-query/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Natural language analytics query","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Converts a free-text question into structured analytics filters, classifies the domain, and returns results."},{"nodeType":"security","requirements":[{"schemes":[{"name":"authJWT","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_133"}},"schemaId":"schema_133","pointer":"/paths/~1analytics~1nl-query/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/analytics/nl-query","servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"schema_133"}},"responseCodes":["200","201"],"pointer":"/analytics/nl-query","href":"analytics/analyticscontroller_processnlquery","openApiOperationId":"AnalyticsController_processNlQuery","summary":"Natural language analytics query"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/swagger","description":"Mock server","isMockServer":true},{"url":"https://api.pers.ninja/v2"}],"schemaId":"schema_133","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_133"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Analytics results for the natural language query"},{"code":"201","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_80"}},"schemaId":"schema_80"}],"pointer":"/paths/~1analytics~1nl-query/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200"},{"code":"201","schemaId":"schema_80","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_80"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/analytics/analyticscontroller_processnlquery"}],"panels":[]}]},"httpPath":"/analytics/nl-query"}],"content":{"contentType":"group","meta":{"name":"Analytics"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Analytics","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/analytics/transactions","summary":"Get transaction analytics (Admin only)","prefix":{"name":"post","color":"post"},"badges":[],"link":"/analytics/analyticscontroller_gettransactionanalytics","deprecated":false},{"title":"/analytics/campaign-claims","summary":"Get campaign claim analytics (Admin/Business)","prefix":{"name":"post","color":"post"},"badges":[],"link":"/analytics/analyticscontroller_getcampaignclaimanalytics","deprecated":false},{"title":"/analytics/redemption-redeems","summary":"Get redemption redeem analytics (Admin/Business)","prefix":{"name":"post","color":"post"},"badges":[],"link":"/analytics/analyticscontroller_getredemptionredeemanalytics","deprecated":false},{"title":"/analytics/users","summary":"Get user analytics (Admin only)","prefix":{"name":"post","color":"post"},"badges":[],"link":"/analytics/analyticscontroller_getuseranalytics","deprecated":false},{"title":"/analytics/users/ranking","summary":"Get user transaction ranking (Admin only)","prefix":{"name":"post","color":"post"},"badges":[],"link":"/analytics/analyticscontroller_getuserranking","deprecated":false},{"title":"/analytics/businesses/ranking","summary":"Get business transaction ranking (Admin only)","prefix":{"name":"post","color":"post"},"badges":[],"link":"/analytics/analyticscontroller_getbusinessranking","deprecated":false},{"title":"/analytics/users/retention","summary":"Get cohort-based user retention analytics (Admin only)","prefix":{"name":"post","color":"post"},"badges":[],"link":"/analytics/analyticscontroller_getretentionanalytics","deprecated":false},{"title":"/analytics/tags","summary":"Get tag analytics across entities","prefix":{"name":"get","color":"get"},"badges":[],"link":"/analytics/analyticscontroller_gettaganalytics","deprecated":false},{"title":"/analytics/ai/usage","summary":"Get AI usage summary for billing (Admin only)","prefix":{"name":"post","color":"post"},"badges":[],"link":"/analytics/analyticscontroller_getaiusagesummary","deprecated":false},{"title":"/analytics/ai","summary":"Get AI analytics with dynamic grouping (Admin only)","prefix":{"name":"post","color":"post"},"badges":[],"link":"/analytics/analyticscontroller_getaianalytics","deprecated":false},{"title":"/analytics/nl-query","summary":"Natural language analytics query","prefix":{"name":"post","color":"post"},"badges":[],"link":"/analytics/analyticscontroller_processnlquery","deprecated":false}]}]}]}]}}],"store":{"schemaStore":{"components/schemas/AiPromptConfigDTO":{"id":"components/schemas/AiPromptConfigDTO","kind":"json-schema","title":"AiPromptConfigDTO","data":{"type":"object","properties":{"type":{"type":"string","enum":["TEXT_GENERATION","IMAGE_GENERATION"],"description":"Type of AI operation to perform","example":"TEXT_GENERATION"},"key":{"type":"string","description":"Key to store the generated result under","example":"name"},"prompt":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The prompt to send to the AI model. Supports dynamic placeholders that are replaced with context values."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Available Placeholders:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{user.firstName}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{user.lastName}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{user.email}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - User profile data"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{campaign.name}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{campaign.description}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Campaign data"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{tenant.projectName}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{tenant.projectDescription}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Tenant/project data"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{business.displayName}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{business.name}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Business data"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{triggerSource.name}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{triggerSource.type}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Trigger source data"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{redemption.name}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{redemption.description}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Redemption data"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{context.xxx}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Dynamic context from TriggerSource.context or CampaignClaimRequest.context"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{defaults.xxx}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Default values from TokenMetadata.defaultPromptContext"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Context Sources:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":true,"marker":"."},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"TriggerSource.context (admin QR/NFC) - Always applied"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"CampaignClaimRequest.context (user API) - Only if allowExternalContextOverwrite=true"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"TokenMetadata.defaultPromptContext - Always applied as fallback"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Examples:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"\"Generate a welcome message for {{user.firstName}} at {{business.displayName}}\""},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"\"Create a VIP badge for guest {{context.guestName}} in room {{context.roomNumber}}\""},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"\"Design a {{defaults.style}} reward image for {{campaign.name}}\""},"children":[]}]}]}]}],"example":"Generate a unique reward name for {{user.firstName}} visiting {{business.displayName}}"}},"required":["type","key","prompt"]}},"components/schemas/ApprovalDTO":{"id":"components/schemas/ApprovalDTO","kind":"json-schema","title":"ApprovalDTO","data":{"type":"object","properties":{"status":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Approval state: pending_approval = awaiting admin review, approved = active, rejected = denied."},"children":[]}]}]}],"enum":["pending_approval","approved","rejected"],"default":"approved"},"approvedAt":{"format":"date-time","type":"string","description":"Timestamp when the entity was approved or rejected by an admin.","nullable":true},"approvedBy":{"type":"string","description":"Admin user ID who approved or rejected this entity.","nullable":true},"rejectionReason":{"type":"string","description":"Reason provided when the entity was rejected.","nullable":true}},"required":["status"]}},"components/schemas/TokenMetadataDTO":{"id":"components/schemas/TokenMetadataDTO","kind":"json-schema","title":"TokenMetadataDTO","data":{"type":"object","properties":{"ownerBusinessId":{"type":"string","description":"Optional owner business ID. If set, this token metadata belongs to a specific business. If null, the token metadata is tenant-owned (system-level).","nullable":true},"isActive":{"type":"boolean","description":"Whether this template is active and can be used for minting","default":false},"imageUrl":{"type":"string","description":" This is the URL to the image of the item. Can be just about any type of image (including SVGs, which will be cached into PNGs by OpenSea), IPFS or Arweave URLs or paths. We recommend using a minimum 3000 x 3000 image.","nullable":true},"externalUrl":{"type":"string","description":"This is the URL that will appear below the asset's image","nullable":true},"description":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A human-readable description of the item. Markdown is supported."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC721 Template Interpolation:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Supports "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{placeholder}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" syntax for dynamic personalization at mint time (without AI costs)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Available placeholders:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{user.firstName}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{user.lastName}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - User data"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{campaign.name}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{business.displayName}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Campaign/business"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{context.xxx}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Dynamic context values (TriggerSource.context or claim request)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{defaults.xxx}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Default values from defaultPromptContext"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Example:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"\"Thank you {{user.firstName}} for visiting {{business.displayName}}! Your exclusive reward for {{context.eventName}}.\""},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Processing order:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Template interpolation runs first, then AI processing (if configured) can further enhance the result."},"children":[]}]}]}]},"name":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Name of the item."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC721 Template Interpolation:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Supports "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{placeholder}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" syntax for dynamic personalization at mint time (without AI costs)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Available placeholders:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{user.firstName}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{user.lastName}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - User data"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{campaign.name}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{business.displayName}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Campaign/business"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{context.xxx}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Dynamic context values (TriggerSource.context or claim request)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{defaults.xxx}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Default values from defaultPromptContext"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Example:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"\"Welcome {{context.guestName}} - VIP Pass\""},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"\"{{user.firstName}}'s {{campaign.name}} Reward\""},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Processing order:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Template interpolation runs first, then AI processing (if configured) can further enhance the result."},"children":[]}]}]}]},"validityType":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC721 only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Validity type defines how token expiry is calculated. Use with validityDuration for relative types. Ignored for ERC1155 tokens."},"children":[]}]}]}],"enum":["fixed_date","days_from_issuance","hours_from_issuance","months_from_issuance","end_of_month","end_of_year","trigger_date","trigger_date_range","days_from_trigger","hours_from_trigger"],"example":"days_from_issuance"},"validityDuration":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC721 only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Duration in days or hours (used with days_from_issuance, hours_from_issuance validity types). Ignored for ERC1155 tokens."},"children":[]}]}]}],"example":30},"expiryDate":{"format":"date-time","type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Fixed expiry date (used with fixed_date validity type). For other validity types, this is computed at issuance time."},"children":[]}]}]}]},"animationUrl":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A URL to a multi-media attachment for the item. The file extensions GLTF, GLB, WEBM, MP4, M4V, OGV, and OGG are supported, along with the audio-only extensions MP3, WAV, and OGA. Animation_url also supports HTML pages, allowing you to build rich experiences and interactive NFTs using JavaScript canvas, WebGL, and more. Scripts and relative paths within the HTML page are now supported. However, access to browser extensions is not supported."},"children":[]}]}]}],"nullable":true},"youtubeUrl":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A URL to a YouTube video (only used if animation_url is not provide"},"children":[]}]}]}],"nullable":true},"creatorAccountAddress":{"type":"string","description":"Creator Address"},"previewUrl":{"type":"string","description":"Preview Url","nullable":true},"tags":{"description":"Tags for categorization and filtering","example":["summer","vip","limited-edition"],"default":[],"type":"array","items":{"type":"string"}},"aiPromptConfigs":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC721 only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - AI prompt configurations for dynamic content generation at mint time."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"AI processing runs AFTER template interpolation, so prompts can reference already-interpolated values."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Results are mapped by key to override static fields (name, description, imageUrl). Ignored for ERC1155 tokens."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Note:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" For simple personalization without AI costs, use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{placeholder}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" syntax directly in name/description fields instead."},"children":[]}]}]}],"example":[{"type":"TEXT_GENERATION","key":"name","prompt":"Generate a unique reward name for {{user.firstName}} at {{business.displayName}}"},{"type":"IMAGE_GENERATION","key":"imageUrl","prompt":"A {{defaults.style}} trophy badge for {{context.eventName}}"}],"type":"array","items":{"$ref":"#/components/schemas/AiPromptConfigDTO"}},"allowExternalContextOverwrite":{"type":"boolean","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC721 only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Allow USER-PROVIDED external context from claim/redeem requests to be used in template interpolation and AI prompts."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Security model:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"false"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (default): Only admin-controlled context (TriggerSource.context, Redemption.context, defaultPromptContext) is available"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": User-provided context from API requests is also merged and available as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{context.xxx}}"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Note:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Admin-controlled context (QR/NFC data) is ALWAYS applied regardless of this flag."},"children":[]}]}]}],"default":false,"example":true},"defaultPromptContext":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC721 only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Default context values for template interpolation and AI prompts. Available as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{defaults.xxx}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" placeholders."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Always applied regardless of allowExternalContextOverwrite. Use for brand defaults, styling preferences, or fallback values."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Example usage in name:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"\"{{defaults.brand}} - {{user.firstName}}'s Reward\""},"children":[]}]}]}],"example":{"brand":"PERS Rewards","style":"minimal","defaultLocation":"Online"}},"businessIds":{"description":"Business IDs where this token can be redeemed/spent. Empty array means any business in the tenant.","example":["business-uuid-1","business-uuid-2"],"default":[],"type":"array","items":{"type":"string"}},"webhookId":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC721 only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Webhook ID for dynamic data fetch at mint time."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"If set, the webhook is executed before metadata generation and response data is merged into the NFT."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Use cases:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Fetch guest data from PMS/CRM systems"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Get real-time pricing or availability"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Retrieve user-specific content from external APIs"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Processing order:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Webhook fetch runs AFTER template interpolation but BEFORE AI processing."},"children":[]}]}]}],"example":"webhook-uuid-for-pms-lookup"},"webhookPayloadTemplate":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC721 only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Payload template for webhook request."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Supports "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{placeholder}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" interpolation with same context as AI prompts."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Example:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"userId\": \"{{user.id}}\",\n  \"campaignId\": \"{{campaign.id}}\",\n  \"bookingId\": \"{{context.bookingId}}\"\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"userId\": \"{{user.id}}\",\n  \"campaignId\": \"{{campaign.id}}\",\n  \"bookingId\": \"{{context.bookingId}}\"\n}\n"},"children":[]}]}],"example":{"userId":"{{user.id}}","bookingId":"{{context.bookingId}}"}},"webhookFieldMapping":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC721 only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Field mapping from webhook response to metadata fields."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Keys are webhook response paths (dot notation for nested), values are target field names."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Mapping rules:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Explicit mapping: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"\"response.path\": \"targetField\""},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Known fields (name, description, imageUrl): auto-mapped if present"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unknown fields or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"\"attributes\""},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" target: become NFT attributes"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Example:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"guestName\": \"name\",\n  \"data.guest.image\": \"imageUrl\",\n  \"roomNumber\": \"attributes\",\n  \"checkInDate\": \"attributes\"\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"guestName\": \"name\",\n  \"data.guest.image\": \"imageUrl\",\n  \"roomNumber\": \"attributes\",\n  \"checkInDate\": \"attributes\"\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"If null/undefined, uses auto-mapping."},"children":[]}]}]}],"example":{"guestName":"name","roomNumber":"attributes","data.image":"imageUrl"}},"consumable":{"type":"boolean","default":true,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Whether this token template is consumable (burned on redemption) or collectible (transferred). Applies to ERC1155 and ERC721 only — ERC20 is always transferred. When true, the token is destroyed (burn) when used as payment in a redemption. Defaults to true — most token templates are consumable. Set to false for collectible/non-burning use cases. Mirrored as a consumable attribute in the on-chain IPFS metadata."},"children":[]}]}]}]},"id":{"type":"string","description":"Database UUID for this token metadata template"},"animationWeb3StorageUrl":{"type":"string","description":"IPFS/Arweave URL for animation file - immutable web3 storage"},"imageWeb3StorageUrl":{"type":"string","description":"IPFS/Arweave URL for image - immutable web3 storage"},"web3StorageUrl":{"type":"string","description":"IPFS/Arweave URL for complete metadata JSON - this URL is stored on-chain and links to off-chain metadata"},"tokenMetadataIncrementalId":{"type":"number","description":"Incremental ID within the token contract. For ERC1155: becomes the on-chain tokenId. For ERC721: lookup key for template to generate unique metadata."},"approval":{"description":"Approval metadata for this token metadata.","allOf":[{"$ref":"#/components/schemas/ApprovalDTO"}]},"mintCount":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Total number of mints for this token metadata (via ?include=mintCount). Counts SUCCEEDED MINT transactions using tokenMetadataIncrementalId. Accurate for both ERC1155 and ERC721 (post v2.3.49). Historical ERC721 transactions before v2.3.49 are not counted."},"children":[]}]}]}]},"burnCount":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Total number of burns for this token metadata (via ?include=burnCount). Counts SUCCEEDED BURN transactions using tokenMetadataIncrementalId. Accurate for both ERC1155 and ERC721 (post v2.3.49). Historical ERC721 transactions before v2.3.49 are not counted."},"children":[]}]}]}]},"included":{"type":"object","description":"Included related entities. Only populated when include parameter is specified.","nullable":true,"properties":{"ownerBusiness":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Owner business entity (via ?include=ownerBusiness, only when ownerBusinessId is set)"},"children":[]}]}]}],"$ref":"#/components/schemas/BusinessDTO"},"token":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Parent token contract info (via ?include=token)"},"children":[]}]}]}],"type":"object","properties":{"chainId":{"type":"number","description":"Blockchain chain ID (mainnet or testnet)"},"contractAddress":{"type":"string","description":"Smart contract address"},"type":{"type":"string","description":"Token type (ERC721, ERC1155)"}}}}}},"required":["id","tokenMetadataIncrementalId","approval"]}},"components/schemas/TokenDTO":{"id":"components/schemas/TokenDTO","kind":"json-schema","title":"TokenDTO","data":{"type":"object","properties":{"id":{"type":"string","description":"Database UUID for this token contract entity"},"contractAddress":{"type":"string","description":"Smart contract address deployed on the blockchain"},"metadata":{"description":"Token metadata templates - blueprints used when minting NFTs. Each template defines properties (name, image, expiry) and has a unique tokenMetadataIncrementalId. Null for ERC20 (Points) tokens.","type":"array","items":{"$ref":"#/components/schemas/TokenMetadataDTO"}},"abi":{"type":"object","description":"this is the abi of the contract, this is the interface of the contract to interact with it"},"chainId":{"type":"number","description":"this is the chain id of the chain where the token is deployed"},"abiUrl":{"type":"string","description":"this is the url of the abi of the contract, to be used to fetch the abi of the contract"},"name":{"type":"string","description":"this is the name of the token contract"},"symbol":{"type":"string","description":"this is the symbol of the token contract, this is optional and can be null"},"decimals":{"type":"number","description":"this is the decimals of the token. This is optional and only used for ERC20 tokens (Points)"},"isActive":{"type":"boolean","description":"This can be used to enable or disable the token"},"isGallery":{"type":"boolean","description":"This can be used to enable or disable the token for gallery"},"type":{"type":"string","description":"This is the underlying web3 native type of the token contract","enum":["ERC20","ERC1155","ERC721"]},"stampToken":{"type":"boolean","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"When true, this ERC1155 contract is used as a shared stamp contract. TokenMetadata entries are auto-provisioned per business and can be referenced in redemption priceTokenUnits with resolveByBusiness=true."},"children":[]}]}]}],"default":false}},"required":["id","contractAddress","abi","chainId","abiUrl","isActive","isGallery","type","stampToken"]}},"components/schemas/PurchaseTypeDTO":{"id":"components/schemas/PurchaseTypeDTO","kind":"json-schema","title":"PurchaseTypeDTO","data":{"type":"object","properties":{"conversionRate":{"type":"number","description":"Conversion Rate of the token"},"currency":{"type":"string","description":"Currency of the token","enum":["eur"]},"id":{"type":"number","description":"Purchase Type id"}},"required":["conversionRate","currency","id"]}},"components/schemas/PurchaseTokenDTO":{"id":"components/schemas/PurchaseTokenDTO","kind":"json-schema","title":"PurchaseTokenDTO","data":{"type":"object","properties":{"id":{"type":"string","description":"Purchase Token id"},"description":{"type":"string","description":"Purchase Token description"},"token":{"description":"Token","allOf":[{"$ref":"#/components/schemas/TokenDTO"}]},"contractTokenId":{"type":"string","description":"optional contract token id"},"purchaseType":{"description":"Purchase Type","allOf":[{"$ref":"#/components/schemas/PurchaseTypeDTO"}]},"isActive":{"type":"boolean","description":"Purchase Token isActive"}},"required":["id","description","token","contractTokenId","purchaseType","isActive"]}},"components/schemas/DonationTypeDTO":{"id":"components/schemas/DonationTypeDTO","kind":"json-schema","title":"DonationTypeDTO","data":{"type":"object","properties":{"percentage":{"type":"number","description":"Percentage of donation"},"id":{"type":"number","description":"Id of the donation type"}},"required":["percentage"]}},"components/schemas/PaymentIntentCreateDTO":{"id":"components/schemas/PaymentIntentCreateDTO","kind":"json-schema","title":"PaymentIntentCreateDTO","data":{"type":"object","properties":{"amount":{"type":"number","description":"Amount in cents"},"currency":{"type":"string","description":"Currency"},"receiptEmail":{"type":"string","description":"Receipt Email"},"description":{"type":"string","description":"Description"}},"required":["amount","currency","receiptEmail"]}},"components/schemas/PaymentIntentDTO":{"id":"components/schemas/PaymentIntentDTO","kind":"json-schema","title":"PaymentIntentDTO","data":{"type":"object","properties":{"paymentClientSecret":{"type":"object","description":"Payment Intent ClientSecrete to complete Stripe payment"},"paymentIntentId":{"type":"string","description":"Payment Intent Id"}},"required":["paymentClientSecret","paymentIntentId"]}},"components/schemas/PurchaseCreateRequestDTO":{"id":"components/schemas/PurchaseCreateRequestDTO","kind":"json-schema","title":"PurchaseCreateRequestDTO","data":{"type":"object","properties":{"quantity":{"type":"number","description":"Quantity of tokens to purchase"},"paymentIntentId":{"type":"string","description":"Payment Intent Id"},"purchaseTokenId":{"type":"string","description":"Purchase Token id"},"donationTypeId":{"type":"number","description":"Donation Type"},"donationAccountAddress":{"type":"string","description":"Donation Account Address"}},"required":["quantity","paymentIntentId","purchaseTokenId"]}},"components/schemas/AccountOwnerType":{"id":"components/schemas/AccountOwnerType","kind":"json-schema","title":"AccountOwnerType","data":{"type":"string","description":"Owner type for polymorphic ownership","enum":["user","business","tenant","system","external"]}},"components/schemas/WalletManagementType":{"id":"components/schemas/WalletManagementType","kind":"json-schema","title":"WalletManagementType","data":{"type":"string","description":"Type of internal wallet","enum":["custodial","non-custodial"]}},"components/schemas/WalletStatus":{"id":"components/schemas/WalletStatus","kind":"json-schema","title":"WalletStatus","data":{"type":"string","description":"Current status of the wallet","enum":["pending","active","suspended","archived"]}},"components/schemas/PublicWalletDTO":{"id":"components/schemas/PublicWalletDTO","kind":"json-schema","title":"PublicWalletDTO","data":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the internal wallet"},"ownerType":{"example":"user","$ref":"#/components/schemas/AccountOwnerType"},"ownerId":{"type":"string","description":"Owner ID for polymorphic ownership","example":"user_123"},"walletManagementType":{"$ref":"#/components/schemas/WalletManagementType"},"address":{"type":"string","description":"CREATE2 generated address that can receive tokens"},"chainId":{"type":"number","description":"Blockchain network chain identifier"},"status":{"$ref":"#/components/schemas/WalletStatus"},"ownerSigningAccountId":{"type":"string","description":"ID of signing account that owns this internal wallet","nullable":true},"tags":{"description":"Tags associated with the wallet for categorization","type":"array","items":{"type":"string"}},"createdAt":{"format":"date-time","type":"string","description":"Timestamp when the wallet was created"},"updatedAt":{"format":"date-time","type":"string","description":"Timestamp when the wallet was last updated"}},"required":["id","ownerType","ownerId","walletManagementType","address","chainId","status","tags","createdAt","updatedAt"]}},"components/schemas/UserDTO":{"id":"components/schemas/UserDTO","kind":"json-schema","title":"UserDTO","data":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"identifierEmail":{"type":"string","description":"Universal identifier email for deterministic operations. Generated from B2B inputs (email, externalId) for wallet salt generation and external integrations.","example":"user123@user.pers.internal"},"firstName":{"type":"string","description":"User first name","nullable":true},"lastName":{"type":"string","description":"User last name","nullable":true},"externalId":{"type":"string","description":"User external id","nullable":true},"accountAddress":{"type":"string","description":"User account address","nullable":true,"deprecated":true},"instagramAccountId":{"type":"string","description":"Instagram account id","nullable":true},"googleAccountName":{"type":"string","description":"Google account name","nullable":true},"customData":{"type":"object","description":"Custom data","nullable":true},"publicProfile":{"type":"object","description":"Public profile data","nullable":true},"isActive":{"type":"boolean","description":"Is active"},"currentSigningAccountId":{"type":"string","description":"Current active signing account ID for external wallet operations"},"wallets":{"description":"User-owned counterfactual smart contract wallets that can receive tokens","type":"array","items":{"$ref":"#/components/schemas/PublicWalletDTO"}},"createdAt":{"format":"date-time","type":"string","description":"Timestamp when the user was created"},"updatedAt":{"format":"date-time","type":"string","description":"Timestamp when the user was last updated","nullable":true},"registrationSource":{"type":"object","description":"Registration source tracking for analytics - captures channel and attribution when user was created","nullable":true,"example":{"channel":"web","medium":"referral","campaign":"launch_2026"}},"lastActivityAt":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Last activity timestamp. Updated whenever user generates tokens (login or refresh). Tracks last time user was active (~1 hour precision)."},"children":[]}]}]}],"format":"date-time","nullable":true},"activityCount":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Total activity count. Increments on every token generation (login + refresh). Measures true user engagement."},"children":[]}]}]}],"example":42},"included":{"type":"object","description":"Included related entities. Only populated when include parameter is specified.","nullable":true,"properties":{"statusTypes":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"User status types earned based on token balances (via ?include=status)"},"children":[]}]}]}],"type":"array","items":{"$ref":"#/components/schemas/UserStatusTypeDTO"}},"tokenBalances":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Token balances for user wallets (via ?include=balances)"},"children":[]}]}]}],"type":"array","items":{"$ref":"#/components/schemas/AccountTokenBalancesDTO"}}}}},"required":["id","identifierEmail","firstName","lastName","externalId","accountAddress","instagramAccountId","googleAccountName","customData","publicProfile","isActive","wallets","createdAt","updatedAt"]}},"components/schemas/BusinessTypeDTO":{"id":"components/schemas/BusinessTypeDTO","kind":"json-schema","title":"BusinessTypeDTO","data":{"type":"object","properties":{"id":{"type":"string","description":"Business type id"},"name":{"type":"string","description":"Business type name","nullable":true},"description":{"type":"string","description":"Business type description","nullable":true},"code":{"type":"string","description":"Business type code","nullable":true},"iconUrl":{"type":"string","description":"Business type icon url","nullable":true}},"required":["name","description","code","iconUrl"]}},"components/schemas/BusinessDTO":{"id":"components/schemas/BusinessDTO","kind":"json-schema","title":"BusinessDTO","data":{"type":"object","properties":{"id":{"type":"string","description":"The id of the business, this is unique and will be used to identify the business."},"email":{"type":"string","description":"The email of the business, this is unique and will be used to identify the business.","nullable":true},"accountAddress":{"type":"string","description":"The address of the business, this is the address that will be shown to the public.","nullable":true,"deprecated":true},"currentSigningAccountId":{"type":"string","description":"Current active signing account ID for external wallet operations","nullable":true},"wallets":{"description":"Business-owned counterfactual smart contract wallets that can receive tokens","type":"array","items":{"$ref":"#/components/schemas/PublicWalletDTO"}},"businessLegalName":{"type":"string","description":"The legal name of the business, this is the name that will be used for legal purposes.","nullable":true},"registrationNumber":{"type":"string","description":"The business registration number (e.g., company registration, VAT number, EIN)","nullable":true},"displayName":{"type":"string","description":"The display name of the business, this is the name that will be shown to the public.","nullable":true},"description":{"type":"string","description":"The description of the business, this is the description that will be shown to the public.","nullable":true},"shortDescription":{"type":"string","description":"The short description of the business, this is the description that will be shown to the public.","nullable":true},"websiteUrl":{"type":"string","description":"The website of the business, this is the website that will be shown to the public.","nullable":true},"imageUrl":{"type":"string","description":"The image of the business, this is the image that will be shown to the public.","nullable":true},"logoUrl":{"type":"string","description":"Logo URL for the business","nullable":true},"streetAddress":{"type":"string","description":"The address of the business, this is the address that will be shown to the public.","nullable":true},"phoneNumber":{"type":"string","description":"The phone number of the business.","nullable":true},"neighborhood":{"type":"string","description":"Neighborhood/area name (e.g., \"West Bay\", \"Pearl Qatar\", \"Lusail\") - auto-populated from geocoding","nullable":true},"district":{"type":"string","description":"District/administrative area - auto-populated from geocoding","nullable":true},"city":{"type":"string","description":"The city of the business, this is the city that will be shown to the public.","nullable":true},"postalCode":{"type":"string","description":"The postal code of the business, this is the postal code that will be shown to the public.","nullable":true},"country":{"type":"string","description":"The country of the business (auto-populated from geocoding if coordinates provided)","nullable":true},"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 country code (e.g., QA, US, AE) - auto-populated from geocoding","nullable":true,"example":"QA"},"coordsLatitude":{"type":"number","description":"The latitude of the business, this is the latitude that will be shown to the public.","nullable":true},"coordsLongitude":{"type":"number","description":"The longitude of the business, this is the longitude that will be shown to the public.","nullable":true},"businessType":{"description":"The business type of the business, this is the business type that will be shown to the public.","nullable":true,"allOf":[{"$ref":"#/components/schemas/BusinessTypeDTO"}]},"isActive":{"type":"boolean","description":"The status of the business, this is the status that will be shown to the public."},"approval":{"description":"Approval metadata for this business.","allOf":[{"$ref":"#/components/schemas/ApprovalDTO"}]},"canMintToken":{"type":"boolean","description":"The ability to mint token for the business, this is the ability that will be shown to the public.","default":true},"canChargeToken":{"type":"boolean","description":"The ability to charge token for the business, this is the ability that will be shown to the public.","default":true},"canManageUsers":{"type":"boolean","description":"The ability to manage users for the business, this is the ability that will be shown to the public.","default":true},"canReceiveDonation":{"type":"boolean","description":"The ability to receive donation for the business, this is the ability that will be shown to the public.","default":true},"tags":{"description":"Tags for categorization and filtering","default":[],"type":"array","items":{"type":"string"}},"customData":{"type":"object","description":"Custom business data including Google Places information (placeID, currentOpeningHours)","nullable":true,"example":{"placeID":"ChIJN1t_tDeuEmsRUsoyG83frY4","currentOpeningHours":{"open_now":true,"weekday_text":["Monday: 9:00 AM – 5:00 PM","Tuesday: 9:00 AM – 5:00 PM"]}}}},"required":["id","email","accountAddress","currentSigningAccountId","wallets","businessLegalName","registrationNumber","displayName","description","shortDescription","websiteUrl","imageUrl","logoUrl","streetAddress","phoneNumber","neighborhood","district","city","postalCode","country","countryCode","coordsLatitude","coordsLongitude","businessType","isActive","approval","canMintToken","canChargeToken","canManageUsers","canReceiveDonation","tags","customData"]}},"components/schemas/PurchaseCreateResponseDTO":{"id":"components/schemas/PurchaseCreateResponseDTO","kind":"json-schema","title":"PurchaseCreateResponseDTO","data":{"type":"object","properties":{"id":{"type":"string","description":"Purchase id"},"stripePaymentIntentId":{"type":"string","description":"Stripe Payment Intent id"},"status":{"type":"object","description":"Purchase status"},"amount":{"type":"number","description":"Amount to pay in cents"},"currency":{"type":"string","description":"Currency","enum":["eur"]},"quantity":{"type":"number","description":"Quantity of tokens to purchase"},"purchaseToken":{"description":"Purchase Token","allOf":[{"$ref":"#/components/schemas/PurchaseTokenDTO"}]},"user":{"description":"User","allOf":[{"$ref":"#/components/schemas/UserDTO"}]},"business":{"description":"Business","allOf":[{"$ref":"#/components/schemas/BusinessDTO"}]},"donationAccountAddress":{"type":"string","description":"Donation Account Address"},"donationType":{"description":"Donation Type","allOf":[{"$ref":"#/components/schemas/DonationTypeDTO"}]},"createdAt":{"format":"date-time","type":"string","description":"create date"},"updatedAt":{"format":"date-time","type":"string","description":"update date"},"paymentClientSecret":{"type":"string","description":"Stripe payment intent client secret"}},"required":["id","stripePaymentIntentId","status","amount","currency","quantity","purchaseToken","user","business","paymentClientSecret"]}},"components/schemas/PurchaseDTO":{"id":"components/schemas/PurchaseDTO","kind":"json-schema","title":"PurchaseDTO","data":{"type":"object","properties":{"id":{"type":"string","description":"Purchase id"},"stripePaymentIntentId":{"type":"string","description":"Stripe Payment Intent id"},"status":{"type":"object","description":"Purchase status"},"amount":{"type":"number","description":"Amount to pay in cents"},"currency":{"type":"string","description":"Currency","enum":["eur"]},"quantity":{"type":"number","description":"Quantity of tokens to purchase"},"purchaseToken":{"description":"Purchase Token","allOf":[{"$ref":"#/components/schemas/PurchaseTokenDTO"}]},"user":{"description":"User","allOf":[{"$ref":"#/components/schemas/UserDTO"}]},"business":{"description":"Business","allOf":[{"$ref":"#/components/schemas/BusinessDTO"}]},"donationAccountAddress":{"type":"string","description":"Donation Account Address"},"donationType":{"description":"Donation Type","allOf":[{"$ref":"#/components/schemas/DonationTypeDTO"}]},"createdAt":{"format":"date-time","type":"string","description":"create date"},"updatedAt":{"format":"date-time","type":"string","description":"update date"}},"required":["id","stripePaymentIntentId","status","amount","currency","quantity","purchaseToken","user","business"]}},"components/schemas/PurchaseTokenCreateRequestDTO":{"id":"components/schemas/PurchaseTokenCreateRequestDTO","kind":"json-schema","title":"PurchaseTokenCreateRequestDTO","data":{"type":"object","properties":{"tokenId":{"type":"string","description":"Token id"},"description":{"type":"string","description":"Purchase Token description"},"purchaseTypeId":{"type":"number","description":"Purchase Type id"}},"required":["tokenId","description","purchaseTypeId"]}},"components/schemas/PurchaseTokenUpdateRequestDTO":{"id":"components/schemas/PurchaseTokenUpdateRequestDTO","kind":"json-schema","title":"PurchaseTokenUpdateRequestDTO","data":{"type":"object","properties":{"description":{"type":"string","description":"Purchase Token description"},"isActive":{"type":"object","description":"Purchase Token isActive"}}}},"components/schemas/PurchaseTypeCreateRequestDTO":{"id":"components/schemas/PurchaseTypeCreateRequestDTO","kind":"json-schema","title":"PurchaseTypeCreateRequestDTO","data":{"type":"object","properties":{"conversionRate":{"type":"number","description":"Conversion Rate of the token"},"currency":{"type":"string","description":"Currency of the token","enum":["eur"]}},"required":["conversionRate","currency"]}},"components/schemas/DonationTypeCreateRequestDTO":{"id":"components/schemas/DonationTypeCreateRequestDTO","kind":"json-schema","title":"DonationTypeCreateRequestDTO","data":{"type":"object","properties":{"percentage":{"type":"number","description":"Percentage of donation"}},"required":["percentage"]}},"components/schemas/AddTagsRequestDTO":{"id":"components/schemas/AddTagsRequestDTO","kind":"json-schema","title":"AddTagsRequestDTO","data":{"type":"object","properties":{"tags":{"description":"List of tags to add to campaign","example":["summer","discount","limited-time"],"type":"array","items":{"type":"string"}}},"required":["tags"]}},"components/schemas/CampaignTriggerConditionDTO":{"id":"components/schemas/CampaignTriggerConditionDTO","kind":"json-schema","title":"CampaignTriggerConditionDTO","data":{"type":"object","properties":{"conditionType":{"type":"string","description":"Trigger condition type","enum":["EQUALS","NOT_EQUALS","GREATER_THAN","LESS_THAN","CONTAINS","IS_PART_OF"]},"value":{"type":"object","description":"Trigger condition value"},"key":{"type":"string","description":"Trigger condition key"}},"required":["conditionType","value","key"]}},"components/schemas/CampaignTriggerDTO":{"id":"components/schemas/CampaignTriggerDTO","kind":"json-schema","title":"CampaignTriggerDTO","data":{"type":"object","properties":{"name":{"type":"number","description":"Campaign trigger name"},"description":{"type":"string","description":"Campaign trigger description"},"terms":{"type":"string","description":"Terms and conditions for participation. Plain text or HTML. Multi-language handling at app level.","nullable":true},"maxPerDay":{"type":"number","nullable":true,"description":"DEPRECATED - use maxPerDayPerUser: Campaign trigger max per day"},"maxPerDayPerUser":{"type":"number","nullable":true,"description":"Campaign trigger max per day per user"},"maxPerUser":{"type":"number","nullable":true,"description":"Campaign trigger max per user"},"minCooldownSeconds":{"type":"number","nullable":true,"description":"Campaign trigger min cooldown seconds"},"maxGeoDistanceInMeters":{"type":"number","nullable":true,"description":"Campaign trigger max geo distance to Business in meters"},"requiredUserInfo":{"type":"string","nullable":true,"description":"Campaign trigger required user info"},"triggerType":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"WHO can initiate a claim for this campaign."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Values:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CLAIM_BY_USER"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": End users initiate claims (scan QR, tap NFC, enter geofence)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CLAIM_BY_BUSINESS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": Business claims on behalf of users (POS, kiosk, staff-assisted)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CLAIM_BY_SYSTEM"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": Server/webhook automated claims (webhooks, scheduled jobs)"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Important:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" This defines WHO can claim."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"NOT to be confused with TriggerSource.type which defines HOW to claim (QR_CODE, NFC_TAG, GPS_GEOFENCE, etc.)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"App Logic:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"If CLAIM_BY_USER: App shows claim UI based on triggerSources[].type"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"If CLAIM_BY_BUSINESS: Requires business auth + userIdentifier in request"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"If CLAIM_BY_SYSTEM: Server-to-server only, requires tenant API key"},"children":[]}]}]}]}],"enum":["CLAIM_BY_USER","CLAIM_BY_SYSTEM","CLAIM_BY_BUSINESS"]},"maxMultiplier":{"type":"number","nullable":true,"description":"Campaign trigger max multiplier"},"completionThreshold":{"type":"number","nullable":true,"description":"Campaign trigger completion threshold. This indicates the number of completions required before the reward is granted"},"maxTotal":{"type":"number","nullable":true,"description":"Campaign trigger max total completions across all users"},"maxPerDayTotal":{"type":"number","nullable":true,"description":"Campaign trigger max total completions per day across all users"},"maxPerSource":{"type":"number","nullable":true,"description":"Maximum claims per trigger source for this campaign. Limits how many times each individual trigger source can be used."},"conditions":{"description":"Campaign trigger conditions","type":"array","items":{"$ref":"#/components/schemas/CampaignTriggerConditionDTO"}},"sourceLogic":{"type":"string","description":"Source logic type defining how multiple trigger sources combine to activate the flow","enum":["any"],"default":"any"},"id":{"type":"string","description":"Campaign trigger id"}},"required":["id"]}},"components/schemas/TokenUnitDTO":{"id":"components/schemas/TokenUnitDTO","kind":"json-schema","title":"TokenUnitDTO","data":{"type":"object","properties":{"id":{"type":"string","description":"Database UUID for this token unit"},"token":{"description":"The token contract this unit references","allOf":[{"$ref":"#/components/schemas/TokenDTO"}]},"tokenMetadataIncrementalId":{"type":"number","nullable":true,"description":"Token metadata template ID. For ERC1155: becomes on-chain tokenId. For ERC721: lookup key for template to generate unique metadata."},"amount":{"type":"number","description":"Amount of tokens to mint/transfer. For ERC721 this is typically 1, for ERC1155/ERC20 can be any quantity."},"maxAmount":{"type":"number","nullable":true,"description":"Token unit max amount. Applies to MINT/EARN contexts only (e.g. campaign reward capping where user earns tokens per revenue spent). Ignored for spend/transfer contexts such as redemption priceTokenUnits."}},"required":["id","token","amount"]}},"components/schemas/CampaignBusinessEngagementDTO":{"id":"components/schemas/CampaignBusinessEngagementDTO","kind":"json-schema","title":"CampaignBusinessEngagementDTO","data":{"type":"object","properties":{"id":{"type":"string","description":"id"},"shortDescription":{"type":"number","nullable":true,"description":"A short description of the business engagement with indications what to do etc"},"businessIds":{"description":"Business IDs associated with this engagement. Use CampaignDTO.included.businesses for full entities.","type":"array","items":{"type":"string"}},"businesses":{"type":"array","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Businesses (DEPRECATED: use businessIds + CampaignDTO.included.businesses instead. Will be removed in Q2 2026)"},"children":[]}]}]}],"deprecated":true,"example":[{"id":"business-uuid-1"},{"id":"business-uuid-2"}]},"campaignId":{"type":"string","description":"Campaign id"},"maxPerBusiness":{"type":"number","nullable":true,"description":"max per business, the maximum number of times a user can engage with the buisness in the campaign"},"maxPerDay":{"type":"number","nullable":true,"description":"max per day, the maximum number of times a user can engage with the buisness in the campaign per day"},"externalUrl":{"type":"string","nullable":true,"description":"The external URL for the business engagement, e.g. a link to a website or app"}},"required":["id","shortDescription","businessIds","businesses","campaignId","maxPerBusiness","maxPerDay","externalUrl"]}},"components/schemas/CampaignDTO":{"id":"components/schemas/CampaignDTO","kind":"json-schema","title":"CampaignDTO","data":{"type":"object","properties":{"id":{"type":"string","description":"Campaign id"},"ownerBusinessId":{"type":"string","description":"Optional owner business ID. If set, this campaign belongs to a specific business. If null, the campaign is tenant-owned (system-level).","nullable":true},"name":{"type":"string","description":"Campaign name","nullable":true},"description":{"type":"string","description":"Campaign description","nullable":true},"beneficiaryAccountAddress":{"type":"string","description":"Campaign beneficiary account address","nullable":true},"startDate":{"format":"date-time","type":"string","description":"Campaign start date, default is the current date","nullable":true},"endDate":{"format":"date-time","type":"string","description":"Campaign end date","nullable":true},"imageUrl":{"type":"string","description":"img url","nullable":true},"logoUrl":{"type":"string","description":"Logo URL for the campaign","nullable":true},"externalUrl":{"type":"string","description":"Campaign url","nullable":true},"isActive":{"type":"boolean","description":"Campaign isActive","default":false},"approval":{"description":"Approval metadata for this campaign.","allOf":[{"$ref":"#/components/schemas/ApprovalDTO"}]},"isTestnet":{"type":"boolean","description":"Campaign isTestnet, this means that the campaign is running on testnet, not mainnet","default":false},"createdAt":{"format":"date-time","type":"string","description":"create date","default":null},"updatedAt":{"format":"date-time","type":"string","description":"update date","nullable":true,"default":null},"order":{"type":"number","description":"Campaign order","default":1},"tags":{"description":"Campaign tags","default":[],"type":"array","items":{"type":"string"}},"countryCodeRestrictions":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Country code restrictions as an array of strings (e.g., [\"NOT_ES\", \"FR\"])"},"children":[]}]}]}],"example":["NOT_ES","FR"]},"trigger":{"description":"Campaign trigger: what triggers the campaign, and what are the conditions for the trigger to be activated","nullable":true,"allOf":[{"$ref":"#/components/schemas/CampaignTriggerDTO"}]},"tokenUnits":{"type":"array","items":{"description":"Campaign reward token units (always loaded)","type":"array","items":{"$ref":"#/components/schemas/TokenUnitDTO"}}},"businessEngagements":{"type":"array","items":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Campaign business engagements (DEPRECATED: use ?include=businesses which extracts from TriggerSources)"},"children":[]}]}]}],"deprecated":true,"type":"array","items":{"$ref":"#/components/schemas/CampaignBusinessEngagementDTO"}}},"triggerSourceIds":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Trigger source IDs. Use to batch fetch or request via ?include=triggerSources"},"children":[]}]}]}],"example":["trigger-uuid-1","trigger-uuid-2"],"items":{"type":"array"},"type":"array"},"included":{"type":"object","description":"Included related data. Only populated when include parameter is specified.","nullable":true,"properties":{"claimCount":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Total number of claims for this campaign (via ?include=claimCount)"},"children":[]}]}]}],"type":"number"},"triggerSources":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Full trigger source entities (via ?include=triggerSources)"},"children":[]}]}]}],"type":"array","items":{"$ref":"#/components/schemas/TriggerSourceDTO"}},"businesses":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Full business entities for all businessEngagements (via ?include=businesses)"},"children":[]}]}]}],"type":"array","items":{"$ref":"#/components/schemas/BusinessDTO"}},"ownerBusiness":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Owner business entity (via ?include=ownerBusiness, only when ownerBusinessId is set)"},"children":[]}]}]}],"$ref":"#/components/schemas/BusinessDTO"}}}},"required":["id","ownerBusinessId","name","description","beneficiaryAccountAddress","startDate","endDate","imageUrl","logoUrl","externalUrl","isActive","approval","createdAt","updatedAt","order","tags","trigger","tokenUnits","businessEngagements","triggerSourceIds"]}},"components/schemas/TokenUnitCreateRequestDTO":{"id":"components/schemas/TokenUnitCreateRequestDTO","kind":"json-schema","title":"TokenUnitCreateRequestDTO","data":{"type":"object","properties":{"tokenId":{"type":"number","description":"Use Token entity id instead","deprecated":true},"tokenEntityId":{"type":"string","description":"Token entity id"},"tokenMetadataIncrementalId":{"type":"number","description":"Token metadata template ID. For ERC1155: becomes on-chain tokenId. For ERC721: lookup key for template to generate unique metadata."},"amount":{"type":"number","description":"Amount of tokens to mint/transfer. For ERC721 this is typically 1, for ERC1155/ERC20 can be any quantity."},"maxAmount":{"type":"number","description":"Token unit max amount. Applies to MINT/EARN contexts only (e.g. campaign reward capping). Ignored for spend/transfer contexts such as redemption priceTokenUnits."}},"required":["tokenId","tokenEntityId","amount"]}},"components/schemas/CampaignTriggerCreateRequestDTO":{"id":"components/schemas/CampaignTriggerCreateRequestDTO","kind":"json-schema","title":"CampaignTriggerCreateRequestDTO","data":{"type":"object","properties":{"name":{"type":"number","description":"Campaign trigger name"},"description":{"type":"string","description":"Campaign trigger description"},"terms":{"type":"string","description":"Terms and conditions for participation. Plain text or HTML. Multi-language handling at app level.","nullable":true},"maxPerDay":{"type":"number","nullable":true,"description":"DEPRECATED - use maxPerDayPerUser: Campaign trigger max per day"},"maxPerDayPerUser":{"type":"number","nullable":true,"description":"Campaign trigger max per day per user"},"maxPerUser":{"type":"number","nullable":true,"description":"Campaign trigger max per user"},"minCooldownSeconds":{"type":"number","nullable":true,"description":"Campaign trigger min cooldown seconds"},"maxGeoDistanceInMeters":{"type":"number","nullable":true,"description":"Campaign trigger max geo distance to Business in meters"},"requiredUserInfo":{"type":"string","nullable":true,"description":"Campaign trigger required user info"},"triggerType":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"WHO can initiate a claim for this campaign."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Values:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CLAIM_BY_USER"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": End users initiate claims (scan QR, tap NFC, enter geofence)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CLAIM_BY_BUSINESS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": Business claims on behalf of users (POS, kiosk, staff-assisted)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CLAIM_BY_SYSTEM"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": Server/webhook automated claims (webhooks, scheduled jobs)"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Important:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" This defines WHO can claim."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"NOT to be confused with TriggerSource.type which defines HOW to claim (QR_CODE, NFC_TAG, GPS_GEOFENCE, etc.)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"App Logic:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"If CLAIM_BY_USER: App shows claim UI based on triggerSources[].type"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"If CLAIM_BY_BUSINESS: Requires business auth + userIdentifier in request"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"If CLAIM_BY_SYSTEM: Server-to-server only, requires tenant API key"},"children":[]}]}]}]}],"enum":["CLAIM_BY_USER","CLAIM_BY_SYSTEM","CLAIM_BY_BUSINESS"]},"maxMultiplier":{"type":"number","nullable":true,"description":"Campaign trigger max multiplier"},"completionThreshold":{"type":"number","nullable":true,"description":"Campaign trigger completion threshold. This indicates the number of completions required before the reward is granted"},"maxTotal":{"type":"number","nullable":true,"description":"Campaign trigger max total completions across all users"},"maxPerDayTotal":{"type":"number","nullable":true,"description":"Campaign trigger max total completions per day across all users"},"maxPerSource":{"type":"number","nullable":true,"description":"Maximum claims per trigger source for this campaign. Limits how many times each individual trigger source can be used."},"conditions":{"description":"Campaign trigger conditions","type":"array","items":{"$ref":"#/components/schemas/CampaignTriggerConditionDTO"}},"sourceLogic":{"type":"string","description":"Source logic type defining how multiple trigger sources combine to activate the flow","enum":["any"],"default":"any"}}}},"components/schemas/CampaignBusinessEngagementCreateRequestDTO":{"id":"components/schemas/CampaignBusinessEngagementCreateRequestDTO","kind":"json-schema","title":"CampaignBusinessEngagementCreateRequestDTO","data":{"type":"object","properties":{"businessIds":{"type":"string","description":"The business ids to engage with"},"shortDescription":{"type":"string","description":"A short description of the business engagement, with indications what to do etc"},"maxPerBusiness":{"type":"string","description":"max per user at the business"},"maxPerDay":{"type":"number","description":"max per day, the maximum number of times a user can engage with the buisness in the campaign per day"},"externalUrl":{"type":"string","description":"The external URL for the business engagement, e.g. a link to a website or app"}},"required":["businessIds"]}},"components/schemas/CampaignClaimRequestDTO":{"id":"components/schemas/CampaignClaimRequestDTO","kind":"json-schema","title":"CampaignClaimRequestDTO","data":{"type":"object","properties":{"externalReferenceId":{"type":"string","description":"External reference ID for idempotency. If a claim with this ID already exists, the request will be rejected. Use case: Stripe payment ID, order ID, webhook event ID, etc."},"triggerSourceId":{"type":"string","description":"The trigger source ID (NEW - preferred). Use this for trigger-specific claims (QR codes, NFC tags, geofences, etc.). Takes precedence over campaignId if both are provided."},"metadata":{"type":"string","description":"The campaign metadata associated with the claim."},"context":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC721 only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - User-provided external context for template interpolation and AI prompts."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"SECURITY:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Only applied if TokenMetadata.allowExternalContextOverwrite is true (admin opt-in required). TriggerSource.context (admin-controlled QR/NFC data) is ALWAYS applied regardless."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Template Interpolation:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Values become available as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{context.keyName}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" placeholders in TokenMetadata name/description fields and AI prompts."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Special validity keys:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validityDate"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Base date for trigger-based validity"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validityEndDate"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - End date for date ranges (e.g., hotel checkout)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validityDuration"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Override duration in days/hours"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Custom keys:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Any arbitrary key becomes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{context.keyName}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" placeholder."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Example use cases:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Hotel: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{ guestName: \"John\", roomNumber: \"305\", validityEndDate: \"2026-04-20T11:00:00Z\" }"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Event: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{ ticketType: \"VIP\", seatNumber: \"A12\" }"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Retail: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{ productName: \"Gold Watch\", purchaseAmount: 299.99 }"},"children":[]}]}]}]}],"example":{"guestName":"John Doe","validityDate":"2026-04-15T14:00:00Z","validityEndDate":"2026-04-20T11:00:00Z"}},"multiplier":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The campaign multiplier that will be applied to the reward. This determines the final reward amount (reward * multiplier). Default is 1.0"},"children":[]}]}]}]},"latitude":{"type":"number","description":"User's current latitude for location-based validation. Required when CampaignTrigger has maxGeoDistanceInMeters configured. System validates user is within allowed distance from TriggerSource location (coordsLatitude) or Business location fallback."},"longitude":{"type":"number","description":"User's current longitude for location-based validation. Required when CampaignTrigger has maxGeoDistanceInMeters configured. System validates user is within allowed distance from TriggerSource location (coordsLongitude) or Business location fallback."},"userIdentifier":{"type":"string","description":"The user identifier, e.g. email or external id. This is used to identify the user making the claim, if not provided in request context"},"userInfo":{"type":"object","description":"User information required by the campaign trigger. Only needed if CampaignTrigger.requiredUserInfo is set AND the user profile does not already have these fields stored. Provide fields specified in CampaignTrigger.requiredUserInfo (e.g., email, phoneNumber, firstName, lastName, dateOfBirth, etc.). Backend validates that required fields are either already stored or provided here.","example":{"email":"user@example.com","phoneNumber":"+1234567890","firstName":"John"}},"businessId":{"type":"string","description":"DEPRECATED: Use with triggerSource instead. Business identifier - provides additional context and validation for the claim. Will be removed in Q2 2026"},"campaignId":{"type":"string","description":"DEPRECATED: The campaign ID. Still supported for backward compatibility, but use triggerSourceId for new implementations. If both campaignId and triggerSourceId are provided, triggerSourceId takes precedence. NOTE: If campaign has trigger sources configured, triggerSourceId becomes required and campaignId alone will result in an error. Will be removed in Q2 2026"}}}},"components/schemas/CampaignClaimDTO":{"id":"components/schemas/CampaignClaimDTO","kind":"json-schema","title":"CampaignClaimDTO","data":{"type":"object","properties":{"id":{"type":"string","description":"The id of the campaign user claim"},"externalReferenceId":{"type":"string","description":"External reference ID for idempotency. Used to prevent duplicate claims. Use case: Stripe payment ID, order ID, webhook event ID, etc."},"createdAt":{"format":"date-time","type":"string","description":"The date the campaign user claim was created","nullable":true},"userId":{"type":"string","description":"User ID who claimed the campaign"},"campaignId":{"type":"string","description":"Campaign ID that was claimed"},"businessId":{"type":"string","description":"Business ID associated with this claim (if applicable)","nullable":true},"triggerSourceId":{"type":"string","description":"Trigger Source ID that was used for this claim (e.g., specific QR code, NFC tag, etc.)","nullable":true},"user":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"User object (DEPRECATED: use userId instead. Only contains {id} during migration. Will be removed in Q2 2026)"},"children":[]}]}]}],"deprecated":true,"example":{"id":"user-uuid-123"}},"campaign":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Campaign object (DEPRECATED: use campaignId instead. Only contains {id} during migration. Will be removed in Q2 2026)"},"children":[]}]}]}],"deprecated":true,"example":{"id":"campaign-uuid-123"}},"business":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Business object (DEPRECATED: use businessId instead. Only contains {id} during migration. Will be removed in Q2 2026)"},"children":[]}]}]}],"deprecated":true,"example":{"id":"business-uuid-123"}},"userCountryCode":{"type":"string","description":"Country code of the user claiming the campaign","nullable":true},"latitude":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Latitude coordinate where claim was made (reduced precision ~1.1km for privacy compliance)"},"children":[]}]}]}],"nullable":true,"example":41.39},"longitude":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Longitude coordinate where claim was made (reduced precision ~1.1km for privacy compliance)"},"children":[]}]}]}],"nullable":true,"example":2.18},"status":{"type":"string","description":"Status of the claim processing (PENDING, PROCESSING, COMPLETED, FAILED)","enum":["PENDING","PROCESSING","COMPLETED","FAILED"]},"message":{"type":"string","description":"Status or error message for the claim","nullable":true},"dataSource":{"type":"object","description":"Analytics tracking: source/channel of this claim action","nullable":true,"example":{"channel":"mobile","medium":"referral","campaign":"summer_promo"}},"included":{"type":"object","description":"Included related entities. Only populated when include parameter is specified. Contains campaign, user, business, triggerSource, and/or transactions entities based on requested relations.","nullable":true,"properties":{"campaign":{"description":"Included campaign entity","$ref":"#/components/schemas/CampaignDTO"},"user":{"description":"Included user entity","$ref":"#/components/schemas/UserDTO"},"business":{"description":"Included business entity (if claim has businessId)","$ref":"#/components/schemas/BusinessDTO"},"triggerSource":{"description":"Included trigger source entity (if claim has triggerSourceId)","$ref":"#/components/schemas/TriggerSourceDTO"},"transactions":{"description":"Included transaction entities created for this claim","type":"array","items":{"$ref":"#/components/schemas/TransactionDTO"}}}}},"required":["id","externalReferenceId","createdAt","userId","campaignId","user","campaign","userCountryCode","status"]}},"components/schemas/CampaignCreateRequestDTO":{"id":"components/schemas/CampaignCreateRequestDTO","kind":"json-schema","title":"CampaignCreateRequestDTO","data":{"type":"object","properties":{"ownerBusinessId":{"type":"string","description":"Optional owner business ID. If set, this campaign belongs to a specific business. If null/omitted, the campaign is tenant-owned (system-level).","nullable":true},"name":{"type":"string","description":"Campaign name"},"description":{"type":"string","description":"Campaign description","nullable":true},"beneficiaryAccountAddress":{"type":"string","description":"Campaign beneficiary account address","nullable":true},"startDate":{"format":"date-time","type":"string","description":"Campaign start date","nullable":true},"endDate":{"format":"date-time","type":"string","description":"Campaign end date","nullable":true},"imageUrl":{"type":"string","description":"Campaign image URL","nullable":true},"logoUrl":{"type":"string","description":"Campaign logo URL (smaller icon/avatar)","nullable":true},"externalUrl":{"type":"string","description":"Campaign external URL","nullable":true},"order":{"type":"number","description":"Campaign display order","nullable":true},"countryCodeRestrictions":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Country code restrictions as an array of strings (e.g., [\"NOT_ES\", \"FR\"])"},"children":[]}]}]}],"example":["NOT_ES","FR"],"nullable":true},"tags":{"description":"Tags for categorization and filtering","example":["summer-sale","promotion","loyalty"],"type":"array","items":{"type":"string"}},"isTestnet":{"type":"boolean","description":"Optional field to indicate if the campaign is for testnet or mainnet"}}}},"components/schemas/CampaignUpdateRequestDTO":{"id":"components/schemas/CampaignUpdateRequestDTO","kind":"json-schema","title":"CampaignUpdateRequestDTO","data":{"type":"object","properties":{"ownerBusinessId":{"type":"string","description":"Optional owner business ID. If set, this campaign belongs to a specific business. If null/omitted, the campaign is tenant-owned (system-level).","nullable":true},"name":{"type":"string","description":"Campaign name"},"description":{"type":"string","description":"Campaign description","nullable":true},"beneficiaryAccountAddress":{"type":"string","description":"Campaign beneficiary account address","nullable":true},"startDate":{"format":"date-time","type":"string","description":"Campaign start date","nullable":true},"endDate":{"format":"date-time","type":"string","description":"Campaign end date","nullable":true},"imageUrl":{"type":"string","description":"Campaign image URL","nullable":true},"logoUrl":{"type":"string","description":"Campaign logo URL (smaller icon/avatar)","nullable":true},"externalUrl":{"type":"string","description":"Campaign external URL","nullable":true},"order":{"type":"number","description":"Campaign display order","nullable":true},"countryCodeRestrictions":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Country code restrictions as an array of strings (e.g., [\"NOT_ES\", \"FR\"])"},"children":[]}]}]}],"example":["NOT_ES","FR"],"nullable":true},"tags":{"description":"Tags for categorization and filtering","example":["summer-sale","promotion","loyalty"],"type":"array","items":{"type":"string"}},"isTestnet":{"type":"boolean","description":"Optional field to indicate if the campaign is for testnet or mainnet"}}}},"components/schemas/CreateApprovalDTO":{"id":"components/schemas/CreateApprovalDTO","kind":"json-schema","title":"CreateApprovalDTO","data":{"type":"object","properties":{"status":{"type":"string","description":"Approval decision","enum":["approved","rejected"],"example":"approved"},"reason":{"type":"string","description":"Reason for rejection. Required when status is rejected.","maxLength":500}},"required":["status"]}},"components/schemas/TriggerSourceCreateRequestDTO":{"id":"components/schemas/TriggerSourceCreateRequestDTO","kind":"json-schema","title":"TriggerSourceCreateRequestDTO","data":{"type":"object","properties":{"type":{"type":"string","enum":["QR_CODE","NFC_TAG","API_WEBHOOK","GPS_GEOFENCE","TRANSACTION"],"example":"QR_CODE","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Type of trigger source - HOW to claim rewards."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Available Types:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"QR_CODE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": Physical QR code scan. App opens camera, decodes QR, extracts triggerSourceId"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"NFC_TAG"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": NFC tag tap. App activates NFC reader, reads tag data"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GPS_GEOFENCE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": GPS-based geofence. App sends user coordinates for proximity validation"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"API_WEBHOOK"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": Server-to-server webhook. External system triggers claim via API"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"TRANSACTION"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": Purchase/transaction triggered. Claim activated by payment events"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Important:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" This defines HOW claims are triggered (the touchpoint mechanism)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"NOT to be confused with CampaignTriggerType which defines WHO can claim (CLAIM_BY_USER, CLAIM_BY_BUSINESS, CLAIM_BY_SYSTEM)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"App Integration:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"const triggerTypes = campaign.included?.triggerSources?.map(ts => ts.type);\n// Based on types, show appropriate UI (camera for QR, NFC prompt, location request, etc.)\n","language":"typescript"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"const triggerTypes = campaign.included?.triggerSources?.map(ts => ts.type);\n// Based on types, show appropriate UI (camera for QR, NFC prompt, location request, etc.)\n"},"children":[]}]}]},"name":{"type":"string","example":"Main Entrance QR Code","description":"Human-readable name for the trigger source"},"description":{"type":"number","example":"QR code located at the main entrance for visitor check-in","description":"Optional description explaining this trigger source","nullable":true},"metadata":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Type-specific configuration: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tokenConfig"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (override token ID). See TriggerSourceMetadata interface."},"children":[]}]}]}],"example":{"tokenConfig":{"tokenId":"1"}},"additionalProperties":true},"context":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC721 only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Admin-controlled dynamic context for template interpolation and AI prompts. This data is ALWAYS applied (not subject to allowExternalContextOverwrite)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Template Interpolation:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Values become available as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{context.keyName}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" placeholders in TokenMetadata name/description fields and AI prompts."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Special validity keys:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validityDate"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Base date for trigger-based validity"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validityEndDate"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - End date for date ranges (e.g., hotel checkout)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validityDuration"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Override duration in days/hours"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Custom keys:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Any arbitrary key becomes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{context.keyName}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" placeholder."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Use cases:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"QR at hotel room: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{ location: \"Room 305\", roomType: \"Suite\" }"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"NFC at event entrance: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{ eventName: \"Summer Festival\", zone: \"VIP\" }"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Kiosk-specific: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{ deviceId: \"kiosk-001\", branch: \"Downtown\" }"},"children":[]}]}]}]}],"example":{"location":"Main Lobby","deviceId":"kiosk-001","validityDate":"2026-04-20T11:00:00Z"}},"maxUsage":{"type":"number","nullable":true,"default":null,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Maximum usage limit. null=unlimited, 1=single-use (receipt), 100=limited edition. When usage reaches maxUsage, trigger becomes exhausted."},"children":[]}]}]}],"example":1},"businessId":{"type":"number","example":"business-uuid-123","description":"Reference to the business that owns this trigger source. Optional - can be tenant-wide trigger sources","nullable":true},"coordsLatitude":{"type":"number","example":47.6062,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Latitude. Geographic coordinates for location-based trigger validation."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Universal Location Support:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ANY trigger type can use proximity validation (GPS_GEOFENCE, QR_CODE, NFC_TAG, API_WEBHOOK, TRANSACTION)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Location Resolution Priority:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":true,"marker":"."},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"TriggerSource coordinates (if set)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Business coordinates (if businessId exists)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Neither - No location validation"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Distance constraints defined in CampaignTrigger.maxGeoDistanceInMeters. Both latitude and longitude must be provided together."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Geocoding behavior:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Changing coords will auto-update address fields. To adjust pin position without changing address (e.g., parking entrance), set BOTH coordinates AND address fields in the same request."},"children":[]}]}]}],"nullable":true},"coordsLongitude":{"type":"number","example":-122.3321,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Longitude. Geographic coordinates for location-based trigger validation."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Universal Location Support:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ANY trigger type can use proximity validation (GPS_GEOFENCE, QR_CODE, NFC_TAG, API_WEBHOOK, TRANSACTION)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Location Resolution Priority:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":true,"marker":"."},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"TriggerSource coordinates (if set)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Business coordinates (if businessId exists)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Neither - No location validation"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Distance constraints defined in CampaignTrigger.maxGeoDistanceInMeters. Both latitude and longitude must be provided together."},"children":[]}]}]}],"nullable":true},"streetAddress":{"type":"string","example":"123 Main Street","description":"Street address (auto-populated from geocoding if coordinates provided)","nullable":true},"neighborhood":{"type":"string","example":"West Bay","description":"Neighborhood/area name (e.g., \"West Bay\", \"Pearl Qatar\", \"Lusail\") - auto-populated from geocoding","nullable":true},"district":{"type":"string","example":"Doha Municipality","description":"District/administrative area - auto-populated from geocoding","nullable":true},"city":{"type":"string","example":"Doha","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"City. Auto-populated from geocoding if only coordinates provided. "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Geocoding behavior:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Changing address fields will auto-update coordinates. To adjust pin without changing address, set BOTH coords AND address fields."},"children":[]}]}]}],"nullable":true},"postalCode":{"type":"string","example":"12345","description":"Postal code (auto-populated from geocoding if coordinates provided)","nullable":true},"country":{"type":"string","example":"Qatar","description":"Country (auto-populated from geocoding if coordinates provided)","nullable":true},"countryCode":{"type":"string","example":"QA","description":"ISO 3166-1 alpha-2 country code (auto-populated from geocoding)","nullable":true}},"required":["type","name"]}},"components/schemas/TriggerSourceDTO":{"id":"components/schemas/TriggerSourceDTO","kind":"json-schema","title":"TriggerSourceDTO","data":{"type":"object","properties":{"type":{"type":"string","enum":["QR_CODE","NFC_TAG","API_WEBHOOK","GPS_GEOFENCE","TRANSACTION"],"example":"QR_CODE","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Type of trigger source - HOW to claim rewards."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Available Types:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"QR_CODE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": Physical QR code scan. App opens camera, decodes QR, extracts triggerSourceId"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"NFC_TAG"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": NFC tag tap. App activates NFC reader, reads tag data"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GPS_GEOFENCE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": GPS-based geofence. App sends user coordinates for proximity validation"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"API_WEBHOOK"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": Server-to-server webhook. External system triggers claim via API"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"TRANSACTION"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": Purchase/transaction triggered. Claim activated by payment events"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Important:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" This defines HOW claims are triggered (the touchpoint mechanism)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"NOT to be confused with CampaignTriggerType which defines WHO can claim (CLAIM_BY_USER, CLAIM_BY_BUSINESS, CLAIM_BY_SYSTEM)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"App Integration:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"const triggerTypes = campaign.included?.triggerSources?.map(ts => ts.type);\n// Based on types, show appropriate UI (camera for QR, NFC prompt, location request, etc.)\n","language":"typescript"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"const triggerTypes = campaign.included?.triggerSources?.map(ts => ts.type);\n// Based on types, show appropriate UI (camera for QR, NFC prompt, location request, etc.)\n"},"children":[]}]}]},"name":{"type":"string","example":"Main Entrance QR Code","description":"Human-readable name for the trigger source"},"description":{"type":"number","example":"QR code located at the main entrance for visitor check-in","description":"Optional description explaining this trigger source","nullable":true},"metadata":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Type-specific configuration: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tokenConfig"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (override token ID). See TriggerSourceMetadata interface."},"children":[]}]}]}],"example":{"tokenConfig":{"tokenId":"1"}},"additionalProperties":true},"context":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC721 only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Admin-controlled dynamic context for template interpolation and AI prompts. This data is ALWAYS applied (not subject to allowExternalContextOverwrite)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Template Interpolation:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Values become available as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{context.keyName}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" placeholders in TokenMetadata name/description fields and AI prompts."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Special validity keys:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validityDate"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Base date for trigger-based validity"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validityEndDate"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - End date for date ranges (e.g., hotel checkout)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validityDuration"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Override duration in days/hours"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Custom keys:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Any arbitrary key becomes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{context.keyName}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" placeholder."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Use cases:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"QR at hotel room: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{ location: \"Room 305\", roomType: \"Suite\" }"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"NFC at event entrance: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{ eventName: \"Summer Festival\", zone: \"VIP\" }"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Kiosk-specific: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{ deviceId: \"kiosk-001\", branch: \"Downtown\" }"},"children":[]}]}]}]}],"example":{"location":"Main Lobby","deviceId":"kiosk-001","validityDate":"2026-04-20T11:00:00Z"}},"maxUsage":{"type":"number","nullable":true,"default":null,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Maximum usage limit. null=unlimited, 1=single-use (receipt), 100=limited edition. Usage count calculated from claims via CQRS."},"children":[]}]}]}],"example":null},"businessId":{"type":"number","example":"business-uuid-123","description":"Reference to the business that owns this trigger source. Optional - can be tenant-wide trigger sources","nullable":true},"coordsLatitude":{"type":"number","example":47.6062,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Latitude. Geographic coordinates for location-based trigger validation."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Universal Location Support:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ANY trigger type can use proximity validation (GPS_GEOFENCE, QR_CODE, NFC_TAG, API_WEBHOOK, TRANSACTION)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Location Resolution Priority:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":true,"marker":"."},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"TriggerSource coordinates (if set)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Business coordinates (if businessId exists)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Neither - No location validation"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Distance constraints defined in CampaignTrigger.maxGeoDistanceInMeters. Both latitude and longitude must be provided together."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Geocoding behavior:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Changing coords will auto-update address fields. To adjust pin position without changing address (e.g., parking entrance), set BOTH coordinates AND address fields in the same request."},"children":[]}]}]}],"nullable":true},"coordsLongitude":{"type":"number","example":-122.3321,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Longitude. Geographic coordinates for location-based trigger validation."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Universal Location Support:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ANY trigger type can use proximity validation (GPS_GEOFENCE, QR_CODE, NFC_TAG, API_WEBHOOK, TRANSACTION)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Location Resolution Priority:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":true,"marker":"."},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"TriggerSource coordinates (if set)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Business coordinates (if businessId exists)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Neither - No location validation"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Distance constraints defined in CampaignTrigger.maxGeoDistanceInMeters. Both latitude and longitude must be provided together."},"children":[]}]}]}],"nullable":true},"streetAddress":{"type":"string","example":"123 Main Street","description":"Street address (auto-populated from geocoding if coordinates provided)","nullable":true},"neighborhood":{"type":"string","example":"West Bay","description":"Neighborhood/area name (e.g., \"West Bay\", \"Pearl Qatar\", \"Lusail\") - auto-populated from geocoding","nullable":true},"district":{"type":"string","example":"Doha Municipality","description":"District/administrative area - auto-populated from geocoding","nullable":true},"city":{"type":"string","example":"Doha","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"City. Auto-populated from geocoding if only coordinates provided. "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Geocoding behavior:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Changing address fields will auto-update coordinates. To adjust pin without changing address, set BOTH coords AND address fields."},"children":[]}]}]}],"nullable":true},"postalCode":{"type":"string","example":"12345","description":"Postal code (auto-populated from geocoding if coordinates provided)","nullable":true},"country":{"type":"string","example":"Qatar","description":"Country (auto-populated from geocoding if coordinates provided)","nullable":true},"countryCode":{"type":"string","example":"QA","description":"ISO 3166-1 alpha-2 country code (auto-populated from geocoding)","nullable":true},"id":{"type":"string","example":"source-12345","description":"Unique identifier for the trigger source"},"isActive":{"type":"boolean","example":true,"description":"Whether this trigger source is currently active. Inactive sources won't trigger any flows"},"isExhausted":{"type":"boolean","default":false,"description":"Whether this trigger source has been exhausted (agotado). Set via CQRS when claim count reaches maxUsage."},"createdAt":{"type":"object","example":"2024-01-01T12:00:00.000Z","description":"Timestamp when the trigger source was created"},"updatedAt":{"type":"object","example":"2024-01-10T12:00:00.000Z","description":"Timestamp when the trigger source was last updated"}},"required":["type","name","id","isActive","isExhausted","createdAt","updatedAt"]}},"components/schemas/TokenBalanceDTO":{"id":"components/schemas/TokenBalanceDTO","kind":"json-schema","title":"TokenBalanceDTO","data":{"type":"object","properties":{"contractAddress":{"type":"string"},"chainId":{"type":"number"},"balance":{"type":"number"},"tokenName":{"type":"string"},"tokenSymbol":{"type":"string"},"tokenType":{"type":"string"},"tokenId":{"type":"string","nullable":true},"metadataUri":{"type":"string","nullable":true},"metadata":{"type":"object","nullable":true,"description":"Token metadata (loaded from IPFS/storage when needed for filtering)"}},"required":["contractAddress","chainId","balance","tokenType","tokenId","metadataUri","metadata"]}},"components/schemas/AccountTokenBalancesDTO":{"id":"components/schemas/AccountTokenBalancesDTO","kind":"json-schema","title":"AccountTokenBalancesDTO","data":{"type":"object","properties":{"accountAddress":{"type":"string"},"tokenBalances":{"type":"array","items":{"$ref":"#/components/schemas/TokenBalanceDTO"}}},"required":["accountAddress","tokenBalances"]}},"components/schemas/UserTokenBalancesDTO":{"id":"components/schemas/UserTokenBalancesDTO","kind":"json-schema","title":"UserTokenBalancesDTO","data":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"identifierEmail":{"type":"string","description":"Universal identifier email for deterministic operations. Generated from B2B inputs (email, externalId) for wallet salt generation and external integrations.","example":"user123@user.pers.internal"},"firstName":{"type":"string","description":"User first name","nullable":true},"lastName":{"type":"string","description":"User last name","nullable":true},"externalId":{"type":"string","description":"User external id","nullable":true},"accountAddress":{"type":"string","description":"User account address","nullable":true,"deprecated":true},"instagramAccountId":{"type":"string","description":"Instagram account id","nullable":true},"googleAccountName":{"type":"string","description":"Google account name","nullable":true},"customData":{"type":"object","description":"Custom data","nullable":true},"publicProfile":{"type":"object","description":"Public profile data","nullable":true},"isActive":{"type":"boolean","description":"Is active"},"currentSigningAccountId":{"type":"string","description":"Current active signing account ID for external wallet operations"},"wallets":{"description":"User-owned counterfactual smart contract wallets that can receive tokens","type":"array","items":{"$ref":"#/components/schemas/PublicWalletDTO"}},"createdAt":{"format":"date-time","type":"string","description":"Timestamp when the user was created"},"updatedAt":{"format":"date-time","type":"string","description":"Timestamp when the user was last updated","nullable":true},"registrationSource":{"type":"object","description":"Registration source tracking for analytics - captures channel and attribution when user was created","nullable":true,"example":{"channel":"web","medium":"referral","campaign":"launch_2026"}},"lastActivityAt":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Last activity timestamp. Updated whenever user generates tokens (login or refresh). Tracks last time user was active (~1 hour precision)."},"children":[]}]}]}],"format":"date-time","nullable":true},"activityCount":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Total activity count. Increments on every token generation (login + refresh). Measures true user engagement."},"children":[]}]}]}],"example":42},"included":{"type":"object","description":"Included related entities. Only populated when include parameter is specified.","nullable":true,"properties":{"statusTypes":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"User status types earned based on token balances (via ?include=status)"},"children":[]}]}]}],"type":"array","items":{"$ref":"#/components/schemas/UserStatusTypeDTO"}},"tokenBalances":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Token balances for user wallets (via ?include=balances)"},"children":[]}]}]}],"type":"array","items":{"$ref":"#/components/schemas/AccountTokenBalancesDTO"}}}},"tokenBalances":{"type":"array","items":{"$ref":"#/components/schemas/AccountTokenBalancesDTO"}}},"required":["id","identifierEmail","firstName","lastName","externalId","accountAddress","instagramAccountId","googleAccountName","customData","publicProfile","isActive","wallets","createdAt","updatedAt","tokenBalances"]}},"components/schemas/UserStatusTypeDTO":{"id":"components/schemas/UserStatusTypeDTO","kind":"json-schema","title":"UserStatusTypeDTO","data":{"type":"object","properties":{"name":{"type":"string","description":"User Status Type name"},"description":{"type":"string","description":"User Status Type description"},"minTokenBalance":{"type":"string","description":"User Status Type eligible Token Addresses"},"discountPercentage":{"type":"number","description":"User Status Type discount Rate in percentage"},"imageUrl":{"type":"string","description":"User Status Type image Url"},"eligibleTokenAddresses":{"description":"Eligible token contract addresses for this status type","example":["0x1234...","0x5678..."],"type":"array","items":{"type":"string"}},"tags":{"description":"Tags for categorization and filtering","example":["vip","premium","gold"],"type":"array","items":{"type":"string"}},"order":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Explicit ordering for status hierarchy (higher = more prestigious). If not set, falls back to minTokenBalance for ordering."},"children":[]}]}]}],"example":100},"id":{"type":"number","description":"User Status Type id"}},"required":["name","minTokenBalance","discountPercentage","id"]}},"components/schemas/UserCreateRequestDTO":{"id":"components/schemas/UserCreateRequestDTO","kind":"json-schema","title":"UserCreateRequestDTO","data":{"type":"object","properties":{"email":{"type":"string"},"instagramAccountId":{"type":"string","description":"User Instagram account id"},"googleAccountName":{"type":"string","description":"User Google account name"},"firstName":{"type":"string","description":"User first name"},"lastName":{"type":"string","description":"User last name"},"externalId":{"type":"string","description":"User external id"},"customData":{"type":"object","description":"Custom data"},"publicProfile":{"type":"object","description":"Public profile data"},"isActive":{"type":"boolean","description":"User active status"}}}},"components/schemas/PublicUserDTO":{"id":"components/schemas/PublicUserDTO","kind":"json-schema","title":"PublicUserDTO","data":{"type":"object","properties":{"id":{"type":"string"},"publicProfile":{"type":"object","description":"Public profile data"}},"required":["id","publicProfile"]}},"components/schemas/UserStatusTypeCreateRequestDTO":{"id":"components/schemas/UserStatusTypeCreateRequestDTO","kind":"json-schema","title":"UserStatusTypeCreateRequestDTO","data":{"type":"object","properties":{"name":{"type":"string","description":"User Status Type name"},"description":{"type":"string","description":"User Status Type description"},"minTokenBalance":{"type":"string","description":"User Status Type eligible Token Addresses"},"discountPercentage":{"type":"number","description":"User Status Type discount Rate in percentage"},"imageUrl":{"type":"string","description":"User Status Type image Url"},"eligibleTokenAddresses":{"description":"Eligible token contract addresses for this status type","example":["0x1234...","0x5678..."],"type":"array","items":{"type":"string"}},"tags":{"description":"Tags for categorization and filtering","example":["vip","premium","gold"],"type":"array","items":{"type":"string"}},"order":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Explicit ordering for status hierarchy (higher = more prestigious). If not set, falls back to minTokenBalance for ordering."},"children":[]}]}]}],"example":100}},"required":["name","minTokenBalance","discountPercentage"]}},"components/schemas/UrlRequestDTO":{"id":"components/schemas/UrlRequestDTO","kind":"json-schema","title":"UrlRequestDTO","data":{"type":"object","properties":{"url":{"type":"string","example":"https://example.com/user-data"}},"required":["url"]}},"components/schemas/BusinessTypeCreateRequestDTO":{"id":"components/schemas/BusinessTypeCreateRequestDTO","kind":"json-schema","title":"BusinessTypeCreateRequestDTO","data":{"type":"object","properties":{"name":{"type":"string","description":"Business type name"},"description":{"type":"string","description":"Business type description"},"code":{"type":"string","description":"Business type code"},"iconUrl":{"type":"string","description":"Business type icon url"}},"required":["name"]}},"components/schemas/BusinessTokenBalancesDTO":{"id":"components/schemas/BusinessTokenBalancesDTO","kind":"json-schema","title":"BusinessTokenBalancesDTO","data":{"type":"object","properties":{"id":{"type":"string","description":"The id of the business, this is unique and will be used to identify the business."},"email":{"type":"string","description":"The email of the business, this is unique and will be used to identify the business.","nullable":true},"accountAddress":{"type":"string","description":"The address of the business, this is the address that will be shown to the public.","nullable":true,"deprecated":true},"currentSigningAccountId":{"type":"string","description":"Current active signing account ID for external wallet operations","nullable":true},"wallets":{"description":"Business-owned counterfactual smart contract wallets that can receive tokens","type":"array","items":{"$ref":"#/components/schemas/PublicWalletDTO"}},"businessLegalName":{"type":"string","description":"The legal name of the business, this is the name that will be used for legal purposes.","nullable":true},"registrationNumber":{"type":"string","description":"The business registration number (e.g., company registration, VAT number, EIN)","nullable":true},"displayName":{"type":"string","description":"The display name of the business, this is the name that will be shown to the public.","nullable":true},"description":{"type":"string","description":"The description of the business, this is the description that will be shown to the public.","nullable":true},"shortDescription":{"type":"string","description":"The short description of the business, this is the description that will be shown to the public.","nullable":true},"websiteUrl":{"type":"string","description":"The website of the business, this is the website that will be shown to the public.","nullable":true},"imageUrl":{"type":"string","description":"The image of the business, this is the image that will be shown to the public.","nullable":true},"logoUrl":{"type":"string","description":"Logo URL for the business","nullable":true},"streetAddress":{"type":"string","description":"The address of the business, this is the address that will be shown to the public.","nullable":true},"phoneNumber":{"type":"string","description":"The phone number of the business.","nullable":true},"neighborhood":{"type":"string","description":"Neighborhood/area name (e.g., \"West Bay\", \"Pearl Qatar\", \"Lusail\") - auto-populated from geocoding","nullable":true},"district":{"type":"string","description":"District/administrative area - auto-populated from geocoding","nullable":true},"city":{"type":"string","description":"The city of the business, this is the city that will be shown to the public.","nullable":true},"postalCode":{"type":"string","description":"The postal code of the business, this is the postal code that will be shown to the public.","nullable":true},"country":{"type":"string","description":"The country of the business (auto-populated from geocoding if coordinates provided)","nullable":true},"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 country code (e.g., QA, US, AE) - auto-populated from geocoding","nullable":true,"example":"QA"},"coordsLatitude":{"type":"number","description":"The latitude of the business, this is the latitude that will be shown to the public.","nullable":true},"coordsLongitude":{"type":"number","description":"The longitude of the business, this is the longitude that will be shown to the public.","nullable":true},"businessType":{"description":"The business type of the business, this is the business type that will be shown to the public.","nullable":true,"allOf":[{"$ref":"#/components/schemas/BusinessTypeDTO"}]},"isActive":{"type":"boolean","description":"The status of the business, this is the status that will be shown to the public."},"approval":{"description":"Approval metadata for this business.","allOf":[{"$ref":"#/components/schemas/ApprovalDTO"}]},"canMintToken":{"type":"boolean","description":"The ability to mint token for the business, this is the ability that will be shown to the public.","default":true},"canChargeToken":{"type":"boolean","description":"The ability to charge token for the business, this is the ability that will be shown to the public.","default":true},"canManageUsers":{"type":"boolean","description":"The ability to manage users for the business, this is the ability that will be shown to the public.","default":true},"canReceiveDonation":{"type":"boolean","description":"The ability to receive donation for the business, this is the ability that will be shown to the public.","default":true},"tags":{"description":"Tags for categorization and filtering","default":[],"type":"array","items":{"type":"string"}},"customData":{"type":"object","description":"Custom business data including Google Places information (placeID, currentOpeningHours)","nullable":true,"example":{"placeID":"ChIJN1t_tDeuEmsRUsoyG83frY4","currentOpeningHours":{"open_now":true,"weekday_text":["Monday: 9:00 AM – 5:00 PM","Tuesday: 9:00 AM – 5:00 PM"]}}},"tokenBalances":{"description":"The token balances of the business, this is the token balances that will be shown to the public.","type":"array","items":{"$ref":"#/components/schemas/TokenBalanceDTO"}}},"required":["id","email","accountAddress","currentSigningAccountId","wallets","businessLegalName","registrationNumber","displayName","description","shortDescription","websiteUrl","imageUrl","logoUrl","streetAddress","phoneNumber","neighborhood","district","city","postalCode","country","countryCode","coordsLatitude","coordsLongitude","businessType","isActive","approval","canMintToken","canChargeToken","canManageUsers","canReceiveDonation","tags","customData","tokenBalances"]}},"components/schemas/BusinessCreateRequestDTO":{"id":"components/schemas/BusinessCreateRequestDTO","kind":"json-schema","title":"BusinessCreateRequestDTO","data":{"type":"object","properties":{"email":{"type":"string","description":"The email of the business, this is unique and will be used to identify the business."},"businessLegalName":{"type":"string","description":"The legal name of the business, this is the name that will be used for legal purposes."},"registrationNumber":{"type":"string","description":"The business registration number (e.g., company registration, VAT number, EIN)"},"displayName":{"type":"string","description":"The display name of the business, this is the name that will be shown to the public."},"description":{"type":"string","description":"The description of the business, this is the description that will be shown to the public."},"shortDescription":{"type":"string","description":"The short description of the business, this is the description that will be shown to the public."},"websiteUrl":{"type":"string","description":"The website of the business, this is the website that will be shown to the public."},"imageUrl":{"type":"string","description":"The image of the business, this is the image that will be shown to the public."},"logoUrl":{"type":"string","description":"The logo of the business (smaller icon/avatar), this is the logo that will be shown to the public."},"streetAddress":{"type":"string","description":"The address of the business, this is the address that will be shown to the public."},"phoneNumber":{"type":"string","description":"The phone number of the business."},"neighborhood":{"type":"string","description":"Neighborhood/area name (e.g., \"West Bay\", \"Pearl Qatar\", \"Lusail\") - auto-populated from geocoding"},"district":{"type":"string","description":"District/administrative area - auto-populated from geocoding"},"city":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The city of the business. "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Geocoding behavior:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Changing address fields will auto-update coordinates. To adjust pin without changing address, set BOTH coords AND address fields in the same request."},"children":[]}]}]}]},"postalCode":{"type":"string","description":"The postal code of the business, this is the postal code that will be shown to the public."},"country":{"type":"string","description":"The country of the business (auto-populated from geocoding if coordinates provided)"},"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 country code (e.g., QA, US, AE) - auto-populated from geocoding","example":"QA"},"coordsLatitude":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The latitude of the business. "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Geocoding behavior:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Changing coords will auto-update address fields. To adjust pin position without changing address (e.g., parking entrance), set BOTH coordinates AND address fields in the same request."},"children":[]}]}]}]},"coordsLongitude":{"type":"number","description":"The longitude of the business, this is the longitude that will be shown to the public"},"businessTypeId":{"type":"number","description":"The business type of the business, this is the business type that will be shown to the public."},"tags":{"description":"Tags for categorization and filtering","example":["partner","food-beverage","downtown"],"type":"array","items":{"type":"string"}},"customData":{"type":"object","description":"Structured custom field data. Keys are custom field definition keys; values are validated against CustomFieldDefinition rules.","example":{"placeID":"ChIJN1t_tDeuEmsRUsoyG83frY4","currentOpeningHours":{"open_now":true}}}}}},"components/schemas/BusinessBulkCreateRequestDTO":{"id":"components/schemas/BusinessBulkCreateRequestDTO","kind":"json-schema","title":"BusinessBulkCreateRequestDTO","data":{"type":"object","properties":{"businesses":{"description":"The list of businesses to create","type":"array","items":{"$ref":"#/components/schemas/BusinessCreateRequestDTO"}}},"required":["businesses"]}},"components/schemas/BusinessUpdateRequestDTO":{"id":"components/schemas/BusinessUpdateRequestDTO","kind":"json-schema","title":"BusinessUpdateRequestDTO","data":{"type":"object","properties":{"email":{"type":"string","description":"The email of the business, this is unique and will be used to identify the business."},"businessLegalName":{"type":"string","description":"The legal name of the business, this is the name that will be used for legal purposes."},"registrationNumber":{"type":"string","description":"The business registration number (e.g., company registration, VAT number, EIN)"},"displayName":{"type":"string","description":"The display name of the business, this is the name that will be shown to the public."},"description":{"type":"string","description":"The description of the business, this is the description that will be shown to the public."},"shortDescription":{"type":"string","description":"The short description of the business, this is the description that will be shown to the public."},"websiteUrl":{"type":"string","description":"The website of the business, this is the website that will be shown to the public."},"imageUrl":{"type":"string","description":"The image of the business, this is the image that will be shown to the public."},"logoUrl":{"type":"string","description":"The logo of the business (smaller icon/avatar), this is the logo that will be shown to the public."},"streetAddress":{"type":"string","description":"The address of the business, this is the address that will be shown to the public."},"phoneNumber":{"type":"string","description":"The phone number of the business."},"neighborhood":{"type":"string","description":"Neighborhood/area name (e.g., \"West Bay\", \"Pearl Qatar\", \"Lusail\") - auto-populated from geocoding"},"district":{"type":"string","description":"District/administrative area - auto-populated from geocoding"},"city":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The city of the business. "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Geocoding behavior:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Changing address fields will auto-update coordinates. To adjust pin without changing address, set BOTH coords AND address fields in the same request."},"children":[]}]}]}]},"postalCode":{"type":"string","description":"The postal code of the business, this is the postal code that will be shown to the public."},"country":{"type":"string","description":"The country of the business (auto-populated from geocoding if coordinates provided)"},"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 country code (e.g., QA, US, AE) - auto-populated from geocoding","example":"QA"},"coordsLatitude":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The latitude of the business. "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Geocoding behavior:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Changing coords will auto-update address fields. To adjust pin position without changing address (e.g., parking entrance), set BOTH coordinates AND address fields in the same request."},"children":[]}]}]}]},"coordsLongitude":{"type":"number","description":"The longitude of the business, this is the longitude that will be shown to the public"},"businessTypeId":{"type":"number","description":"The business type of the business, this is the business type that will be shown to the public."},"tags":{"description":"Tags for categorization and filtering","example":["partner","food-beverage","downtown"],"type":"array","items":{"type":"string"}},"customData":{"type":"object","description":"Structured custom field data. Keys are custom field definition keys; values are validated against CustomFieldDefinition rules.","example":{"placeID":"ChIJN1t_tDeuEmsRUsoyG83frY4","currentOpeningHours":{"open_now":true}}}}}},"components/schemas/BusinessToggleActiveRequestDTO":{"id":"components/schemas/BusinessToggleActiveRequestDTO","kind":"json-schema","title":"BusinessToggleActiveRequestDTO","data":{"type":"object","properties":{"isActive":{"type":"boolean"},"canMintToken":{"type":"boolean"},"canChargeToken":{"type":"boolean"},"canManageUsers":{"type":"boolean"},"canReceiveDonation":{"type":"boolean"}},"required":["isActive"]}},"components/schemas/BusinessMembershipDTO":{"id":"components/schemas/BusinessMembershipDTO","kind":"json-schema","title":"BusinessMembershipDTO","data":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for this membership"},"userId":{"type":"string","description":"The user ID who has access to this business"},"businessId":{"type":"string","description":"The business ID this membership belongs to"},"role":{"type":"string","description":"The role the user has in this business. Permissions are derived from role.","enum":["OWNER","ADMIN","EDITOR","VIEWER"],"example":"OWNER"},"createdAt":{"format":"date-time","type":"string","description":"When the membership was created"},"updatedAt":{"format":"date-time","type":"string","description":"When the membership was last updated"},"included":{"type":"object","description":"Included related entities. Only populated when include parameter is specified.","properties":{"user":{"description":"Included user entity","$ref":"#/components/schemas/UserDTO"},"business":{"description":"Included business entity","$ref":"#/components/schemas/BusinessDTO"}}}},"required":["id","userId","businessId","role"]}},"components/schemas/AddBusinessMemberRequestDTO":{"id":"components/schemas/AddBusinessMemberRequestDTO","kind":"json-schema","title":"AddBusinessMemberRequestDTO","data":{"type":"object","properties":{"userId":{"type":"string","description":"The user ID to add as a member"},"role":{"type":"string","description":"The role to assign (permissions derived from role)","enum":["OWNER","ADMIN","EDITOR","VIEWER"],"default":"VIEWER"}},"required":["userId","role"]}},"components/schemas/BusinessMembershipUpdateRequestDTO":{"id":"components/schemas/BusinessMembershipUpdateRequestDTO","kind":"json-schema","title":"BusinessMembershipUpdateRequestDTO","data":{"type":"object","properties":{"role":{"type":"string","description":"The new role to assign (permissions derived from role)","enum":["OWNER","ADMIN","EDITOR","VIEWER"]}}}},"components/schemas/TransactionDTO":{"id":"components/schemas/TransactionDTO","kind":"json-schema","title":"TransactionDTO","data":{"type":"object","properties":{"amount":{"type":"string","description":"Transaction amount"},"id":{"type":"string","description":"Transaction id"},"tokenAddress":{"type":"string","description":"Transaction token address"},"contractTokenId":{"type":"string","description":"Transaction token contract id, this is the blockchain contract id of the token","nullable":true},"tokenType":{"type":"string","description":"Transaction token type"},"senderAddress":{"type":"string","description":"Sender address"},"recipientAddress":{"type":"string","description":"Recipient address"},"transactionHash":{"type":"string","description":"Transaction hash"},"type":{"type":"string","description":"Transaction type","enum":["MINT","TRANSFER","BURN"]},"triggerProcessType":{"type":"string","description":"Trigger process type","enum":["PURCHASE","SPEND","TRANSFER","EARN","CAMPAIGN_USER_CLAIM","CAMPAIGN_SYSTEM_CLAIM","CAMPAIGN_BUSINESS_CLAIM","REDEMPTION_SPEND","REDEMPTION_RECEIVE","REDEMPTION_PRICE_TOKEN_TRANSFER","MIGRATION","ADMIN_TRIGGERED","BUSINESS_TRIGGERED"]},"triggerProcessId":{"type":"string","description":"Trigger process id, this is the id of the entity that triggered the transaction if applicable (e.g. CampaignUserClaim id)"},"status":{"type":"string","description":"Transaction status","enum":["created","processing","pending_signature","pending_submission","broadcasted","succeeded","failed","cancelled","expired"]},"createdAt":{"format":"date-time","type":"string","description":"Transaction creation timestamp","nullable":true},"updatedAt":{"format":"date-time","type":"string","description":"Transaction last update timestamp","nullable":true},"tenantId":{"type":"string","description":"Tenant ID for multi-tenant isolation"},"chainId":{"type":"number","description":"Blockchain chain ID"},"senderId":{"type":"string","description":"Sender entity ID (polymorphic reference)","nullable":true},"senderOwnerType":{"type":"string","description":"Sender entity type (user, business, system etc.)","nullable":true,"enum":["user","business","tenant","system","external"]},"recipientId":{"type":"string","description":"Recipient entity ID (polymorphic reference)","nullable":true},"recipientOwnerType":{"type":"string","description":"Recipient entity type (user, Business, system, etc.)","nullable":true,"enum":["user","business","tenant","system","external"]},"message":{"type":"string","description":"Optional message associated with the transaction, e.g. for error details","nullable":true},"engagedBusinessId":{"type":"string","description":"Business commercially involved in this transaction (for stats/reporting)","nullable":true},"authorizedSubmitterId":{"type":"string","description":"Entity authorized to submit this transaction (for POS flow security)","nullable":true},"authorizedSubmitterType":{"type":"string","description":"Type of entity authorized to submit (USER, BUSINESS, etc.)","nullable":true,"enum":["user","business","tenant","system","external"]},"userCountryCode":{"type":"string","description":"ISO 3166-1 alpha-2 country code derived from IP geolocation","nullable":true},"anonymizedIpAddress":{"type":"string","description":"Anonymized IP address (last octet zeroed for privacy)","nullable":true},"metadataUri":{"type":"string","description":"IPFS/storage URL for token metadata. For ERC721: unique URI per minted token. For ERC1155: shared URI per token type. Example: ipfs://Qm.../metadata.json","nullable":true,"example":"ipfs://QmXyz123.../metadata.json"},"tokenMetadataIncrementalId":{"type":"number","description":"Token metadata template ID - stable reference for mint/burn counting. For ERC1155: same as on-chain tokenId. For ERC721: template lookup key (preserved since on-chain ID differs).","nullable":true},"issuanceMode":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Economic issuance mechanism for reward transactions. TENANT_DELEGATED_MINT: master wallet mints. BUSINESS_OWNED_MINT: business owns the token contract. BUSINESS_BALANCE_TRANSFER: business transfers from own wallet balance. Null for non-reward or legacy transactions."},"children":[]}]}]}],"nullable":true,"enum":["TENANT_DELEGATED_MINT","BUSINESS_OWNED_MINT","BUSINESS_BALANCE_TRANSFER"]},"included":{"type":"object","description":"Included related entities. Only populated when include parameter is specified. Contains sender, recipient, and/or engaged business entities based on requested relations.","nullable":true,"properties":{"sender":{"description":"Included sender entity (User or Business)","oneOf":[{"$ref":"#/components/schemas/UserDTO"},{"$ref":"#/components/schemas/BusinessDTO"}]},"recipient":{"description":"Included recipient entity (User or Business)","oneOf":[{"$ref":"#/components/schemas/UserDTO"},{"$ref":"#/components/schemas/BusinessDTO"}]},"engagedBusiness":{"description":"Included engaged business entity","$ref":"#/components/schemas/BusinessDTO"}}}},"required":["amount","id","tokenAddress","contractTokenId","tokenType","senderAddress","recipientAddress","transactionHash","type","triggerProcessType","triggerProcessId","status","createdAt","updatedAt","tenantId","chainId","senderId","senderOwnerType","recipientId","recipientOwnerType","message","engagedBusinessId","authorizedSubmitterId","authorizedSubmitterType","userCountryCode","anonymizedIpAddress","metadataUri","tokenMetadataIncrementalId"]}},"components/schemas/AccountSelectorDTO":{"id":"components/schemas/AccountSelectorDTO","kind":"json-schema","title":"AccountSelectorDTO","data":{"type":"object","properties":{"accountId":{"type":"string","description":"Account ID (businessId or userId). System will auto-detect account type.","example":"user123"},"accountType":{"type":"string","description":"Account type ","enum":["user","business","tenant","system","external"],"example":"user"},"accountAddress":{"type":"string","description":"Direct account address (fallback if account ID not found)","example":"0x742d35Cc5dB3dC0F0e8f0b0d2fA0c3fA2ed5D0f8"}},"required":["accountType"]}},"components/schemas/TokenSelectorDTO":{"id":"components/schemas/TokenSelectorDTO","kind":"json-schema","title":"TokenSelectorDTO","data":{"type":"object","properties":{"tokenDbId":{"type":"string","description":"Database token UUID - highest priority for resolution","example":"uuid-12345-67890"},"contractAddress":{"type":"string","description":"Smart contract address on blockchain","example":"0x742d35Cc5dB3dC0F0e8f0b0d2fA0c3fA2ed5D0f8"},"contractTokenId":{"type":"string","description":"Blockchain token ID (on-chain identifier) - STANDARDIZED FIELD","example":"721"},"chainId":{"type":"number","description":"Blockchain chain ID - auto-resolved from token if not provided","example":1}}}},"components/schemas/TransactionRequestDTO":{"id":"components/schemas/TransactionRequestDTO","kind":"json-schema","title":"TransactionRequestDTO","data":{"type":"object","properties":{"web3TransactionType":{"type":"string","description":"Transaction type for easier detection and routing","enum":["MINT","TRANSFER","BURN"],"example":"TRANSFER"},"sender":{"description":"Transaction sender, will be resolved from auth context if not provided. if provided and different from auth user, signing capabilities will be checked or transaction will be rejected.","allOf":[{"$ref":"#/components/schemas/AccountSelectorDTO"}]},"recipient":{"description":"Transaction recipient (not required for BURN operations)","allOf":[{"$ref":"#/components/schemas/AccountSelectorDTO"}]},"token":{"description":"Token identification with multiple resolution strategies. If not provided, defaults to active credit token.","allOf":[{"$ref":"#/components/schemas/TokenSelectorDTO"}]},"amount":{"type":"number","description":"Transaction amount","example":100},"engagedBusinessId":{"type":"string","description":"Business commercially involved in this transaction (for stats/reporting). Used for POS scenarios.","example":"business-uuid-123"},"authorizedSubmitterId":{"type":"string","description":"Entity authorized to submit this transaction. For POS flow, this is typically the business. Defaults to sender if not provided.","example":"entity-uuid-456"},"authorizedSubmitterType":{"type":"string","description":"Type of entity authorized to submit (USER, BUSINESS). Defaults to USER if not provided.","enum":["user","business","tenant","system","external"],"example":"business"},"context":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC721 MINT only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Dynamic context for template interpolation and AI prompts."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"For direct mint transactions, this context is applied as trusted admin context (no "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"allowExternalContextOverwrite"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" check needed since caller is admin/system)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Template Interpolation:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Values become available as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{context.keyName}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" placeholders in TokenMetadata name/description fields and AI prompts."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Special validity keys:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validityDate"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Base date for trigger-based validity"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validityEndDate"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - End date for date ranges (e.g., hotel checkout)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validityDuration"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Override duration in days/hours"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Custom keys:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Any arbitrary key becomes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{context.keyName}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" placeholder."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Example:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"web3TransactionType\": \"MINT\",\n  \"recipient\": { \"accountId\": \"user-uuid\", \"accountType\": \"USER\" },\n  \"token\": { \"tokenEntityId\": \"token-uuid\" },\n  \"amount\": 1,\n  \"context\": {\n    \"awardReason\": \"Employee of the Month\",\n    \"awardDate\": \"2026-04-16\",\n    \"recipientName\": \"John Smith\"\n  }\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"web3TransactionType\": \"MINT\",\n  \"recipient\": { \"accountId\": \"user-uuid\", \"accountType\": \"USER\" },\n  \"token\": { \"tokenEntityId\": \"token-uuid\" },\n  \"amount\": 1,\n  \"context\": {\n    \"awardReason\": \"Employee of the Month\",\n    \"awardDate\": \"2026-04-16\",\n    \"recipientName\": \"John Smith\"\n  }\n}\n"},"children":[]}]}],"example":{"awardReason":"Employee of the Month","awardDate":"2026-04-16","recipientName":"John Smith"}}},"required":["web3TransactionType","amount"]}},"components/schemas/TransactionActionableDTO":{"id":"components/schemas/TransactionActionableDTO","kind":"json-schema","title":"TransactionActionableDTO","data":{"type":"object","properties":{"message":{"type":"string","description":"User-friendly message describing the action"},"actionUrl":{"type":"string","description":"URL to perform the action"},"authToken":{"type":"string","description":"Authentication token for the action"},"actionType":{"type":"string","description":"Type of action to be performed"}},"required":["actionType"]}},"components/schemas/TransactionRequestResponseDTO":{"id":"components/schemas/TransactionRequestResponseDTO","kind":"json-schema","title":"TransactionRequestResponseDTO","data":{"type":"object","properties":{"transaction":{"description":"Transaction details","allOf":[{"$ref":"#/components/schemas/TransactionDTO"}]},"transactionStatus":{"type":"string","description":"Current status of the transaction","enum":["created","processing","pending_signature","pending_submission","broadcasted","succeeded","failed","cancelled","expired"]},"signingData":{"type":"object","description":"Prepared transaction data ready for signing (if applicable)","nullable":true},"actionable":{"description":"Actionable details for the transaction, if applicable","nullable":true,"allOf":[{"$ref":"#/components/schemas/TransactionActionableDTO"}]},"walletSigningStatus":{"type":"string","description":"Current status of the wallet signing process"},"signatureData":{"type":"object","description":"Signature data (populated when transaction is signed but not submitted)","nullable":true}},"required":["transaction","transactionStatus","signingData","actionable","walletSigningStatus"]}},"components/schemas/TransactionSubmissionRequestDTO":{"id":"components/schemas/TransactionSubmissionRequestDTO","kind":"json-schema","title":"TransactionSubmissionRequestDTO","data":{"type":"object","properties":{"transactionId":{"type":"string","description":"Transaction ID, this is the transaction hash or identifier"},"type":{"type":"string","description":"Transaction format type for submission","enum":["legacy","EIP-2930","EIP-1559","EIP-712"],"example":"legacy"},"signature":{"type":"string","description":"EIP-712 structured data for smart wallet meta-transactions (required when type is EIP-712)","example":"0x1234567890abcdef..."},"signedTransaction":{"type":"string","description":"Pre-signed blockchain transaction in RLP encoded hex format (required for legacy, EIP-2930, EIP-1559)","example":"0xf86c0a8255f0..."}},"required":["transactionId","type"]}},"components/schemas/BookingRequirementConfigDTO":{"id":"components/schemas/BookingRequirementConfigDTO","kind":"json-schema","title":"BookingRequirementConfigDTO","data":{"type":"object","properties":{"type":{"type":"string","description":"Type of booking required for eligibility.","enum":["active","future","past","active_future","any"]},"eligibleBusinessIds":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Specific business IDs where booking must be. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" = any business allowed, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" = no businesses allowed (blocks all). Combined with eligibleBusinessTypeIds via OR."},"children":[]}]}]}],"nullable":true,"type":"array","items":{"type":"string"}},"eligibleBusinessTypeIds":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Business type IDs where booking must be. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" = any type allowed, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" = no types allowed (blocks all). Combined with eligibleBusinessIds via OR."},"children":[]}]}]}],"nullable":true,"type":"array","items":{"type":"number"}}},"required":["type"]}},"components/schemas/RedemptionTypeDTO":{"id":"components/schemas/RedemptionTypeDTO","kind":"json-schema","title":"RedemptionTypeDTO","data":{"type":"object","properties":{"name":{"type":"string","description":"Redemption type name"},"description":{"type":"string","description":"Redemption type description"},"imageUrl":{"type":"string","description":"Redemption type image url"},"baseRequiredUserFields":{"description":"Base required user fields for all redemptions of this type. Can include built-in field keys (email, firstName) or custom field definition UUIDs.","default":[],"type":"array","items":{"type":"string"}},"bookingRequirement":{"description":"Default booking requirement config for all redemptions of this type. Individual redemptions can override.","nullable":true,"allOf":[{"$ref":"#/components/schemas/BookingRequirementConfigDTO"}]},"id":{"type":"number","description":"Redemption type id"}},"required":["name","id"]}},"components/schemas/RedemptionTypeCreateRequestDTO":{"id":"components/schemas/RedemptionTypeCreateRequestDTO","kind":"json-schema","title":"RedemptionTypeCreateRequestDTO","data":{"type":"object","properties":{"name":{"type":"string","description":"Redemption type name"},"description":{"type":"string","description":"Redemption type description"},"imageUrl":{"type":"string","description":"Redemption type image url"},"baseRequiredUserFields":{"description":"Base required user fields for all redemptions of this type. Can include built-in field keys (email, firstName) or custom field definition UUIDs.","default":[],"type":"array","items":{"type":"string"}},"bookingRequirement":{"description":"Default booking requirement config for all redemptions of this type. Individual redemptions can override.","nullable":true,"allOf":[{"$ref":"#/components/schemas/BookingRequirementConfigDTO"}]}},"required":["name"]}},"components/schemas/RedemptionRedeemRequestDTO":{"id":"components/schemas/RedemptionRedeemRequestDTO","kind":"json-schema","title":"RedemptionRedeemRequestDTO","data":{"type":"object","properties":{"redemptionId":{"type":"string","description":"The redemption id"},"businessId":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Business ID for this redemption transaction."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Token Recipient Priority:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":true,"marker":"."},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"redemption.ownerBusinessId"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Business that created/owns the redemption (default)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dto.businessId"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - This field (override for marketplace/facilitator scenarios)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"TENANT"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Platform fallback for platform-wide redemptions"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Stamp Token Resolution ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resolveByBusiness=true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"):"},"children":[]}]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"When a redemption's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"priceTokenUnits"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" contains stamp tokens with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resolveByBusiness=true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"this field is also used to identify which business's on-chain tokenId to burn."},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"If the redemption has an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ownerBusinessId"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", that is used automatically — no need to provide this."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"For tenant-level redemptions (no "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ownerBusinessId"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), you "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"must"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" provide this field so the server"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"knows which business's stamp slot to resolve and burn."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Use Cases:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Omit for standard business-owned redemptions (both recipient and stamp resolution default to owner)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Provide for tenant-level stamp redemptions to specify which business's stamps to burn"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Provide for marketplace scenarios where a facilitator processes redemptions for another business"},"children":[]}]}]}]}],"nullable":true},"context":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC721 only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - User-provided external context for template interpolation and AI prompts."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"SECURITY:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Only applied if TokenMetadata.allowExternalContextOverwrite is true (admin opt-in required). Redemption.context (admin-controlled) is ALWAYS applied regardless."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Template Interpolation:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Values become available as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{context.keyName}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" placeholders in TokenMetadata name/description fields and AI prompts."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Special validity keys:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validityDate"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Base date for trigger-based validity"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validityEndDate"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - End date for date ranges (e.g., hotel checkout)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validityDuration"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Override duration in days/hours"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Custom keys:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Any arbitrary key becomes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{context.keyName}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" placeholder."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Example:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{ guestName: \"John\", roomNumber: \"305\", validityEndDate: \"2026-04-20T11:00:00Z\" }"},"children":[]}]}]}],"example":{"guestName":"John Doe","validityDate":"2026-04-15T14:00:00Z","validityEndDate":"2026-04-20T11:00:00Z"}}},"required":["redemptionId","businessId"]}},"components/schemas/RedemptionRedeemDTO":{"id":"components/schemas/RedemptionRedeemDTO","kind":"json-schema","title":"RedemptionRedeemDTO","data":{"type":"object","properties":{"id":{"type":"string","description":"The id of the redemption user redeem"},"userId":{"type":"string","description":"The user id that is claiming the redemption"},"redemptionId":{"type":"string","description":"The redemption that the user is redeeming"},"userCountryCode":{"type":"string","description":"The country code of the user redeeming the redemption","nullable":true},"status":{"type":"string","description":"The status of the redemption redeem","enum":["PENDING","PROCESSING","COMPLETED","FAILED"],"default":"PENDING"},"createdAt":{"format":"date-time","type":"string","description":"The date and time when processing of the redemption redeem started","nullable":true},"updatedAt":{"format":"date-time","type":"string","description":"The date and time when processing of the redemption redeem was last updated","nullable":true},"message":{"type":"string","description":"Message regarding the redemption status (failure reason, success info, etc.)","nullable":true},"dataSource":{"type":"object","description":"Analytics tracking: source/channel of this redeem action","nullable":true,"example":{"channel":"mobile","medium":"referral","campaign":"summer_promo"}},"included":{"type":"object","description":"Included related entities. Only populated when include parameter is specified. Contains redemption, user, business, and/or transactions entities based on requested relations.","nullable":true,"properties":{"redemption":{"description":"Included redemption entity","$ref":"#/components/schemas/RedemptionDTO"},"user":{"description":"Included user entity","$ref":"#/components/schemas/UserDTO"},"business":{"description":"Included business entity (if applicable)","$ref":"#/components/schemas/BusinessDTO"},"transactions":{"description":"Included transaction entities created for this redemption","type":"array","items":{"$ref":"#/components/schemas/TransactionDTO"}}}}},"required":["id","userId","redemptionId","userCountryCode","status","createdAt","updatedAt","message"]}},"components/schemas/RedemptionRedeemRequestResponseDTO":{"id":"components/schemas/RedemptionRedeemRequestResponseDTO","kind":"json-schema","title":"RedemptionRedeemRequestResponseDTO","data":{"type":"object","properties":{"redeem":{"description":"The redemption redeem details that the user redeemed","allOf":[{"$ref":"#/components/schemas/RedemptionRedeemDTO"}]},"senderTransaction":{"description":"The sender transaction that resulted from the user redeeming the redemption, this is applicable for redemptions that involve sending tokens from the user to a specific address","nullable":true,"allOf":[{"$ref":"#/components/schemas/TransactionRequestResponseDTO"}]}},"required":["redeem","senderTransaction"]}},"components/schemas/PriceTokenUnitSpec":{"id":"components/schemas/PriceTokenUnitSpec","kind":"json-schema","title":"PriceTokenUnitSpec","data":{"type":"object","properties":{"tokenEntityId":{"type":"string","description":"Token contract entity UUID"},"tokenMetadataIncrementalId":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Explicit on-chain tokenId (ERC1155) or template lookup key (ERC721). Leave null when resolveByBusiness=true."},"children":[]}]}]}],"nullable":true},"resolveByBusiness":{"type":"boolean","description":"When true, the tokenMetadataIncrementalId is resolved at redeem time by looking up the TokenMetadata whose ownerBusinessId matches the redemption's ownerBusinessId. Requires the token to be a stampToken. Cannot be combined with an explicit tokenMetadataIncrementalId.","default":false},"resolveTag":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Discriminator tag used when resolveByBusiness=true and a business has multiple stamp tokenIds on the same contract (e.g. \"coffee\", \"meal\"). Must match at least one tag on the resolved TokenMetadata. When omitted, a single unambiguous match is expected."},"children":[]}]}]}],"nullable":true},"amount":{"type":"number","description":"Amount of tokens the user must transfer as payment."}},"required":["tokenEntityId","amount"]}},"components/schemas/RedemptionMechanism":{"id":"components/schemas/RedemptionMechanism","kind":"json-schema","title":"RedemptionMechanism","data":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Computed payment mechanism. Use this for rendering decisions (FREE = no payment, CREDIT = platform credit tokens, TOKEN_PAY = ERC20 transfer, TOKEN_BURN = ERC1155/ERC721 stamp/NFT, MIXED = credit + token). Never stored — derived from creditTokenAmount and priceTokenUnits."},"children":[]}]}]}],"enum":["FREE","CREDIT","TOKEN_PAY","TOKEN_BURN","MIXED"]}},"components/schemas/ItemSupply":{"id":"components/schemas/ItemSupply","kind":"json-schema","title":"ItemSupply","data":{"type":"object","properties":{"available":{"type":"number","nullable":true,"description":"Number of items available for supply. Null if unlimited."},"total":{"type":"number","nullable":true,"description":"Total number of items for supply. Null if unlimited."}},"required":["available","total"]}},"components/schemas/RedemptionDTO":{"id":"components/schemas/RedemptionDTO","kind":"json-schema","title":"RedemptionDTO","data":{"type":"object","properties":{"id":{"type":"string","description":"Redemption id"},"ownerBusinessId":{"type":"string","description":"Optional owner business ID. If set, this redemption belongs to a specific business. If null, the redemption is tenant-owned (system-level).","nullable":true},"description":{"type":"string","description":"Description of the redemption","nullable":true},"name":{"type":"string","description":"Name of the redemption","nullable":true},"imageUrl":{"type":"string","description":"Image url of the redemption","nullable":true},"logoUrl":{"type":"string","description":"Logo URL for the redemption","nullable":true},"terms":{"type":"string","description":"Terms and conditions for the redemption. Plain text or HTML. Multi-language handling at app level.","nullable":true},"startDate":{"format":"date-time","type":"string","description":"Redemption start date","nullable":true},"endDate":{"format":"date-time","type":"string","description":"Redemption end date","nullable":true},"isActive":{"type":"boolean","description":"Redemption is active"},"approval":{"description":"Approval metadata for this redemption.","allOf":[{"$ref":"#/components/schemas/ApprovalDTO"}]},"creditTokenAmount":{"type":"number","description":"The amount of credit tokens needed to redeem the redemption tokens"},"type":{"description":"The redemption type","nullable":true,"allOf":[{"$ref":"#/components/schemas/RedemptionTypeDTO"}]},"priceTokenUnits":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Optional token units the user must transfer/burn as payment (ERC20, ERC1155, or ERC721). When set, these are transferred from user → business in addition to (or instead of) creditTokenAmount."},"children":[]}]}]}],"default":[],"type":"array","items":{"$ref":"#/components/schemas/PriceTokenUnitSpec"}},"mechanism":{"$ref":"#/components/schemas/RedemptionMechanism"},"tokenUnits":{"description":"The redemption tokens to be redeemed","type":"array","items":{"$ref":"#/components/schemas/TokenUnitDTO"}},"order":{"type":"number","nullable":true,"description":"The order of the redemption"},"supply":{"nullable":true,"description":"The available supply of the redemption","allOf":[{"$ref":"#/components/schemas/ItemSupply"}]},"maxPerUser":{"type":"number","description":"The maximum redemption per user"},"minUserStatusType":{"description":"The minimum user status type to redeem the redemption","nullable":true,"allOf":[{"$ref":"#/components/schemas/UserStatusTypeDTO"}]},"countryCodeRestrictions":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Country code restrictions as an array of strings (e.g., [\"NOT_ES\", \"FR\"])"},"children":[]}]}]}],"example":["NOT_ES","FR"]},"tags":{"description":"Redemption tags","default":[],"type":"array","items":{"type":"string"}},"context":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC721 only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Admin-defined dynamic context for AI prompts and trigger-based validity. Always applied to tokens minted from this redemption. Special keys: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validityDate"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validityEndDate"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validityDuration"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for token expiry."},"children":[]}]}]}],"example":{"eventName":"Summer Sale","validityDuration":30}},"specificRequiredUserFields":{"description":"Required user fields specific to this redemption (beyond type defaults). Can include built-in field keys (email, firstName) or custom field UUIDs.","default":[],"type":"array","items":{"type":"string"}},"requiredUserFields":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"All required fields for this redemption (type baseline + extras, deduplicated). Use this for validation."},"children":[]}]}]}],"default":[],"type":"array","items":{"type":"string"}},"specificBookingRequirement":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Redemption-specific booking requirement override. Set to override type default. Omit or null = use type default."},"children":[]}]}]}],"nullable":true,"allOf":[{"$ref":"#/components/schemas/BookingRequirementConfigDTO"}]},"bookingRequirement":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Effective booking requirement (specific override ?? type default). Use this for validation. Null = no booking required."},"children":[]}]}]}],"nullable":true,"allOf":[{"$ref":"#/components/schemas/BookingRequirementConfigDTO"}]},"included":{"type":"object","description":"Optional data requested via include parameter. All include-based data lives here for consistency.","nullable":true,"properties":{"redeemCount":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Total number of redeems for this redemption (via ?include=redeemCount)"},"children":[]}]}]}],"type":"number"},"ownerBusiness":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Owner business entity (via ?include=ownerBusiness, expands ownerBusinessId)"},"children":[]}]}]}],"$ref":"#/components/schemas/BusinessDTO"},"requiredUserInfo":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Required user info validation status. Only set when requiredUserFields is non-empty + user authenticated. (via ?include=requiredUserInfo)"},"children":[]}]}]}],"type":"object","properties":{"fieldDefinitions":{"type":"array","items":{"$ref":"#/components/schemas/CustomFieldDefinitionDTO"},"description":"Field definitions with isMissing status"},"isValid":{"type":"boolean","description":"True if user has all required fields"}}},"booking":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Booking validation status. Only set when bookingRequirement is set + user authenticated. (via ?include=booking)"},"children":[]}]}]}],"type":"object","properties":{"data":{"$ref":"#/components/schemas/CustomFieldDefinitionDTO","description":"The valid booking if found, null otherwise"},"isValid":{"type":"boolean","description":"True if user has valid booking meeting requirements"}}}}}},"required":["id","ownerBusinessId","description","name","imageUrl","logoUrl","terms","startDate","endDate","isActive","approval","creditTokenAmount","type","priceTokenUnits","mechanism","tokenUnits","order","maxPerUser","minUserStatusType","tags","specificRequiredUserFields","requiredUserFields"]}},"components/schemas/RedemptionCreateRequestDTO":{"id":"components/schemas/RedemptionCreateRequestDTO","kind":"json-schema","title":"RedemptionCreateRequestDTO","data":{"type":"object","properties":{"ownerBusinessId":{"type":"string","description":"Optional owner business ID. If set, this redemption belongs to a specific business. If null/omitted, the redemption is tenant-owned (system-level).","nullable":true},"isActive":{"type":"boolean","description":"Whether the redemption is active immediately on creation. Defaults to false.","default":false},"creditTokenAmount":{"type":"number","description":"The amount of credit tokens needed to redeem the redemption tokens"},"description":{"type":"string","description":"Description of the redemption","nullable":true},"name":{"type":"string","description":"Name of the redemption"},"imageUrl":{"type":"string","description":"Image url of the redemption","nullable":true},"logoUrl":{"type":"string","description":"Logo URL for the redemption (smaller icon/avatar)","nullable":true},"terms":{"type":"string","description":"Terms and conditions for the redemption. Plain text or HTML. Multi-language handling at app level.","nullable":true},"startDate":{"format":"date-time","type":"string","description":"Redemption start date","nullable":true},"endDate":{"format":"date-time","type":"string","description":"Redemption end date","nullable":true},"redemptionTypeId":{"type":"number","description":"Redemption type id","nullable":true},"minUserStatusTypeId":{"type":"number","description":"min user status type id to redeem the redemption","nullable":true},"maxTotalSupply":{"type":"number","description":"The maximum total supply of the redemption","nullable":true},"order":{"type":"number","description":"The order of the redemption","nullable":true},"maxPerUser":{"type":"number","description":"The maximum redemption per user","nullable":true},"countryCodeRestrictions":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Country code restrictions as an array of strings (e.g., [\"NOT_ES\", \"FR\"])"},"children":[]}]}]}],"example":["NOT_ES","FR"],"nullable":true,"type":"array","items":{"type":"string"}},"tags":{"description":"Tags for categorization and filtering","example":["rewards","partner","premium"],"type":"array","items":{"type":"string"}},"context":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC721 only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Admin-defined dynamic context for AI prompts and trigger-based validity. Always applied to tokens minted from this redemption. Special keys: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validityDate"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validityEndDate"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validityDuration"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for token expiry."},"children":[]}]}]}],"example":{"eventName":"Summer Sale","validityDuration":30}},"specificRequiredUserFields":{"description":"Required user fields specific to this redemption (beyond type defaults). Can include built-in field keys (email, firstName) or custom field UUIDs.","example":["email","firstName","countryOfResidence"],"type":"array","items":{"type":"string"}},"bookingRequirement":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Booking requirement for this redemption. If set, defines what type of booking user needs. Omit or null = no booking required."},"children":[]}]}]}],"enum":["active","future","past","active_future","any"],"nullable":true},"priceTokenUnits":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Optional token units the user must transfer/burn as payment (ERC20, ERC1155, or ERC721). Use resolveByBusiness=true for stamp-token redemptions where the tokenId is resolved per business at redeem time."},"children":[]}]}]}],"example":[{"tokenEntityId":"uuid","tokenMetadataIncrementalId":1,"amount":9}],"type":"array","items":{"$ref":"#/components/schemas/PriceTokenUnitSpec"}}}}},"components/schemas/TokenTypeDTO":{"id":"components/schemas/TokenTypeDTO","kind":"json-schema","title":"TokenTypeDTO","data":{"type":"object","properties":{"nativeTokenType":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Token native Types:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC20: used for credits"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC721: used for stamps and NFTs"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC1155: used for rewards"},"children":[]}]}]}]}],"enum":["ERC20","ERC1155","ERC721"]},"name":{"type":"string","description":"Token type name"},"imageUrl":{"type":"string","description":"Token type image url"},"description":{"type":"string","description":"Token type description"}},"required":["nativeTokenType"]}},"components/schemas/TokenCreateRequestDTO":{"id":"components/schemas/TokenCreateRequestDTO","kind":"json-schema","title":"TokenCreateRequestDTO","data":{"type":"object","properties":{"contractAddress":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Contract address of an already-deployed token on-chain. When provided, the token is registered in the database without any on-chain deployment (legacy mode). When omitted, a new UUPS proxy is deployed on-chain via the TOKEN_PROXY_FACTORY (default mode)."},"children":[]}]}]}]},"chainId":{"type":"number","description":"The chain id of the contract. Defaults to the tenant default chain if omitted."},"decimals":{"type":"number","description":"Decimals is the number of decimals the token uses. This is useful for ERC20 tokens."},"isGallery":{"type":"boolean","nullable":true,"description":"This indicates if token should be included as a gallery. This is useful for ERC721 or ERC1155 tokens."},"stampToken":{"type":"boolean","description":"Mark this ERC1155 contract as a shared stamp contract. When set to true, a TokenMetadata entry is automatically provisioned for every existing business in the tenant. Future businesses also get auto-provisioned entries at creation time."},"name":{"type":"string","nullable":true,"description":"The name of the token. Required when deploying a new ERC20 or ERC721 token."},"symbol":{"type":"string","nullable":true,"description":"The symbol of the token. Required when deploying a new ERC20 or ERC721 token."},"nativeTokenType":{"type":"string","description":"Token standard for the new deployment. Required when contractAddress is absent. Determines which on-chain implementation contract is used.","enum":["ERC20","ERC1155","ERC721"]},"uri":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Base URI for ERC1155 (PERS_RewardToken) metadata. Required when deploying a new ERC1155 token."},"children":[]}]}]}]},"initialSupply":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Initial supply to mint immediately after ERC20 deployment. Defaults to 0 (mint later via the MINTER_ROLE). Reserved for future use — the current initialize() signature does not accept a supply parameter."},"children":[]}]}]}],"default":0},"salt":{"type":"string","description":"Deterministic CREATE2 salt for the proxy deployment. Auto-generated if omitted. Pass an explicit value to pre-compute or re-deploy a specific address."}}}},"components/schemas/TokenUpdateRequestDTO":{"id":"components/schemas/TokenUpdateRequestDTO","kind":"json-schema","title":"TokenUpdateRequestDTO","data":{"type":"object","properties":{"isGallery":{"type":"boolean","nullable":true,"description":"This indicates if token should be included as a gallery. This is useful for ERC721 or ERC1155 tokens."},"stampToken":{"type":"boolean","description":"Mark this ERC1155 contract as a shared stamp contract. When set to true, a TokenMetadata entry is automatically provisioned for every existing business in the tenant. Future businesses also get auto-provisioned entries at creation time."},"name":{"type":"string","nullable":true,"description":"The name of the token. Required when deploying a new ERC20 or ERC721 token."},"symbol":{"type":"string","nullable":true,"description":"The symbol of the token. Required when deploying a new ERC20 or ERC721 token."}}}},"components/schemas/TokenMetadataCreateRequestDTO":{"id":"components/schemas/TokenMetadataCreateRequestDTO","kind":"json-schema","title":"TokenMetadataCreateRequestDTO","data":{"type":"object","properties":{"ownerBusinessId":{"type":"string","description":"Optional owner business ID. If set, this token metadata belongs to a specific business. If null/omitted, the token metadata is tenant-owned (system-level).","nullable":true},"isActive":{"type":"boolean","description":"Whether the token metadata is active immediately on creation. Defaults to false.","default":false},"imageUrl":{"type":"string","description":" This is the URL to the image of the item. Can be just about any type of image (including SVGs, which will be cached into PNGs by OpenSea), IPFS or Arweave URLs or paths. We recommend using a minimum 3000 x 3000 image.","nullable":true},"externalUrl":{"type":"string","description":"This is the URL that will appear below the asset's image","nullable":true},"description":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A human-readable description of the item. Markdown is supported."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC721 Template Interpolation:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Supports "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{placeholder}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" syntax for dynamic personalization at mint time (without AI costs)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Available placeholders:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{user.firstName}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{user.lastName}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - User data"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{campaign.name}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{business.displayName}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Campaign/business"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{context.xxx}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Dynamic context values (TriggerSource.context or claim request)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{defaults.xxx}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Default values from defaultPromptContext"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Example:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"\"Thank you {{user.firstName}} for visiting {{business.displayName}}! Your exclusive reward for {{context.eventName}}.\""},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Processing order:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Template interpolation runs first, then AI processing (if configured) can further enhance the result."},"children":[]}]}]}]},"name":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Name of the item."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC721 Template Interpolation:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Supports "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{placeholder}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" syntax for dynamic personalization at mint time (without AI costs)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Available placeholders:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{user.firstName}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{user.lastName}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - User data"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{campaign.name}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{business.displayName}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Campaign/business"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{context.xxx}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Dynamic context values (TriggerSource.context or claim request)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{defaults.xxx}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Default values from defaultPromptContext"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Example:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"\"Welcome {{context.guestName}} - VIP Pass\""},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"\"{{user.firstName}}'s {{campaign.name}} Reward\""},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Processing order:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Template interpolation runs first, then AI processing (if configured) can further enhance the result."},"children":[]}]}]}]},"validityType":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC721 only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Validity type defines how token expiry is calculated. Use with validityDuration for relative types. Ignored for ERC1155 tokens."},"children":[]}]}]}],"enum":["fixed_date","days_from_issuance","hours_from_issuance","months_from_issuance","end_of_month","end_of_year","trigger_date","trigger_date_range","days_from_trigger","hours_from_trigger"],"example":"days_from_issuance"},"validityDuration":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC721 only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Duration in days or hours (used with days_from_issuance, hours_from_issuance validity types). Ignored for ERC1155 tokens."},"children":[]}]}]}],"example":30},"expiryDate":{"format":"date-time","type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Fixed expiry date (used with fixed_date validity type). For other validity types, this is computed at issuance time."},"children":[]}]}]}]},"animationUrl":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A URL to a multi-media attachment for the item. The file extensions GLTF, GLB, WEBM, MP4, M4V, OGV, and OGG are supported, along with the audio-only extensions MP3, WAV, and OGA. Animation_url also supports HTML pages, allowing you to build rich experiences and interactive NFTs using JavaScript canvas, WebGL, and more. Scripts and relative paths within the HTML page are now supported. However, access to browser extensions is not supported."},"children":[]}]}]}],"nullable":true},"youtubeUrl":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A URL to a YouTube video (only used if animation_url is not provide"},"children":[]}]}]}],"nullable":true},"creatorAccountAddress":{"type":"string","description":"Creator Address"},"previewUrl":{"type":"string","description":"Preview Url","nullable":true},"tags":{"description":"Tags for categorization and filtering","example":["summer","vip","limited-edition"],"type":"array","items":{"type":"string"}},"aiPromptConfigs":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC721 only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - AI prompt configurations for dynamic content generation at mint time."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"AI processing runs AFTER template interpolation, so prompts can reference already-interpolated values."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Results are mapped by key to override static fields (name, description, imageUrl). Ignored for ERC1155 tokens."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Note:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" For simple personalization without AI costs, use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{placeholder}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" syntax directly in name/description fields instead."},"children":[]}]}]}],"example":[{"type":"TEXT_GENERATION","key":"name","prompt":"Generate a unique reward name for {{user.firstName}} at {{business.displayName}}"},{"type":"IMAGE_GENERATION","key":"imageUrl","prompt":"A {{defaults.style}} trophy badge for {{context.eventName}}"}],"type":"array","items":{"$ref":"#/components/schemas/AiPromptConfigDTO"}},"allowExternalContextOverwrite":{"type":"boolean","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC721 only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Allow USER-PROVIDED external context from claim/redeem requests to be used in template interpolation and AI prompts."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Security model:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"false"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (default): Only admin-controlled context (TriggerSource.context, Redemption.context, defaultPromptContext) is available"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": User-provided context from API requests is also merged and available as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{context.xxx}}"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Note:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Admin-controlled context (QR/NFC data) is ALWAYS applied regardless of this flag."},"children":[]}]}]}],"default":false,"example":true},"defaultPromptContext":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC721 only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Default context values for template interpolation and AI prompts. Available as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{defaults.xxx}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" placeholders."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Always applied regardless of allowExternalContextOverwrite. Use for brand defaults, styling preferences, or fallback values."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Example usage in name:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"\"{{defaults.brand}} - {{user.firstName}}'s Reward\""},"children":[]}]}]}],"example":{"brand":"PERS Rewards","style":"minimal","defaultLocation":"Online"}},"businessIds":{"description":"Business IDs where this token can be redeemed/spent. If empty, token can be spent at any business in the tenant. The minting business is always merged in automatically at mint time.","example":["business-uuid-1","business-uuid-2"],"type":"array","items":{"type":"string"}},"webhookId":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC721 only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Webhook ID for dynamic data fetch at mint time."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"If set, the webhook is executed before metadata generation and response data is merged into the NFT."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Use cases:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Fetch guest data from PMS/CRM systems"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Get real-time pricing or availability"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Retrieve user-specific content from external APIs"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Processing order:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Webhook fetch runs AFTER template interpolation but BEFORE AI processing."},"children":[]}]}]}],"example":"webhook-uuid-for-pms-lookup"},"webhookPayloadTemplate":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC721 only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Payload template for webhook request."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Supports "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{{placeholder}}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" interpolation with same context as AI prompts."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Example:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"userId\": \"{{user.id}}\",\n  \"campaignId\": \"{{campaign.id}}\",\n  \"bookingId\": \"{{context.bookingId}}\"\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"userId\": \"{{user.id}}\",\n  \"campaignId\": \"{{campaign.id}}\",\n  \"bookingId\": \"{{context.bookingId}}\"\n}\n"},"children":[]}]}],"example":{"userId":"{{user.id}}","bookingId":"{{context.bookingId}}"}},"webhookFieldMapping":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERC721 only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Field mapping from webhook response to metadata fields."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Keys are webhook response paths (dot notation for nested), values are target field names."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Mapping rules:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Explicit mapping: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"\"response.path\": \"targetField\""},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Known fields (name, description, imageUrl): auto-mapped if present"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unknown fields or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"\"attributes\""},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" target: become NFT attributes"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Example:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"guestName\": \"name\",\n  \"data.guest.image\": \"imageUrl\",\n  \"roomNumber\": \"attributes\",\n  \"checkInDate\": \"attributes\"\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"guestName\": \"name\",\n  \"data.guest.image\": \"imageUrl\",\n  \"roomNumber\": \"attributes\",\n  \"checkInDate\": \"attributes\"\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"If null/undefined, uses auto-mapping."},"children":[]}]}]}],"example":{"guestName":"name","roomNumber":"attributes","data.image":"imageUrl"}},"consumable":{"type":"boolean","default":true,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Whether this token template is consumable (burned on redemption) or collectible (transferred). Applies to ERC1155 and ERC721 only — ERC20 is always transferred. When true, the token is destroyed (burn) when used as payment in a redemption. Defaults to true — most token templates are consumable. Set to false for collectible/non-burning use cases. Mirrored as a consumable attribute in the on-chain IPFS metadata."},"children":[]}]}]}]}}}},"components/schemas/TenantCreateRequestDTO":{"id":"components/schemas/TenantCreateRequestDTO","kind":"json-schema","title":"TenantCreateRequestDTO","data":{"type":"object","properties":{"projectName":{"type":"string","description":"The project/tenant name","example":"My Loyalty Program"}},"required":["projectName"]}},"components/schemas/ExternalTokenIssuerConfigDTO":{"id":"components/schemas/ExternalTokenIssuerConfigDTO","kind":"json-schema","title":"ExternalTokenIssuerConfigDTO","data":{"type":"object","properties":{"issuer":{"type":"string","description":"Issuer URL (must match token iss claim)","example":"https://login.example.com/tenant-id/v2.0/"},"publicKey":{"type":"string","description":"PEM-encoded public key (skip JWKS fetch)","example":"-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----"},"jwksUri":{"type":"string","description":"Custom JWKS URI (override default discovery)","example":"https://login.example.com/.well-known/jwks.json"},"allowUnverified":{"type":"boolean","description":"Skip signature verification - use only for dev/testing","default":false},"allowExpired":{"type":"boolean","description":"Allow expired tokens - use only for dev/testing","default":false}},"required":["issuer"]}},"components/schemas/EmailTemplateConfigDTO":{"id":"components/schemas/EmailTemplateConfigDTO","kind":"json-schema","title":"EmailTemplateConfigDTO","data":{"type":"object","properties":{"templateId":{"type":"string","description":"Provider-specific template ID (e.g., SendGrid dynamic template ID)","example":"d-abc123def456"},"subject":{"type":"string","description":"Optional subject - if not provided, template's default subject is used","example":"Your login link"},"variableMapping":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Maps provider template variable names to internal variable names. Format: { templateVar: internalVar }. Allows multiple template vars to reference the same internal value."},"children":[]}]}]}],"example":{"link_url":"magicLinkUrl","offers_link":"magicLinkUrl"}}},"required":["templateId"]}},"components/schemas/EmailTemplatesConfigDTO":{"id":"components/schemas/EmailTemplatesConfigDTO","kind":"json-schema","title":"EmailTemplatesConfigDTO","data":{"type":"object","properties":{"magicLink":{"description":"Magic link / passwordless login email template","allOf":[{"$ref":"#/components/schemas/EmailTemplateConfigDTO"}]},"welcome":{"description":"Welcome email template for new users","allOf":[{"$ref":"#/components/schemas/EmailTemplateConfigDTO"}]},"passwordReset":{"description":"Password reset email template","allOf":[{"$ref":"#/components/schemas/EmailTemplateConfigDTO"}]},"emailVerification":{"description":"Email verification template","allOf":[{"$ref":"#/components/schemas/EmailTemplateConfigDTO"}]},"transactionConfirmation":{"description":"Transaction confirmation template","allOf":[{"$ref":"#/components/schemas/EmailTemplateConfigDTO"}]}}}},"components/schemas/EmailConfigDTO":{"id":"components/schemas/EmailConfigDTO","kind":"json-schema","title":"EmailConfigDTO","data":{"type":"object","properties":{"provider":{"type":"string","description":"Email provider (sendgrid, mailjet)","enum":["sendgrid","mailjet"],"default":"sendgrid"},"fromEmail":{"type":"string","description":"Sender email address (must be verified with provider)","example":"noreply@tenant.com"},"fromName":{"type":"string","description":"Sender display name","example":"Tenant Name"},"templates":{"description":"Template configurations keyed by email type","allOf":[{"$ref":"#/components/schemas/EmailTemplatesConfigDTO"}]},"apiKey":{"type":"string","description":"Email provider API key (masked in responses)","example":"...a1b2"},"apiSecret":{"type":"string","description":"Email provider API secret for Mailjet (masked in responses)","example":"...x9y8"}}}},"components/schemas/TenantDTO":{"id":"components/schemas/TenantDTO","kind":"json-schema","title":"TenantDTO","data":{"type":"object","properties":{"projectName":{"type":"string","description":"Name of the tenant."},"acronym":{"type":"string","description":"Acronym of the tenant."},"id":{"type":"string","description":"Unique identifier for tenant. This id is used to identify tenant in the system for client requests."},"createdAt":{"format":"date-time","type":"string","description":"Date when tenant was created."},"projectDescription":{"type":"string","description":"Description of the tenant."},"projectWebsite":{"type":"string","description":"Website of the tenant."},"projectEmail":{"type":"string","description":"Email of the tenant."},"projectImageUrl":{"type":"string","description":"Image URL of the tenant."},"projectLogoUrl":{"type":"string","description":"Logo URL of the tenant."},"projectApiKey":{"type":"string","description":"Unique identifier for tenant. This id is used to identify tenant in the system for client requests."},"testnetProjectApiKey":{"type":"string","description":"Testnet project API key for tenant. Used in case of testnet project."},"stripeApiKey":{"type":"string","description":"Stripe API key for tenant (masked). Used in case of stripe payment.","example":"sk_...a1b2"},"stripeWebhookSecret":{"type":"string","description":"Stripe webhook secret for tenant (masked). Used in case of stripe payment.","example":"whsec_...x9y0"},"loginToken":{"type":"string","description":"This is an optional field for any extra login requirements for your users."},"allowJWTForUnauthenticatedUsers":{"type":"boolean","description":"This is an optional field for any extra login requirements for your users."},"firebaseTenantId":{"type":"string"},"defaultWalletManagementType":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Default wallet management type for this tenant. When set, overrides chain-type-based derivation. Fallback chain: explicit → tenant default → chain type."},"children":[]}]}]}],"enum":["custodial","non-custodial"],"nullable":true},"ipfsGatewayDomain":{"type":"string","description":"IPFS Gateway Domain for the tenant. Used for resolving IPFS URIs to HTTP URLs.","example":"pers.mypinata.cloud","default":"pers.mypinata.cloud"},"googleApiKey":{"type":"string","description":"Google API Key for the tenant. Used for Google services integration."},"allowedTokenIssuers":{"description":"List of allowed external JWT token issuers for this tenant.","type":"array","items":{"$ref":"#/components/schemas/ExternalTokenIssuerConfigDTO"}},"emailConfig":{"description":"Unified email configuration - provider, credentials, sender info, and templates","allOf":[{"$ref":"#/components/schemas/EmailConfigDTO"}]},"approvalSettings":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Per-entity approval requirements. When true, newly created entities of that type will start in pending_approval state and must be approved by a tenant admin before becoming active."},"children":[]}]}]}],"example":{"business":false,"tokenMetadata":false,"campaign":false,"redemption":false}}},"required":["projectName","acronym","id","createdAt","projectApiKey","testnetProjectApiKey","allowJWTForUnauthenticatedUsers","ipfsGatewayDomain"]}},"components/schemas/TenantClientConfigDTO":{"id":"components/schemas/TenantClientConfigDTO","kind":"json-schema","title":"TenantClientConfigDTO","data":{"type":"object","properties":{"projectName":{"type":"string","description":"The project name","example":"My Project"},"id":{"type":"string","description":"The project id","example":"ererf-erf-erf-erf"},"stripePublishableKey":{"type":"string","description":"Stripe publishable key for tenant. Used in case of stripe payment."},"firebaseTenantId":{"type":"string","description":"Firebase tenant ID for tenant. This id is needed, if you choose to setup Firebase for user authentification for your project."},"infuraApiKey":{"type":"string","description":"Infura API key for tenant. Used in for client interaction with web3 provider."},"polyScanApiKey":{"type":"string","description":"PolyScan API key for tenant. Used in for client interaction with PolyScan."},"clientIpLocation":{"type":"object","description":"Geolocation information derived from the client IP address","properties":{"country_code":{"type":"string"},"country_name":{"type":"string"},"region_code":{"type":"string"},"region_name":{"type":"string"},"city_name":{"type":"string"},"postal_code":{"type":"string"},"latitude":{"type":"number","example":37.7749},"longitude":{"type":"number","example":-122.4194},"accuracy_radius":{"type":"number","example":5}},"nullable":true},"ipfsGatewayDomain":{"type":"string","description":"IPFS Gateway Domain for resolving IPFS URIs to HTTP URLs.","example":"pers.mypinata.cloud"},"googleApiKey":{"type":"string","description":"Google API Key for Google services integration."}},"required":["projectName","id","ipfsGatewayDomain"]}},"components/schemas/TenantPublicDTO":{"id":"components/schemas/TenantPublicDTO","kind":"json-schema","title":"TenantPublicDTO","data":{"type":"object","properties":{"projectName":{"type":"string","description":"Name of the tenant."},"acronym":{"type":"string","description":"Acronym of the tenant."},"id":{"type":"string","description":"Unique identifier for tenant. This id is used to identify tenant in the system for client requests."},"createdAt":{"format":"date-time","type":"string","description":"Date when tenant was created."},"projectDescription":{"type":"string","description":"Description of the tenant."},"projectWebsite":{"type":"string","description":"Website of the tenant."},"projectEmail":{"type":"string","description":"Email of the tenant."},"projectImageUrl":{"type":"string","description":"Image URL of the tenant."},"projectLogoUrl":{"type":"string","description":"Logo URL of the tenant."},"projectApiKey":{"type":"string","description":"Unique identifier for tenant. This id is used to identify tenant in the system for client requests."}},"required":["projectName","acronym","id","createdAt","projectApiKey"]}},"components/schemas/EmailConfigRequestDTO":{"id":"components/schemas/EmailConfigRequestDTO","kind":"json-schema","title":"EmailConfigRequestDTO","data":{"type":"object","properties":{"provider":{"type":"string","description":"Email provider (sendgrid, mailjet)","enum":["sendgrid","mailjet"],"default":"sendgrid"},"fromEmail":{"type":"string","description":"Sender email address (must be verified with provider)","example":"noreply@tenant.com"},"fromName":{"type":"string","description":"Sender display name","example":"Tenant Name"},"templates":{"description":"Template configurations keyed by email type","allOf":[{"$ref":"#/components/schemas/EmailTemplatesConfigDTO"}]},"apiKey":{"type":"string","description":"API key for the email provider (will be encrypted)","example":"SG.xxxxx"},"apiSecret":{"type":"string","description":"API secret for Mailjet (will be encrypted)","example":"secret123xyz"}}}},"components/schemas/ApprovalSettingsRequestDTO":{"id":"components/schemas/ApprovalSettingsRequestDTO","kind":"json-schema","title":"ApprovalSettingsRequestDTO","data":{"type":"object","properties":{}}},"components/schemas/TenantUpdateRequestDTO":{"id":"components/schemas/TenantUpdateRequestDTO","kind":"json-schema","title":"TenantUpdateRequestDTO","data":{"type":"object","properties":{"projectName":{"type":"string","description":"The project name","example":"My Project"},"projectDescription":{"type":"string","description":"The project description"},"stripeApiKey":{"type":"string"},"stripeWebhookSecret":{"type":"string"},"stripePublishableKey":{"type":"string"},"loginToken":{"type":"string"},"allowJWTForUnauthenticatedUsers":{"type":"boolean","description":"This is an optional field for any extra login requirements for your users."},"firebaseTenantId":{"type":"string"},"projectWebsite":{"type":"string"},"projectEmail":{"type":"string"},"projectImageUrl":{"type":"string"},"projectLogoUrl":{"type":"string","description":"Logo URL for the project (smaller icon/avatar)"},"allowedTokenIssuers":{"description":"List of allowed external JWT token issuers for this tenant. Each object must have an issuer URL.","type":"array","items":{"$ref":"#/components/schemas/ExternalTokenIssuerConfigDTO"}},"emailConfig":{"description":"Unified email configuration - provider, API key, sender info, and templates","allOf":[{"$ref":"#/components/schemas/EmailConfigRequestDTO"}]},"approvalSettings":{"description":"Configure which entity types require admin approval before becoming active. Unspecified keys keep their current value.","example":{"business":true,"campaign":true,"tokenMetadata":false,"redemption":false},"allOf":[{"$ref":"#/components/schemas/ApprovalSettingsRequestDTO"}]}}}},"components/schemas/AdminDTO":{"id":"components/schemas/AdminDTO","kind":"json-schema","title":"AdminDTO","data":{"type":"object","properties":{"id":{"type":"string","description":"Id of the admin"},"email":{"type":"string","description":"Email of the admin"},"displayName":{"type":"string","description":"Display name of the admin"},"type":{"type":"string","description":"Type of the admin","enum":["SUPER_ADMIN","TENANT_ADMIN"]},"tenants":{"description":"Tenant of the admin","type":"array","items":{"$ref":"#/components/schemas/TenantDTO"}}},"required":["id","email","displayName","type"]}},"components/schemas/AdminCreateRequestDTO":{"id":"components/schemas/AdminCreateRequestDTO","kind":"json-schema","title":"AdminCreateRequestDTO","data":{"type":"object","properties":{"email":{"type":"string","description":"Email of the admin"},"displayName":{"type":"string","description":"Display name of the admin"},"type":{"type":"string","description":"Type of the admin","enum":["SUPER_ADMIN","TENANT_ADMIN"]}},"required":["email","type"]}},"components/schemas/AuthContextDTO":{"id":"components/schemas/AuthContextDTO","kind":"json-schema","title":"AuthContextDTO","data":{"type":"object","properties":{"businessId":{"type":"string","description":"Explicit business ID for multi-business users. Required when user has multiple business memberships.","example":"550e8400-e29b-41d4-a716-446655440000"},"tenantId":{"type":"string","description":"Explicit tenant ID for multi-tenant users. Required when user has multiple tenant memberships.","example":"550e8400-e29b-41d4-a716-446655440001"}}}},"components/schemas/SessionAuthRequestDTO":{"id":"components/schemas/SessionAuthRequestDTO","kind":"json-schema","title":"SessionAuthRequestDTO","data":{"type":"object","properties":{"authToken":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Authentication token from identity provider (WebAuthn, DFNS, Firebase, Auth0, etc.)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Third-Party JWT Requirements:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Header"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"kid"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (Key ID matching JWKS), "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"alg"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (RS256/ES256/EdDSA)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Payload Claims"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"iss"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (issuer URL), "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"sub"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (user ID), "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"aud"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (audience), "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"exp"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"iat"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Provider Requirement"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": Must expose JWKS at "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{issuer}/.well-known/jwks.json"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"PERS will automatically discover and fetch the issuer's public keys for verification."},"children":[]}]}]}],"example":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6ImtleS0xIn0.eyJpc3MiOiJodHRwczovL2lkcC5leGFtcGxlLmNvbSIsInN1YiI6InVzZXItMTIzIiwiYXVkIjoieW91ci1jbGllbnQtaWQiLCJleHAiOjE3MzM0MDAwMDAsImlhdCI6MTczMzM5NjQwMH0.signature"},"authType":{"type":"string","description":"Authentication context type - explicitly declares intent for admin vs user auth","enum":["user","business","tenant","system","external"]},"context":{"description":"Optional context for explicit business/tenant selection. Required when user has multiple memberships of that type.","allOf":[{"$ref":"#/components/schemas/AuthContextDTO"}]},"rawLoginData":{"type":"object","description":"if Tenant settings allowJWTForUnauthenticatedUsers is true, this field contains data to create user and setup unauthenticated user session instead of token verification. Useful for sandbox or trial modes. For now it is only used to create unauthenticated users.","example":{"externalId":"","email":"user@example.com","firstName":"","lastName":"","customData":{}}}}}},"components/schemas/SessionAuthResponseDTO":{"id":"components/schemas/SessionAuthResponseDTO","kind":"json-schema","title":"SessionAuthResponseDTO","data":{"type":"object","properties":{"refreshToken":{"type":"string","description":"refresh token","example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0ZW5hbnRJZCI6IjEiLCJpYXQiOjE2MjYxNzUwNzksImV4cCI6MTYyNjE3NTI3OX0.5w8A6t7b5lBx8D3FmLwJQgJ9z1D9c9Vz7A3f7BvzH2A"},"accessToken":{"type":"string","description":"JWT access token this token is used to authenticate the user, by default it expires in 15 minutes, and it should be sent in the Authorization header as Bearer token."}},"required":["refreshToken","accessToken"]}},"components/schemas/SessionAuthContextResponseDTO":{"id":"components/schemas/SessionAuthContextResponseDTO","kind":"json-schema","title":"SessionAuthContextResponseDTO","data":{"type":"object","properties":{"refreshToken":{"type":"string","description":"refresh token","example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0ZW5hbnRJZCI6IjEiLCJpYXQiOjE2MjYxNzUwNzksImV4cCI6MTYyNjE3NTI3OX0.5w8A6t7b5lBx8D3FmLwJQgJ9z1D9c9Vz7A3f7BvzH2A"},"accessToken":{"type":"string","description":"JWT access token this token is used to authenticate the user, by default it expires in 15 minutes, and it should be sent in the Authorization header as Bearer token."},"admin":{"description":"Admin (present if admin authentication)","allOf":[{"$ref":"#/components/schemas/AdminDTO"}]},"user":{"description":"User (present if user authentication)","allOf":[{"$ref":"#/components/schemas/UserDTO"}]},"business":{"description":"Business (present if business authentication)","allOf":[{"$ref":"#/components/schemas/BusinessDTO"}]},"authType":{"type":"string","description":"Authentication context type - explicitly declares intent for admin vs user auth","enum":["user","business","tenant","system","external"]}},"required":["refreshToken","accessToken","authType"]}},"components/schemas/RefreshTokenRequestDTO":{"id":"components/schemas/RefreshTokenRequestDTO","kind":"json-schema","title":"RefreshTokenRequestDTO","data":{"type":"object","properties":{"refreshToken":{"type":"string","description":"refresh token","example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0ZW5hbnRJZCI6IjEiLCJpYXQiOjE2MjYxNzUwNzksImV4cCI6MTYyNjE3NTI3OX0.5w8A6t7b5lBx8D3FmLwJQgJ9z1D9c9Vz7A3f7BvzH2A"}},"required":["refreshToken"]}},"components/schemas/TokenVerificationRequestDTO":{"id":"components/schemas/TokenVerificationRequestDTO","kind":"json-schema","title":"TokenVerificationRequestDTO","data":{"type":"object","properties":{"authToken":{"type":"string","description":"JWT token to verify (any issuer)","example":"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..."}},"required":["authToken"]}},"components/schemas/AuthTokenVerificationDTO":{"id":"components/schemas/AuthTokenVerificationDTO","kind":"json-schema","title":"AuthTokenVerificationDTO","data":{"type":"object","properties":{"valid":{"type":"boolean","description":"Whether the token verification was successful","example":true},"payload":{"type":"object","description":"Decoded payload from the token if verification is successful","example":null},"tenantId":{"type":"object","description":"Error message if token verification fails","example":"Invalid token"},"identifierEmail":{"type":"object","description":"Universal identifier email for the authenticated entity","example":"user-c8e619a4f7f8419d94320d403213ef49@id.pers.ninja"},"errorMessage":{"type":"string","description":"Error message if token verification fails","example":"Invalid token"},"errorCode":{"type":"string","description":"Structured error code for programmatic handling","example":"REFRESH_TOKEN_EXPIRED","enum":["TOKEN_EXPIRED","REFRESH_TOKEN_EXPIRED","REFRESH_TOKEN_REVOKED","INVALID_TOKEN","TOKEN_REVOKED"]}},"required":["valid","tenantId"]}},"components/schemas/SendMagicLinkRequestDTO":{"id":"components/schemas/SendMagicLinkRequestDTO","kind":"json-schema","title":"SendMagicLinkRequestDTO","data":{"type":"object","properties":{"email":{"type":"string","description":"User email address to send the magic link to","example":"user@example.com"},"redirectUrl":{"type":"string","description":"URL to redirect to after successful authentication","example":"https://app.example.com/dashboard"},"language":{"type":"string","description":"Language code for the email template","example":"en","default":"en"},"params":{"type":"object","description":"Additional query parameters to include in the magic link URL","example":{"returnPath":"/dashboard","campaign":"signup"}}},"required":["email"]}},"components/schemas/SendMagicLinkResponseDTO":{"id":"components/schemas/SendMagicLinkResponseDTO","kind":"json-schema","title":"SendMagicLinkResponseDTO","data":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the magic link was sent successfully","example":true},"message":{"type":"string","description":"Message describing the result","example":"Magic link sent successfully"},"errorCode":{"type":"string","description":"Error code if the request failed","enum":["MAGIC_LINK_EMAIL_SEND_FAILED","MAGIC_LINK_EMAIL_MISMATCH","MAGIC_LINK_VERIFICATION_FAILED","INVALID_TOKEN","TOKEN_EXPIRED","INTERNAL_ERROR"]}},"required":["success"]}},"components/schemas/ApiKeyDTO":{"id":"components/schemas/ApiKeyDTO","kind":"json-schema","title":"ApiKeyDTO","data":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the API key","example":"f47ac10b-58cc-4372-a567-0e02b2c3d479"},"type":{"type":"string","description":"Type of API key","enum":["TENANT_SYSTEM_JWT","ADMIN_JWT_ACCESS_TOKEN","ADMIN_JWT_REFRESH_TOKEN","USER_JWT_ACCESS_TOKEN","USER_JWT_REFRESH_TOKEN","BUSINESS_JWT_ACCESS_TOKEN","BUSINESS_JWT_REFRESH_TOKEN","BUSINESS_SYSTEM_JWT","BLOCKCHAIN_WRITER_JWT","BLOCKCHAIN_READER_JWT","TRANSACTION_JWT_ACCESS_TOKEN","WEBHOOK_OUTBOUND_JWT","ONE_TIME_TOKEN","TENANT_ADMIN_JWT"],"example":"TENANT_SYSTEM_JWT"},"name":{"type":"object","description":"Human-readable name for the API key","example":"JWT Token (Mainnet) - 2025-11-22","nullable":true},"createdAt":{"format":"date-time","type":"string","description":"Creation timestamp","example":"2025-11-22T10:30:00.000Z"},"shortenedPrivateKey":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Token preview for dashboard identification (first 8 + last 4 characters)"},"children":[]}]}]}],"example":"eyJhbGci...xMjM","maxLength":20},"expiresAt":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Expiration timestamp (null = no expiry)"},"children":[]}]}]}],"example":"2026-11-22T10:30:00.000Z","nullable":true},"isRevoked":{"type":"boolean","description":"Indicates if the API key has been revoked","example":false},"lastUsedAt":{"type":"object","description":"Last time the API key was used for authentication","example":"2025-11-24T14:30:00.000Z","nullable":true},"entityId":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Entity ID this key is scoped to (e.g. businessId for BUSINESS_SYSTEM_JWT)"},"children":[]}]}]}],"example":"biz_abc123","nullable":true}},"required":["id","type","createdAt","shortenedPrivateKey","isRevoked"]}},"components/schemas/ApiKeyRequestDTO":{"id":"components/schemas/ApiKeyRequestDTO","kind":"json-schema","title":"ApiKeyRequestDTO","data":{"type":"object","properties":{"name":{"type":"string","description":"name of the key"},"businessId":{"type":"string","description":"Business ID to generate a business-scoped system JWT for app integration (M2M). If omitted, generates a tenant-scoped system JWT."}},"required":["name"]}},"components/schemas/ApiKeyCreatedDTO":{"id":"components/schemas/ApiKeyCreatedDTO","kind":"json-schema","title":"ApiKeyCreatedDTO","data":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the API key","example":"f47ac10b-58cc-4372-a567-0e02b2c3d479"},"type":{"type":"string","description":"Type of API key","enum":["TENANT_SYSTEM_JWT","ADMIN_JWT_ACCESS_TOKEN","ADMIN_JWT_REFRESH_TOKEN","USER_JWT_ACCESS_TOKEN","USER_JWT_REFRESH_TOKEN","BUSINESS_JWT_ACCESS_TOKEN","BUSINESS_JWT_REFRESH_TOKEN","BUSINESS_SYSTEM_JWT","BLOCKCHAIN_WRITER_JWT","BLOCKCHAIN_READER_JWT","TRANSACTION_JWT_ACCESS_TOKEN","WEBHOOK_OUTBOUND_JWT","ONE_TIME_TOKEN","TENANT_ADMIN_JWT"],"example":"TENANT_SYSTEM_JWT"},"name":{"type":"object","description":"Human-readable name for the API key","example":"JWT Token (Mainnet) - 2025-11-22","nullable":true},"createdAt":{"format":"date-time","type":"string","description":"Creation timestamp","example":"2025-11-22T10:30:00.000Z"},"shortenedPrivateKey":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Token preview for dashboard identification (first 8 + last 4 characters)"},"children":[]}]}]}],"example":"eyJhbGci...xMjM","maxLength":20},"expiresAt":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Expiration timestamp (null = no expiry)"},"children":[]}]}]}],"example":"2026-11-22T10:30:00.000Z","nullable":true},"isRevoked":{"type":"boolean","description":"Indicates if the API key has been revoked","example":false},"lastUsedAt":{"type":"object","description":"Last time the API key was used for authentication","example":"2025-11-24T14:30:00.000Z","nullable":true},"entityId":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Entity ID this key is scoped to (e.g. businessId for BUSINESS_SYSTEM_JWT)"},"children":[]}]}]}],"example":"biz_abc123","nullable":true},"privateKey":{"type":"string","description":"Full private key/token - STORE SECURELY! Only returned once during creation","example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["id","type","createdAt","shortenedPrivateKey","isRevoked","privateKey"]}},"components/schemas/ApiKeyVerificationDTO":{"id":"components/schemas/ApiKeyVerificationDTO","kind":"json-schema","title":"ApiKeyVerificationDTO","data":{"type":"object","properties":{"valid":{"type":"boolean","description":"Whether the API key verification was successful","example":true},"payload":{"type":"object","description":"JWT payload data if verification was successful"},"apiKey":{"description":"API key metadata if verification was successful","allOf":[{"$ref":"#/components/schemas/ApiKeyDTO"}]},"tenantId":{"type":"string","description":"Tenant ID associated with the API key","example":"tenant_12345"}},"required":["valid","tenantId"]}},"components/schemas/WebhookCreateRequestDTO":{"id":"components/schemas/WebhookCreateRequestDTO","kind":"json-schema","title":"WebhookCreateRequestDTO","data":{"type":"object","properties":{"name":{"type":"string","description":"Human-readable name for this webhook","example":"Stripe Payment Webhook"},"description":{"type":"string","description":"Optional description","example":"Handles payment confirmations from Stripe"},"targetUrl":{"type":"string","description":"Target URL where requests will be forwarded","example":"https://internal-api.example.com/payments/webhook"},"isActive":{"type":"boolean","description":"Whether webhook is active","default":true},"allowedMethods":{"type":"array","description":"Allowed HTTP methods (defaults to POST only)","default":["POST"],"example":["POST"],"items":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE"]}},"outboundAuthType":{"type":"string","description":"Outbound authentication type","enum":["NONE","BEARER","JWT","HMAC"],"default":"NONE"},"outboundAuthCredentials":{"type":"string","description":"Outbound authentication credentials (Bearer token)"},"inboundAllowedSources":{"type":"array","description":"Allowed inbound sources","example":["STRIPE"],"items":{"type":"string","enum":["USER","BUSINESS","TENANT","INTERNAL","STRIPE","ANY"]}},"inboundSecret":{"type":"string","description":"Secret for external source verification (e.g., Stripe signing secret)"},"timeoutMs":{"type":"number","description":"Request timeout in milliseconds","default":30000,"minimum":1000,"maximum":120000}},"required":["name","targetUrl","inboundAllowedSources"]}},"components/schemas/WebhookDTO":{"id":"components/schemas/WebhookDTO","kind":"json-schema","title":"WebhookDTO","data":{"type":"object","properties":{"id":{"type":"string","description":"Webhook ID"},"name":{"type":"string","description":"Human-readable name"},"description":{"type":"string","description":"Optional description"},"targetUrl":{"type":"string","description":"Target URL where requests are forwarded"},"url":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Public URL to receive webhook requests (format: {baseUrl}/{apiVersion}/hooks/{projectKey}/{hookId})"},"children":[]}]}]}],"example":"https://api.pers.ninja/v2/hooks/b3245237f5e658af.../550e8400-e29b-41d4-a716-446655440000"},"isActive":{"type":"boolean","description":"Whether webhook is active"},"allowedMethods":{"type":"array","description":"Allowed HTTP methods","items":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE"]}},"outboundAuthType":{"type":"string","description":"Outbound authentication type","enum":["NONE","BEARER","JWT","HMAC"]},"hasOutboundCredentials":{"type":"boolean","description":"Whether outbound credentials are configured"},"inboundAllowedSources":{"type":"array","description":"Allowed inbound sources","items":{"type":"string","enum":["USER","BUSINESS","TENANT","INTERNAL","STRIPE","ANY"]}},"hasInboundSecret":{"type":"boolean","description":"Whether inbound secret is configured"},"timeoutMs":{"type":"number","description":"Request timeout in milliseconds"},"createdAt":{"format":"date-time","type":"string","description":"Creation timestamp"},"updatedAt":{"format":"date-time","type":"string","description":"Last update timestamp"}},"required":["id","name","targetUrl","url","isActive","allowedMethods","outboundAuthType","hasOutboundCredentials","inboundAllowedSources","hasInboundSecret","timeoutMs","createdAt","updatedAt"]}},"components/schemas/PaginatedResponseDTO":{"id":"components/schemas/PaginatedResponseDTO","kind":"json-schema","title":"PaginatedResponseDTO","data":{"type":"object","properties":{"data":{"type":"array","description":"Array of data items"},"pagination":{"type":"object","description":"Pagination metadata","example":{"page":1,"limit":50,"total":150,"pages":3,"hasNext":true,"hasPrev":false}},"metadata":{"type":"object","description":"Additional metadata (e.g., enriched relations)","nullable":true,"example":{"includes":["sender","recipient"]}}},"required":["data","pagination"]}},"components/schemas/WebhookUpdateRequestDTO":{"id":"components/schemas/WebhookUpdateRequestDTO","kind":"json-schema","title":"WebhookUpdateRequestDTO","data":{"type":"object","properties":{"name":{"type":"string","description":"Human-readable name for this webhook","example":"Stripe Payment Webhook"},"description":{"type":"string","description":"Optional description","example":"Handles payment confirmations from Stripe"},"targetUrl":{"type":"string","description":"Target URL where requests will be forwarded","example":"https://internal-api.example.com/payments/webhook"},"isActive":{"type":"boolean","description":"Whether webhook is active","default":true},"allowedMethods":{"type":"array","description":"Allowed HTTP methods (defaults to POST only)","default":["POST"],"example":["POST"],"items":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE"]}},"outboundAuthType":{"type":"string","description":"Outbound authentication type","enum":["NONE","BEARER","JWT","HMAC"],"default":"NONE"},"outboundAuthCredentials":{"type":"string","description":"Outbound authentication credentials (Bearer token)"},"inboundAllowedSources":{"type":"array","description":"Allowed inbound sources","example":["STRIPE"],"items":{"type":"string","enum":["USER","BUSINESS","TENANT","INTERNAL","STRIPE","ANY"]}},"inboundSecret":{"type":"string","description":"Secret for external source verification (e.g., Stripe signing secret)"},"timeoutMs":{"type":"number","description":"Request timeout in milliseconds","default":30000,"minimum":1000,"maximum":120000}}}},"components/schemas/WebhookCallbackDTO":{"id":"components/schemas/WebhookCallbackDTO","kind":"json-schema","title":"WebhookCallbackDTO","data":{"type":"object","properties":{"status":{"type":"string","description":"Callback status from external workflow","enum":["NONE","SUCCESS","FAILED","CANCELLED"],"example":"SUCCESS"},"result":{"type":"object","description":"Result data from external workflow"},"error":{"type":"string","description":"Error message if workflow failed"}},"required":["status"]}},"components/schemas/WebhookExecutionDTO":{"id":"components/schemas/WebhookExecutionDTO","kind":"json-schema","title":"WebhookExecutionDTO","data":{"type":"object","properties":{"id":{"type":"string","description":"Execution ID"},"webhookId":{"type":"object","description":"Webhook ID (set for proxy executions)"},"outboxEventId":{"type":"object","description":"Outbox event ID (set for outbox dispatcher deliveries)"},"method":{"type":"string","description":"HTTP method","example":"POST"},"targetUrl":{"type":"string","description":"Target URL at time of execution"},"status":{"type":"string","description":"Execution status","enum":["PENDING","SUCCESS","FAILED","BLOCKED"]},"responseStatusCode":{"type":"number","description":"HTTP response status code"},"durationMs":{"type":"number","description":"Duration in milliseconds"},"sourceIp":{"type":"string","description":"Source IP of the request"},"message":{"type":"string","description":"Error or status message"},"startedAt":{"format":"date-time","type":"string","description":"When execution started"},"completedAt":{"type":"object","description":"When execution completed"},"callbackStatus":{"type":"string","description":"Callback status from external workflow","enum":["NONE","SUCCESS","FAILED","CANCELLED"],"default":"NONE"},"callbackResult":{"type":"object","description":"Callback result data from external workflow"},"callbackReceivedAt":{"type":"object","description":"When callback was received"}},"required":["id","method","targetUrl","status","sourceIp","startedAt"]}},"components/schemas/WebhookTriggerResponseDTO":{"id":"components/schemas/WebhookTriggerResponseDTO","kind":"json-schema","title":"WebhookTriggerResponseDTO","data":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the webhook was successfully triggered and forwarded"},"executionId":{"type":"string","description":"Webhook execution ID for tracking","example":"550e8400-e29b-41d4-a716-446655440000"},"statusCode":{"type":"number","description":"HTTP status code from the upstream target","example":200},"durationMs":{"type":"number","description":"Time taken to forward and receive response in milliseconds","example":1234},"data":{"type":"object","description":"Raw response data from the upstream target (frontend handles parsing)"},"headers":{"type":"object","description":"Response headers from upstream (filtered)"}},"required":["success","executionId","statusCode","durationMs"]}},"components/schemas/CreateEventSubscriptionDTO":{"id":"components/schemas/CreateEventSubscriptionDTO","kind":"json-schema","title":"CreateEventSubscriptionDTO","data":{"type":"object","properties":{"name":{"type":"string","example":"n8n Transaction Webhook"},"targetUrl":{"type":"string","example":"https://n8n.example.com/webhook/abc123"},"eventTypes":{"type":"array","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Event types to subscribe to. Empty = all event types."},"children":[]}]}]}],"example":["transaction.succeeded"],"items":{"type":"string","enum":["user.created","user.updated","transaction.created","transaction.mint_succeeded","transaction.burn_succeeded","transaction.transfer_succeeded","campaign.created","campaign.updated","campaign.claimed","campaign.claim_failed","redemption.created","redemption.updated","redemption.redeemed","redemption.redeem_failed","business.created","business.updated","business.approved","business.rejected","campaign.approved","campaign.rejected","token_metadata.approved","token_metadata.rejected","redemption.approved","redemption.rejected","booking.created","booking.updated","token_metadata.created","token_metadata.updated","user.magic_link_sent"]}},"outboundAuthType":{"type":"string","description":"Outbound auth type","enum":["NONE","BEARER","JWT","HMAC"],"default":"NONE"},"outboundAuthCredentials":{"type":"object","description":"Outbound auth credentials (bearer token or HMAC secret). Not used for JWT."},"timeoutMs":{"type":"number","example":10000,"description":"Delivery timeout in ms"}},"required":["name","targetUrl"]}},"components/schemas/EventSubscriptionDTO":{"id":"components/schemas/EventSubscriptionDTO","kind":"json-schema","title":"EventSubscriptionDTO","data":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"targetUrl":{"type":"string"},"eventTypes":{"type":"array","items":{"type":"string"}},"isActive":{"type":"boolean"},"timeoutMs":{"type":"number"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","name","targetUrl","eventTypes","isActive","timeoutMs","createdAt"]}},"components/schemas/UpdateEventSubscriptionDTO":{"id":"components/schemas/UpdateEventSubscriptionDTO","kind":"json-schema","title":"UpdateEventSubscriptionDTO","data":{"type":"object","properties":{"name":{"type":"string"},"targetUrl":{"type":"string"},"eventTypes":{"type":"array","items":{"type":"string","enum":["user.created","user.updated","transaction.created","transaction.mint_succeeded","transaction.burn_succeeded","transaction.transfer_succeeded","campaign.created","campaign.updated","campaign.claimed","campaign.claim_failed","redemption.created","redemption.updated","redemption.redeemed","redemption.redeem_failed","business.created","business.updated","business.approved","business.rejected","campaign.approved","campaign.rejected","token_metadata.approved","token_metadata.rejected","redemption.approved","redemption.rejected","booking.created","booking.updated","token_metadata.created","token_metadata.updated","user.magic_link_sent"]}},"isActive":{"type":"boolean"},"outboundAuthType":{"type":"string","enum":["NONE","BEARER","JWT","HMAC"]},"outboundAuthCredentials":{"type":"object"},"timeoutMs":{"type":"number"}}}},"components/schemas/CustomFieldDefinitionDTO":{"id":"components/schemas/CustomFieldDefinitionDTO","kind":"json-schema","title":"CustomFieldDefinitionDTO","data":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier (UUID)"},"tenantId":{"type":"string","description":"Tenant ID"},"entityType":{"type":"string","description":"Entity type this field applies to","enum":["user","business","campaign","redemption"]},"key":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unique key within tenant+entityType (camelCase)"},"children":[]}]}]}]},"label":{"type":"string","description":"Human-readable label for form display"},"description":{"type":"object","description":"Help text / description"},"fieldType":{"type":"string","description":"Field type: text, email, phone, number, date, boolean, url, select, multiselect","enum":["text","email","phone","number","date","boolean","url","select","multiselect"],"default":"text"},"selectOptions":{"type":"array","description":"For select/multiselect types: static options array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"}}}},"selectOptionsSource":{"type":"object","description":"For select/multiselect types: dynamic options from entity"},"validation":{"type":"object","description":"Validation rules for the field"},"sortOrder":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Display order (lower = first)"},"children":[]}]}]}],"default":0},"isCustom":{"type":"boolean","description":"Marker to distinguish from built-in fields. Custom fields are stored in user.customData","default":true,"readOnly":true},"createdAt":{"format":"date-time","type":"string","description":"Creation timestamp"},"updatedAt":{"format":"date-time","type":"string","description":"Last update timestamp"}},"required":["id","tenantId","entityType","key","label","fieldType","sortOrder","isCustom","createdAt","updatedAt"]}},"components/schemas/CreateCustomFieldDefinitionDTO":{"id":"components/schemas/CreateCustomFieldDefinitionDTO","kind":"json-schema","title":"CreateCustomFieldDefinitionDTO","data":{"type":"object","properties":{"entityType":{"type":"string","description":"Entity type this field applies to","enum":["user","business","campaign","redemption"]},"key":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unique key within tenant+entityType (camelCase)"},"children":[]}]}]}]},"label":{"type":"string","description":"Human-readable label for form display"},"description":{"type":"object","description":"Help text / description"},"fieldType":{"type":"string","description":"Field type: text, email, phone, number, date, boolean, url, select, multiselect","enum":["text","email","phone","number","date","boolean","url","select","multiselect"],"default":"text"},"selectOptions":{"type":"array","description":"For select/multiselect types: static options array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"}}}},"selectOptionsSource":{"type":"object","description":"For select/multiselect types: dynamic options from entity"},"validation":{"type":"object","description":"Validation rules for the field"},"sortOrder":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Display order (lower = first)"},"children":[]}]}]}],"default":0},"isCustom":{"type":"boolean","description":"Marker to distinguish from built-in fields. Custom fields are stored in user.customData","default":true,"readOnly":true}},"required":["entityType","key","label","fieldType","sortOrder","isCustom"]}},"components/schemas/UpdateCustomFieldDefinitionDTO":{"id":"components/schemas/UpdateCustomFieldDefinitionDTO","kind":"json-schema","title":"UpdateCustomFieldDefinitionDTO","data":{"type":"object","properties":{"label":{"type":"string","description":"Human-readable label for form display"},"description":{"type":"object","description":"Help text / description"},"fieldType":{"type":"string","description":"Field type: text, email, phone, number, date, boolean, url, select, multiselect","enum":["text","email","phone","number","date","boolean","url","select","multiselect"],"default":"text"},"selectOptions":{"type":"array","description":"For select/multiselect types: static options array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"}}}},"selectOptionsSource":{"type":"object","description":"For select/multiselect types: dynamic options from entity"},"validation":{"type":"object","description":"Validation rules for the field"},"sortOrder":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Display order (lower = first)"},"children":[]}]}]}],"default":0},"isCustom":{"type":"boolean","description":"Marker to distinguish from built-in fields. Custom fields are stored in user.customData","default":true,"readOnly":true}}}},"components/schemas/CreateRedirectDto":{"id":"components/schemas/CreateRedirectDto","kind":"json-schema","title":"CreateRedirectDto","data":{"type":"object","properties":{"targetUrl":{"type":"string","description":"Target URL to redirect to","example":"https://app.pers.ninja/campaigns/xyz"},"label":{"type":"string","description":"Human-readable label for this redirect","example":"Summer Campaign QR"}},"required":["targetUrl"]}},"components/schemas/RedirectModel":{"id":"components/schemas/RedirectModel","kind":"json-schema","title":"RedirectModel","data":{"type":"object","properties":{"code":{"type":"string","default":""},"targetUrl":{"type":"string","default":""},"label":{"type":"string","nullable":true,"default":null},"scanCount":{"type":"number","default":0},"lastScannedAt":{"format":"date-time","type":"string","nullable":true,"default":null}},"required":["code","targetUrl","label","scanCount","lastScannedAt"]}},"components/schemas/UpdateRedirectDto":{"id":"components/schemas/UpdateRedirectDto","kind":"json-schema","title":"UpdateRedirectDto","data":{"type":"object","properties":{"targetUrl":{"type":"string","description":"Updated target URL","example":"https://app.pers.ninja/campaigns/abc"},"label":{"type":"string","description":"Updated label","example":"Winter Campaign QR"}}}},"components/schemas/EntityStorageUrlDTO":{"id":"components/schemas/EntityStorageUrlDTO","kind":"json-schema","title":"EntityStorageUrlDTO","data":{"type":"object","properties":{"entityType":{"type":"string","description":"The entity type","enum":["token","campaign","redemption","business","tenant","user"]},"entityId":{"type":"string","description":"The entity id"},"signedUrlType":{"type":"string","description":"The signed url type, GET or PUT. PUT is used for uploading files, GET is used for downloading files","enum":["GET","PUT"]},"fileExtension":{"type":"string","description":"The file extension"},"fileName":{"type":"string","description":"The file name"}},"required":["entityType","entityId","signedUrlType","fileExtension"]}},"components/schemas/CreateSignedURLResponseDTO":{"id":"components/schemas/CreateSignedURLResponseDTO","kind":"json-schema","title":"CreateSignedURLResponseDTO","data":{"type":"object","properties":{"signedUrl":{"type":"string","description":"The signed url"}},"required":["signedUrl"]}},"components/schemas/ChainDataDTO":{"id":"components/schemas/ChainDataDTO","kind":"json-schema","title":"ChainDataDTO","data":{"type":"object","properties":{"name":{"type":"string","description":"Name of the chain"},"shortName":{"type":"string","description":"Short name of the chain"},"chain":{"type":"string","description":"Chain name"},"network":{"type":"string","description":"Network name"},"chainId":{"type":"number","description":"Chain ID"},"explorerUrl":{"type":"string","description":"explorer URL"},"networkId":{"type":"number","description":"Network ID"},"rpcUrl":{"type":"string","description":"RPC URL"},"wsUrl":{"type":"string","description":"WebSocket URL"},"authHeader":{"type":"string","description":"Authorization header"},"chainType":{"type":"string","description":"Chain type"}},"required":["name","chainId","rpcUrl","chainType"]}},"components/schemas/Web3ContractCreateRequestDTO":{"id":"components/schemas/Web3ContractCreateRequestDTO","kind":"json-schema","title":"Web3ContractCreateRequestDTO","data":{"type":"object","properties":{"implementationAddress":{"type":"string","description":"this is implementation address, the address of the contract that is being used as implementation for the proxy. This is only used for proxy contracts"},"contractAddress":{"type":"string","description":"this is the address of the contract"},"ownerAddress":{"type":"string","description":"this is the address of the owner of the contract"},"factoryAddress":{"type":"string","description":"this is the address of the factory contract that deploys this contract","nullable":true,"example":"0x1234567890abcdef1234567890abcdef12345678"},"chainId":{"type":"number","description":"this is the chain id of the contract","example":1},"contractVersion":{"type":"string","description":"this is the version of the contract"},"contractType":{"type":"string","description":"this is the type of the contract","enum":["SMART_WALLET_FACTORY","SMART_WALLET_IMPLEMENTATION","SMART_WALLET_PROXY","COUNTERFACTUAL_WALLET_FACTORY","COUNTERFACTUAL_WALLET_IMPLEMENTATION","COUNTERFACTUAL_WALLET_PROXY","TOKEN_CONTRACT","TOKEN_IMPLEMENTATION","TOKEN_PROXY_FACTORY","NOTIFICATION_HUB"]},"nativeTokenType":{"type":"string","description":"this is the native token type of the contract, this is only used for native tokens","enum":["ERC20","ERC1155","ERC721"],"nullable":true},"salt":{"type":"string","description":"this is the salt of the contract, this is only used for proxy contract factories to generate unique contracts"},"txHash":{"type":"string","description":"this is the transaction hash of the contract deployment, this is only used for deployed contracts","nullable":true,"example":"0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890ab"},"isProxy":{"type":"boolean","description":"this is the flag to check if the contract is a proxy contract","example":false},"abiUrl":{"type":"string","description":"this is the url of the abi of the contract, to be used to fetch the abi of the contract"},"deploymentStatus":{"type":"string","description":"current deployment status of the contract","enum":["COMPUTED","DEPLOYED","FAILED"]}},"required":["contractAddress","chainId","contractType","nativeTokenType","isProxy","deploymentStatus"]}},"components/schemas/Web3ContractDTO":{"id":"components/schemas/Web3ContractDTO","kind":"json-schema","title":"Web3ContractDTO","data":{"type":"object","properties":{"implementationAddress":{"type":"string","description":"this is implementation address, the address of the contract that is being used as implementation for the proxy. This is only used for proxy contracts"},"contractAddress":{"type":"string","description":"this is the address of the contract"},"ownerAddress":{"type":"string","description":"this is the address of the owner of the contract"},"factoryAddress":{"type":"string","description":"this is the address of the factory contract that deploys this contract","nullable":true,"example":"0x1234567890abcdef1234567890abcdef12345678"},"chainId":{"type":"number","description":"this is the chain id of the contract","example":1},"contractVersion":{"type":"string","description":"this is the version of the contract"},"contractType":{"type":"string","description":"this is the type of the contract","enum":["SMART_WALLET_FACTORY","SMART_WALLET_IMPLEMENTATION","SMART_WALLET_PROXY","COUNTERFACTUAL_WALLET_FACTORY","COUNTERFACTUAL_WALLET_IMPLEMENTATION","COUNTERFACTUAL_WALLET_PROXY","TOKEN_CONTRACT","TOKEN_IMPLEMENTATION","TOKEN_PROXY_FACTORY","NOTIFICATION_HUB"]},"nativeTokenType":{"type":"string","description":"this is the native token type of the contract, this is only used for native tokens","enum":["ERC20","ERC1155","ERC721"],"nullable":true},"salt":{"type":"string","description":"this is the salt of the contract, this is only used for proxy contract factories to generate unique contracts"},"txHash":{"type":"string","description":"this is the transaction hash of the contract deployment, this is only used for deployed contracts","nullable":true,"example":"0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890ab"},"isProxy":{"type":"boolean","description":"this is the flag to check if the contract is a proxy contract","example":false},"abiUrl":{"type":"string","description":"this is the url of the abi of the contract, to be used to fetch the abi of the contract"},"deploymentStatus":{"type":"string","description":"current deployment status of the contract","enum":["COMPUTED","DEPLOYED","FAILED"]},"id":{"type":"string","description":"this is the id of the contract"},"abi":{"type":"array","description":"this is the abi of the contract, this is the interface of the contract to interact with it","items":{"type":"object"},"example":[]},"tenantId":{"type":"string","description":"this is the tenant id of the contract, this can be null for generic contracts"}},"required":["contractAddress","chainId","contractType","nativeTokenType","isProxy","deploymentStatus","id","abi","tenantId"]}},"components/schemas/TransactionAnalyticsFiltersDTO":{"id":"components/schemas/TransactionAnalyticsFiltersDTO","kind":"json-schema","title":"TransactionAnalyticsFiltersDTO","data":{"type":"object","properties":{"amount":{"type":"string","description":"Transaction amount"},"id":{"type":"string","description":"Transaction id"},"tokenAddress":{"type":"string","description":"Transaction token address"},"contractTokenId":{"type":"string","description":"Transaction token contract id, this is the blockchain contract id of the token","nullable":true},"tokenType":{"type":"string","description":"Transaction token type"},"senderAddress":{"type":"string","description":"Sender address"},"recipientAddress":{"type":"string","description":"Recipient address"},"transactionHash":{"type":"string","description":"Transaction hash"},"type":{"type":"string","description":"Transaction type","enum":["MINT","TRANSFER","BURN"]},"triggerProcessType":{"type":"string","description":"Trigger process type","enum":["PURCHASE","SPEND","TRANSFER","EARN","CAMPAIGN_USER_CLAIM","CAMPAIGN_SYSTEM_CLAIM","CAMPAIGN_BUSINESS_CLAIM","REDEMPTION_SPEND","REDEMPTION_RECEIVE","REDEMPTION_PRICE_TOKEN_TRANSFER","MIGRATION","ADMIN_TRIGGERED","BUSINESS_TRIGGERED"]},"triggerProcessId":{"type":"string","description":"Trigger process id, this is the id of the entity that triggered the transaction if applicable (e.g. CampaignUserClaim id)"},"status":{"type":"string","description":"Transaction status","enum":["created","processing","pending_signature","pending_submission","broadcasted","succeeded","failed","cancelled","expired"]},"tenantId":{"type":"string","description":"Tenant ID for multi-tenant isolation"},"chainId":{"type":"number","description":"Blockchain chain ID"},"senderId":{"type":"string","description":"Sender entity ID (polymorphic reference)","nullable":true},"senderOwnerType":{"type":"string","description":"Sender entity type (user, business, system etc.)","nullable":true,"enum":["user","business","tenant","system","external"]},"recipientId":{"type":"string","description":"Recipient entity ID (polymorphic reference)","nullable":true},"recipientOwnerType":{"type":"string","description":"Recipient entity type (user, Business, system, etc.)","nullable":true,"enum":["user","business","tenant","system","external"]},"message":{"type":"string","description":"Optional message associated with the transaction, e.g. for error details","nullable":true},"engagedBusinessId":{"type":"string","description":"Business commercially involved in this transaction (for stats/reporting)","nullable":true},"authorizedSubmitterId":{"type":"string","description":"Entity authorized to submit this transaction (for POS flow security)","nullable":true},"authorizedSubmitterType":{"type":"string","description":"Type of entity authorized to submit (USER, BUSINESS, etc.)","nullable":true,"enum":["user","business","tenant","system","external"]},"userCountryCode":{"type":"string","description":"ISO 3166-1 alpha-2 country code derived from IP geolocation","nullable":true},"anonymizedIpAddress":{"type":"string","description":"Anonymized IP address (last octet zeroed for privacy)","nullable":true},"metadataUri":{"type":"string","description":"IPFS/storage URL for token metadata. For ERC721: unique URI per minted token. For ERC1155: shared URI per token type. Example: ipfs://Qm.../metadata.json","nullable":true,"example":"ipfs://QmXyz123.../metadata.json"},"tokenMetadataIncrementalId":{"type":"number","description":"Token metadata template ID - stable reference for mint/burn counting. For ERC1155: same as on-chain tokenId. For ERC721: template lookup key (preserved since on-chain ID differs).","nullable":true},"issuanceMode":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Economic issuance mechanism for reward transactions. TENANT_DELEGATED_MINT: master wallet mints. BUSINESS_OWNED_MINT: business owns the token contract. BUSINESS_BALANCE_TRANSFER: business transfers from own wallet balance. Null for non-reward or legacy transactions."},"children":[]}]}]}],"nullable":true,"enum":["TENANT_DELEGATED_MINT","BUSINESS_OWNED_MINT","BUSINESS_BALANCE_TRANSFER"]},"included":{"type":"object","description":"Included related entities. Only populated when include parameter is specified. Contains sender, recipient, and/or engaged business entities based on requested relations.","nullable":true,"properties":{"sender":{"description":"Included sender entity (User or Business)","oneOf":[{"$ref":"#/components/schemas/UserDTO"},{"$ref":"#/components/schemas/BusinessDTO"}]},"recipient":{"description":"Included recipient entity (User or Business)","oneOf":[{"$ref":"#/components/schemas/UserDTO"},{"$ref":"#/components/schemas/BusinessDTO"}]},"engagedBusiness":{"description":"Included engaged business entity","$ref":"#/components/schemas/BusinessDTO"}}}}}},"components/schemas/GroupByExpressionDTO":{"id":"components/schemas/GroupByExpressionDTO","kind":"json-schema","title":"GroupByExpressionDTO","data":{"type":"object","properties":{"expression":{"type":"string","description":"SQL CASE WHEN expression for complex grouping logic","example":"CASE WHEN senderOwnerType = user THEN senderId WHEN recipientOwnerType = user THEN recipientId END"},"alias":{"type":"string","description":"Alias name for the expression result in SELECT clause","example":"userId"},"label":{"type":"string","description":"Human-readable label for frontend display","example":"User ID"}},"required":["expression","alias"]}},"components/schemas/TransactionAnalyticsRequestDTO":{"id":"components/schemas/TransactionAnalyticsRequestDTO","kind":"json-schema","title":"TransactionAnalyticsRequestDTO","data":{"type":"object","properties":{"filters":{"description":"Dynamic filters based on TransactionDTO fields - all transaction fields available. Note: tokenType uses native blockchain types (ERC721, ERC20, ERC1155), not friendly names.","example":{"status":"SUCCEEDED","tokenType":"ERC721","triggerProcessType":"MINT","tenantId":"tenant-123","chainId":1},"allOf":[{"$ref":"#/components/schemas/TransactionAnalyticsFiltersDTO"}]},"groupBy":{"description":"Fields to group by - any TransactionDTO field plus computed time fields. Note: tokenType values are ERC721/ERC20/ERC1155.","example":["tokenType","month","status","chainId"],"type":"array","items":{"type":"string"}},"groupByExpressions":{"description":"Complex CASE WHEN expressions for advanced grouping scenarios","example":[{"expression":"CASE WHEN senderOwnerType = user THEN senderId WHEN recipientOwnerType = user THEN recipientId END","alias":"userId","label":"User ID"}],"type":"array","items":{"$ref":"#/components/schemas/GroupByExpressionDTO"}},"metrics":{"type":"string","description":"Metrics to calculate","enum":["count","sum","avg","min","max"],"example":["count"]},"sortBy":{"description":"Field to order results by (supports expression aliases)","oneOf":[{"type":"string"},{"enum":["count","sum","avg","min","max","createdAt"]}],"example":"count"},"sortOrder":{"type":"string","description":"Order direction","enum":["ASC","DESC"],"example":"DESC"},"limit":{"type":"number","description":"Maximum number of results to return","minimum":1,"maximum":100,"example":10},"startDate":{"format":"date-time","type":"string","description":"Start date for analytics (ISO format)","example":"2024-01-01T00:00:00.000Z"},"endDate":{"format":"date-time","type":"string","description":"End date for analytics (ISO format)","example":"2024-12-31T23:59:59.999Z"}}}},"components/schemas/TransactionAnalyticsResponseDTO":{"id":"components/schemas/TransactionAnalyticsResponseDTO","kind":"json-schema","title":"TransactionAnalyticsResponseDTO","data":{"type":"object","properties":{"results":{"type":"array","description":"Analytics results array with dynamic fields and expression aliases. Note: tokenType values are ERC721/ERC20/ERC1155, not friendly names.","example":[{"userId":"user-123","count":45},{"userAddress":"0xabc...def","count":32},{"tokenType":"ERC721","count":150,"month":"2024-01-01T00:00:00.000Z"}]},"totalGroups":{"type":"number","description":"Total number of result groups","example":3},"metadata":{"type":"object","description":"Query metadata showing applied date range and totals","example":{"dateRange":{"startDate":"2024-01-01T00:00:00.000Z","endDate":"2024-12-31T23:59:59.999Z"},"totalCount":440}}},"required":["results","totalGroups","metadata"]}},"components/schemas/CampaignClaimAnalyticsFiltersDTO":{"id":"components/schemas/CampaignClaimAnalyticsFiltersDTO","kind":"json-schema","title":"CampaignClaimAnalyticsFiltersDTO","data":{"type":"object","properties":{"id":{"type":"string","description":"Unique claim ID (UUID) - primary identifier for this claim record","example":"claim-uuid-123"},"userId":{"type":"string","description":"Filter by user ID","nullable":true,"example":"user-uuid-123","format":"uuid"},"campaignId":{"type":"string","description":"Filter by campaign ID","nullable":true,"example":"campaign-uuid-456","format":"uuid"},"businessId":{"type":"string","description":"Filter by business ID","nullable":true,"example":"business-uuid-789","format":"uuid"},"triggerSourceId":{"type":"string","description":"Filter by trigger source ID","nullable":true,"example":"trigger-uuid-101","format":"uuid"},"status":{"type":"string","description":"Filter by claim status","enum":["PENDING","PROCESSING","COMPLETED","FAILED"],"example":"COMPLETED"},"userCountryCode":{"type":"string","description":"Filter by user country code","nullable":true,"example":"US"},"latitude":{"type":"number","description":"Latitude coordinate (decimal degrees) of claim location. Combined with longitude for geospatial analytics, heatmaps, and location-based insights. NULL if location not available.","nullable":true,"example":47.6062},"longitude":{"type":"number","description":"Longitude coordinate (decimal degrees) of claim location. Combined with latitude for geospatial analytics, heatmaps, and location-based insights. NULL if location not available.","nullable":true,"example":-122.3321},"message":{"type":"string","description":"Failure reason if status is FAILED","nullable":true},"ownerBusinessId":{"type":"string","description":"Filter by owner business ID (claims from campaigns owned by this business)","format":"uuid"}}}},"components/schemas/CampaignClaimAnalyticsRequestDTO":{"id":"components/schemas/CampaignClaimAnalyticsRequestDTO","kind":"json-schema","title":"CampaignClaimAnalyticsRequestDTO","data":{"type":"object","properties":{"filters":{"description":"Dynamic filters based on CampaignClaimAnalyticsDTO fields","example":{"status":"COMPLETED","campaignId":"campaign-uuid-123","userCountryCode":"US"},"allOf":[{"$ref":"#/components/schemas/CampaignClaimAnalyticsFiltersDTO"}]},"groupBy":{"description":"Fields to group by for aggregation","example":["campaignId","status","month"],"type":"array","items":{"type":"string"}},"groupByExpressions":{"description":"Complex CASE WHEN expressions for advanced grouping","example":[{"expression":"CASE WHEN status = 'COMPLETED' THEN 'success' ELSE 'other' END","alias":"statusGroup","label":"Status Group"}],"type":"array","items":{"$ref":"#/components/schemas/GroupByExpressionDTO"}},"metrics":{"type":"string","description":"Metrics to calculate","enum":["count","sum","avg","min","max"],"example":["count"]},"sortBy":{"type":"string","description":"Field to order results by (supports metric names and expression aliases)","example":"count"},"sortOrder":{"type":"string","description":"Order direction","enum":["ASC","DESC"],"example":"DESC"},"limit":{"type":"number","description":"Maximum number of aggregation groups to return","minimum":1,"maximum":1000,"example":10},"startDate":{"format":"date-time","type":"string","description":"Start date for analytics (ISO format)","example":"2026-01-01T00:00:00.000Z"},"endDate":{"format":"date-time","type":"string","description":"End date for analytics (ISO format)","example":"2026-12-31T23:59:59.999Z"}}}},"components/schemas/CampaignClaimAnalyticsResponseDTO":{"id":"components/schemas/CampaignClaimAnalyticsResponseDTO","kind":"json-schema","title":"CampaignClaimAnalyticsResponseDTO","data":{"type":"object","properties":{"results":{"type":"array","description":"Analytics results array with dynamic fields based on groupBy","example":[{"campaignId":"camp-uuid-1","count":"150"},{"status":"COMPLETED","month":"2026-01-01T00:00:00.000Z","count":"45"},{"businessId":"biz-uuid-1","userCountryCode":"US","count":"89"}]},"totalGroups":{"type":"number","description":"Total number of result groups","example":10},"metadata":{"type":"object","description":"Query metadata showing applied date range and totals","example":{"dateRange":{"startDate":"2024-01-01T00:00:00.000Z","endDate":"2024-12-31T23:59:59.999Z"},"totalCount":440}}},"required":["results","totalGroups","metadata"]}},"components/schemas/RedemptionRedeemAnalyticsFiltersDTO":{"id":"components/schemas/RedemptionRedeemAnalyticsFiltersDTO","kind":"json-schema","title":"RedemptionRedeemAnalyticsFiltersDTO","data":{"type":"object","properties":{"userCountryCode":{"type":"string","description":"Filter by user country code","nullable":true,"example":"US"},"status":{"type":"string","description":"Filter by redemption status","enum":["PENDING","PROCESSING","COMPLETED","FAILED"],"default":"PENDING","example":"COMPLETED"},"dataSource":{"type":"object","description":"Analytics tracking: source/channel of this redeem action","nullable":true,"example":{"channel":"mobile","medium":"referral","campaign":"summer_promo"}},"userId":{"type":"string","description":"Filter by user ID","format":"uuid"},"redemptionId":{"type":"string","description":"Filter by redemption ID","format":"uuid"},"ownerBusinessId":{"type":"string","description":"Filter by owner business ID (redeems from redemptions owned by this business)","format":"uuid"}}}},"components/schemas/RedemptionRedeemAnalyticsRequestDTO":{"id":"components/schemas/RedemptionRedeemAnalyticsRequestDTO","kind":"json-schema","title":"RedemptionRedeemAnalyticsRequestDTO","data":{"type":"object","properties":{"filters":{"description":"Dynamic filters based on RedemptionRedeemDTO fields","example":{"status":"COMPLETED","redemptionId":"redemption-uuid-123","userCountryCode":"US"},"allOf":[{"$ref":"#/components/schemas/RedemptionRedeemAnalyticsFiltersDTO"}]},"groupBy":{"description":"Fields to group by for aggregation","example":["redemptionId","status","month"],"type":"array","items":{"type":"string"}},"groupByExpressions":{"description":"Complex CASE WHEN expressions for advanced grouping","example":[{"expression":"CASE WHEN status = 'COMPLETED' THEN 'success' ELSE 'other' END","alias":"statusGroup","label":"Status Group"}],"type":"array","items":{"$ref":"#/components/schemas/GroupByExpressionDTO"}},"metrics":{"type":"string","description":"Metrics to calculate","enum":["count","sum","avg","min","max"],"example":["count"]},"sortBy":{"type":"string","description":"Field to order results by (supports metric names and expression aliases)","example":"count"},"sortOrder":{"type":"string","description":"Order direction","enum":["ASC","DESC"],"example":"DESC"},"limit":{"type":"number","description":"Maximum number of aggregation groups to return","minimum":1,"maximum":1000,"example":10},"startDate":{"format":"date-time","type":"string","description":"Start date for analytics (ISO format)","example":"2026-01-01T00:00:00.000Z"},"endDate":{"format":"date-time","type":"string","description":"End date for analytics (ISO format)","example":"2026-12-31T23:59:59.999Z"}}}},"components/schemas/RedemptionRedeemAnalyticsResponseDTO":{"id":"components/schemas/RedemptionRedeemAnalyticsResponseDTO","kind":"json-schema","title":"RedemptionRedeemAnalyticsResponseDTO","data":{"type":"object","properties":{"results":{"type":"array","description":"Analytics results array with dynamic fields based on groupBy","example":[{"redemptionId":"redeem-uuid-1","count":"150"},{"status":"COMPLETED","month":"2026-01-01T00:00:00.000Z","count":"45"},{"userId":"user-uuid-1","userCountryCode":"US","count":"89"}]},"totalGroups":{"type":"number","description":"Total number of result groups","example":10},"metadata":{"type":"object","description":"Query metadata showing applied date range and totals","example":{"dateRange":{"startDate":"2024-01-01T00:00:00.000Z","endDate":"2024-12-31T23:59:59.999Z"},"totalCount":440}}},"required":["results","totalGroups","metadata"]}},"components/schemas/UserAnalyticsFiltersDTO":{"id":"components/schemas/UserAnalyticsFiltersDTO","kind":"json-schema","title":"UserAnalyticsFiltersDTO","data":{"type":"object","properties":{"businessId":{"type":"string","description":"Filter analytics to specific business (filters transactions, claims, redemptions by businessId)","format":"uuid","example":"biz-uuid-123"}}}},"components/schemas/UserAnalyticsRequestDTO":{"id":"components/schemas/UserAnalyticsRequestDTO","kind":"json-schema","title":"UserAnalyticsRequestDTO","data":{"type":"object","properties":{"filters":{"description":"Filters to scope which users/activity to include in analytics","example":{"businessId":"biz-uuid-123"},"allOf":[{"$ref":"#/components/schemas/UserAnalyticsFiltersDTO"}]},"startDate":{"format":"date-time","type":"string","description":"Start date for filtering activity and new users (ISO 8601 format). Filters transactions, claims, redemptions, and user creation dates.","example":"2024-01-01T00:00:00Z"},"endDate":{"format":"date-time","type":"string","description":"End date for filtering activity and new users (ISO 8601 format). Filters transactions, claims, redemptions, and user creation dates.","example":"2024-12-31T23:59:59Z"}}}},"components/schemas/UserAnalyticsResponseDTO":{"id":"components/schemas/UserAnalyticsResponseDTO","kind":"json-schema","title":"UserAnalyticsResponseDTO","data":{"type":"object","properties":{"totalUsers":{"type":"number","description":"Total number of registered users (all-time, no date filter applied). Includes all non-deleted users regardless of activity.","example":10523},"activeUsers":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Number of active users - users with ≥1 successful transaction (status=succeeded), completed claim (status=COMPLETED), or completed redemption (status=COMPLETED) within the specified date range. If no date range provided, counts users with any activity ever."},"children":[]}]}]}],"example":3241},"newUsers":{"type":"number","description":"Number of new users created within the specified date range (filtered by user.createdAt). If no date range provided, equals totalUsers.","example":156},"averageTransactionsPerUser":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Average transactions per user across entire user base (total successful transactions in date range ÷ total users). Only counts transactions with status=succeeded, excludes REDEMPTION_SPEND and REDEMPTION_RECEIVE types to prevent double-counting."},"children":[]}]}]}],"example":12.5},"averageTransactionAmount":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Average amount per transaction (total transaction volume ÷ transaction count). Only includes successful transactions (status=succeeded) in date range."},"children":[]}]}]}],"example":45.67},"totalTransactionVolume":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Total transaction volume - sum of all successful transaction amounts (status=succeeded) in date range. Excludes REDEMPTION_SPEND and REDEMPTION_RECEIVE types."},"children":[]}]}]}],"example":56789.12},"totalClaims":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Total completed claims in the date range. Only counts claims with status=COMPLETED."},"children":[]}]}]}],"example":1523},"averageClaimsPerUser":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Average claims per user across entire user base (total completed claims in date range ÷ total users). Only counts claims with status=COMPLETED."},"children":[]}]}]}],"example":3.2},"totalRedemptions":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Total completed redemptions in the date range. Only counts redemptions with status=COMPLETED."},"children":[]}]}]}],"example":892},"averageRedemptionsPerUser":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Average redemptions per user across entire user base (total completed redemptions in date range ÷ total users). Only counts redemptions with status=COMPLETED."},"children":[]}]}]}],"example":1.8},"totalMints":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Total mint transactions in the date range. Only counts successful mint transactions (status=SUCCEEDED or BROADCASTED, type=MINT)."},"children":[]}]}]}],"example":1250},"averageMintsPerUser":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Average mints per user across entire user base (total mints in date range ÷ total users)."},"children":[]}]}]}],"example":1.2},"totalTransfers":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Total transfer transactions in the date range. Only counts successful transfer transactions (status=SUCCEEDED or BROADCASTED, type=TRANSFER)."},"children":[]}]}]}],"example":890},"averageTransfersPerUser":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Average transfers per user across entire user base (total transfers in date range ÷ total users)."},"children":[]}]}]}],"example":0.8},"totalBurns":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Total burn transactions in the date range. Only counts successful burn transactions (status=SUCCEEDED or BROADCASTED, type=BURN)."},"children":[]}]}]}],"example":523},"averageBurnsPerUser":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Average burns per user across entire user base (total burns in date range ÷ total users)."},"children":[]}]}]}],"example":0.5},"averageTransactionsPerActiveUser":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Average transactions per active user (total successful transactions in date range ÷ active users in date range). Provides more accurate engagement metric than averageTransactionsPerUser by excluding inactive users."},"children":[]}]}]}],"example":15.3},"averageClaimsPerActiveUser":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Average claims per active user (total completed claims in date range ÷ active users in date range). Shows claim activity concentrated among engaged users."},"children":[]}]}]}],"example":4.7},"averageRedemptionsPerActiveUser":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Average redemptions per active user (total completed redemptions in date range ÷ active users in date range). Shows redemption activity concentrated among engaged users."},"children":[]}]}]}],"example":2.1},"averageMintsPerActiveUser":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Average mints per active user (total mints in date range ÷ active users in date range)."},"children":[]}]}]}],"example":1.5},"averageTransfersPerActiveUser":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Average transfers per active user (total transfers in date range ÷ active users in date range)."},"children":[]}]}]}],"example":1.1},"averageBurnsPerActiveUser":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Average burns per active user (total burns in date range ÷ active users in date range)."},"children":[]}]}]}],"example":0.8},"engagementRate":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"User engagement rate as percentage (activeUsers ÷ totalUsers × 100). Indicates what percentage of all registered users had activity in the date range."},"children":[]}]}]}],"example":30.79},"periodBreakdown":{"type":"array","description":"Breakdown by time period (if requested)","items":{"type":"object","properties":{"date":{"type":"string","example":"2024-01-01"},"activeUsers":{"type":"number","example":245},"newUsers":{"type":"number","example":12}}}},"metadata":{"type":"object","description":"Query metadata showing applied date range (always present)","properties":{"dateRange":{"type":"object","nullable":true,"properties":{"startDate":{"type":"string","format":"date-time"},"endDate":{"type":"string","format":"date-time"}},"description":"Applied date range filter (null if no filter applied)"}}}},"required":["totalUsers","activeUsers","newUsers","averageTransactionsPerUser","averageTransactionAmount","totalTransactionVolume","totalClaims","averageClaimsPerUser","totalRedemptions","averageRedemptionsPerUser","totalMints","averageMintsPerUser","totalTransfers","averageTransfersPerUser","totalBurns","averageBurnsPerUser","averageTransactionsPerActiveUser","averageClaimsPerActiveUser","averageRedemptionsPerActiveUser","averageMintsPerActiveUser","averageTransfersPerActiveUser","averageBurnsPerActiveUser","engagementRate","metadata"]}},"components/schemas/UserRankingFiltersDTO":{"id":"components/schemas/UserRankingFiltersDTO","kind":"json-schema","title":"UserRankingFiltersDTO","data":{"type":"object","properties":{"businessId":{"type":"string","description":"Filter to specific business (filters transactions by engagedBusinessId)","format":"uuid","example":"biz-uuid-123"},"ownerBusinessId":{"type":"string","description":"Filter by owner business ID (claims from campaigns owned by this business, redeems from redemptions owned by this business)","format":"uuid","example":"biz-uuid-456"},"tokenType":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Filter token sum by specific native token type (ERC721 for stamps, ERC20 for credits, ERC1155 for multi-token). Transaction count includes ALL token types, but sum only includes this type. Frontend SDK should convert friendly names (STAMP → ERC721, CREDIT → ERC20)."},"children":[]}]}]}],"enum":["ERC20","ERC1155","ERC721"],"example":"ERC721"}}}},"components/schemas/UserRankingAnalyticsRequestDTO":{"id":"components/schemas/UserRankingAnalyticsRequestDTO","kind":"json-schema","title":"UserRankingAnalyticsRequestDTO","data":{"type":"object","properties":{"filters":{"description":"Filters to scope which transactions/users to include","example":{"businessId":"biz-uuid-123","tokenType":"ERC721"},"allOf":[{"$ref":"#/components/schemas/UserRankingFiltersDTO"}]},"sortBy":{"type":"string","description":"Field to sort results by","enum":["totalTransactions","tokenSpent","totalClaims","userId","email"],"default":"totalTransactions","example":"totalTransactions"},"sortOrder":{"type":"string","description":"Sort direction","enum":["ASC","DESC"],"default":"DESC","example":"DESC"},"limit":{"type":"number","description":"Maximum number of results to return (top N users)","minimum":1,"maximum":1000,"default":50,"example":50},"startDate":{"format":"date-time","type":"string","description":"Start date for filtering transactions (ISO 8601 format). Only transactions within date range are counted.","example":"2024-01-01T00:00:00Z"},"endDate":{"format":"date-time","type":"string","description":"End date for filtering transactions (ISO 8601 format). Only transactions within date range are counted.","example":"2024-12-31T23:59:59Z"}}}},"components/schemas/UserRankingAnalyticsResponseDTO":{"id":"components/schemas/UserRankingAnalyticsResponseDTO","kind":"json-schema","title":"UserRankingAnalyticsResponseDTO","data":{"type":"object","properties":{"results":{"description":"Ranked list of users with transaction metrics and full user details. Pre-sorted by backend.","items":{"type":"array"},"type":"array"},"totalUsers":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Total number of users returned (≤ request.limit)"},"children":[]}]}]}],"example":50},"metadata":{"type":"object","description":"Metadata about the query execution"}},"required":["results","totalUsers","metadata"]}},"components/schemas/BusinessRankingFiltersDTO":{"id":"components/schemas/BusinessRankingFiltersDTO","kind":"json-schema","title":"BusinessRankingFiltersDTO","data":{"type":"object","properties":{"businessId":{"type":"string","description":"Filter to specific business by ID","format":"uuid","example":"biz-uuid-123"},"ownerBusinessId":{"type":"string","description":"Filter by owner business ID (transactions from campaigns/redemptions owned by this business)","format":"uuid","example":"biz-uuid-456"},"tokenType":{"type":"string","description":"Filter by specific token type (applies to both tokenReceived and tokenBurnt). Use receivedTokenTypes/burntTokenTypes for separate filtering.","enum":["ERC20","ERC1155","ERC721"],"example":"ERC721"},"receivedTokenTypes":{"type":"array","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Filter tokenReceived to specific token types (e.g., [ERC20] for points only)"},"children":[]}]}]}],"example":["ERC20"],"items":{"type":"string","enum":["ERC20","ERC1155","ERC721"]}},"burntTokenTypes":{"type":"array","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Filter tokenBurnt to specific token types (e.g., [ERC721, ERC1155] for NFTs only)"},"children":[]}]}]}],"example":["ERC721","ERC1155"],"items":{"type":"string","enum":["ERC20","ERC1155","ERC721"]}}}}},"components/schemas/BusinessRankingAnalyticsRequestDTO":{"id":"components/schemas/BusinessRankingAnalyticsRequestDTO","kind":"json-schema","title":"BusinessRankingAnalyticsRequestDTO","data":{"type":"object","properties":{"filters":{"description":"Filters for business ranking query","allOf":[{"$ref":"#/components/schemas/BusinessRankingFiltersDTO"}]},"sortBy":{"type":"string","description":"Field to sort results by","enum":["totalTransactions","tokenReceived","tokenBurnt","businessId","businessName"],"default":"totalTransactions","example":"totalTransactions"},"sortOrder":{"type":"string","description":"Sort order (ASC or DESC)","enum":["ASC","DESC"],"default":"DESC","example":"DESC"},"limit":{"type":"number","description":"Maximum number of results to return","minimum":1,"maximum":1000,"default":50,"example":50},"startDate":{"format":"date-time","type":"string","description":"Start date for filtering transactions (ISO 8601)","example":"2026-01-01T00:00:00Z"},"endDate":{"format":"date-time","type":"string","description":"End date for filtering transactions (ISO 8601)","example":"2026-02-01T00:00:00Z"}}}},"components/schemas/BusinessRankingResultItemDTO":{"id":"components/schemas/BusinessRankingResultItemDTO","kind":"json-schema","title":"BusinessRankingResultItemDTO","data":{"type":"object","properties":{"businessId":{"type":"object","description":"Business UUID (null for unidentified businesses)","nullable":true,"example":"123e4567-e89b-12d3-a456-426614174000"},"businessName":{"type":"object","description":"Business name","nullable":true,"example":"Acme Coffee Shop"},"displayName":{"type":"object","description":"Business display name","nullable":true,"example":"Acme Coffee"},"accountAddress":{"type":"object","description":"Business blockchain account address","nullable":true,"example":"0x1234567890abcdef..."},"totalTransactions":{"type":"number","description":"Total number of successful transactions received","example":150},"tokenReceived":{"type":"number","description":"Total token amount received","example":1500.5},"tokenBurnt":{"type":"number","description":"Total token amount burnt (redeemed) at this business","example":250},"hasLegacyTransactions":{"type":"boolean","description":"Whether this business has legacy transactions (address-based)","example":false}},"required":["businessId","businessName","displayName","accountAddress","totalTransactions","tokenReceived","tokenBurnt"]}},"components/schemas/BusinessRankingAnalyticsResponseDTO":{"id":"components/schemas/BusinessRankingAnalyticsResponseDTO","kind":"json-schema","title":"BusinessRankingAnalyticsResponseDTO","data":{"type":"object","properties":{"results":{"description":"Array of business ranking results","type":"array","items":{"$ref":"#/components/schemas/BusinessRankingResultItemDTO"}},"totalBusinesses":{"type":"number","description":"Total number of businesses in results","example":25},"metadata":{"type":"object","description":"Query metadata"}},"required":["results","totalBusinesses","metadata"]}},"components/schemas/RetentionAnalyticsFiltersDTO":{"id":"components/schemas/RetentionAnalyticsFiltersDTO","kind":"json-schema","title":"RetentionAnalyticsFiltersDTO","data":{"type":"object","properties":{"tokenType":{"type":"string","description":"Filter by specific token type","enum":["ERC20","ERC1155","ERC721"],"example":"ERC721"},"triggerProcessType":{"type":"string","description":"Filter by trigger process type","enum":["PURCHASE","SPEND","TRANSFER","EARN","CAMPAIGN_USER_CLAIM","CAMPAIGN_SYSTEM_CLAIM","CAMPAIGN_BUSINESS_CLAIM","REDEMPTION_SPEND","REDEMPTION_RECEIVE","REDEMPTION_PRICE_TOKEN_TRANSFER","MIGRATION","ADMIN_TRIGGERED","BUSINESS_TRIGGERED"],"example":"PURCHASE"}}}},"components/schemas/RetentionAnalyticsRequestDTO":{"id":"components/schemas/RetentionAnalyticsRequestDTO","kind":"json-schema","title":"RetentionAnalyticsRequestDTO","data":{"type":"object","properties":{"startMonth":{"format":"date-time","type":"string","description":"Starting month for retention analysis (defaults to current month)","example":"2026-02-01T00:00:00Z"},"monthsBack":{"type":"number","description":"Number of months to analyze (looking backwards)","minimum":1,"maximum":24,"default":13,"example":13},"filters":{"description":"Optional filters for retention query","allOf":[{"$ref":"#/components/schemas/RetentionAnalyticsFiltersDTO"}]}}}},"components/schemas/RetentionMonthResultDTO":{"id":"components/schemas/RetentionMonthResultDTO","kind":"json-schema","title":"RetentionMonthResultDTO","data":{"type":"object","properties":{"monthKey":{"type":"string","description":"Month identifier in YYYY-MM format","example":"2026-02"},"startDate":{"format":"date-time","type":"string","description":"Start date of the month","example":"2026-02-01T00:00:00Z"},"endDate":{"format":"date-time","type":"string","description":"End date of the month","example":"2026-03-01T00:00:00Z"},"cohortSize":{"type":"number","description":"Number of users who made their first transaction in this month (cohort size)","example":120},"monthlyRetention":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Retention data for this cohort over subsequent months. Key is month offset (0=same month, 1=next month, 2=2 months later, etc.)"},"children":[]}]}]}],"example":{"0":{"retainedUsers":120,"retentionRate":100},"1":{"retainedUsers":85,"retentionRate":70.8},"2":{"retainedUsers":65,"retentionRate":54.2}}},"byTriggerType":{"type":"object","description":"Breakdown of transactions by trigger type","example":{"PURCHASE":{"count":800,"uniqueUsers":300},"REWARD":{"count":450,"uniqueUsers":200}}}},"required":["monthKey","startDate","endDate","cohortSize","monthlyRetention"]}},"components/schemas/RetentionAnalyticsResponseDTO":{"id":"components/schemas/RetentionAnalyticsResponseDTO","kind":"json-schema","title":"RetentionAnalyticsResponseDTO","data":{"type":"object","properties":{"results":{"description":"Array of monthly retention results (ordered chronologically)","type":"array","items":{"$ref":"#/components/schemas/RetentionMonthResultDTO"}},"totalMonths":{"type":"number","description":"Total number of months analyzed","example":13},"metadata":{"type":"object","description":"Query metadata"}},"required":["results","totalMonths","metadata"]}},"components/schemas/EntityTypeUsageDTO":{"id":"components/schemas/EntityTypeUsageDTO","kind":"json-schema","title":"EntityTypeUsageDTO","data":{"type":"object","properties":{"entityType":{"type":"string","description":"The entity type","enum":["campaign","redemption","business","token_metadata","user_status_type"],"example":"campaign"},"count":{"type":"number","description":"Number of entities of this type using the tag","example":8}},"required":["entityType","count"]}},"components/schemas/TagUsageDTO":{"id":"components/schemas/TagUsageDTO","kind":"json-schema","title":"TagUsageDTO","data":{"type":"object","properties":{"tag":{"type":"string","description":"The normalized tag name","example":"summer-sale"},"count":{"type":"number","description":"Total number of entities using this tag (across all entity types)","example":15},"usageByEntityType":{"description":"Usage breakdown per entity type","example":[{"entityType":"campaign","count":8},{"entityType":"business","count":5},{"entityType":"token_metadata","count":2}],"type":"array","items":{"$ref":"#/components/schemas/EntityTypeUsageDTO"}}},"required":["tag","count","usageByEntityType"]}},"components/schemas/TagAnalyticsResponseDTO":{"id":"components/schemas/TagAnalyticsResponseDTO","kind":"json-schema","title":"TagAnalyticsResponseDTO","data":{"type":"object","properties":{"tags":{"description":"List of tags with usage information","type":"array","items":{"$ref":"#/components/schemas/TagUsageDTO"}},"totalTags":{"type":"number","description":"Total number of unique tags","example":25},"totalUsage":{"type":"number","description":"Total tag usage count (sum of all tag assignments across all entities)","example":150},"entityTypes":{"type":"array","description":"Entity types included in this aggregation","example":["campaign","redemption","business","token_metadata","user_status_type"],"items":{"type":"string","enum":["campaign","redemption","business","token_metadata","user_status_type"]}}},"required":["tags","totalTags","totalUsage","entityTypes"]}},"components/schemas/AiUsageSummaryResponseDTO":{"id":"components/schemas/AiUsageSummaryResponseDTO","kind":"json-schema","title":"AiUsageSummaryResponseDTO","data":{"type":"object","properties":{"totalGenerations":{"type":"number","description":"Total number of AI generations","example":1250},"totalTokens":{"type":"number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Total tokens used (input + output)"},"children":[]}]}]}],"example":2500000},"inputTokens":{"type":"number","description":"Total input tokens","example":1500000},"outputTokens":{"type":"number","description":"Total output tokens","example":1000000},"totalCostUsd":{"type":"number","description":"Total estimated cost in USD","example":12.5},"avgResponseTimeMs":{"type":"number","description":"Average response time in milliseconds","example":850},"byModel":{"type":"object","description":"Breakdown by model","example":{"gemini-2.5-flash":{"count":800,"tokens":1600000,"costUsd":4.8},"imagen-4.0-generate-001":{"count":450,"tokens":900000,"costUsd":7.7}}},"byOperationType":{"type":"object","description":"Breakdown by operation type","example":{"TEXT_GENERATION":{"count":800,"tokens":1600000,"costUsd":4.8},"IMAGE_GENERATION":{"count":450,"tokens":900000,"costUsd":7.7}}},"metadata":{"type":"object","description":"Metadata including date range"}},"required":["totalGenerations","totalTokens","inputTokens","outputTokens","totalCostUsd","avgResponseTimeMs","byModel","byOperationType","metadata"]}},"components/schemas/AiAnalyticsResponseDTO":{"id":"components/schemas/AiAnalyticsResponseDTO","kind":"json-schema","title":"AiAnalyticsResponseDTO","data":{"type":"object","properties":{"results":{"description":"Analytics results","example":[{"day":"2026-03-01","model":"gemini-2.5-flash","count":50,"totalCostUsd":0.25},{"day":"2026-03-02","model":"gemini-2.5-flash","count":75,"totalCostUsd":0.38}],"type":"array","items":{"type":"string"}},"totalGroups":{"type":"number","description":"Total number of groups returned","example":30},"metadata":{"type":"object","description":"Metadata including date range and totals","example":{"dateRange":{"startDate":"2026-01-01","endDate":"2026-12-31"},"totalCount":500}}},"required":["results","totalGroups","metadata"]}},"components/schemas/StructuredError":{"id":"components/schemas/StructuredError","kind":"json-schema","title":"StructuredError","data":{"type":"object","description":"RFC 7807 compliant error response with PERS extensions","properties":{"status":{"type":"integer","description":"HTTP status code as number (industry standard)","example":400},"title":{"type":"string","description":"Human-readable summary of the error type","example":"Validation Error"},"detail":{"type":"string","description":"Human-readable explanation specific to this occurrence","example":"The email field is required"},"message":{"type":"string","description":"Common error message field (industry standard) - usually same as detail","example":"The email field is required"},"type":{"type":"string","format":"uri","description":"URI reference identifying the problem type (optional)","example":"https://api.pers.ninja/errors/validation"},"instance":{"type":"string","format":"uri","description":"URI reference to this specific error occurrence (optional)"},"code":{"type":"string","description":"Service-defined error code for programmatic handling","example":"VALIDATION_ERROR","enum":["USER_NOT_FOUND","USER_ALREADY_EXISTS","USER_NOT_AUTHORIZED","TOKEN_NOT_FOUND","TOKEN_NOT_ACTIVE","TOKEN_ID_REQUIRED","TOKEN_TYPE_NOT_FOUND","TOKEN_UNIT_NOT_FOUND","NFT_EXPIRED","NFT_BUSINESS_RESTRICTION","WALLET_MISSING_SIGNING","WALLET_NOT_FOUND","SMART_WALLET_PROCESSING_FAILED","INSUFFICIENT_BALANCE","CONTRACT_NOT_FOUND","BUSINESS_NOT_FOUND","BUSINESS_NOT_MINTER","BUSINESS_DISPLAY_NAME_ALREADY_EXISTS","BUSINESS_NOT_APPROVED","MEMBERSHIP_NOT_FOUND","MEMBERSHIP_ALREADY_EXISTS","MEMBERSHIP_LAST_OWNER","TRANSACTION_NOT_FOUND","TRANSACTION_SIGNATURE_INVALID","TRANSACTION_ALREADY_COMPLETED","TRANSACTION_NOT_PENDING","TRANSACTION_EXPIRED","TRANSACTION_VALIDATION_ERROR","UNEXPECTED_VALIDATION_SCENARIO","CAMPAIGN_USER_INFO_REQUIRED","CAMPAIGN_BUSINESS_REQUIRED","CAMPAIGN_CONDITION_NOT_MET","CAMPAIGN_ALREADY_CLAIMED","CAMPAIGN_NO_TRIGGER","CAMPAIGN_LOCATION_REQUIRED","CAMPAIGN_DISTANCE_EXCEEDED","CAMPAIGN_NOT_ACTIVE","CAMPAIGN_ENDED","CAMPAIGN_NOT_STARTED","CAMPAIGN_CLAIM_LIMIT_REACHED","CAMPAIGN_COOLDOWN_ACTIVE","CAMPAIGN_DAILY_LIMIT_REACHED","CAMPAIGN_GLOBAL_LIMIT_REACHED","CAMPAIGN_GLOBAL_DAILY_LIMIT_REACHED","CAMPAIGN_NOT_FOUND","GEOGRAPHIC_RESTRICTION","LOCATION_VERIFICATION_REQUIRED","TRIGGER_NOT_FOUND","NOTIFICATION_NOT_FOUND","TRIGGER_SOURCE_NOT_FOUND","RESOURCE_ALREADY_EXISTS","RESOURCE_IN_USE","TECHNICAL_ERROR","ORCHESTRATION_ERROR","SYSTEM_ERROR","EXTERNAL_SERVICE_ERROR","AUTHENTICATION_REQUIRED","AUTHORIZATION_FAILED","NO_BUSINESS_ACCESS","CONFIGURATION_MISSING","USER_STATUS_RESTRICTED","REDEMPTION_ALREADY_PROCESSING","MAX_REDEMPTION","USER_LIMIT","REQUIRED_FIELDS_MISSING","BOOKING_REQUIREMENT_NOT_MET","INVALID_TOKEN","TOKEN_EXPIRED","TOKEN_REVOKED","REFRESH_TOKEN_EXPIRED","REFRESH_TOKEN_REVOKED","FIREBASE_AUTH_ERROR","MULTIPLE_CONTEXT_SELECTION_REQUIRED","ADMIN_TENANT_REQUIRED","MAGIC_LINK_EMAIL_SEND_FAILED","MAGIC_LINK_EMAIL_MISMATCH","MAGIC_LINK_VERIFICATION_FAILED","RATE_LIMITED","INTERNAL_ERROR","VALIDATION_ERROR","BUSINESS_RULE_VIOLATION","RESOURCE_NOT_FOUND","WEBHOOK_NOT_FOUND","WEBHOOK_INACTIVE","WEBHOOK_SOURCE_NOT_ALLOWED","WEBHOOK_SIGNATURE_INVALID","WEBHOOK_FORWARD_FAILED","WEBHOOK_TIMEOUT","EVENT_SUBSCRIPTION_NOT_FOUND","RESOURCE_CONFLICT","CONCURRENT_MODIFICATION","REQUEST_TIMEOUT","GATEWAY_TIMEOUT"]},"category":{"type":"string","enum":["VALIDATION","DOMAIN_RULE","TECHNICAL","INFRASTRUCTURE","SECURITY","RATE_LIMIT","TIMEOUT","UNKNOWN"],"description":"Error category for classification and routing","example":"VALIDATION"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when error occurred","example":"2026-01-15T10:30:00.000Z"},"correlationId":{"type":"string","description":"Correlation ID for request tracing","example":"pers-abc123-def456"},"retryable":{"type":"boolean","description":"Whether the operation can be safely retried","example":false},"domain":{"type":"string","description":"Domain that generated the error","enum":["user","admin","tenant","token","token_metadata","token_type","wallet","balance","transaction","purchase","business","business_type","campaign","campaign_trigger","redemption","redemption_type","booking","contract","signing_account","api_key","webhook","analytics","chain","file","jwks","project","events","validation","system","authentication","external"],"example":"user"},"details":{"type":"object","description":"Additional structured error details","additionalProperties":true},"target":{"type":"string","description":"Target property/parameter that caused the error (for validation errors)","example":"email"}},"required":["status","title","message","code","category","retryable"]}},"schema_67":{"kind":"json-schema","data":{"type":"string"},"id":"schema_67"},"schema_68":{"kind":"json-schema","data":{"type":"number"},"id":"schema_68"},"schema_69":{"kind":"json-schema","data":{"type":"array","items":{"$ref":"#/components/schemas/AdminDTO"}},"id":"schema_69"},"schema_70":{"kind":"json-schema","data":{"type":"array","items":{"$ref":"#/components/schemas/TokenDTO"}},"id":"schema_70"},"schema_71":{"kind":"json-schema","data":{"type":"array","items":{"$ref":"#/components/schemas/TokenTypeDTO"}},"id":"schema_71"},"schema_72":{"kind":"json-schema","data":{"enum":["name","createdAt","tokenMetadataIncrementalId","ownerBusinessId"],"type":"string"},"id":"schema_72"},"schema_73":{"kind":"json-schema","data":{"enum":["ASC","DESC"],"type":"string"},"id":"schema_73"},"schema_74":{"kind":"json-schema","data":{"enum":["pending_approval","approved","rejected"],"type":"string"},"id":"schema_74"},"schema_75":{"kind":"json-schema","data":{"type":"array","items":{"type":"string"}},"id":"schema_75"},"schema_76":{"kind":"json-schema","data":{"enum":["ERC721","ERC1155"],"type":"string"},"id":"schema_76"},"schema_77":{"kind":"json-schema","data":{"type":"array","items":{"$ref":"#/components/schemas/TokenMetadataDTO"}},"id":"schema_77"},"schema_78":{"kind":"json-schema","data":{"type":"object","properties":{"contractAddress":{"type":"string","description":"Mainnet contract address"},"chainId":{"type":"number","description":"Chain ID for the mainnet contract"}},"required":["contractAddress","chainId"]},"id":"schema_78"},"schema_79":{"kind":"json-schema","data":{"properties":{"chainId":{"type":"number"}},"required":["chainId"]},"id":"schema_79"},"schema_80":{"kind":"json-schema","data":{"type":"object"},"id":"schema_80"},"schema_81":{"kind":"json-schema","data":{"type":"boolean"},"id":"schema_81"},"schema_82":{"kind":"json-schema","data":{"enum":["order","name","createdAt","startDate","ownerBusinessId"],"type":"string"},"id":"schema_82"},"schema_83":{"kind":"json-schema","data":{"type":"array","items":{"$ref":"#/components/schemas/CampaignDTO"}},"id":"schema_83"},"schema_84":{"kind":"json-schema","data":{"type":"array","items":{"$ref":"#/components/schemas/CampaignTriggerDTO"}},"id":"schema_84"},"schema_85":{"kind":"json-schema","data":{"format":"date-time","type":"string"},"id":"schema_85"},"schema_86":{"kind":"json-schema","data":{"enum":["createdAt","status"],"type":"string"},"id":"schema_86"},"schema_87":{"kind":"json-schema","data":{"type":"array","items":{"$ref":"#/components/schemas/CampaignClaimDTO"}},"id":"schema_87"},"schema_88":{"kind":"json-schema","data":{"type":"array","items":{"$ref":"#/components/schemas/RedemptionDTO"}},"id":"schema_88"},"schema_89":{"kind":"json-schema","data":{"type":"array","items":{"$ref":"#/components/schemas/PurchaseTokenDTO"}},"id":"schema_89"},"schema_90":{"kind":"json-schema","data":{"type":"array","items":{"$ref":"#/components/schemas/DonationTypeDTO"}},"id":"schema_90"},"schema_91":{"kind":"json-schema","data":{"type":"array","items":{"$ref":"#/components/schemas/PurchaseDTO"}},"id":"schema_91"},"schema_92":{"kind":"json-schema","data":{"enum":["name","createdAt","businessLegalName"],"type":"string"},"id":"schema_92"},"schema_93":{"kind":"json-schema","data":{"example":25.2854,"type":"number"},"id":"schema_93"},"schema_94":{"kind":"json-schema","data":{"example":51.531,"type":"number"},"id":"schema_94"},"schema_95":{"kind":"json-schema","data":{"example":500,"type":"number"},"id":"schema_95"},"schema_96":{"kind":"json-schema","data":{"type":"array","items":{"$ref":"#/components/schemas/BusinessDTO"}},"id":"schema_96"},"schema_97":{"kind":"json-schema","data":{"type":"array","items":{"$ref":"#/components/schemas/BusinessMembershipDTO"}},"id":"schema_97"},"schema_98":{"kind":"json-schema","data":{"enum":["createdAt","amount","type","tokenType","status","senderAddress","recipientAddress"],"type":"string"},"id":"schema_98"},"schema_99":{"kind":"json-schema","data":{"type":"array","items":{"type":"string","enum":["MINT","TRANSFER","BURN"]}},"id":"schema_99"},"schema_100":{"kind":"json-schema","data":{"type":"array","items":{}},"id":"schema_100"},"schema_101":{"kind":"json-schema","data":{"type":"array","items":{"type":"string","enum":["created","processing","pending_signature","pending_submission","broadcasted","succeeded","failed","cancelled","expired"]}},"id":"schema_101"},"schema_102":{"kind":"json-schema","data":{"type":"array","items":{"type":"string","enum":["SENDER","RECIPIENT"]}},"id":"schema_102"},"schema_103":{"kind":"json-schema","data":{"example":"2026-01-01","type":"string"},"id":"schema_103"},"schema_104":{"kind":"json-schema","data":{"example":"2026-12-31","type":"string"},"id":"schema_104"},"schema_105":{"kind":"json-schema","data":{"example":"SUCCEEDED","type":"string"},"id":"schema_105"},"schema_106":{"kind":"json-schema","data":{"type":"string","format":"binary"},"id":"schema_106"},"schema_107":{"kind":"json-schema","data":{"type":"object","properties":{"Content-Type":{"type":"string","example":"text/csv","description":"MIME type of the file"},"Content-Disposition":{"type":"string","example":"attachment; filename=\"transactions_2024-01-15.csv\"","description":"File download attachment"}}},"id":"schema_107"},"schema_108":{"kind":"json-schema","data":{"type":"array","items":{"$ref":"#/components/schemas/UserStatusTypeDTO"}},"id":"schema_108"},"schema_109":{"kind":"json-schema","data":{"enum":["id","email","identifierEmail","instagramAccountId","externalId"],"type":"string"},"id":"schema_109"},"schema_110":{"kind":"json-schema","data":{"type":"object","properties":{"exists":{"type":"boolean","example":true},"identifier":{"type":"string","example":"email"}}},"id":"schema_110"},"schema_111":{"kind":"json-schema","data":{"type":"array","items":{"$ref":"#/components/schemas/PublicUserDTO"}},"id":"schema_111"},"schema_112":{"kind":"json-schema","data":{"oneOf":[{"$ref":"#/components/schemas/UserCreateRequestDTO"},{"type":"array","items":{"$ref":"#/components/schemas/UserCreateRequestDTO"}}]},"id":"schema_112"},"schema_113":{"kind":"json-schema","data":{"oneOf":[{"$ref":"#/components/schemas/UserDTO"},{"type":"array","items":{"$ref":"#/components/schemas/UserDTO"}}]},"id":"schema_113"},"schema_114":{"kind":"json-schema","data":{"enum":["soft","hard"],"type":"string"},"id":"schema_114"},"schema_115":{"kind":"json-schema","data":{"type":"array","items":{"$ref":"#/components/schemas/UserDTO"}},"id":"schema_115"},"schema_116":{"kind":"json-schema","data":{"type":"object","properties":{"isActive":{"type":"boolean"}},"example":{"isActive":true}},"id":"schema_116"},"schema_117":{"kind":"json-schema","data":{"enum":["QR_CODE","NFC_TAG","API_WEBHOOK","GPS_GEOFENCE","TRANSACTION"],"type":"string"},"id":"schema_117"},"schema_118":{"kind":"json-schema","data":{"enum":["name","createdAt","type"],"type":"string"},"id":"schema_118"},"schema_119":{"kind":"json-schema","data":{"type":"array","items":{"$ref":"#/components/schemas/TriggerSourceDTO"}},"id":"schema_119"},"schema_120":{"kind":"json-schema","data":{"type":"array","items":{"$ref":"#/components/schemas/BusinessTypeDTO"}},"id":"schema_120"},"schema_121":{"kind":"json-schema","data":{"type":"array","items":{"$ref":"#/components/schemas/RedemptionTypeDTO"}},"id":"schema_121"},"schema_122":{"kind":"json-schema","data":{"enum":["PENDING","PROCESSING","COMPLETED","FAILED"],"type":"string"},"id":"schema_122"},"schema_123":{"kind":"json-schema","data":{"enum":["createdAt","status","redemptionName"],"type":"string"},"id":"schema_123"},"schema_124":{"kind":"json-schema","data":{"type":"array","items":{"$ref":"#/components/schemas/RedemptionRedeemDTO"}},"id":"schema_124"},"schema_125":{"kind":"json-schema","data":{"enum":["TENANT_SYSTEM_JWT","BUSINESS_SYSTEM_JWT"],"type":"string"},"id":"schema_125"},"schema_126":{"kind":"json-schema","data":{"type":"array","items":{"$ref":"#/components/schemas/ApiKeyDTO"}},"id":"schema_126"},"schema_127":{"kind":"json-schema","data":{"example":"f47ac10b-58cc-4372-a567-0e02b2c3d479","type":"string"},"id":"schema_127"},"schema_128":{"kind":"json-schema","data":{},"id":"schema_128"},"schema_129":{"kind":"json-schema","data":{"enum":["user","business","campaign","redemption"],"type":"string"},"id":"schema_129"},"schema_130":{"kind":"json-schema","data":{"type":"array","items":{"$ref":"#/components/schemas/CustomFieldDefinitionDTO"}},"id":"schema_130"},"schema_131":{"kind":"json-schema","data":{"type":"array","items":{"$ref":"#/components/schemas/RedirectModel"}},"id":"schema_131"},"schema_132":{"kind":"json-schema","data":{"type":"array","items":{"type":"string","enum":["campaign","redemption","business","token_metadata","user_status_type"]}},"id":"schema_132"},"schema_133":{"kind":"json-schema","data":{"type":"object","required":["question"],"properties":{"question":{"type":"string","example":"Show me failed transactions last month"}}},"id":"schema_133"}},"exampleStore":{"paths/~1analytics~1transactions/post/requestBody/content/application~1json/examples/stampsCount":{"value":{"filters":{"status":"SUCCEEDED","tokenType":"ERC721"},"groupBy":["month"],"metrics":["count"],"sortBy":"count","sortOrder":"DESC","limit":12},"key":"stampsCount","summary":"Count stamps by month","id":"paths/~1analytics~1transactions/post/requestBody/content/application~1json/examples/stampsCount"},"paths/~1analytics~1transactions/post/requestBody/content/application~1json/examples/transactionsByBusiness":{"value":{"filters":{"status":"SUCCEEDED"},"groupBy":["businessId"],"metrics":["count","sum"],"sortBy":"count","sortOrder":"DESC","limit":20},"key":"transactionsByBusiness","summary":"Transaction count by business","id":"paths/~1analytics~1transactions/post/requestBody/content/application~1json/examples/transactionsByBusiness"},"paths/~1analytics~1campaign-claims/post/requestBody/content/application~1json/examples/claimsPerCampaign":{"value":{"groupBy":["campaignId"],"metrics":["count"],"sortBy":"count","sortOrder":"DESC","limit":10},"key":"claimsPerCampaign","summary":"Claims count per campaign","id":"paths/~1analytics~1campaign-claims/post/requestBody/content/application~1json/examples/claimsPerCampaign"},"paths/~1analytics~1campaign-claims/post/requestBody/content/application~1json/examples/claimsByStatusOverTime":{"value":{"groupBy":["month","status"],"metrics":["count"],"sortBy":"month","sortOrder":"DESC","startDate":"2026-01-01T00:00:00Z","endDate":"2026-12-31T23:59:59Z"},"key":"claimsByStatusOverTime","summary":"Claims by status over time","id":"paths/~1analytics~1campaign-claims/post/requestBody/content/application~1json/examples/claimsByStatusOverTime"},"paths/~1analytics~1campaign-claims/post/requestBody/content/application~1json/examples/claimsByCountry":{"value":{"filters":{"status":"COMPLETED"},"groupBy":["userCountryCode"],"metrics":["count"],"sortBy":"count","sortOrder":"DESC"},"key":"claimsByCountry","summary":"Claims by country","id":"paths/~1analytics~1campaign-claims/post/requestBody/content/application~1json/examples/claimsByCountry"},"paths/~1analytics~1redemption-redeems/post/requestBody/content/application~1json/examples/redeemsPerRedemption":{"value":{"groupBy":["redemptionId"],"metrics":["count"],"sortBy":"count","sortOrder":"DESC","limit":10},"key":"redeemsPerRedemption","summary":"Redeems count per redemption","id":"paths/~1analytics~1redemption-redeems/post/requestBody/content/application~1json/examples/redeemsPerRedemption"},"paths/~1analytics~1redemption-redeems/post/requestBody/content/application~1json/examples/redeemsByStatusOverTime":{"value":{"groupBy":["month","status"],"metrics":["count"],"sortBy":"month","sortOrder":"DESC","startDate":"2026-01-01T00:00:00Z","endDate":"2026-12-31T23:59:59Z"},"key":"redeemsByStatusOverTime","summary":"Redeems by status over time","id":"paths/~1analytics~1redemption-redeems/post/requestBody/content/application~1json/examples/redeemsByStatusOverTime"},"paths/~1analytics~1redemption-redeems/post/requestBody/content/application~1json/examples/redeemsByBusiness":{"value":{"filters":{"status":"COMPLETED"},"groupBy":["ownerBusinessId"],"metrics":["count"],"sortBy":"count","sortOrder":"DESC"},"key":"redeemsByBusiness","summary":"Redeems by owner business","id":"paths/~1analytics~1redemption-redeems/post/requestBody/content/application~1json/examples/redeemsByBusiness"},"paths/~1analytics~1users/post/requestBody/content/application~1json/examples/allTime":{"value":{},"key":"allTime","summary":"All-time user statistics","id":"paths/~1analytics~1users/post/requestBody/content/application~1json/examples/allTime"},"paths/~1analytics~1users/post/requestBody/content/application~1json/examples/monthlyStats":{"value":{"startDate":"2026-01-01T00:00:00Z","endDate":"2026-01-31T23:59:59Z"},"key":"monthlyStats","summary":"User statistics for January 2026","id":"paths/~1analytics~1users/post/requestBody/content/application~1json/examples/monthlyStats"},"paths/~1analytics~1users/post/requestBody/content/application~1json/examples/businessUsers":{"value":{"businessId":"business-uuid-here","startDate":"2026-01-01T00:00:00Z","endDate":"2026-12-31T23:59:59Z"},"key":"businessUsers","summary":"User statistics for specific business","id":"paths/~1analytics~1users/post/requestBody/content/application~1json/examples/businessUsers"},"paths/~1analytics~1users~1ranking/post/requestBody/content/application~1json/examples/topUsers":{"value":{"sortBy":"totalTransactions","sortOrder":"DESC","limit":50},"key":"topUsers","summary":"Top 50 users by transaction count","id":"paths/~1analytics~1users~1ranking/post/requestBody/content/application~1json/examples/topUsers"},"paths/~1analytics~1users~1ranking/post/requestBody/content/application~1json/examples/topStampSpenders":{"value":{"filters":{"tokenType":"STAMP"},"sortBy":"tokenSpent","sortOrder":"DESC","limit":20},"key":"topStampSpenders","summary":"Top users by STAMP spending","id":"paths/~1analytics~1users~1ranking/post/requestBody/content/application~1json/examples/topStampSpenders"},"paths/~1analytics~1users~1ranking/post/requestBody/content/application~1json/examples/businessLeaderboard":{"value":{"filters":{"businessId":"business-uuid-here","tokenType":"ERC20"},"sortBy":"totalTransactions","sortOrder":"DESC","limit":100,"startDate":"2026-01-01T00:00:00Z","endDate":"2026-12-31T23:59:59Z"},"key":"businessLeaderboard","summary":"Top users for specific business","id":"paths/~1analytics~1users~1ranking/post/requestBody/content/application~1json/examples/businessLeaderboard"},"paths/~1analytics~1businesses~1ranking/post/requestBody/content/application~1json/examples/topBusinesses":{"value":{"sortBy":"totalTransactions","sortOrder":"DESC","limit":50},"key":"topBusinesses","summary":"Top 50 businesses by transaction count","id":"paths/~1analytics~1businesses~1ranking/post/requestBody/content/application~1json/examples/topBusinesses"},"paths/~1analytics~1businesses~1ranking/post/requestBody/content/application~1json/examples/topStampReceivers":{"value":{"filters":{"tokenType":"ERC721"},"sortBy":"tokenReceived","sortOrder":"DESC","limit":20},"key":"topStampReceivers","summary":"Top businesses by ERC721 (stamps) received","id":"paths/~1analytics~1businesses~1ranking/post/requestBody/content/application~1json/examples/topStampReceivers"},"paths/~1analytics~1businesses~1ranking/post/requestBody/content/application~1json/examples/businessLeaderboard":{"value":{"filters":{"tokenType":"ERC20"},"sortBy":"totalTransactions","sortOrder":"DESC","limit":100,"startDate":"2026-01-01T00:00:00Z","endDate":"2026-12-31T23:59:59Z"},"key":"businessLeaderboard","summary":"Top businesses in date range","id":"paths/~1analytics~1businesses~1ranking/post/requestBody/content/application~1json/examples/businessLeaderboard"},"paths/~1analytics~1users~1retention/post/requestBody/content/application~1json/examples/last13Months":{"value":{"monthsBack":13},"key":"last13Months","summary":"Last 13 months retention","id":"paths/~1analytics~1users~1retention/post/requestBody/content/application~1json/examples/last13Months"},"paths/~1analytics~1users~1retention/post/requestBody/content/application~1json/examples/last6Months":{"value":{"monthsBack":6,"filters":{"tokenType":"ERC721"}},"key":"last6Months","summary":"Last 6 months with token filter","id":"paths/~1analytics~1users~1retention/post/requestBody/content/application~1json/examples/last6Months"},"paths/~1analytics~1users~1retention/post/requestBody/content/application~1json/examples/customDateRange":{"value":{"startMonth":"2026-02-01T00:00:00Z","monthsBack":12,"filters":{"triggerProcessType":"PURCHASE"}},"key":"customDateRange","summary":"Custom date range with trigger filter","id":"paths/~1analytics~1users~1retention/post/requestBody/content/application~1json/examples/customDateRange"},"paths/~1analytics~1ai~1usage/post/requestBody/content/application~1json/examples/thisMonth":{"value":{"startDate":"2026-03-01T00:00:00Z","endDate":"2026-03-31T23:59:59Z"},"key":"thisMonth","summary":"This month usage","id":"paths/~1analytics~1ai~1usage/post/requestBody/content/application~1json/examples/thisMonth"},"paths/~1analytics~1ai~1usage/post/requestBody/content/application~1json/examples/lastWeek":{"value":{"startDate":"2026-03-05T00:00:00Z","endDate":"2026-03-12T23:59:59Z"},"key":"lastWeek","summary":"Last 7 days usage","id":"paths/~1analytics~1ai~1usage/post/requestBody/content/application~1json/examples/lastWeek"},"paths/~1analytics~1ai/post/requestBody/content/application~1json/examples/costByDay":{"value":{"groupBy":["day"],"metrics":["count","totalCostUsd"],"sortBy":"day","sortOrder":"ASC","startDate":"2026-03-01T00:00:00Z","endDate":"2026-03-31T23:59:59Z"},"key":"costByDay","summary":"Daily cost trend","id":"paths/~1analytics~1ai/post/requestBody/content/application~1json/examples/costByDay"},"paths/~1analytics~1ai/post/requestBody/content/application~1json/examples/byModel":{"value":{"groupBy":["model"],"metrics":["count","totalTokens","totalCostUsd"],"sortBy":"totalCostUsd","sortOrder":"DESC"},"key":"byModel","summary":"Usage by model","id":"paths/~1analytics~1ai/post/requestBody/content/application~1json/examples/byModel"},"paths/~1analytics~1ai/post/requestBody/content/application~1json/examples/byOperationType":{"value":{"groupBy":["operationType"],"metrics":["count","avgResponseTimeMs"],"sortBy":"count","sortOrder":"DESC"},"key":"byOperationType","summary":"Usage by operation type","id":"paths/~1analytics~1ai/post/requestBody/content/application~1json/examples/byOperationType"},"paths/~1analytics~1ai/post/requestBody/content/application~1json/examples/failureAnalysis":{"value":{"filters":{"success":false},"groupBy":["model","operationType"],"metrics":["count"],"sortBy":"count","sortOrder":"DESC"},"key":"failureAnalysis","summary":"Failed operations","id":"paths/~1analytics~1ai/post/requestBody/content/application~1json/examples/failureAnalysis"}},"securitySchemeStore":{"authJWT":{"id":"authJWT","type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authentication JWT token for user/business/admin/system access"},"projectKey":{"id":"projectKey","type":"apiKey","description":"Project API key","in":"header","paramName":"x-project-key"}},"servers":[{"url":"/_mock/swagger","isMockServer":true,"description":"Mock server"},{"url":"https://api.pers.ninja/v2"}]},"options":{"hideSidebar":true,"mockServer":{"url":"/_mock/swagger","position":"first","description":"Mock server"},"disableRouter":true,"downloadUrls":[{"url":"/_bundle/swagger.json?download"},{"url":"/_bundle/swagger.yaml?download"}],"excludeFromSearch":false,"specType":"openapi","markdocOptions":{"tags":{},"nodes":{},"components":{}},"metadata":{"title":"PERS-api Documentation","description":"\n**PERS API Documentation**\n\nThis RESTful API enables seamless integration of Web3 loyalty, token management, and engagement features into your applications.\n\n**Usage Guidelines:**\n- **RESTful Design**: Resources are accessed via standard HTTP methods (GET, POST, PUT, DELETE) with predictable, resource-oriented URLs.\n- **Authentication**: Secure access is enforced via Bearer Tokens (JWT) and Project Keys (defining the Tenant context).\n- **Data Format**: All requests and responses utilize standard JSON formatting.\n\nExplore the modules below for detailed endpoint specifications, schemas, and testing capabilities.\n\n\n---\n\n### Error Handling\n\nAll API errors follow RFC 7807 (Problem Details for HTTP APIs) with a `StructuredError` schema. See the **Schemas** section below for the full structure.\n"}},"baseSlug":"/swagger","routesMapping":{}}