openapi: 3.2.0 info: title: Transcend Data Subject Request API version: '3.2' description: 'Transcend''s REST API for privacy operations including data subject requests, preflight identifier enrichment, custom integrations, consent and preference management, LLM classifier, public JWT signing keys, and webhooks. Endpoints and base URLs derived from the official OpenAPI at https://docs.transcend.io/api/oas.json and the API reference at https://docs.transcend.io/docs/api-reference. ' contact: name: Transcend url: https://docs.transcend.io/docs/api-reference license: name: Proprietary url: https://transcend.io/legal/terms-of-service servers: - url: https://api.transcend.io description: EU Backend (CLI default) - url: https://api.us.transcend.io description: US Backend - url: https://multi-tenant.sombra.transcend.io description: Multi-tenant Sombra (EU) - url: https://multi-tenant.sombra.us.transcend.io description: Multi-tenant Sombra (US) - url: https://consent.transcend.io description: Preference Store (Europe) - url: https://consent.us.transcend.io description: Preference Store (US) security: - Transcend_API_Key: [] tags: - name: Data Subject Request description: Submit, poll, and download data subject requests. paths: /v1/data-subject-request: post: tags: - Data Subject Request summary: Submit a Data Subject Request operationId: submitDataSubjectRequest requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DataSubjectRequestInput' responses: '200': description: DSR submitted content: application/json: schema: $ref: '#/components/schemas/DataSubjectRequest' '401': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/RateLimited' /v1/data-subject-request/{id}: get: tags: - Data Subject Request summary: Retrieve a Data Subject Request by Id operationId: getDataSubjectRequest parameters: - $ref: '#/components/parameters/RequestId' responses: '200': description: DSR record content: application/json: schema: $ref: '#/components/schemas/DataSubjectRequest' '404': $ref: '#/components/responses/NotFound' /v1/data-subject-request/{id}/download-keys: get: tags: - Data Subject Request summary: Retrieve Download Keys for a Data Subject Request operationId: getDataSubjectRequestDownloadKeys parameters: - $ref: '#/components/parameters/RequestId' responses: '200': description: Download keys content: application/json: schema: type: object properties: keys: type: array items: $ref: '#/components/schemas/DownloadKey' /v1/request-identifiers: post: tags: - Data Subject Request summary: List Request Identifiers operationId: listRequestIdentifiers requestBody: required: true content: application/json: schema: type: object properties: requestId: type: string responses: '200': description: Identifiers content: application/json: schema: type: object properties: identifiers: type: array items: $ref: '#/components/schemas/RequestIdentifier' components: schemas: DataSubjectRequestInput: type: object required: - type - subject properties: type: $ref: '#/components/schemas/DataSubjectRequestType' subject: $ref: '#/components/schemas/Identifier' subjectType: type: string locale: type: string details: type: string isSilent: type: boolean Identifier: type: object properties: name: type: string description: Identifier slug (e.g. email, phone, userId). value: type: string DownloadKey: type: object properties: key: type: string signedUrl: type: string format: uri expiresAt: type: string format: date-time DataSubjectRequestType: type: string enum: - ACCESS - ERASURE - OPT_IN - OPT_OUT - RECTIFICATION - RESTRICTION - AUTO_FULFILL Error: type: object properties: code: type: string message: type: string DataSubjectRequest: type: object properties: id: type: string format: uuid type: $ref: '#/components/schemas/DataSubjectRequestType' status: type: string enum: - REQUEST_MADE - IN_PROGRESS - COMPLETED - FAILED - REJECTED - REVOKED coreIdentifier: $ref: '#/components/schemas/Identifier' subjectType: type: string locale: type: string createdAt: type: string format: date-time completedAt: type: string format: date-time RequestIdentifier: allOf: - $ref: '#/components/schemas/Identifier' - type: object properties: type: type: string enum: - EMAIL - PHONE - USER_ID - CUSTOM responses: RateLimited: description: Rate limit exceeded headers: Retry-After: schema: type: integer content: application/json: schema: $ref: '#/components/schemas/Error' Unauthorized: description: Missing or invalid API key content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: Resource not found content: application/json: schema: $ref: '#/components/schemas/Error' parameters: RequestId: in: path name: id required: true schema: type: string format: uuid description: Data subject request identifier. securitySchemes: Transcend_API_Key: type: apiKey in: header name: Authorization description: 'API key issued from the Transcend admin dashboard. Send as `Authorization: Bearer `.'