Naar de inhoud

Een code bijwerken

PATCH/v1/codes/{id}

Wijzig de bestemming

verzoekPATCH /v1/codes/qr_8841ce2mxk
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"    }  }'
antwoord200 OK
{  "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}

Gedeeltelijke updates

Stuur alleen de velden die moeten veranderen; de rest blijft zoals het is. design en rules worden sleutel voor sleutel samengevoegd met wat is opgeslagen, arrays vervangen de opgeslagen array en null wist een waarde.

Een nieuwe slug laat de oude ook werken, zodat al gedrukte links nooit breken. Elke wijziging wordt bewaard in de geschiedenis van de code (GET /v1/codes/{id}/versions) en stuurt een code.updated-webhook.

Pauzeren en hervatten

verzoekPATCH /v1/codes/qr_8841ce2mxk
curl -X PATCH https://api.dotwick.com/v1/codes/qr_8841ce2mxk \  -H "Authorization: Bearer sk_live_…" \  -H "Content-Type: application/json" \  -d '{    "status": "paused"  }'
antwoord200 OKfragment: scanners zien nu de gepauzeerde pagina; stuur active om te hervatten
{  "id": "qr_8841ce2mxk",  "status": "paused",  "updatedAt": "2026-09-12T14:03:51.000Z"}

Een code dupliceren

POST /v1/codes/{id}/duplicate kopieert een code: type, inhoud, ontwerp, regels, wachtwoord, tags, map en domein gaan mee. De kopie krijgt een eigen korte link, een naam als Table 4 (copy), geen scans en de status active. Hij telt mee in het abonnement als elke nieuwe code en antwoordt met 201 en de nieuwe code, waarvan duplicatedFromId het origineel is.

Stuur name, folderId (null voor het hoogste niveau) of slug (Pro en hoger, dynamische codes) mee om ze op de kopie in te stellen. Visitekaartjecodes, GS1-codes en codes die Dotwick heeft uitgeschakeld kunnen niet worden gedupliceerd. Stuur een Idempotency-Key mee zodat een nieuwe poging nooit twee kopieën maakt.

verzoekPOST /v1/codes/qr_8841ce2mxk/duplicate
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"  }'
antwoord201 Created
{  "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"}

Veel codes tegelijk wijzigen

PATCH /v1/codes/bulk voert één actie uit op tot 500 codes: pause, resume, archive, unarchive, addTags of removeTags (beide met tagIds), move (met folderId, null voor het hoogste niveau) of delete. Niet te verwarren met POST /v1/codes/bulk, dat codes aanmaakt.

Elke code wordt apart behandeld, met dezelfde regels, gebeurtenissen en webhooks als bij één wijziging. Het antwoord is 200, ook als sommige codes mislukten: results heeft een item per code in de volgorde van het verzoek, met ok en changed, of met reason en message voor een code die de actie niet kon aannemen, en counts telt ze op. Een code die al in de gevraagde staat is, is ok met changed: false.

Het verzoek herhalen is veilig, dus er is geen Idempotency-Key nodig. Een onbekende tag of map laat het hele verzoek mislukken met 404 not_found zonder iets te schrijven, net als verplaatsen naar een map bij een abonnement zonder mappen (403 feature_not_in_plan).

  • not_found: de code bestaat niet, of staat in een map die de sleutel niet mag zien.
  • forbidden: de rol van de sleutel mag de code bekijken maar niet wijzigen.
  • managed_code: de code hoort bij een visitekaartje; pauzeren, archiveren en verwijderen gaan via het kaartje.
  • static_code en code_disabled: er is niets te pauzeren of te hervatten.
  • not_resumable: de code is gestopt door zijn vervaldatum of scanlimiet; wijzig die regel in plaats daarvan.
  • too_many_tags: addTags zou de code meer tags geven dan hij kan dragen.
verzoekPATCH /v1/codes/bulk
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"    ]  }'
antwoord200 OK
{  "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  }}