İçeriğe geçin

Kaynaklar

Kuruluşlar

Her Kuruluşlar uç noktası; dayattığı kapsam, kabul ettiği gövde, okunabilir bir yanıt ve döndürebileceği ret yanıtlarıyla birlikte.

Bu anahtarın adına işlem yapabileceği kuruluşları listeler.

get/organizations
Kapsam
Kapsam gerekmez
Idempotency-Key
Kabul edilmez
Döndürür
200
İstek
curl "https://passportcraft.com/api/v1/organizations" \
  -H "Authorization: Bearer $PASSPORTCRAFT_API_KEY"
Yanıt · 200
{
  "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

Bir anahtara bir müşteri kuruluşuna erişim verir.

post/organizations/{organization}/grants
Kapsam
keys:admin
Idempotency-Key
Kabul edilmez
Döndürür
201

Yol parametreleri

organizationdizgeZorunlu

Müşteri kuruluşu. Çağrıyı yapan anahtarın kendi kuruluşunda keys:admin kapsamına sahip olması ve o kuruluşun bu müşteriyi yönetmesi gerekir; anahtarın burada bir yetkiye ihtiyacı yoktur.

İstek gövdesi

key_iddizgeZorunlu

Kuruluşunuza ait ve çağrıyı yapan anahtarla aynı modda olan bir anahtarın, GET /whoami yanıtında key_id alanında bildirilen herkese açık kimliği.

scopesdize dizisiZorunlu

Anahtarın bu kuruluşta neler yapabileceği. Her kapsama, anahtarın kendi kuruluşundaki kendi kapsamlarınca izin verilmiş olmalıdır (bir yazma kapsamı, ilgili okuma kapsamına da izin verir); keys:admin bir müşteri için hiçbir zaman verilmez.

Hatalar

Bu uç noktanın döndürebileceği tüm ret yanıtları, geldikleri durum koduyla birlikte.

İstek
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"
  ]
}'
Yanıt · 201
{
  "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

Bir anahtarın tek bir müşteri kuruluşuna erişimini sonlandırır.

delete/organizations/{organization}/grants/{keyId}
Kapsam
keys:admin
Idempotency-Key
Kabul edilmez
Döndürür
200

Yol parametreleri

organizationdizgeZorunlu

Müşteri kuruluşu. Çağrıyı yapan anahtarın kendi kuruluşunda keys:admin kapsamına sahip olması ve o kuruluşun bu müşteriyi yönetmesi gerekir; anahtarın burada bir yetkiye ihtiyacı yoktur.

keyIddizgeZorunlu

Kaynağın tanımlayıcısı. Bunu içeriği okunmayan bir dizge olarak değerlendirin.

Hatalar

Bu uç noktanın döndürebileceği tüm ret yanıtları, geldikleri durum koduyla birlikte.

İstek
curl "https://passportcraft.com/api/v1/organizations/3c59dc04-8f7b-4d0e-9c1a-5f2b6e7d8a90/grants/K3n9Qw2P" \
  -X DELETE \
  -H "Authorization: Bearer $PASSPORTCRAFT_API_KEY"
Yanıt · 200
{
  "object": "grant",
  "organization_id": "3c59dc04-8f7b-4d0e-9c1a-5f2b6e7d8a90",
  "key_id": "K3n9Qw2P",
  "status": "revoked"
}

DELETE /organizations/3c59dc04-8f7b-4d0e-9c1a-5f2b6e7d8a90/grants/K3n9Qw2P

Bu anahtarın bu kuruluş için neler yapabileceğini tanımlar.

get/organizations/{organization}/capabilities
Kapsam
passports:read
Idempotency-Key
Kabul edilmez
Döndürür
200

Yol parametreleri

organizationdizgeZorunlu

Bu isteğin adına işlem yaptığı kuruluş. Anahtarın bu kuruluş için yetkisi olmalıdır.

Hatalar

Bu uç noktanın döndürebileceği tüm ret yanıtları, geldikleri durum koduyla birlikte.

İstek
curl "https://passportcraft.com/api/v1/organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/capabilities" \
  -H "Authorization: Bearer $PASSPORTCRAFT_API_KEY"
Yanıt · 200
{
  "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