Focus DPP API v1

Kendi sisteminizden (ERP, PIM, e-ticaret) dijital ürün pasaportu oluşturun, doğrulayın ve yayımlayın. Arayüzdeki tüm kurallar (zorunlu alanlar, bileşim %100, GTIN kontrol hanesi, yayın limiti) API'de de aynıdır. Yol ve alan adları İngilizcedir.

Kimlik doğrulama

Authorization: Bearer fdpp_sk_test_… — anahtarı Ayarlar → API anahtarları'ndan oluşturun.

Test anahtarı yalnız test verisini okur/yazar; test pasaportları QR çözümleyicide görünmez. Canlı anahtar Profesyonel/Ölçek planlarında.

Kimlik gerektirmeyen uçlar: /categories, /categories/{c}/schema, /openapi.json.

Kurallar

  • Idempotency-Key (yazmalarda): aynı anahtar + aynı gövde → aynı yanıt; farklı gövde → 409.
  • ETag / If-Match veya Expected-Version: eşzamanlı düzenleme koruması → 412.
  • Sayfalama: limit (≤100) + cursor → has_more, next_cursor. Olay akışı eskiden yeniye.
  • Hız sınırı: anahtar başına 120 istek/dk; yıkıcı geçişler (yayından kaldır, çöp, varyant sil) 30/dk → 429 + Retry-After.
  • Hatalar: {error:{type, code, message, param?, request_id}} — code kararlıdır, ona göre dallanın.

Hızlı başlangıç

curl https://www.focusdpp.com/api/v1/organizations/{org}/passports \
  -H "Authorization: Bearer fdpp_sk_test_..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"category":"textile","external_id":"SKU-1001","data":{"product_name":"Basic tişört","gtin":"8690000000012"}}'

Sonra POST …/passports/{id}/validate ile eksikleri görün, PATCH ile tamamlayın, POST …/publish ile yayımlayın (çevre beyanı içeren pasaportlarda gövdeye {"confirm_environmental_claims": true} ekleyin). GET …/links QR'a basılacak GS1 Digital Link adresini verir.

Hesap ve kurum

  • GET/whoamiÇağıran anahtarı tanımla
  • GET/organizationsBu anahtarın çalışabildiği kurumlar
  • POST/organizations/{organization}/grantsBir anahtara müşteri kurumunda yetki verkeys:admin
  • DELETE/organizations/{organization}/grants/{keyId}Bir anahtarın müşteri kurumu yetkisini kaldırkeys:admin
  • GET/organizations/{organization}/capabilitiesBu anahtarın kurumda yapabildikleripassports:read
  • GET/organizations/{organization}/eventsOlay akışı (eskiden yeniye)events:read

Pasaportlar

  • GET/organizations/{organization}/passportsPasaportları listelepassports:read
  • POST/organizations/{organization}/passportsPasaport oluşturpassports:write
  • GET/organizations/{organization}/publish-approvals/{id}Yayın onayını getirpassports:read
  • GET/organizations/{organization}/passports/{id}Pasaportu getirpassports:read
  • PATCH/organizations/{organization}/passports/{id}JSON Merge Patch ile güncelle (If-Match / Expected-Version)passports:write
  • POST/organizations/{organization}/passports/{id}/publishYayımlapassports:write
  • POST/organizations/{organization}/passports/{id}/unpublishYayından kaldırpassports:write
  • POST/organizations/{organization}/passports/{id}/trashÇöpe taşıpassports:write
  • POST/organizations/{organization}/passports/{id}/restoreÇöpten geri yüklepassports:write
  • POST/organizations/{organization}/passports/{id}/validateKaydetmeden doğrulapassports:read
  • GET/organizations/{organization}/passports/{id}/linksHerkese açık ve GS1 Digital Link adresleripassports:read
  • GET/organizations/{organization}/passports/{id}/affichageFransa çevresel maliyet beyanı durumupassports:read
  • POST/organizations/{organization}/passports/{id}/affichageFransa çevresel maliyet beyanı gönder (kullanılamıyor)filings:write

Varyantlar

  • GET/organizations/{organization}/passports/{id}/variantsBeden/renk varyantlarıpassports:read
  • POST/organizations/{organization}/passports/{id}/variantsVaryant ekle (hepsi ya da hiçbiri, ≤1000)passports:write
  • POST/organizations/{organization}/passports/{id}/variants/removeGTIN ile varyant kaldırpassports:write
  • GET/organizations/{organization}/passports/{id}/variants/reviewGözden geçirme parmak izipassports:read
  • DELETE/organizations/{organization}/passports/{id}/variants/{variantId}Bir varyantı silpassports:write

Seri birimler

  • GET/organizations/{organization}/passports/{id}/unitsSeri numaralı birimlerunits:read
  • POST/organizations/{organization}/passports/{id}/unitsSeri numaralı birim ekle (≤1000)units:write
  • GET/organizations/{organization}/passports/{id}/units/{unitId}/readingsBirim ölçümleriunits:read
  • POST/organizations/{organization}/passports/{id}/units/{unitId}/readingsBirim ölçümü kaydetunits:write

Belgeler

  • GET/organizations/{organization}/documentsBelge kitaplığıdocuments:read
  • GET/organizations/{organization}/passports/{id}/documentsPasaporta bağlı belgelerdocuments:read
  • POST/organizations/{organization}/passports/{id}/documentsBelge oluştur + imzalı yükleme adresidocuments:write
  • DELETE/organizations/{organization}/passports/{id}/documents/{documentId}Belgeyi ayır (başka bağı yoksa sil)documents:write

İçe aktarma

  • POST/organizations/{organization}/importsToplu içe aktarma (≤500 satır)passports:write
  • GET/organizations/{organization}/importsİçe aktarma işleripassports:read
  • GET/organizations/{organization}/imports/{id}İçe aktarma işi + satırlarpassports:read

Kapsamlar

  • passports:read — Pasaportları okuma
  • passports:write — Pasaport oluşturma/düzenleme/yayımlama
  • units:read — Seri birimleri okuma
  • units:write — Seri birim ve ölçüm yazma
  • documents:read — Belgeleri okuma
  • documents:write — Belge yükleme/ayırma
  • events:read — Olay akışını okuma
  • filings:write — Resmî beyan gönderme
  • keys:admin — Müşteri çalışma alanı yetkileri (partner)