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 um 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 der 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 ausgefü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 Zeichenketten in JSON.
  • Seriennummern: Die serialNumber wird immer vom Server zugewiesen, wenn ein Pass erstellt wird. Jeder Wert, den Sie bei der Erstellung senden, wird ignoriert; sie identifiziert den Pass für alle späteren Operationen.

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}/registrationsFür einen Pass registrierte Geräte auflisten
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 seine vom Server zugewiesene Seriennummer zurück.

POST /api/pass/create

Anfragekörper

Anchor link to
ParameterTypErforderlichBeschreibung
passobjectJaDas Pass-Objekt, das den Pass beschreibt.
imagesarray of objectsNeinPass-Bilder (Symbol, Logo usw.). icon und logo sind für einen gültigen Pass erforderlich.
userIdstringJaDie Pushwoosh User ID, für die der Pass ausgestellt wird.
applicationCodestringJaDer Pushwoosh-Anwendungscode.
Beispiel für eine Anfrage
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
serialNumberstringVom 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).
messagestringErgebnismeldung.
Beispiel für eine Antwort
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

Anfragekörper

Anchor link to
ParameterTypErforderlichBeschreibung
passobjectJaDas zu validierende Pass-Objekt.
FeldTypBeschreibung
validbooleanOb der Pass die Validierung besteht.
errorsarray of stringsBlockierende Probleme, die behoben werden müssen.
warningsarray of stringsNicht 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 ruft dann die aktualisierte Version ab und installiert sie im Hintergrund.

POST /api/pass/update/{serialNumber}

Pfadparameter

Anchor link to
ParameterTypBeschreibung
serialNumberstringDie Seriennummer, die bei der Erstellung des Passes zurückgegeben wurde.

Anfragekörper

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

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

FeldTypBeschreibung
successbooleanOb das Update erfolgreich war.
updateTagintegerNeues Update-Tag (ein Unix-Zeitstempel).
messagestringErgebnismeldung.

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
applicationCodestringJaDer Pushwoosh-Anwendungscode.
orderBystringNeinSortierfeld: UPDATED (Standard) oder CREATED.
orderDirectionstringNeinSortierrichtung: DESC (Standard, neueste zuerst) oder ASC.
pageintegerNeinNullbasierter Seitenindex. Standard ist 0.
perPageintegerNeinSeitengröße. 0 oder weggelassen verwendet den Server-Standard.
FeldTypBeschreibung
passesarray of objectsDie aktuelle Seite der Pass-Datensätze.
pageintegerDer zurückgegebene Seitenindex.
perPageintegerDie für diese Antwort verwendete Seitengröße.
totalintegerGesamtzahl der Pässe für die Anwendung über alle Seiten hinweg.
Beispiel für eine Antwort
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
applicationCodestringDer Pushwoosh-Anwendungscode.
serialNumberstringDie Seriennummer des Passes.

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

Einen Pass herunterladen

Anchor link to

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

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

FeldTypBeschreibung
pkpassDatastring (Base64)Die .pkpass-Datei.
filenamestringVorgeschlagener Dateiname.

Einen Pass löschen

Anchor link to

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

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

FeldTypBeschreibung
successbooleanOb der Pass gelöscht wurde.
messagestringErgebnismeldung.

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
deviceLibraryIdentifierstringApple-Gerätebibliotheks-Identifikator.
pushTokenstringDas Pass-Push-Token für das Gerät.

Konfiguration abrufen

Anchor link to

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

GET /api/config?applicationCode=XXXXX-XXXXX

FeldTypBeschreibung
teamIdentifierstringApple Team ID aus dem Zertifikat.
passTypeIdentifierstringPass Type ID aus dem Zertifikat.
organizationNamestringOrganisationsname aus dem Zertifikat.
hasCertificatebooleanOb ein Zertifikat konfiguriert ist.
webServiceUrlstringBasis-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

Um Benutzern das Hinzufügen eines Passes durch Scannen eines QR-Codes (oder Tippen auf einen Link) zu ermöglichen, kodieren Sie die Installations-URL des Passes in einen QR-Code. Die URL wird aus Werten erstellt, die Sie bereits von der API zurückerhalten:

{webServiceUrl}/v1/passes/{passTypeIdentifier}/{serialNumber}?token={authenticationToken}
URL-TeilWoher beziehen
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 den neuesten .pkpass herunter und Wallet fordert ihn auf, ihn hinzuzufügen – was auch das Gerät für Updates registriert.

Objektreferenz

Anchor link to

Pass-Objekt

