RevokedAt, and change nothing else. The token stops resolving immediately — the public approval endpoints answer the same 404 they give an unknown token — rotateApprovalLink answers 404, and a hotel that had not approved leaves listApprovals. The hotel's approval survives: status, approval timestamps, approver, contacts and feedback are all kept, and exportApprovedHotelText keeps working. Call createApprovalLinks to mint a fresh link for the hotel afterwards. Repeating the call is safe: the row comes back with its original RevokedAt.curl --location 'https://api.ygo.ai/v2/project/content/revokeApprovalLink' \
--header 'X-Project-ID: ' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"HotelID": "019d9c2e-0ef8-7458-b0fa-8bed7182eb30"
}'{
"Data": {
"HotelID": "019d9c2e-0ef8-7458-b0fa-8bed7182eb30",
"HotelName": "Sotavento Beach Club",
"GiataID": 5721,
"MasterCode": "FUED0009",
"TokenPreview": "xPBOjXHo...",
"Status": "approved",
"ApprovedAt": "2026-08-25T18:19:18.860882Z",
"ApprovedTextGeneratedAt": "2026-08-19T14:14:57.674681Z",
"ApprovedBy": {
"Name": "Ayşe Yılmaz",
"Email": "ayse@sotavento.example",
"Phone": "+34 928 000 000"
},
"LastOpenedAt": "2026-08-25T18:19:18.966928Z",
"RevokedAt": "2026-08-25T18:19:19.602402Z",
"Created": false,
"CreatedBy": "editor@example.com",
"CreatedAt": "2026-08-25T18:19:17.522006Z",
"UpdatedAt": "2026-08-25T18:19:19.602402Z"
}
}