Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/zoho-subjectaccessrequest-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Helpcenter Subject Access Request API
version: 1.0.0
tags:
- name: SubjectAccessRequest
paths:
/api/v1/subjectAccessRequests/exportAll:
post:
tags:
- SubjectAccessRequest
summary: Export all subject data from Zoho Desk
description: This API exports data related to the subject, from your Zoho Desk portal.
operationId: sarExportAll
parameters:
- $ref: ./Common.json#/components/parameters/orgId
requestBody:
$ref: '#/components/requestBodies/sarExportAll'
responses:
'422':
$ref: ./Common.json#/components/responses/invalidDataErrorResponse
'401':
$ref: ./Common.json#/components/responses/unauthorizedErrorResponse
'200':
$ref: '#/components/responses/subjectAccessRequestExportAllKeys'
security:
- iam-oauth2-schema:
- Desk.settings.UPDATE
x-audience:
- external-public
/api/v1/subjectAccessRequests/fieldsAndConditions:
get:
tags:
- SubjectAccessRequest
summary: Get fields and conditions
description: This API fetchs possible fileds list and conditions
operationId: getFieldsAndConditions
parameters:
- name: module
in: query
description: Name of the modules from which the resources must be fetched. Values allowed are @tickets@ and @contacts@. If you want to fetch resources from both modules, pass the value @allEntities@.
required: true
style: form
explode: true
schema:
type:
- string
- 'null'
description: Name of the modules from which the resources must be fetched. Values allowed are @tickets@ and @contacts@. If you want to fetch resources from both modules, pass the value @allEntities@.
enum:
- tickets
maxLength: 100
minLength: 0
- $ref: ./Common.json#/components/parameters/orgId
responses:
'422':
$ref: ./Common.json#/components/responses/multipleUnprocessEntityResponse
'204':
$ref: ./Common.json#/components/responses/emptyResponse
'200':
$ref: '#/components/responses/fieldsAndConditions'
security:
- iam-oauth2-schema:
- Desk.settings.READ
x-audience:
- external-public
/api/v1/subjectAccessRequests/{sarId}:
get:
tags:
- SubjectAccessRequest
summary: Get subject access request
description: This API fetches the details of a particular SAR.
operationId: getSubjectAccessRequest
parameters:
- name: include
in: query
description: 'Additional information related to the request. Values allowed are: @createdBy@ and @modifiedBy@. You can pass multiple values by separating them using commas in the API request.'
required: false
style: simple
explode: true
schema:
type:
- 'null'
- array
description: 'Additional information related to the request. Values allowed are: @createdBy@ and @modifiedBy@. You can pass multiple values by separating them using commas in the API request.'
items:
type:
- string
- 'null'
enum:
- createdBy
- modifiedBy
maxLength: 100
minLength: 0
uniqueItems: true
- $ref: '#/components/parameters/sarId'
- $ref: ./Common.json#/components/parameters/orgId
responses:
'422':
$ref: ./Common.json#/components/responses/invalidDataErrorResponse
'401':
$ref: ./Common.json#/components/responses/unauthorizedErrorResponse
'200':
$ref: '#/components/responses/getSubjectAccessRequestResponse'
security:
- iam-oauth2-schema:
- Desk.settings.READ
x-audience:
- external-public
/api/v1/subjectAccessRequests/eraseAll:
post:
tags:
- SubjectAccessRequest
summary: Erase all subject data from Zoho Desk
description: This API erases data related to the subject, from your Zoho Desk portal.
operationId: sarEraseAll
parameters:
- $ref: ./Common.json#/components/parameters/orgId
requestBody:
$ref: '#/components/requestBodies/sarEraseAll'
responses:
'422':
$ref: ./Common.json#/components/responses/invalidDataErrorResponse
'401':
$ref: ./Common.json#/components/responses/unauthorizedErrorResponse
'200':
$ref: '#/components/responses/subjectAccessRequestExportAllKeys'
security:
- iam-oauth2-schema:
- Desk.settings.UPDATE
x-audience:
- external-public
/api/v1/subjectAccessRequests:
get:
tags:
- SubjectAccessRequest
summary: List subject access requests
description: This API lists a particular number of subject access requests, based on the limit specified.
operationId: getSubjectAccessRequestList
parameters:
- name: duration
in: query
description: 'Period in which the requests were made. Values allowed are: @TODAY@, @LAST_24_HOURS@, @LAST_7_DAYS@, @LAST_30_DAYS@, @CURRENT_WEEK@, and @CURRENT_MONTH@. '
required: false
style: form
explode: true
schema:
type:
- string
- 'null'
description: 'Period in which the requests were made. Values allowed are: @TODAY@, @LAST_24_HOURS@, @LAST_7_DAYS@, @LAST_30_DAYS@, @CURRENT_WEEK@, and @CURRENT_MONTH@. '
enum:
- TODAY
- LAST_24_HOURS
- LAST_7_DAYS
- LAST_30_DAYS
- CURRENT_WEEK
- CURRENT_MONTH
maxLength: 100
minLength: 0
- name: include
in: query
description: 'Additional information related to the requests. Values allowed are: @createdBy@ and @modifiedBy@. You can pass multiple values by separating them using commas in the API request.'
required: false
style: simple
explode: true
schema:
type:
- 'null'
- array
description: 'Additional information related to the requests. Values allowed are: @createdBy@ and @modifiedBy@. You can pass multiple values by separating them using commas in the API request.'
items:
type:
- string
- 'null'
enum:
- createdBy
- modifiedBy
maxLength: 100
minLength: 0
uniqueItems: true
- name: contactEmailId
in: query
description: Email ID of the contact who made the request.
required: false
style: form
explode: true
schema:
type:
- string
- 'null'
description: Email ID of the contact who made the request.
maxLength: 150
minLength: 0
pattern: ^[a-zA-Z0-9\_]([a-zA-Z0-9\_\+\-\.\'&]*)@(?=.{4,256}$)(([a-zA-Z0-9]+)(([\-\_]*[a-zA-Z0-9])*)[\.])+[a-zA-Z]{2,22}$
- name: limit
in: query
description: Number of requests to list. The default value is @10@ and the maximum value supported is @100@.
required: false
style: form
explode: true
schema:
type:
- string
- 'null'
- integer
format: int32
description: Number of requests to list. The default value is @10@ and the maximum value supported is @100@.
pattern: ([0-9]+)
- name: from
in: query
description: Index number, starting from which the requests must be fetched.
required: false
style: form
explode: true
schema:
type:
- string
- 'null'
- integer
format: int32
description: Index number, starting from which the requests must be fetched.
pattern: ([0-9]+)
- name: status
in: query
description: 'Processing status of the request. Values allowed are: @INITIATED@, @INPROGRESS@, @COMPLETED@, @CANCELED@, @EXPORTED@, @PARTIALLY_COMPLETED@, @PARTIALLY_EXPORTED@ and @FAILED@. You can pass multiple values by separating them using commas in the API request.'
required: false
style: simple
explode: true
schema:
type:
- 'null'
- array
description: 'Processing status of the request. Values allowed are: @INITIATED@, @INPROGRESS@, @COMPLETED@, @CANCELED@, @EXPORTED@, @PARTIALLY_COMPLETED@, @PARTIALLY_EXPORTED@ and @FAILED@. You can pass multiple values by separating them using commas in the API request.'
items:
type:
- string
- 'null'
enum:
- FAILED
- INITIATED
- INPROGRESS
- COMPLETED
- CANCELED
- EXPORTED
- PARTIALLY_COMPLETED
- PARTIALLY_EXPORTED
maxLength: 100
minLength: 0
uniqueItems: true
- $ref: ./Common.json#/components/parameters/orgId
responses:
'422':
$ref: ./Common.json#/components/responses/invalidDataErrorResponse
'401':
$ref: ./Common.json#/components/responses/unauthorizedErrorResponse
'200':
$ref: '#/components/responses/getSubjectAccessRequests'
security:
- iam-oauth2-schema:
- Desk.settings.READ
x-audience:
- external-public
/api/v1/subjectAccessRequests/export:
post:
tags:
- SubjectAccessRequest
summary: Export specific resources
description: This API exports specific resources related to a subject access request.
operationId: sarExport
parameters:
- $ref: ./Common.json#/components/parameters/orgId
requestBody:
$ref: '#/components/requestBodies/sarExport'
responses:
'422':
$ref: ./Common.json#/components/responses/invalidDataErrorResponse
'401':
$ref: ./Common.json#/components/responses/unauthorizedErrorResponse
'200':
$ref: '#/components/responses/subjectAccessRequestKeys'
security:
- iam-oauth2-schema:
- Desk.settings.UPDATE
x-audience:
- external-public
/api/v1/subjectAccessRequests/count:
post:
tags:
- SubjectAccessRequest
summary: Get count of resources related to request
description: This API returns the number of resources related to a subject access request.
operationId: getCount
parameters:
- $ref: ./Common.json#/components/parameters/orgId
requestBody:
$ref: '#/components/requestBodies/sarCount'
responses:
'422':
$ref: ./Common.json#/components/responses/invalidDataErrorResponse
'401':
$ref: ./Common.json#/components/responses/unauthorizedErrorResponse
'200':
$ref: '#/components/responses/sarCountResponse'
security:
- iam-oauth2-schema:
- Desk.settings.READ
x-audience:
- external-public
/api/v1/subjectAccessRequests/erase:
post:
tags:
- SubjectAccessRequest
summary: Erase specific resources
description: This API erases specific resources related to a subject access request.
operationId: sarErase
parameters:
- $ref: ./Common.json#/components/parameters/orgId
requestBody:
$ref: '#/components/requestBodies/sarErase_sarExport'
responses:
'422':
$ref: ./Common.json#/components/responses/invalidDataErrorResponse
'401':
$ref: ./Common.json#/components/responses/unauthorizedErrorResponse
'200':
$ref: '#/components/responses/subjectAccessRequestKeys'
security:
- iam-oauth2-schema:
- Desk.settings.UPDATE
x-audience:
- external-public
components:
requestBodies:
sarErase_sarExport:
content:
application/json:
schema:
type:
- 'null'
- object
additionalProperties: false
properties:
contactEmailId:
type:
- string
- 'null'
maxLength: 255
minLength: 0
pattern: ^[a-zA-Z0-9\_]([a-zA-Z0-9\_\+\-\.\'&]*)@(?=.{4,256}$)(([a-zA-Z0-9]+)(([\-\_]*[a-zA-Z0-9])*)[\.])+[a-zA-Z]{2,22}$
referenceTicketNumber:
type:
- string
- 'null'
- integer
format: int32
pattern: ([0-9]+)
ids:
$ref: ./SubjectAccessRequest.json#/components/schemas/ids
required:
- contactEmailId
- ids
examples:
Valid requestBody Definitions:
value:
contactEmailId: jackcarol@zylker.com
ids:
- '7000000075023'
sarCount:
content:
application/json:
schema:
type:
- 'null'
- object
additionalProperties: false
properties:
fieldConditions:
type:
- 'null'
- array
items:
type:
- 'null'
- object
additionalProperties: false
maxProperties: 3
minProperties: 3
properties:
condition:
type:
- string
- 'null'
enum:
- is
- starts with
maxLength: 100
minLength: 0
fieldName:
type:
- string
- 'null'
enum:
- All
maxLength: 100
minLength: 0
value:
type:
- 'null'
- array
items:
type:
- string
- 'null'
maxLength: 100
minLength: 0
pattern: '[a-zA-Z0-9\_\-\+\?\!\.\P{InBasicLatin}\(\)\s]+'
uniqueItems: false
required:
- condition
- fieldName
- value
uniqueItems: false
contactEmailId:
type:
- string
- 'null'
maxLength: 255
minLength: 0
pattern: ^[a-zA-Z0-9\_]([a-zA-Z0-9\_\+\-\.\'&]*)@(?=.{4,256}$)(([a-zA-Z0-9]+)(([\-\_]*[a-zA-Z0-9])*)[\.])+[a-zA-Z]{2,22}$
module:
type:
- string
- 'null'
enum:
- allEntities
- contacts
- tickets
maxLength: 100
minLength: 0
required:
- contactEmailId
- module
examples:
Valid requestBody Definitions:
value:
contactEmailId: johncarol@zylker.com
module: allEntities
sarExportAll:
content:
application/json:
schema:
type:
- 'null'
- object
additionalProperties: false
properties:
fieldConditions:
type:
- 'null'
- array
items:
type:
- 'null'
- object
additionalProperties: false
maxProperties: 3
minProperties: 3
properties:
condition:
type:
- string
- 'null'
enum:
- is
- starts with
maxLength: 100
minLength: 0
fieldName:
type:
- string
- 'null'
enum:
- All
maxLength: 100
minLength: 0
value:
type:
- 'null'
- array
items:
type:
- string
- 'null'
maxLength: 100
minLength: 0
pattern: '[a-zA-Z0-9\_\-\+\?\!\.\P{InBasicLatin}\(\)\s]+'
uniqueItems: false
required:
- condition
- fieldName
- value
uniqueItems: false
contactEmailId:
type:
- string
- 'null'
maxLength: 255
minLength: 0
pattern: ^[a-zA-Z0-9\_]([a-zA-Z0-9\_\+\-\.\'&]*)@(?=.{4,256}$)(([a-zA-Z0-9]+)(([\-\_]*[a-zA-Z0-9])*)[\.])+[a-zA-Z]{2,22}$
callBackUrl:
type:
- string
- 'null'
maxLength: 2000
minLength: 0
pattern: (^(ht|f)tp(s?)\://[-.\w]*(/?)([a-zA-Z0-9\-\.\?\,\:\'/\\+=&%\$#_@]*)?$)
module:
type:
- string
- 'null'
enum:
- allEntities
- contacts
- tickets
maxLength: 100
minLength: 0
referenceTicketNumber:
type:
- string
- 'null'
- integer
format: int32
pattern: ([0-9]+)
required:
- contactEmailId
- module
examples:
Valid requestBody Definitions:
value:
fieldConditions:
- condition: is
fieldName: Last Name
value:
- carol
contactEmailId: jackcarol@zylker.com
callBackUrl: https://test.com
module: contacts
sarEraseAll:
content:
application/json:
schema:
type:
- 'null'
- object
additionalProperties: false
properties:
fieldConditions:
type:
- 'null'
- array
items:
type:
- 'null'
- object
additionalProperties: false
maxProperties: 3
minProperties: 3
properties:
condition:
type:
- string
- 'null'
enum:
- is
- starts with
maxLength: 100
minLength: 0
fieldName:
type:
- string
- 'null'
enum:
- All
maxLength: 100
minLength: 0
value:
type:
- 'null'
- array
items:
type:
- string
- 'null'
maxLength: 100
minLength: 0
pattern: '[a-zA-Z0-9\_\-\+\?\!\.\P{InBasicLatin}\(\)\s]+'
uniqueItems: false
required:
- condition
- fieldName
- value
uniqueItems: false
contactEmailId:
type:
- string
- 'null'
maxLength: 255
minLength: 0
pattern: ^[a-zA-Z0-9\_]([a-zA-Z0-9\_\+\-\.\'&]*)@(?=.{4,256}$)(([a-zA-Z0-9]+)(([\-\_]*[a-zA-Z0-9])*)[\.])+[a-zA-Z]{2,22}$
module:
type:
- string
- 'null'
enum:
- allEntities
- contacts
- tickets
maxLength: 100
minLength: 0
referenceTicketNumber:
type:
- string
- 'null'
- integer
format: int32
pattern: ([0-9]+)
required:
- contactEmailId
- module
examples:
Valid requestBody Definitions:
value:
fieldConditions:
- condition: is
fieldName: Last Name
value:
- carol
contactEmailId: jackcarol@zylker.com
module: contact
sarExport:
content:
application/json:
schema:
type:
- 'null'
- object
additionalProperties: false
properties:
contactEmailId:
type:
- string
- 'null'
maxLength: 255
minLength: 0
pattern: ^[a-zA-Z0-9\_]([a-zA-Z0-9\_\+\-\.\'&]*)@(?=.{4,256}$)(([a-zA-Z0-9]+)(([\-\_]*[a-zA-Z0-9])*)[\.])+[a-zA-Z]{2,22}$
referenceTicketNumber:
type:
- string
- 'null'
- integer
format: int32
pattern: ([0-9]+)
ids:
$ref: ./SubjectAccessRequest.json#/components/schemas/ids
required:
- contactEmailId
- ids
examples:
Valid requestBody Definitions:
value:
contactEmailId: jackcarol@zylker.com
ids:
- '7000000075023'
responses:
subjectAccessRequestKeys:
description: subjectAccessRequestKeys template definitions
content:
application/json:
schema:
type:
- 'null'
- object
additionalProperties: false
properties:
modifiedTime:
type:
- string
- 'null'
maxLength: 100
minLength: 0
contactEmailId:
type:
- string
- 'null'
maxLength: 255
minLength: 0
pattern: ^[a-zA-Z0-9\_]([a-zA-Z0-9\_\+\-\.\'&]*)@(?=.{4,256}$)(([a-zA-Z0-9]+)(([\-\_]*[a-zA-Z0-9])*)[\.])+[a-zA-Z]{2,22}$
requestType:
type:
- string
- 'null'
enum:
- ACCESS_REQUEST
- ERASURE_REQUEST
maxLength: 100
minLength: 0
recordType:
type:
- string
- 'null'
enum:
- ALL
- SPECIFIC
maxLength: 100
minLength: 0
query:
type:
- 'null'
- object
additionalProperties: false
module:
type:
- string
- 'null'
enum:
- allEntities
- contacts
- tickets
maxLength: 100
minLength: 0
downloadURL:
type:
- string
- 'null'
maxLength: 1000
minLength: 0
type:
type:
- string
- 'null'
enum:
- ALL
- SPECIFIC
maxLength: 100
minLength: 0
modifiedById:
type:
- string
- 'null'
- integer
format: int64
pattern: ([0-9]+)
referenceTicketNumber:
type:
- string
- 'null'
- integer
format: int32
pattern: ([0-9]+)
sarNumber:
type:
- string
- 'null'
- integer
format: int32
pattern: ([0-9]+)
createdTime:
type:
- string
- 'null'
maxLength: 100
minLength: 0
id:
type:
- string
- 'null'
- integer
format: int64
pattern: ([0-9]+)
createdById:
type:
- string
- 'null'
- integer
format: int64
pattern: ([0-9]+)
status:
type:
- string
- 'null'
enum:
- FAILED
- INITIATED
- INPROGRESS
- COMPLETED
- CANCELED
- EXPORTED
- PARTIALLY_COMPLETED
- PARTIALLY_EXPORTED
maxLength: 100
minLength: 0
required:
- contactEmailId
- createdById
- createdTime
- downloadURL
- id
- modifiedById
- modifiedTime
- module
- query
- recordType
- referenceTicketNumber
- requestType
- sarNumber
- status
- type
examples:
Valid responses Definitions:
value:
modifiedTime: 1603728618930
contactEmailId: nirmal@zylker.com
requestType: ERASURE_REQUEST
recordType: SPECIFIC
module: tickets
query:
criteriaFields:
- condition: is before
field:
apiName: createdTime
fieldLabel: Created Time
value:
primitive:
- displayKey: ${CURRENTTIME}
key: ${CURRENTTIME}
type: primitive
criteriaPattern: '1'
downloadURL: https://download.zoho.com/webdownload?x-service=desk&event-id=d7c93cfe30f48f884b41171390d582f3c0cdb2&x-cli-msg=%7B%22portalname%22%3A%22jordan%22%2C%22inline%22%3A%22false%22%7D
modifiedById: '7000000000247'
referenceTicketNumber: null
sarNumber: '91'
createdTime: 1603728618930
id: '7000000075001'
createdById: '7000000000247'
status: COMPLETED
getSubjectAccessRequests:
description: getSubjectAccessRequests template definitions
content:
application/json:
schema:
allOf:
- type: object
properties:
data:
type: array
items:
type: object
properties:
createdBy:
type:
- 'null'
- object
additionalProperties: false
maxProperties: 5
minProperties: 5
properties:
photoURL:
type:
- string
- 'null'
maxLength: 200
minLength: 0
pattern: (^(ht|f)tp(s?)\://[-.\w]*(/?)([a-zA-Z0-9\-\.\?\,\:\'/\\+=&%\$#_@]*)?$)
firstName:
type:
- string
- 'null'
maxLength: 50
minLength: 0
lastName:
type:
- string
- 'null'
maxLength: 50
minLength: 0
id:
type:
- string
- 'null'
- integer
format: int64
pattern: ([0-9]+)
email:
type:
- string
- 'null'
maxLength: 100
minLength: 0
pattern: ^[a-zA-Z0-9\_]([a-zA-Z0-9\_\+\-\.\'&]*)@(?=.{4,256}$)(([a-zA-Z0-9]+)(([\-\_]*[a-zA-Z0-9])*)[\.])+[a-zA-Z]{2,22}$
required:
- email
- firstName
- id
- lastName
- photoURL
modifiedBy:
type:
- 'null'
- object
additionalProperties: false
maxProperties: 5
minProperties: 5
properties:
photoURL:
type:
- string
- 'null'
maxLength: 200
minLength: 0
pattern: (^(ht|f)tp(s?)\://[-.\w]*(/?)([a-zA-Z0-9\-\.\?\,\:\'/\\+=&%\$#_@]*)?$)
firstName:
type:
- string
- 'null'
maxLength: 50
minLength: 0
lastName:
type:
- string
- 'null'
maxLength: 50
minLength: 0
id:
type:
- string
- 'null'
- integer
format: int64
pattern: ([0-9]+)
email:
type:
- string
- 'null'
maxLength: 100
minLength: 0
pattern: ^[a-zA-Z0-9\_]([a-zA-Z0-9\_\+\-\.\'&]*)@(?=.{4,256}$)(([a-zA-Z0-9]+)(([\-\_]*[a-zA-Z0-9])*)[\.])+[a-zA-Z]{2,22}$
required:
- email
- firstName
- id
- lastName
- photoURL
- type:
- 'null'
- object
additionalProperties: false
properties:
data:
$ref: ./SubjectAccessRequest.json#/components/schemas/data
required:
- data
examples:
Valid responses Definitions:
value:
data:
- referencereferenceTicketNumber: '105'
contactEmailId: john@zylker.com
modifiedById: '7000000000247'
createdBy:
photoURL: https://desk.zoho.com/api/v1/agents/7000000000247/photo?orgId=15273347
firstName: Jack
lastName: Carol
id: '7000000000247'
email: jack@zylker.com
# --- truncated at 32 KB (56 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/zoho/refs/heads/main/openapi/zoho-subjectaccessrequest-api-openapi.yml