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}}—codekararlı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ı okumapassports:write— Pasaport oluşturma/düzenleme/yayımlamaunits:read— Seri birimleri okumaunits:write— Seri birim ve ölçüm yazmadocuments:read— Belgeleri okumadocuments:write— Belge yükleme/ayırmaevents:read— Olay akışını okumafilings:write— Resmî beyan göndermekeys:admin— Müşteri çalışma alanı yetkileri (partner)