deidentifyOrder
mutation · in the family Privacy and compliance
What it does
Erase the personal details on one guest sale, under its privacy request.
Erase the personal details on ONE guest sale, under its privacy request. The sale's customer block reads 'Erased customer': the email, phone, delivery address and buyer names go. The money, lines, tax, status, consent choices, platform and receipt token stay. Its invoice, return, store-credit, gift-card and fulfillment copies follow. Requires a PrivacyRequest of your group in verified or in_progress whose subjectOrderId IS this order. A request in received, a request naming another order, or a missing request refuses. A second call writes nothing (customer.deidentifiedAt). Then fulfill the request with the Order ref. Template class (privacy & compliance).
Before you call
A bearer session from an API key (see Authentication and key hygiene) or a signed-in user.
Capability area: Privacy and compliance — Tax and fiscal configuration, certificates and privacy requests.
Roles that may call it:
- Owner
- System Administrator
- An API key whose scope allows
api:deidentifyOrder
What happens
It rewrites the customer block, the ship-to and the buyer names; the money, lines, tax and status stay. The request must be verified or in progress and name this sale.
Careful
PERMANENT. There is no un-erase; a second call on the same sale writes nothing.
Arguments
| Name | Type | Required | Notes |
|---|---|---|---|
id | ID ID! | yes | The id of the record. |
revision | ID ID! | yes | The revision id you read on the record; the change is refused if an edit landed in the meantime. |
privacyRequestId | ID ID! | yes | |
reason | String | no |
Concurrency
Send the record’s current revision from your last read as revision. A stale revision is refused as CONFLICT/REVISION_STALE — read the record again and retry with the new value.
Returns
Example request
mutation ExampleDeidentifyOrder($id: ID!, $revision: ID!, $privacyRequestId: ID!, $reason: String) {
deidentifyOrder(id: $id, revision: $revision, privacyRequestId: $privacyRequestId, reason: $reason) {
id
sysId
type
caption
status
parentId
rootId
createdAt
updatedAt
revisionNum
revision
organizationId
channel
orderType
validUntil
termEndsAt
convertedOrderId
sourceDocumentId
reorderOfOrderId
logicalFacilityId
currency
exemptionCertificateId
paymentState
fulfillmentState
recognitionState
taxJurisdictionId
subtotalMinor
discountTotalMinor
taxTotalMinor
totalMinor
fulfillmentFeeMinor
fulfillmentFeeTaxMinor
tenderedNetMinor
tipTotalMinor
paymentIds
refundIds
disputeIds
invoiceIds
couponIds
sourcingSagaId
commissionAgentUserIds
affiliateId
}
}Variables:
{
"id": "01900000-0000-7000-8000-18e782370000",
"revision": "01900000-0000-7000-8000-b7960e180000",
"privacyRequestId": "01900000-0000-7000-8000-22f6d6580000",
"reason": "Correcting a miscount."
}Send it with the envelope naming the version: "extensions": {"at": {"version": {"name":"genesis","number":0}}}.
Example response
{
"data": {
"deidentifyOrder": {
"id": "01900000-0000-7000-8000-18e782370000",
"sysId": "SO-EXMP-0000-000F",
"type": "Order",
"caption": "Blue jeans",
"status": "open",
"parentId": "01900000-0000-7000-8000-10c08c590000",
"rootId": "01900000-0000-7000-8000-a1295a650000",
"createdAt": "2027-01-31T00:00:00.000Z",
"updatedAt": "2027-01-31T00:00:00.000Z",
"revisionNum": 1,
"revision": "01900000-0000-7000-8000-53c6eea90000",
"organizationId": "01900000-0000-7000-8000-1971e30a0000",
"channel": "pos",
"orderType": "sale",
"validUntil": "<valid until>",
"termEndsAt": "2027-01-31T00:00:00.000Z",
"convertedOrderId": "01900000-0000-7000-8000-989e22cb0000",
"sourceDocumentId": "01900000-0000-7000-8000-6c7148310000",
"reorderOfOrderId": "01900000-0000-7000-8000-88fd3fab0000",
"logicalFacilityId": "01900000-0000-7000-8000-10c08c590000",
"currency": "USD",
"exemptionCertificateId": "01900000-0000-7000-8000-b793be5b0000",
"paymentState": "<payment state>",
"fulfillmentState": "<fulfillment state>",
"recognitionState": "<recognition state>",
"taxJurisdictionId": "01900000-0000-7000-8000-33d0df4f0000",
"subtotalMinor": 1250,
"discountTotalMinor": 0,
"taxTotalMinor": 0,
"totalMinor": 1250,
"fulfillmentFeeMinor": 1250,
"fulfillmentFeeTaxMinor": 1250,
"tenderedNetMinor": 1250,
"tipTotalMinor": 0,
"paymentIds": [
"01900000-0000-7000-8000-20f641110000"
],
"refundIds": [
"01900000-0000-7000-8000-7900117f0000"
],
"disputeIds": [
"01900000-0000-7000-8000-c8f04d1b0000"
],
"invoiceIds": [
"01900000-0000-7000-8000-71ec87b00000"
],
"couponIds": [
"01900000-0000-7000-8000-d554478b0000"
],
"sourcingSagaId": "01900000-0000-7000-8000-70f7ad270000",
"commissionAgentUserIds": [
"01900000-0000-7000-8000-8bb1c91e0000"
],
"affiliateId": "01900000-0000-7000-8000-c6e63db40000"
}
},
"extensions": {
"at": {
"callId": "01EXAMPLE-CALL-ID",
"version": {
"requested": {
"name": "genesis",
"number": 0
},
"serviced": {
"name": "genesis",
"number": 0
}
}
}
}
}Errors this call can answer
VALIDATION/INVALID— Something in the request is not valid. Retry: no. (VALIDATION)AUTHN/REQUIRED— Sign in to do this. Retry: no. (AUTHN)AUTHZ/FORBIDDEN— Your role does not allow this action. Retry: no. (AUTHZ)RATE_LIMIT/THROTTLED— Too many requests in a short time. Retry: yes. (RATE_LIMIT)NOT_FOUND/*— That record could not be found. Retry: no. (NOT_FOUND)CONFLICT/*— The record’s state, or a change made in the meantime, does not allow this; the codes are on the CONFLICT page. (CONFLICT)VALIDATION/VERSION_REQUIRED— The request did not say which app version it came from. Retry: no. (VALIDATION)