Erase a design's personal data
const url = 'https://api.pixonaut.app/v1/designs/example/erase-personal-data';const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.pixonaut.app/v1/designs/example/erase-personal-data \ --header 'Authorization: Bearer <token>'Operation ID: designs.erasePersonalData
Erases what the design’s customer put into it, whatever its status, approved and printed included: the text of every field they could fill, and every picture they uploaded, in every revision and proof of the design, the words of any request for changes, and the delivery they gave. The design stays as a record (its template, status, dates and prints), personalDataErasedAt says when, and nothing more is printed, ordered, corrected, duplicated or asked to change from it. The pictures and proofs are deleted within six hours. A print’s files are kept while an order of it is still being made, and deleted within six hours once every order of it has shipped, failed or been cancelled. Not erased: the fulfilment payload, which is yours, designs duplicated from this one, and what a printshop was already sent. Emits design.personal_data_erased. Erasing a design already erased answers it unchanged and records nothing. A deleted design is erased too, and answered 204.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Responses
Section titled “Responses”The design, its personal data erased
object
How the customer agreed to the design’s approval, made or scheduled, as its approver said; null when none was said. Correcting the design, asking for changes and rejecting it clear it with the approval.
object
When the customer agreed, epoch milliseconds.
How the customer agreed: by adding the design to their cart, by ticking a box, on a proof page, by approving it again on your store after correcting it (edit), or by letting your store’s own approval deadline pass (deadline). More kinds may be added.
Whether DELETE /v1/designs/{id} would take the design now: it is not approved, and no print of it exists, of any revision and in any status.
Your own reference for the design, as sent on the commit or PUT /v1/designs/{id}/external-ref, or null.
The tone the design was drawn for: dark on a variant whose colour is dark, where each layer’s on-dark value is used; light otherwise. A correction judges its values against the template as that tone draws it.
The language the design was made in, one of en, sv, de, fr, es, nl, da, nb, fi: its template was read in it, with that language’s overrides, and its document and print file are that language’s.
Where the design came from: the door it was committed through. A duplicate’s is whoever duplicated it.
object
The designer link’s id, the key’s id, or the connected store’s site address. Null for studio, and for a key set in the deployment’s configuration rather than made in the workspace.
link: a designer link’s page made it. studio: a member made it, in the studio or through an MCP key. secret_key and publishable_key: committed with one of your keys. store: committed by a connected store, with any key its site was given.
When the design’s own personal data was erased (POST /v1/designs/{id}/erase-personal-data), or null. An erased design’s document holds none of the text or pictures its customer put in, and nothing more is printed, ordered or corrected from it.
The placement on the blank this design was fitted to when it was made; null whenever blankId is. Kept while the blank is, so it may name a placement since removed from the blank: the print box frozen into the document is what prints.
The size the design prints at, without bleed: the widthMm and heightMm its proof or commit named, or the size fitted for one that named none. A store checks it, with templateVersion, blankId and placementId, against what the product variation sells before accepting the add to cart, since the proof is made in the customer’s browser. Null only for a stored document that holds no usable print size.
object
The print’s trim height, in millimetres.
The print’s trim width, in millimetres.
The variant of the blank the customer previewed the design’s proof on, by ref, as POST /v1/proofs was sent it; null when it named none. For display only: an order names its own variant.
The view of the blank’s placement the customer previewed the design’s proof in, by id, as POST /v1/proofs was sent it; null when it named none.
Why the design was rejected, as its rejection said (reason on POST /v1/designs/{id}/reject); null when it is not rejected, or was rejected without one. Its customer is shown it on the proof page.
The share link whose page made the design: committed there, or from a proof it made. Null when no link made it.
Whether this is a standing design: the workspace’s own design for a fixed product, made by POST /v1/designs/standing from a template version as its author left it. A standing design is ordered any number of times, each order reusing the print of its current revision. False for a customer’s design.
Whether the design’s template was deleted. The design keeps its template’s name and version; the template itself can no longer be opened.
The version of the template the design was made from: templateId after its @. A design committed from a proof token was made from the proof’s version, whatever the template’s latest is now.
The size the design was made for, on a blank whose print areas change with its size: the blank’s option values it was sized at, such as {"Size": "XL"}. An order of a variant of another size is refused with variant_not_of_design_row. Null on a blank whose print areas change with nothing, or on no blank.
Examples
Example
{ "apiKeyId": "3b2d9c1e-5a4f-4e7d-8c6b-1a0f9e8d7c6b", "approvalConsent": { "at": 1791770340000, "kind": "checkbox", "ref": "order-1042" }, "approveAfter": null, "approvedAt": 1791770400000, "approvedVia": "explicit", "blankId": "blank_tshirt", "committedAt": 1791763200000, "deletable": false, "doc": { "background": { "color": { "editable": false, "value": { "cmyk": [ 0, 0, 0, 0 ] } }, "kind": "color" }, "dpi": 300, "fit": "contain", "id": "tshirt-basic", "layers": [ { "anchor": "top-left", "hFrac": 0.12, "id": "name", "name": "Name", "offsetFrac": { "x": 0.1, "y": 0.35 }, "props": { "align": { "editable": false, "value": "center" }, "content": { "constraints": { "maxLength": 24, "maxLines": 1 }, "description": "Printed on the chest.", "editable": true, "label": "Name", "value": "" }, "fill": { "editable": false, "value": { "cmyk": [ 89, 74, 44, 76 ] } }, "fontFamily": { "editable": false, "value": "Poppins" }, "fontSizeFrac": { "editable": false, "value": 0.08 } }, "textBox": { "mode": "adapt", "shrinkTo": 0.04, "then": "clamp" }, "transform": { "rotate": { "editable": false }, "scale": { "editable": false }, "translate": { "bounds": "safeArea", "editable": false }, "value": { "rotationDeg": 0, "scale": 1 } }, "type": "text", "wFrac": 0.8, "z": 10 } ], "name": "Basic T-shirt", "ratio": { "h": 4, "w": 3 }, "ratioTolerance": 0.02, "tenantId": "acme", "version": 2 }, "duplicatedFrom": null, "externalRef": "order-1042-line-1", "fulfilmentPayload": { "material": "cotton", "shippingMethod": "standard" }, "garmentTone": "light", "id": "6f1c8a2b-3d4e-4f5a-8b6c-7d8e9f0a1b2c", "language": "en", "origin": { "id": "3b2d9c1e-5a4f-4e7d-8c6b-1a0f9e8d7c6b", "kind": "secret_key" }, "personalDataErasedAt": 1792022400000, "placementId": "front", "printSize": { "heightMm": 400, "widthMm": 300 }, "proofId": "prf_9c1e2d3f4a5b6c7d8e9f0a1b", "proofRevision": 2, "proofVariant": null, "proofViewId": null, "rejectionReason": null, "revision": 2, "shareLinkId": null, "standing": false, "status": "approved", "templateBaseId": "tshirt-basic", "templateDeleted": false, "templateId": "tshirt-basic@2", "templateName": "Basic T-shirt", "templateVersion": 2, "tenantId": "acme", "variantRow": null}Headers
Section titled “Headers”Every response names the request it answers in X-Request-Id: the id the request was sent with in that header, when it is well formed, else one the API gave it. Quote it when reporting a refusal or a failure: the API’s log lines for that request carry it.
The design was deleted, and is erased
Headers
Section titled “Headers”Every response names the request it answers in X-Request-Id: the id the request was sent with in that header, when it is well formed, else one the API gave it. Quote it when reporting a refusal or a failure: the API’s log lines for that request carry it.
Refused: unauthorized
object
Examples
unauthorized
{ "error": "unauthorized"}Headers
Section titled “Headers”Every response names the request it answers in X-Request-Id: the id the request was sent with in that header, when it is well formed, else one the API gave it. Quote it when reporting a refusal or a failure: the API’s log lines for that request carry it.
Refused: origin_forbidden, forbidden, feature_disabled, workspace_suspended
object
The feature the tenant does not have. Always sent with feature_disabled.
Examples
feature_disabled
{ "error": "feature_disabled", "feature": "api"}forbidden
{ "error": "forbidden"}origin_forbidden
{ "error": "origin_forbidden"}workspace_suspended
{ "error": "workspace_suspended"}Headers
Section titled “Headers”Every response names the request it answers in X-Request-Id: the id the request was sent with in that header, when it is well formed, else one the API gave it. Quote it when reporting a refusal or a failure: the API’s log lines for that request carry it.
Refused: not_found
object
Examples
not_found
{ "error": "not_found"}Headers
Section titled “Headers”Every response names the request it answers in X-Request-Id: the id the request was sent with in that header, when it is well formed, else one the API gave it. Quote it when reporting a refusal or a failure: the API’s log lines for that request carry it.
Refused: payload_too_large
object
Always sent with payload_too_large.
Examples
payload_too_large
{ "error": "payload_too_large", "maxBytes": 0}Headers
Section titled “Headers”Every response names the request it answers in X-Request-Id: the id the request was sent with in that header, when it is well formed, else one the API gave it. Quote it when reporting a refusal or a failure: the API’s log lines for that request carry it.
Refused: db_error. A request that failed unexpectedly answers as text instead.
object
Examples
db_error
{ "error": "db_error"}Headers
Section titled “Headers”Every response names the request it answers in X-Request-Id: the id the request was sent with in that header, when it is well formed, else one the API gave it. Quote it when reporting a refusal or a failure: the API’s log lines for that request carry it.
Refused: lock_timeout
object
Examples
lock_timeout
{ "error": "lock_timeout"}Headers
Section titled “Headers”Every response names the request it answers in X-Request-Id: the id the request was sent with in that header, when it is well formed, else one the API gave it. Quote it when reporting a refusal or a failure: the API’s log lines for that request carry it.
Questions? Write to [email protected].