API-Schnittstelle

API-Schnittstelle

Das Plugin stellt eine Admin-REST-API für externe Systeme (z.B. Ticketscanner, Einlasskontrolle) bereit.

Vollständige API-Referenz: shopware.stoplight.io – Authentication

Authentifizierung

Client Credentials

POST /api/oauth/token
{
  "grant_type": "client_credentials",
  "client_id": "<client_id>",
  "client_secret": "<client_secret>"
}

Password Grant

POST /api/oauth/token
{
  "client_id": "administration",
  "grant_type": "password",
  "scopes": "write",
  "username": "<username>",
  "password": "<password>"
}

Response:

{
  "token_type": "Bearer",
  "expires_in": 600,
  "access_token": "...",
  "refresh_token": "..."
}

Routen

App-API aktivieren

GET /api/fgits/tickets/api/activate
Authorization: Bearer <access_token>

Sendet eine Aktivierungs-E-Mail mit QR-Code an die E-Mail-Adresse des authentifizierten Benutzers.

Response:

{ "status": "OK" }

Events abrufen

GET /api/fgits/tickets/api/events
Authorization: Bearer <access_token>

Parameter:

Parameter

Typ

Pflicht

Beschreibung

`timezone`

int (0/1)

nein

`1` = Zeitzone aus Plugin-Konfiguration für `datetime` verwenden (ab v3.4.7)

Gibt Informationen über Ticket-Events (Produkte mit Ticket-Markierung) aus.

Response:

{
  "data": [
    {
      "id": "abc123...",
      "name": "Konzert 2026",
      "datetime": "2026-06-01T18:00:00+02:00",
      "createdAt": "2025-01-15T10:00:00+00:00"
    }
  ],
  "success": true
}

Tickets abrufen

GET /api/fgits/tickets/api/tickets
Authorization: Bearer <access_token>

Parameter:

Parameter

Typ

Pflicht

Beschreibung

`event_ids`

array

nein

Filtert Tickets auf bestimmte Event-IDs

`extended`

int (0/1)

nein

`1` = Gibt zusätzlich `event_name` und `event_datetime` aus (ab v3.4.6)

`timezone`

int (0/1)

nein

`1` = Zeitzone aus Plugin-Konfiguration verwenden (ab v3.4.7)

Response (extended: 0):

{
  "data": [
    {
      "id": "uuid...",
      "ticketId": "100001000001123454",
      "createdAt": "2026-03-01T10:00:00+00:00",
      "personalizedFullname": "Max Mustermann",
      "personalizedEmail": "max@example.com",
      "personalizedCustomFields": [],
      "customerFullname": "Max Mustermann",
      "checkInDatetime": null,
      "active": true,
      "event_id": "product-uuid..."
    }
  ],
  "success": true
}

Response (extended: 1): Zusätzlich:

{
  "event_name": "Konzert 2026",
  "event_datetime": "2026-06-01T18:00:00+02:00"
}

Ticket scannen

POST /api/fgits/tickets/api/tickets
Authorization: Bearer <access_token>
Content-Type: application/json

Body:

Parameter

Typ

Pflicht

Beschreibung

`ticket_id`

string

ja

Die Ticketnummer (z.B. SSCC-18-Code oder UUID-basierter Hash)

`event_ids`

array

nein

Filtert auf bestimmte Events

`check_in`

int (0/1)

nein

`0` = Ticket nicht als gescannt markieren (Standard: 1) (ab v3.4.6)

`extended`

int (0/1)

nein

`1` = Gibt zusätzlich Event-Infos zurück (ab v3.4.6)

`timezone`

int (0/1)

nein

`1` = Zeitzone aus Plugin-Konfiguration verwenden (ab v3.4.7)

Gibt Informationen über das Ticket aus und markiert es standardmäßig als gescannt (Check-in).

Wenn das Ticket bereits gescannt oder deaktiviert wurde, wird "success": false zurückgegeben.

Response (extended: 0):

{
  "data": {
    "id": "uuid...",
    "ticketId": "100001000001123454",
    "createdAt": "2026-03-01T10:00:00+00:00",
    "personalizedFullname": "Max Mustermann",
    "personalizedEmail": "max@example.com",
    "personalizedCustomFields": [],
    "customerFullname": "Max Mustermann",
    "checkInDatetime": "2026-06-01T18:05:00+02:00",
    "active": true,
    "event_id": "product-uuid..."
  },
  "success": true
}

`success: false` wenn:

  • Ticket bereits gescannt (`checkInDatetime` ist gesetzt)

  • Ticket deaktiviert (`active: false`)

  • Ticket nicht gefunden

Hinweis zu Ticketnummern (SSCC-18, ab v3.9.0)

Wenn das SSCC-18-Format aktiviert ist, besteht die `ticketId` aus 18 Stellen:

[Event-ID 6-stellig][Sequenz 6-stellig][Zufall 5-stellig][GS1-Prüfziffer 1-stellig]

Beispiel: 100001000001123454

  • `100001` — Event-ID

  • `000001` — Sequenznummer (atomar, eindeutig pro Event)

  • `12345` — Zufallskomponente

  • `4` — GS1 Modulo-10 Prüfziffer

Die Sequenzvergabe ist transaktionssicher und parallelitätssicher (validiert mit 50 gleichzeitigen Prozessen ohne Duplikate).

War das hilfreich?