Zum Inhalt springen

Apple Wallet PassKit API

Mit der PassKit Designer API können Sie Apple Wallet-Pässe programmgesteuert erstellen, aktualisieren, herunterladen und verwalten. Sie unterstützt dieselben Vorgänge, die der Pass-Builder im Control Panel durchführt. Verwenden Sie sie, um Kundenkarten, Gutscheine, Veranstaltungstickets, Bordkarten und Kundenkarten auszustellen und Live-Updates an Pässe zu senden, die bereits auf den Geräten Ihrer Benutzer installiert sind.

https://apple-passkit.svc-nue.pushwoosh.com

Alle Endpunkte werden über HTTPS bereitgestellt. Anfragen und Antworten verwenden application/json, sofern nicht anders angegeben.

Authentifizierung

Anchor link to

Jede Anfrage muss einen Authorization-Header mit Ihrem Pushwoosh API-Zugriffstoken enthalten:

Authorization: Token <api-token>

Das Konto, dem das Token gehört, muss auch Eigentümer der Anwendung sein, auf die sich applicationCode bezieht. Eine Anfrage für eine Anwendung, die zu einem anderen Konto gehört, gibt 403 Forbidden zurück.

Konventionen

Anchor link to
  • Feldnamen: JSON-Felder verwenden lowerCamelCase (zum Beispiel passTypeIdentifier, serialNumber, backgroundColor).
  • Nicht gefüllte Felder: Antworten enthalten alle Felder, auch wenn sie leer sind oder den Wert Null haben.
  • Binärdaten: bytes-Felder wie pkpassData und Bild-data sind Base64-kodierte Zeichenfolgen in JSON.
  • Seriennummern: Die serialNumber wird immer vom Server zugewiesen, wenn ein Pass erstellt wird. Jeder Wert, den Sie beim Erstellen senden, wird ignoriert; er identifiziert den Pass für alle späteren Vorgänge.

Fehlerantworten

Anchor link to

Die API bildet interne Statuscodes auf HTTP-Statuscodes ab:

HTTP-StatusBedeutung
400 Bad RequestUngültiges Argument – ein erforderliches Feld fehlt oder ist fehlerhaft.
401 UnauthorizedFehlender oder ungültiger Authorization-Header.
403 ForbiddenDie Anwendung gehört nicht zum Konto des Aufrufers.
404 Not FoundDer Pass, die Vorlage oder die Anwendung wurde nicht gefunden.
503 Service UnavailableDer Dienst ist ausgelastet oder vorübergehend nicht verfügbar.
MethodePfadBeschreibung
POST/api/pass/validateEine Pass-Konfiguration validieren
POST/api/pass/createEinen neuen .pkpass erstellen
POST/api/pass/update/{serialNumber}Einen bestehenden Pass aktualisieren und Geräte benachrichtigen
GET/api/passesAlle Pässe für eine Anwendung auflisten
GET/api/pass/{applicationCode}/{serialNumber}Einen einzelnen Pass abrufen
GET/api/pass/{applicationCode}/{serialNumber}/downloadDen .pkpass eines bestehenden Passes herunterladen
DELETE/api/pass/{applicationCode}/{serialNumber}Einen Pass löschen
GET/api/pass/{serialNumber}/registrationsGeräte auflisten, die für einen Pass registriert sind
GET/api/configDie PassKit-Konfiguration der Anwendung abrufen
GET/api/templatesVerfügbare Pass-Vorlagen auflisten
GET/api/templates/{filename}Eine einzelne Vorlage abrufen

Einen Pass erstellen

Anchor link to

Erzeugt, signiert und speichert einen neuen Pass und gibt dann dessen vom Server zugewiesene Seriennummer zurück.

POST /api/pass/create

Anfrage-Body

Anchor link to
ParameterTypErforderlichBeschreibung
passObjektJaDas Pass-Objekt, das den Pass beschreibt.
imagesArray von ObjektenNeinPass-Bilder (Symbol, Logo usw.). icon und logo sind für einen gültigen Pass erforderlich.
userIdZeichenfolgeJaDie Pushwoosh-Benutzer-ID, für die der Pass ausgestellt wird.
applicationCodeZeichenfolgeJaDer Pushwoosh-Anwendungscode.
Anfragebeispiel
Anchor link to
{
"applicationCode": "XXXXX-XXXXX",
"userId": "user-123",
"pass": {
"description": "Acme loyalty card",
"logoText": "Acme",
"backgroundColor": "rgb(60, 65, 76)",
"foregroundColor": "rgb(255, 255, 255)",
"labelColor": "rgb(255, 255, 255)",
"storeCard": {
"primaryFields": [
{ "key": "balance", "label": "BALANCE", "value": "1200 pts" }
],
"secondaryFields": [
{ "key": "member", "label": "MEMBER", "value": "Jane Doe" }
]
},
"barcodes": [
{
"format": "PKBarcodeFormatQR",
"message": "1234567890",
"messageEncoding": "iso-8859-1"
}
]
},
"images": [
{ "imageType": "icon", "data": "<base64>", "contentType": "image/png" },
{ "imageType": "logo", "data": "<base64>", "contentType": "image/png" }
]
}
FeldTypBeschreibung
serialNumberZeichenfolgeVom Server zugewiesene eindeutige Identität des erstellten Passes. Verwenden Sie sie, um den Pass abzurufen (Einen Pass abrufen) oder den .pkpass herunterzuladen (Einen Pass herunterladen).
messageZeichenfolgeErgebnismeldung.
Antwortbeispiel
Anchor link to
{
"serialNumber": "a1b2c3d4-1234-5678-9abc-def012345678",
"message": "Pass created successfully"
}

