Zaktualizuj kod
Zmień adres docelowy
curl -X PATCH https://api.dotwick.com/v1/codes/qr_8841ce2mxk \ -H "Authorization: Bearer sk_live_…" \ -H "Content-Type: application/json" \ -d '{ "content": { "type": "url", "url": "https://example.com/fleet/van-014-spring" } }'{ "id": "qr_8841ce2mxk", "workspaceId": "ws_8f21ac4e9d0b7c11", "name": "Van fleet – unit 14", "type": "url", "dynamic": true, "status": "active", "slug": "Xq7mK2p", "domainId": null, "shortUrl": "https://dotwick.co/Xq7mK2p", "content": { "type": "url", "url": "https://example.com/fleet/van-014-spring" }, "design": { "pattern": "rounded", "eyes": { "frame": "circle", "ball": "circle" }, "colors": { "fg": "#18181B", "bg": "#FFFFFF" } }, "rules": { "routes": [], "expiresAt": null, "scanLimit": null, "inactiveUrl": null, "passwordProtected": false }, "folderId": "fld_8k2m4q7x", "templateId": null, "createdBy": "u8Hk2LmN0pQ4rS6tV8wX0yZ2aB4cD6eF", "createdAt": "2026-09-10T09:41:08.000Z", "updatedAt": "2026-09-12T14:03:51.000Z", "scans": 0}Aktualizacje częściowe
Wyślij tylko pola do zmiany; reszta pozostaje bez zmian. design i rules łączą się klucz po kluczu z tym, co zapisano, tablice zastępują zapisaną tablicę, a null czyści wartość.
Nowy slug sprawia, że stary też nadal działa, więc wydrukowane już linki nigdy się nie psują. Każda zmiana jest zachowana w historii kodu (GET /v1/codes/{id}/versions) i wysyła webhook code.updated.
Wstrzymanie i wznowienie
curl -X PATCH https://api.dotwick.com/v1/codes/qr_8841ce2mxk \ -H "Authorization: Bearer sk_live_…" \ -H "Content-Type: application/json" \ -d '{ "status": "paused" }'{ "id": "qr_8841ce2mxk", "status": "paused", "updatedAt": "2026-09-12T14:03:51.000Z"}Duplikowanie kodu
POST /v1/codes/{id}/duplicate kopiuje kod: jego typ, treść, projekt, reguły, hasło, tagi, folder i domena przechodzą do kopii. Kopia dostaje własny krótki link, nazwę w rodzaju Table 4 (copy), zero skanów i status active. Liczy się do planu jak każdy nowy kod i odpowiada 201 z nowym kodem, którego duplicatedFromId wskazuje oryginał.
Wyślij name, folderId (null dla najwyższego poziomu) lub slug (Pro i wyżej, kody dynamiczne), by ustawić je w kopii. Kodów wizytówek, kodów GS1 i kodów wyłączonych przez Dotwick nie można duplikować. Wyślij Idempotency-Key, by ponowna próba nigdy nie zrobiła dwóch kopii.
curl -X POST https://api.dotwick.com/v1/codes/qr_8841ce2mxk/duplicate \ -H "Authorization: Bearer sk_live_…" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: van-014-copy-1" \ -d '{ "name": "Van fleet – unit 14 (spring)", "folderId": "fld_8k2m4q7x" }'{ "id": "qr_5d3b7e1f9a2c", "workspaceId": "ws_8f21ac4e9d0b7c11", "name": "Van fleet – unit 14 (spring)", "type": "url", "dynamic": true, "status": "active", "slug": "van14b", "domainId": null, "shortUrl": "https://dotwick.co/van14b", "content": { "type": "url", "url": "https://example.com/fleet/van-014" }, "design": { "pattern": "rounded", "eyes": { "frame": "circle", "ball": "circle" }, "colors": { "fg": "#18181B", "bg": "#FFFFFF" } }, "rules": { "routes": [], "expiresAt": null, "scanLimit": null, "inactiveUrl": null, "passwordProtected": false }, "folderId": "fld_8k2m4q7x", "templateId": null, "createdBy": "u8Hk2LmN0pQ4rS6tV8wX0yZ2aB4cD6eF", "createdAt": "2026-09-12T14:03:51.000Z", "updatedAt": "2026-09-12T14:03:51.000Z", "scans": 0, "duplicatedFromId": "qr_8841ce2mxk"}Zmiana wielu kodów naraz
PATCH /v1/codes/bulk wykonuje jedną akcję na maksymalnie 500 kodach: pause, resume, archive, unarchive, addTags lub removeTags (obie z tagIds), move (z folderId, null dla najwyższego poziomu) albo delete. Nie mylić z POST /v1/codes/bulk, który tworzy kody.
Każdy kod jest obsługiwany osobno, z tymi samymi regułami, zdarzeniami i webhookami co pojedyncza zmiana. Odpowiedź to 200, nawet gdy część kodów się nie powiodła: results ma po jednym wpisie na kod w kolejności żądania, z ok i changed albo z reason i message dla kodu, który nie mógł przyjąć akcji, a counts je sumuje. Kod już w żądanym stanie to ok z changed: false.
Powtórzenie żądania jest bezpieczne, więc nie wymaga Idempotency-Key. Nieznany tag lub folder powoduje błąd całego żądania z 404 not_found bez zapisu czegokolwiek, podobnie jak przeniesienie do folderu w planie bez folderów (403 feature_not_in_plan).
- not_found: nie ma takiego kodu albo leży w folderze, którego klucz nie widzi.
- forbidden: rola klucza może oglądać kod, ale nie zmieniać go.
- managed_code: kod należy do wizytówki; wstrzymanie, archiwizacja i usunięcie idą przez wizytówkę.
- static_code i code_disabled: nie ma czego wstrzymać ani wznowić.
- not_resumable: kod zatrzymał się z powodu daty ważności lub limitu skanów; zmień raczej tę regułę.
- too_many_tags: addTags nadałoby kodowi więcej tagów, niż może mieć.
curl -X PATCH https://api.dotwick.com/v1/codes/bulk \ -H "Authorization: Bearer sk_live_…" \ -H "Content-Type: application/json" \ -d '{ "action": "pause", "codeIds": [ "qr_8841ce2mxk", "qr_2k8m4q7x1c9v" ] }'{ "action": "pause", "results": [ { "codeId": "qr_8841ce2mxk", "ok": true, "changed": true }, { "codeId": "qr_2k8m4q7x1c9v", "ok": false, "reason": "static_code", "message": "Static codes can't be paused: they work without our server." } ], "counts": { "ok": 1, "changed": 1, "failed": 1 }}