This documentation is currently under development. Certain sections are not yet complete and will be added shortly.
For the complete documentation index, see llms.txt. This page is also available as Markdown.

Secutix

Get the Secutix configuration

get
/api/{tenantId}/admin/extensions/secutix

Returns the tenant's Secutix configuration. The operator secret is never returned; connection.hasSecret tells whether one is stored.

Required scopes
This endpoint requires the following scopes:
Authorizations
OAuth2implicitRequired
Authorization URL:
Path parameters
tenantIdstringRequired
Responses
200

Configuration returned.

The tenant's stored Secutix configuration, without the operator secret.

get/api/{tenantId}/admin/extensions/secutix
GET /api/{tenantId}/admin/extensions/secutix HTTP/1.1
Host: app.neostore.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "connection": {
    "url": "https://example.com",
    "institution": "text",
    "operator": "text",
    "partner": "text",
    "hasSecret": true
  },
  "pass": {
    "defaultPassTypes": {
      "default": "text",
      "membership": null,
      "seasonticket": null,
      "event": null,
      "match": null,
      "visitPass": null,
      "openPass": null,
      "voucher": null,
      "donation": null,
      "service": null,
      "openProduct": null
    },
    "updatePrintingStatus": false
  },
  "webhook": {
    "searchForContactIds": false,
    "updateMetadata": true
  },
  "rateLimit": {
    "enabled": true,
    "permitLimit": 400,
    "windowSeconds": 60,
    "retryAfterSeconds": 60,
    "queueAcquireTimeoutSeconds": 0,
    "queueRetryDelaySeconds": 1
  }
}

Set Secutix configuration

put
/api/{tenantId}/admin/extensions/secutix

Replaces the tenant's Secutix configuration. connection and pass are taken as sent; omit connection.secret, connection.partner, webhook or rateLimit to keep what is stored. A first save without a partner uses neostore.

Required scopes
This endpoint requires the following scopes:
Authorizations
OAuth2implicitRequired
Authorization URL:
Path parameters
tenantIdstringRequired
Body

Secutix configuration to store for the tenant.

Responses
204

Configuration saved.

No content

put/api/{tenantId}/admin/extensions/secutix
PUT /api/{tenantId}/admin/extensions/secutix HTTP/1.1
Host: app.neostore.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 569

{
  "connection": {
    "url": "https://xxx.pp-ws.secutix.com",
    "institution": "text",
    "operator": "text",
    "partner": null,
    "secret": null
  },
  "pass": {
    "defaultPassTypes": {
      "default": "text",
      "membership": null,
      "seasonticket": null,
      "event": null,
      "match": null,
      "visitPass": null,
      "openPass": null,
      "voucher": null,
      "donation": null,
      "service": null,
      "openProduct": null
    },
    "updatePrintingStatus": false
  },
  "webhook": {
    "searchForContactIds": false,
    "updateMetadata": true
  },
  "rateLimit": {
    "enabled": true,
    "permitLimit": 400,
    "windowSeconds": 60,
    "retryAfterSeconds": 60,
    "queueAcquireTimeoutSeconds": 0,
    "queueRetryDelaySeconds": 1
  }
}

No content

Get the public tickets page URL of the Secutix order behind a file.

get
/api/{tenantId}/external/secutix/orders/getTicketsUrl/{fileId}

Returns, as plain text, the absolute URL of the tenant's public tickets page for the first order of the Secutix file (…/{tenantId}/tickets?ids.secutix.orderToken={orderToken}). That page is where the holder adds the order's tickets to a wallet.

Required scopes
This endpoint requires the following scopes:
Authorizations
OAuth2implicitRequired
Authorization URL:
Path parameters
fileIdinteger · int64Required

Secutix file identifier.

tenantIdstringRequired
Responses
200

URL of the tickets page.

No content

get/api/{tenantId}/external/secutix/orders/getTicketsUrl/{fileId}
GET /api/{tenantId}/external/secutix/orders/getTicketsUrl/{fileId} HTTP/1.1
Host: app.neostore.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*

No content

Queue the refresh of the passes of a changed Secutix order.

post
/api/{tenantId}/webhooks/listeners/secutix/orders

Returns at once; the passes are updated afterwards. Emits the Secutix:Order:Updated event, then updates the existing passes concerned by the change:

  • the pass of saleMovementId;

  • the passes of every movement and contact of the order, when saleMovementId is omitted or the tenant's webhook.searchForContactIds setting is on.

With webhook.updateMetadata on, each pass also has its data and pass template refreshed from Secutix. No pass is created.

Path parameters
tenantIdstringRequired
Body

Order change notification, as Secutix sends it.

ticketIdinteger · nullableOptional

Secutix ticket concerned by the change.

saleMovementIdinteger · nullableOptional

Secutix sale movement (one ticket line of the order) concerned by the change. Its pass is the one updated. Omitted, the passes of all movements and contacts of the order identified by orderSecretToken are updated.

orderSecretTokenstringRequired

Secret token of the Secutix order. Required and non-empty, otherwise 400.

statestringRequired

Order state as reported by Secutix. Carried in the Secutix:Order:Updated event.

lastUpdatestringRequired

Time of the change, as Secutix formats it.

Responses
200

Order change accepted. No body.

No content

post/api/{tenantId}/webhooks/listeners/secutix/orders
POST /api/{tenantId}/webhooks/listeners/secutix/orders HTTP/1.1
Host: app.neostore.cloud
Content-Type: application/json
Accept: */*
Content-Length: 100

{
  "ticketId": null,
  "saleMovementId": null,
  "orderSecretToken": "text",
  "state": "text",
  "lastUpdate": "text"
}

No content

Last updated