Einen Pass validieren

Anchor link to

Überprüft eine Pass-Konfiguration anhand der Spezifikationen von Apple, ohne eine Datei zu erstellen. Nützlich vor dem Aufruf von create.

POST /api/pass/validate

Anfrage-Body

Anchor link to
ParameterTypErforderlichBeschreibung
passObjektJaDas zu validierende Pass-Objekt.
FeldTypBeschreibung
validbooleschOb der Pass die Validierung besteht.
errorsArray von ZeichenfolgenBlockierende Probleme, die behoben werden müssen.
warningsArray von ZeichenfolgenNicht blockierende Hinweise.

Einen Pass aktualisieren

Anchor link to

Generiert den Pass mit neuem Inhalt neu, signiert ihn erneut, erhöht sein Update-Tag und sendet eine stille Push-Benachrichtigung an jedes Gerät, das den Pass registriert hat. iOS holt dann die aktualisierte Version im Hintergrund ab und installiert sie.

POST /api/pass/update/{serialNumber}

Pfadparameter

Anchor link to
ParameterTypBeschreibung
serialNumberZeichenfolgeDie Seriennummer, die beim Erstellen des Passes zurückgegeben wurde.

Anfrage-Body

Anchor link to
ParameterTypErforderlichBeschreibung
updatesObjektJaDas vollständige Pass-Objekt mit dem neuen Inhalt.
applicationCodeZeichenfolgeJaDer Pushwoosh-Anwendungscode.

Die serialNumber (aus dem Pfad) und das Authentifizierungstoken des Passes werden vom Server beibehalten, unabhängig davon, was Sie senden.

FeldTypBeschreibung
successbooleschOb die Aktualisierung erfolgreich war.
updateTagGanzzahlNeues Update-Tag (ein Unix-Zeitstempel).
messageZeichenfolgeErgebnismeldung.

Pässe auflisten

Anchor link to

Gibt eine paginierte, sortierte Liste der für eine Anwendung gespeicherten Pässe zurück.

GET /api/passes?applicationCode=XXXXX-XXXXX&page=0&perPage=20

Abfrageparameter

Anchor link to
ParameterTypErforderlichBeschreibung
applicationCodeZeichenfolgeJaDer Pushwoosh-Anwendungscode.
orderByZeichenfolgeNeinSortierfeld: UPDATED (Standard) oder CREATED.
orderDirectionZeichenfolgeNeinSortierrichtung: DESC (Standard, neueste zuerst) oder ASC.
pageGanzzahlNeinNullbasierter Seitenindex. Standard ist 0.
perPageGanzzahlNeinSeitengröße. 0 oder weggelassen verwendet den Server-Standard.
FeldTypBeschreibung
passesArray von ObjektenDie aktuelle Seite der Pass-Datensätze.
pageGanzzahlDer zurückgegebene Seitenindex.
perPageGanzzahlDie für diese Antwort verwendete Seitengröße.
totalGanzzahlGesamtzahl der Pässe für die Anwendung über alle Seiten hinweg.
Antwortbeispiel
Anchor link to
{
"passes": [ /* pass records */ ],
"page": 0,
"perPage": 20,
"total": 137
}

Einen Pass abrufen

Anchor link to

Gibt einen einzelnen gespeicherten Pass zurück, einschließlich seines vollständigen Pass-Objekts.

GET /api/pass/{applicationCode}/{serialNumber}

Pfadparameter

Anchor link to
ParameterTypBeschreibung
applicationCodeZeichenfolgeDer Pushwoosh-Anwendungscode.
serialNumberZeichenfolgeDie Seriennummer des Passes.

Gibt { "pass": { ... } } zurück, einen einzelnen Pass-Datensatz.

Einen Pass herunterladen

Anchor link to

Gibt die gespeicherte .pkpass-Datei eines bestehenden Passes zurück.

GET /api/pass/{applicationCode}/{serialNumber}/download

