# Secutix

## Retrieve ticket URLs from Secutix file ID

> Fetches ticket download URLs and metadata from Secutix system using a file identifier.\
> Used for order fulfillment, ticket distribution, and mobile pass generation.\
> \
> \## Use Cases\
> \- Generate direct ticket download links for customers\
> \- Create mobile wallet passes with ticket data\
> \- Debug order fulfillment issues\
> \- Support ticket resale and transfers\
> \
> \## Authorization\
> Requires valid Secutix API credentials in tenant configuration

```json
{"openapi":"3.1.1","info":{"title":"Neostore internal API","version":"v1"},"tags":[{"name":"Secutix"}],"servers":[{"url":"https://app.neostore.cloud","description":"Production Server"},{"url":"https://app-qa.neostore.cloud","description":"Staging Server"}],"security":[{"admin-bearer":["ScopedAuthorizeRequirement"]},{"apiKey":["ScopedAuthorizeRequirement"]}],"components":{"securitySchemes":{"admin-bearer":{"type":"oauth2","flows":{"implicit":{"authorizationUrl":"https://auth.neostore.cloud/authorize?audience=https://app.neostore.cloud/api/","scopes":{}}}},"apiKey":{"type":"apiKey","name":"X-API-KEY","in":"header"}},"schemas":{"ProblemDetails":{"type":"object","properties":{"type":{"type":["null","string"]},"title":{"type":["null","string"]},"status":{"type":["null","integer"],"format":"int32"},"detail":{"type":["null","string"]},"instance":{"type":["null","string"]}},"additionalProperties":{}},"HttpValidationProblemDetails":{"type":"object","allOf":[{"$ref":"#/components/schemas/ProblemDetails"}],"properties":{"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}},"additionalProperties":{}}}},"paths":{"/api/{tenantId}/external/secutix/orders/getTicketsUrl/{fileId}":{"get":{"tags":["Secutix"],"summary":"Retrieve ticket URLs from Secutix file ID","description":"Fetches ticket download URLs and metadata from Secutix system using a file identifier.\nUsed for order fulfillment, ticket distribution, and mobile pass generation.\n\n## Use Cases\n- Generate direct ticket download links for customers\n- Create mobile wallet passes with ticket data\n- Debug order fulfillment issues\n- Support ticket resale and transfers\n\n## Authorization\nRequires valid Secutix API credentials in tenant configuration","parameters":[{"name":"fileId","in":"path","description":"Secutix file identifier from order system","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"tenantId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Ticket URL resolved."},"401":{"description":"Unauthorized order access.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"404":{"description":"Order not found for the provided file identifier.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"500":{"description":"Unexpected server error."}}}}}}
```

## Handle Secutix order state changes

> Webhook endpoint called by Secutix when ticket orders change state (purchased, validated, refunded, etc.).\
> \
> \## Order States\
> \- \*\*PAID\*\*: Order completed, tickets ready\
> \- \*\*CANCELLED\*\*: Order cancelled, refund processed\
> \- \*\*VALIDATED\*\*: Ticket scanned/used at venue\
> \- \*\*MODIFIED\*\*: Order details changed\
> \
> \## Processing Flow\
> 1\. Secutix sends webhook immediately when order state changes\
> 2\. Endpoint validates request and schedules background task\
> 3\. Background task retrieves full order details from Secutix API\
> 4\. System creates/updates passes for tickets\
> 5\. Push notifications sent to customer devices\
> \
> \## Background Processing\
> Tasks are queued with correlation IDs for:\
> \- Retry handling on failures\
> \- Deduplication of rapid-fire updates\
> \- Performance monitoring\
> \
> \## Use Cases\
> \- Generate event tickets as wallet passes\
> \- Update pass when ticket validated at gate\
> \- Cancel passes for refunded orders\
> \- Multi-ticket orders (family packages)

```json
{"openapi":"3.1.1","info":{"title":"Neostore internal API","version":"v1"},"tags":[{"name":"Secutix"}],"servers":[{"url":"https://app.neostore.cloud","description":"Production Server"},{"url":"https://app-qa.neostore.cloud","description":"Staging Server"}],"paths":{"/api/{tenantId}/webhooks/listeners/secutix/orders":{"post":{"tags":["Secutix"],"summary":"Handle Secutix order state changes","description":"Webhook endpoint called by Secutix when ticket orders change state (purchased, validated, refunded, etc.).\n\n## Order States\n- **PAID**: Order completed, tickets ready\n- **CANCELLED**: Order cancelled, refund processed\n- **VALIDATED**: Ticket scanned/used at venue\n- **MODIFIED**: Order details changed\n\n## Processing Flow\n1. Secutix sends webhook immediately when order state changes\n2. Endpoint validates request and schedules background task\n3. Background task retrieves full order details from Secutix API\n4. System creates/updates passes for tickets\n5. Push notifications sent to customer devices\n\n## Background Processing\nTasks are queued with correlation IDs for:\n- Retry handling on failures\n- Deduplication of rapid-fire updates\n- Performance monitoring\n\n## Use Cases\n- Generate event tickets as wallet passes\n- Update pass when ticket validated at gate\n- Cancel passes for refunded orders\n- Multi-ticket orders (family packages)","parameters":[{"name":"tenantId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Order change request with token, state, and ticket/movement IDs.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderChangeRequest"}},"text/json":{"schema":{"$ref":"#/components/schemas/OrderChangeRequest"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/OrderChangeRequest"}}}},"responses":{"200":{"description":"Order change queued for processing."},"400":{"description":"Missing or invalid order token.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"500":{"description":"Unexpected server error."}}}}},"components":{"schemas":{"OrderChangeRequest":{"required":["lastUpdate","orderSecretToken","state"],"type":"object","properties":{"ticketId":{"type":["null","integer"],"description":"Ticket identifier from Secutix, when available.","format":"int64"},"saleMovementId":{"type":["null","integer"],"description":"Sale movement identifier from Secutix, when available.","format":"int64"},"orderSecretToken":{"type":"string","description":"Secret token identifying the order."},"state":{"type":"string","description":"Current state reported by Secutix (PAID, CANCELLED, VALIDATED, etc.)."},"lastUpdate":{"type":"string","description":"Last update timestamp provided by Secutix."}},"additionalProperties":false},"ProblemDetails":{"type":"object","properties":{"type":{"type":["null","string"]},"title":{"type":["null","string"]},"status":{"type":["null","integer"],"format":"int32"},"detail":{"type":["null","string"]},"instance":{"type":["null","string"]}},"additionalProperties":{}},"HttpValidationProblemDetails":{"type":"object","allOf":[{"$ref":"#/components/schemas/ProblemDetails"}],"properties":{"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}},"additionalProperties":{}}}}}
```
