Przejdź do treści

Tworzenie zbiorcze

POST/v1/codes/bulk

Parametry treści

itemsarraywymaganeOd 1 do 500 kodów. Każdy to { content, name?, slug?, folder?, fileName?, ref? }.
items[].contentobjectwymaganeTreść kodu; jego typ musi być równy codeType.
items[].refstringopcjonalneTwój własny odnośnik (SKU, identyfikator CRM), zwracany w wierszach i pliku wyników.
items[].folderstringopcjonalneNazwa podfolderu w folderId, tworzona, gdy go brak.
codeTypestringopcjonalneJeden typ na żądanie. Domyślnie url.
dynamicbooleanopcjonalneDomyślnie true.
folderIdstring | nullopcjonalneDokąd trafiają kody. Domyślnie katalog główny obszaru roboczego.
templateIdstring | nullopcjonalneProjekt każdego kodu. Domyślnie domyślny projekt Dotwick.
exportobject | nullopcjonalneWygeneruj też ZIP po zakończeniu uruchomienia, np. { formats: ["svg", "pdf"] }.

Przykładowe żądanie

żądaniePOST /v1/codes/bulk
curl -X POST https://api.dotwick.com/v1/codes/bulk \  -H "Authorization: Bearer sk_live_…" \  -H "Content-Type: application/json" \  -H "Idempotency-Key: fleet-2026-09-batch-3" \  -d '{    "codeType": "url",    "folderId": "fld_8k2m4q7x",    "items": [      {        "name": "Van 15",        "content": {          "type": "url",          "url": "https://example.com/fleet/van-015"        },        "ref": "VAN-015"      },      {        "name": "Van 16",        "content": {          "type": "url",          "url": "https://example.com/fleet/van-016"        },        "ref": "VAN-016"      }    ],    "export": {      "formats": [        "svg",        "pdf"      ]    }  }'
odpowiedź202 Acceptedfragment: uruchomienie zawiera też opcje, podsumowanie i wiersze podglądu
{  "id": "blk_9f24ab7c3e1d5f80",  "status": "queued",  "source": "api",  "codeType": "url",  "dynamic": true,  "counts": {    "total": 2,    "valid": 2,    "invalid": 0,    "created": 0,    "failed": 0,    "canceled": 0  },  "progress": 0,  "folderId": "fld_8k2m4q7x",  "exportId": null,  "createdAt": "2026-09-12T14:03:51.000Z"}

Śledzenie uruchomienia

Odpowiedź to 202 Accepted z uruchomieniem. Odpytuj GET /v1/bulk-imports/{id}, aż status będzie succeeded, partially_succeeded lub failed, a potem odczytaj kody przez GET /v1/bulk-imports/{id}/rows lub pobierz GET /v1/bulk-imports/{id}/results.csv. Albo zasubskrybuj bulk.completed i pomiń odpytywanie.

Źle sformatowany element powoduje niepowodzenie całego żądania z validation_failed przy items.N. Elementy, które nie przejdą kontroli bazy danych (zajęty slug), są pomijane i liczone jako nieprawidłowe; pozostałe są tworzone. Ponów nieudane przez POST /v1/bulk-imports/{id}/retry.

Limity

Jeden typ kodu na żądanie: wyślij jedno żądanie na typ. Obowiązują limit wierszy zbiorczych planu i jego limit kodów dynamicznych, a uruchomienia ponad jednoczesne zadania planu czekają w kolejce.