FeldTypBeschreibung
pkpassDataZeichenfolge (Base64)Die .pkpass-Datei.
filenameZeichenfolgeVorgeschlagener Dateiname.

Einen Pass löschen

Anchor link to

Entfernt einen Pass-Datensatz und seine gespeicherte .pkpass-Datei.

DELETE /api/pass/{applicationCode}/{serialNumber}

FeldTypBeschreibung
successbooleschOb der Pass gelöscht wurde.
messageZeichenfolgeErgebnismeldung.

Pass-Registrierungen abrufen

Anchor link to

Listet die Geräte auf, die den Pass hinzugefügt haben und für Updates registriert sind.

GET /api/pass/{serialNumber}/registrations?applicationCode=XXXXX-XXXXX

Gibt { "registrations": [ ... ] } zurück, wobei jedes Element Folgendes enthält:

FeldTypBeschreibung
deviceLibraryIdentifierZeichenfolgeApple-Gerätebibliotheks-Identifikator.
pushTokenZeichenfolgeDas Pass-Push-Token für das Gerät.

Konfiguration abrufen

Anchor link to

Gibt die für eine Anwendung aus ihrem Zertifikat aufgelöste PassKit-Konfiguration zurück.

GET /api/config?applicationCode=XXXXX-XXXXX

FeldTypBeschreibung
teamIdentifierZeichenfolgeApple Team ID aus dem Zertifikat.
passTypeIdentifierZeichenfolgePass Type ID aus dem Zertifikat.
organizationNameZeichenfolgeOrganisationsname aus dem Zertifikat.
hasCertificatebooleschOb ein Zertifikat konfiguriert ist.
webServiceUrlZeichenfolgeBasis-URL des Pass-Webdienstes. Clients erstellen einen Installationslink, indem sie /v1/passes/{passType}/{serial}?token={authToken} anhängen.

Listen Sie die verfügbaren Pass-Vorlagen auf oder rufen Sie eine als Pass-Objekt ab, das Sie als Ausgangspunkt verwenden können.

GET /api/templates — gibt { "templates": [ { "filename", "name", "description", "style" } ] } zurück.

GET /api/templates/{filename} — gibt { "template": { ...pass object... } } zurück.

Einen Pass als QR-Code teilen

Anchor link to

Damit Benutzer einen Pass durch Scannen eines QR-Codes (oder Tippen auf einen Link) hinzufügen können, kodieren Sie die Installations-URL des Passes in einen QR-Code. Die URL wird aus Werten zusammengestellt, die Sie bereits von der API zurückerhalten:

{webServiceUrl}/v1/passes/{passTypeIdentifier}/{serialNumber}?token={authenticationToken}
URL-TeilWoher zu bekommen
webServiceUrlGET /api/configwebServiceUrl
passTypeIdentifierPass-Datensatzpass.passTypeIdentifier (aus Liste/Abruf)
serialNumberPass-DatensatzserialNumber
authenticationTokenPass-Datensatzpass.authenticationToken

Beispiel:

https://apple-passkit.svc-nue.pushwoosh.com/v1/passes/pass.com.acme.loyalty/a1b2c3d4-1234-5678-9abc-def012345678?token=AbC123XyZ

Rendern Sie diese URL mit einer beliebigen QR-Bibliothek als QR-Code. Wenn ein Benutzer ihn scannt, öffnet sein Gerät den Link, lädt die neueste .pkpass-Datei herunter und Wallet fordert ihn auf, sie hinzuzufügen – was auch das Gerät für Updates registriert.

Objektreferenz

Anchor link to

Pass-Objekt

Anchor link to
FeldTypBeschreibung
formatVersionGanzzahlVersion des Pass-Formats. Standard ist 1.
passTypeIdentifierZeichenfolgeApple Pass Type ID (pass.com.yourcompany.passtype). Standardmäßig aus dem Zertifikat.
serialNumberZeichenfolgeWird vom Server beim Erstellen zugewiesen; identifiziert den Pass.
teamIdentifierZeichenfolgeApple Team ID. Standardmäßig aus dem Zertifikat.
organizationNameZeichenfolgeOrganisation, die auf dem Pass angezeigt wird. Standardmäßig aus dem Zertifikat.
descriptionZeichenfolgeMenschenlesbare Beschreibung (von Apple gefordert).
boardingPass / coupon / eventTicket / storeCard / genericObjektDer Stil des Passes. Genau einer muss gesetzt sein. Siehe Feldgruppen.
backgroundColorZeichenfolgeHintergrundfarbe, rgb(r, g, b).
foregroundColorZeichenfolgeVordergrundfarbe (Text), rgb(r, g, b).
labelColorZeichenfolgeFarbe der Feldbeschriftung, rgb(r, g, b).
logoTextZeichenfolgeText, der neben dem Logo angezeigt wird.
suppressStripShinebooleschDeaktiviert den Glanzeffekt auf dem Streifenbild.
barcodesArrayBarcodes, die auf dem Pass angezeigt werden.
locationsArrayOrte, die den Pass relevant machen.
beaconsArrayBeacons, die den Pass relevant machen.
relevantDateZeichenfolgeISO 8601-Datum, an dem der Pass relevant wird.
maxDistanceGanzzahlMaximale Entfernung (Meter) für die Ortsrelevanz.
expirationDateZeichenfolgeISO 8601-Ablaufdatum.
voidedbooleschMarkiert den Pass als ungültig.
groupingIdentifierZeichenfolgeGruppiert zusammengehörige Pässe (Veranstaltungstickets/Bordkarten).
userInfoObjekt (Map)Beliebige Schlüssel/Wert-App-Daten.