Anchor link to
FeldTypBeschreibung
formatVersionintegerPass-Formatversion. Standard ist 1.
passTypeIdentifierstringApple Pass Type ID (pass.com.yourcompany.passtype). Standardwert aus dem Zertifikat.
serialNumberstringWird vom Server bei der Erstellung zugewiesen; identifiziert den Pass.
teamIdentifierstringApple Team ID. Standardwert aus dem Zertifikat.
organizationNamestringOrganisation, die auf dem Pass angezeigt wird. Standardwert aus dem Zertifikat.
descriptionstringVon Menschen lesbare Beschreibung (von Apple gefordert).
boardingPass / coupon / eventTicket / storeCard / genericobjectDer Pass-Stil. Genau einer muss gesetzt sein. Siehe Feldgruppen.
backgroundColorstringHintergrundfarbe, rgb(r, g, b).
foregroundColorstringVordergrundfarbe (Text), rgb(r, g, b).
labelColorstringFarbe der Feldbeschriftung, rgb(r, g, b).
logoTextstringText, der neben dem Logo angezeigt wird.
suppressStripShinebooleanDeaktiviert den Glanzeffekt auf dem Streifenbild.
barcodesarrayBarcodes, die auf dem Pass angezeigt werden.
locationsarrayOrte, die den Pass relevant machen.
beaconsarrayBeacons, die den Pass relevant machen.
relevantDatestringISO 8601-Datum, an dem der Pass relevant wird.
maxDistanceintegerMaximale Entfernung (in Metern) für die Ortsrelevanz.
expirationDatestringISO 8601-Ablaufdatum.
voidedbooleanMarkiert den Pass als ungültig.
groupingIdentifierstringGruppiert zusammengehörige Pässe (Veranstaltungstickets/Bordkarten).
userInfoobject (map)Beliebige Schlüssel/Wert-App-Daten.

Feldgruppen-Objekt

Anchor link to

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

FeldTypBeschreibung
headerFieldsarrayWird in der Kopfzeile des Passes angezeigt (sichtbar, wenn in Wallet gestapelt).
primaryFieldsarrayDie prominentesten Felder.
secondaryFieldsarrayUnterhalb der primären Felder.
auxiliaryFieldsarrayZusätzliche Felder unterhalb der 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
keystringEindeutiger Feldschlüssel innerhalb des Passes.
labelstringFeldbeschriftung.
valuestringFeldwert (Text oder Zahl als Zeichenkette).
changeMessagestringNachricht, die angezeigt wird, wenn sich der Wert ändert (verwenden Sie %@ als Platzhalter).
textAlignmentstringPKTextAlignment-Wert.
dateStyle / timeStylestringPKDateStyle für Datums-/Zeitformatierung.
isRelativebooleanDas Datum relativ zu jetzt anzeigen.
numberStylestringPKNumberStyle für Zahlenformatierung.
currencyCodestringISO 4217-Währungscode.
dataDetectorTypesarray of stringsDatendetektoren, die auf den Wert angewendet werden sollen.

Barcode-Objekt

Anchor link to
FeldTypBeschreibung
formatstringPKBarcodeFormatQR, PKBarcodeFormatPDF417, PKBarcodeFormatAztec oder PKBarcodeFormatCode128.
messagestringIm Barcode kodierte Daten.
messageEncodingstringTextkodierung, typischerweise iso-8859-1.
altTextstringText, der unter dem Barcode angezeigt wird.

Orts-Objekt

Anchor link to
FeldTypBeschreibung
latitudenumberBreitengrad.
longitudenumberLängengrad.
altitudenumberHöhe in Metern.
relevantTextstringText, der auf dem Sperrbildschirm in der Nähe dieses Ortes angezeigt wird.

Beacon-Objekt

Anchor link to
FeldTypBeschreibung
proximityUuidstringiBeacon Proximity-UUID.
majorintegerMajor-Wert.
minorintegerMinor-Wert.
relevantTextstringText, der auf dem Sperrbildschirm in der Nähe dieses Beacons angezeigt wird.

Pass-Bild-Objekt

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

Pass-Datensatz-Objekt

Anchor link to

Wird von list/get-Endpunkten zurückgegeben.

FeldTypBeschreibung
serialNumberstringSeriennummer des Passes.
passTypeIdentifierstringPass Type ID.
organizationNamestringOrganisationsname.
descriptionstringPass-Beschreibung.
createdAtstringErstellungszeitstempel (RFC 3339).
updatedAtstringZeitstempel der letzten Aktualisierung (RFC 3339).
updateTagintegerAktuelles Update-Tag.
passobjectDas vollständige Pass-Objekt zur Bearbeitung.
userIdstringPushwoosh User ID, für die der Pass ausgestellt wurde.