Ressourcen
Organisationen
Jeder Organisationen-Endpunkt, mit dem Scope, den er durchsetzt, dem Körper, den er annimmt, einer lesbaren Antwort und den Ablehnungen, die er zurückgeben kann.
Organisationen auflisten, für die dieser Schlüssel handeln darf.
/organizations- Scope
- Kein Scope erforderlich
Idempotency-Key- Wird nicht akzeptiert
- Liefert
- 200
Fehler
Jede Ablehnung, die dieser Endpunkt zurückgeben kann, samt dem HTTP-Status, mit dem sie eintrifft.
curl "https://passportcraft.com/api/v1/organizations" \
-H "Authorization: Bearer $PASSPORTCRAFT_API_KEY"{
"object": "list",
"data": [
{
"object": "connection",
"organization_id": "8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2",
"name": "organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2",
"display_name": "Atelier Nord",
"link_status": null,
"scopes": [
"passports:read",
"passports:write",
"keys:admin"
],
"granted_at": "2026-07-14T11:02:19.004Z"
},
{
"object": "connection",
"organization_id": "3c59dc04-8f7b-4d0e-9c1a-5f2b6e7d8a90",
"name": "organizations/3c59dc04-8f7b-4d0e-9c1a-5f2b6e7d8a90",
"display_name": "Acme Apparel",
"link_status": "accepted",
"scopes": [
"passports:read",
"passports:write"
],
"granted_at": "2026-09-22T08:15:00.000Z"
}
],
"has_more": false,
"next_cursor": null
}GET /organizations
Einem Schlüssel Zugriff auf eine Kundenorganisation gewähren.
/organizations/{organization}/grants- Scope
- keys:admin
Idempotency-Key- Wird nicht akzeptiert
- Liefert
- 201
Pfadparameter
organizationZeichenkettePflichtDie Kundenorganisation. Der aufrufende Schlüssel benötigt keys:admin in seiner eigenen Organisation, und seine Organisation muss diesen Kunden verwalten; hier benötigt der Schlüssel keine Freigabe.
Anfragekörper
key_idZeichenkettePflichtDie öffentliche Kennung eines Schlüssels, der Ihrer Organisation gehört und denselben Modus hat wie der aufrufende Schlüssel, so wie GET /whoami sie in key_id angibt.
scopesArray aus ZeichenkettenPflichtWas der Schlüssel in dieser Organisation tun darf. Jeder Scope muss durch die eigenen Scopes des Schlüssels in seiner eigenen Organisation erlaubt sein (ein Schreib-Scope erlaubt auch den zugehörigen Lese-Scope); keys:admin wird für einen Kunden nie freigegeben.
Fehler
Jede Ablehnung, die dieser Endpunkt zurückgeben kann, samt dem HTTP-Status, mit dem sie eintrifft.
- 500configuration_error
- 403france_mandate_required
- 409grant_conflict
- 403grantor_not_seated
- 403insufficient_scope
- 500internal_error
- 401invalid_key
- 400invalid_request
- 401key_expired
- 409key_not_grantable
- 401key_revoked
- 401key_rotated
- 400mode_mismatch
- 404organization_not_found_or_not_granted
- 413payload_too_large
- 429rate_limited
- 404resource_not_found
- 422scope_exceeds_key
- 415unsupported_media_type
- 422validation_failed
- 400wildcard_not_supported
curl "https://passportcraft.com/api/v1/organizations/3c59dc04-8f7b-4d0e-9c1a-5f2b6e7d8a90/grants" \
-X POST \
-H "Authorization: Bearer $PASSPORTCRAFT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"key_id": "K3n9Qw2P",
"scopes": [
"passports:read",
"passports:write"
]
}'{
"object": "grant",
"organization_id": "3c59dc04-8f7b-4d0e-9c1a-5f2b6e7d8a90",
"key_id": "K3n9Qw2P",
"scopes": [
"passports:read",
"passports:write"
],
"granted_at": "2026-09-22T08:15:00.000Z"
}POST /organizations/3c59dc04-8f7b-4d0e-9c1a-5f2b6e7d8a90/grants
Den Zugriff eines Schlüssels auf eine einzelne Kundenorganisation beenden.
/organizations/{organization}/grants/{keyId}- Scope
- keys:admin
Idempotency-Key- Wird nicht akzeptiert
- Liefert
- 200
Pfadparameter
organizationZeichenkettePflichtDie Kundenorganisation. Der aufrufende Schlüssel benötigt keys:admin in seiner eigenen Organisation, und seine Organisation muss diesen Kunden verwalten; hier benötigt der Schlüssel keine Freigabe.
keyIdZeichenkettePflichtDie Kennung der Ressource. Behandeln Sie sie als undurchsichtige Zeichenkette.
Fehler
Jede Ablehnung, die dieser Endpunkt zurückgeben kann, samt dem HTTP-Status, mit dem sie eintrifft.
curl "https://passportcraft.com/api/v1/organizations/3c59dc04-8f7b-4d0e-9c1a-5f2b6e7d8a90/grants/K3n9Qw2P" \
-X DELETE \
-H "Authorization: Bearer $PASSPORTCRAFT_API_KEY"{
"object": "grant",
"organization_id": "3c59dc04-8f7b-4d0e-9c1a-5f2b6e7d8a90",
"key_id": "K3n9Qw2P",
"status": "revoked"
}DELETE /organizations/3c59dc04-8f7b-4d0e-9c1a-5f2b6e7d8a90/grants/K3n9Qw2P
Beschreiben, was dieser Schlüssel für diese Organisation tun darf.
/organizations/{organization}/capabilities- Scope
- passports:read
Idempotency-Key- Wird nicht akzeptiert
- Liefert
- 200
Pfadparameter
organizationZeichenkettePflichtDie Organisation, für die diese Anfrage handelt. Der Zugangsschlüssel muss dafür freigegeben sein.
Fehler
Jede Ablehnung, die dieser Endpunkt zurückgeben kann, samt dem HTTP-Status, mit dem sie eintrifft.
curl "https://passportcraft.com/api/v1/organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/capabilities" \
-H "Authorization: Bearer $PASSPORTCRAFT_API_KEY"{
"object": "list",
"data": [
{
"object": "capability",
"id": "passport_publishing",
"name": "organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/capabilities/passport_publishing",
"organization_id": "8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2",
"livemode": true,
"requested": true,
"allowed": true,
"verification_status": "valid",
"problems": [],
"detail": {
"plan_id": "pro",
"subscription_status": "trialing",
"publish_limit": 500,
"published_count": 37,
"per_passport_check": "organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/{id}/validate"
}
},
{
"object": "capability",
"id": "france_affichage_filing",
"name": "organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/capabilities/france_affichage_filing",
"organization_id": "8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2",
"livemode": true,
"requested": true,
"allowed": false,
"verification_status": "pending",
"problems": [
{
"code": "delegation_required",
"message": "The delegation is awaiting verification against the French portal.",
"type": "pending",
"remediating_actions": [
{
"code": "await_portal_verification",
"message": "No action is required. Poll this capability until verification completes."
}
]
}
],
"detail": {
"delegation_status": "pending",
"portal_brand_id": null,
"delegated_at": "2026-07-30T16:20:00.000Z",
"entitlement": "free_offer",
"free_filing_reason": "available",
"per_passport_requirements": [
"gtin_required",
"attestation_required"
],
"attestation_wording_version": "2026-09-19.1",
"per_passport_check": "organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/{id}/affichage",
"api_filing_supported": true,
"api_filing_scope": "filings:write"
}
},
{
"object": "capability",
"id": "document_upload",
"name": "organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/capabilities/document_upload",
"organization_id": "8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2",
"livemode": true,
"requested": true,
"allowed": true,
"verification_status": "valid",
"problems": [],
"detail": {
"document_limit": 50,
"documents_used": 12
}
},
{
"object": "capability",
"id": "live_api_writes",
"name": "organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/capabilities/live_api_writes",
"organization_id": "8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2",
"livemode": true,
"requested": true,
"allowed": false,
"verification_status": "invalid",
"problems": [
{
"code": "no_subscription",
"message": "Live API writes start when the trial becomes a paid subscription.",
"type": "invalid",
"remediating_actions": [
{
"code": "add_subscription",
"message": "Convert the trial to a paid subscription."
}
]
}
],
"detail": {
"subscription_status": "trialing",
"plan_id": "pro"
}
}
],
"has_more": false,
"next_cursor": null
}GET /organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/capabilities