Feldgruppenobjekt

Anchor link to

Jeder Pass-Stil (boardingPass, coupon, eventTicket, storeCard, generic) gruppiert Felder in Bereiche:

FeldTypBeschreibung
headerFieldsArrayWird im Pass-Header angezeigt (sichtbar, wenn in Wallet gestapelt).
primaryFieldsArrayDie prominentesten Felder.
secondaryFieldsArrayUnter den primären Feldern.
auxiliaryFieldsArrayZusätzliche Felder unter den sekundären.
backFieldsArrayWird auf der Rückseite des Passes angezeigt.

boardingPass hat zusätzlich transitType (PKTransitTypeAir, PKTransitTypeTrain, PKTransitTypeBus, PKTransitTypeBoat oder PKTransitTypeGeneric).

Feld-Objekt

Anchor link to
FeldTypBeschreibung
keyZeichenfolgeEindeutiger Feldschlüssel innerhalb des Passes.
labelZeichenfolgeFeldbeschriftung.
valueZeichenfolgeFeldwert (Text oder Zahl als Zeichenfolge).
changeMessageZeichenfolgeNachricht, die angezeigt wird, wenn sich der Wert ändert (verwenden Sie %@ als Platzhalter).
textAlignmentZeichenfolgePKTextAlignment-Wert.
dateStyle / timeStyleZeichenfolgePKDateStyle für die Datums-/Zeitformatierung.
isRelativebooleschZeigt das Datum relativ zu jetzt an.
numberStyleZeichenfolgePKNumberStyle für die Zahlenformatierung.
currencyCodeZeichenfolgeISO 4217-Währungscode.
dataDetectorTypesArray von ZeichenfolgenDatendetektoren, die auf den Wert angewendet werden sollen.

Barcode-Objekt

Anchor link to
FeldTypBeschreibung
formatZeichenfolgePKBarcodeFormatQR, PKBarcodeFormatPDF417, PKBarcodeFormatAztec oder PKBarcodeFormatCode128.
messageZeichenfolgeIm Barcode kodierte Daten.
messageEncodingZeichenfolgeTextkodierung, typischerweise iso-8859-1.
altTextZeichenfolgeText, der unter dem Barcode angezeigt wird.

Ort-Objekt

Anchor link to
FeldTypBeschreibung
latitudeZahlBreitengrad.
longitudeZahlLängengrad.
altitudeZahlHöhe in Metern.
relevantTextZeichenfolgeText, der auf dem Sperrbildschirm in der Nähe dieses Ortes angezeigt wird.

Beacon-Objekt

Anchor link to
FeldTypBeschreibung
proximityUuidZeichenfolgeiBeacon Proximity UUID.
majorGanzzahlMajor-Wert.
minorGanzzahlMinor-Wert.
relevantTextZeichenfolgeText, der auf dem Sperrbildschirm in der Nähe dieses Beacons angezeigt wird.

Pass-Bild-Objekt

Anchor link to
FeldTypBeschreibung
imageTypeZeichenfolgeEines von icon, logo, strip, background, footer, thumbnail. icon und logo sind erforderlich.
dataZeichenfolge (Base64)Bild-Bytes.
contentTypeZeichenfolgeMIME-Typ, zum Beispiel image/png.

Pass-Datensatz-Objekt

Anchor link to

Wird von Listen-/Abruf-Endpunkten zurückgegeben.

FeldTypBeschreibung
serialNumberZeichenfolgeSeriennummer des Passes.
passTypeIdentifierZeichenfolgePass Type ID.
organizationNameZeichenfolgeOrganisationsname.
descriptionZeichenfolgePass-Beschreibung.
createdAtZeichenfolgeErstellungszeitstempel (RFC 3339).
updatedAtZeichenfolgeZeitstempel der letzten Aktualisierung (RFC 3339).
updateTagGanzzahlAktuelles Update-Tag.
passObjektDas vollständige Pass-Objekt zur Bearbeitung.
userIdZeichenfolgePushwoosh-Benutzer-ID, für die der Pass ausgestellt wurde.