Optimizely Subject Access Requests API

Manage information about Subject Access Requests (includes GDPR)

Operations 6

GET /internal-subject-access-requests List Subject Access Requests by data source and status #
PATCH /internal-subject-access-requests/{request_id} Update a Subject Access Request #
POST /internal-subject-access-requests/{request_id} Update a Subject Access Request #
GET /subject-access-requests List Subject Access Requests #
POST /subject-access-requests Create a Subject Access Request #
GET /subject-access-requests/{request_id} Get Subject Access Request #

Work with this as data

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/optimizely-subject-access-requests-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 email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

optimizely-subject-access-requests-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Optimizely Subject Access Requests API
  version: '2.0'
  description: Manage information about Subject Access Requests (includes GDPR)
servers:
- url: https://api.optimizely.com/v2
security:
- apiKey: []
- OAuth2:
  - read
  - write
tags:
- description: Manage information about Subject Access Requests (includes GDPR)
  name: Subject Access Requests
paths:
  /internal-subject-access-requests:
    get:
      description: Get a list of Subject Access Requests by data source and status
      operationId: list_sar_requests_by_team
      parameters:
      - $ref: '#/components/parameters/per_page'
      - $ref: '#/components/parameters/page'
      - description: Name of the source for which to retrieve the Subject Access Requests
        in: query
        name: data_source
        required: true
        schema:
          enum:
          - app_backend
          - app_backend_infra
          - data_platform
          - datawarehouse
          - external_systems
          - optimizely
          - optimizely_on_optimizely
          - program_management
          - security
          - business_systems
          - marketing
          - tse
          type: string
      - description: Filter request by status
        in: query
        name: status
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/SubjectAccessRequestInternal'
                type: array
          description: Return Subject Access Request information
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Invalid or missing query parameters
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Invalid credentials
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error
      summary: List Subject Access Requests by data source and status
      tags:
      - Subject Access Requests
      x-release-state: alpha
  /internal-subject-access-requests/{request_id}:
    patch:
      description: Update a Subject Access Request by ID
      operationId: update_sar_request
      parameters:
      - description: The ID of the Subject Access Request to be updated.
        in: path
        name: request_id
        required: true
        schema:
          format: int64
          type: integer
      requestBody:
        $ref: '#/components/requestBodies/SubjectAccessRequestUpdate'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubjectAccessRequestInternal'
          description: Return the updated Subject Access Request
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Invalid ID or request body
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Invalid credentials
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: You do not have permission to edit the specified Subject Access Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Subject Access Request not found
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error
      summary: Update a Subject Access Request
      tags:
      - Subject Access Requests
      x-release-state: alpha
    post:
      description: Update a Subject Access Request by ID
      operationId: update_sar_request_by_post
      parameters:
      - description: The ID of the Subject Access Request to be updated.
        in: path
        name: request_id
        required: true
        schema:
          format: int64
          type: integer
      requestBody:
        $ref: '#/components/requestBodies/SubjectAccessRequestUpdate'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubjectAccessRequestInternal'
          description: Return the updated Subject Access Request
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Invalid ID or request body
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Invalid credentials
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: You do not have permission to edit the specified Subject Access Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Subject Access Request not found
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error
      summary: Update a Subject Access Request
      tags:
      - Subject Access Requests
      x-release-state: alpha
  /subject-access-requests:
    get:
      description: Fetch Subject Access Requests submitted from your account
      operationId: list_sar_requests_by_account
      parameters:
      - $ref: '#/components/parameters/per_page'
      - $ref: '#/components/parameters/page'
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/SubjectAccessRequest'
                type: array
          description: Return Subject Access Request info
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Invalid ID supplied
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Invalid credentials
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: You do not have permission to access the specified subject access request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Subject Access Request not found
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error
      summary: List Subject Access Requests
      tags:
      - Subject Access Requests
    post:
      description: Create a Subject Access Request
      operationId: create_sar_request
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubjectAccessRequest'
        description: A JSON string containing the fields needed to create a subject access request.
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubjectAccessRequest'
          description: Return the created SubjectAccessRequest
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Invalid request body content
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Invalid credentials
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: You do not have permission to create a Subject Access Request for the specified account
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error
      summary: Create a Subject Access Request
      tags:
      - Subject Access Requests
  /subject-access-requests/{request_id}:
    get:
      description: Get Subject Access Requests by request id
      operationId: get_sar_request
      parameters:
      - description: The ID of the Subject Access Request
        in: path
        name: request_id
        required: true
        schema:
          format: int64
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubjectAccessRequest'
          description: Return Subject Access Request info
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Invalid ID
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Invalid credentials
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: You do not have permission to access the specified subject access request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Subject Access Request not found
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error
      summary: Get Subject Access Request
      tags:
      - Subject Access Requests
components:
  requestBodies:
    SubjectAccessRequestUpdate:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SubjectAccessRequestUpdate'
      description: A JSON string containing the Subject Access Request fields to be updated.
      required: true
  schemas:
    Error:
      properties:
        code:
          type: string
        message:
          type: string
        messages:
          type: object
        uuid:
          format: uuid
          type: string
      type: object
    SubjectAccessRequestInternal:
      properties:
        account_id:
          description: Admin account id
          format: int64
          readOnly: true
          type: integer
        completed_at_time:
          description: Time when the request was completed
          format: date-time
          readOnly: true
          type:
          - string
          - 'null'
        data_source:
          description: Subject Access Request Data Source
          enum:
          - app_backend
          - app_backend_infra
          - data_platform
          - datawarehouse
          - external_systems
          - optimizely
          - optimizely_on_optimizely
          - program_management
          - security
          - business_systems
          - marketing
          - tse
          example: optimizely
          type: string
        data_type:
          description: Subject Access Request Data Type
          enum:
          - user
          - visitor
          example: user
          type: string
        expired_at_time:
          description: Time when the url expires (7 days from the completed_at_time)
          format: date-time
          readOnly: true
          type: string
        export_location:
          description: The location to which the data will be exported.
          example: s3://{bucket-name}/{account_id}/{parent_sar_id}/{sar_id}
          readOnly: true
          type: string
        id:
          description: Subject Access Request ID
          example: 12345
          format: int64
          readOnly: true
          type: integer
        identifier:
          description: Subject Access Request Identifier
          example: test@optimizely.com
          type: string
        identifier_type:
          description: Subject Access Request Identifier Type
          enum:
          - email
          - optimizely_end_user_id
          - dcp_id
          - fullstack_id
          - other
          example: email
          type: string
        parent_request_id:
          description: Parent Subject Access Request id
          example: 12345
          format: int64
          readOnly: true
          type: integer
        processing_started_time:
          description: Time when the processing of the request started
          format: date-time
          readOnly: true
          type:
          - string
          - 'null'
        request_type:
          description: Subject Access Request Request Type
          enum:
          - access
          - delete
          example: access
          type: string
        requested_at_time:
          description: Time when the request was submitted
          format: date-time
          readOnly: true
          type: string
        sla_deadline_time:
          description: Time by which the request must be deleted
          format: date-time
          readOnly: true
          type: string
        status:
          description: Status of the Subject Access Request
          enum:
          - pending
          - processing
          - completed
          - failure
          example: pending
          readOnly: true
          type: string
      required:
      - data_type
      - data_source
      - identifier
      - identifier_type
      - request_type
      type: object
    SubjectAccessRequestUpdate:
      properties:
        completed_at_time:
          description: Time when the request was completed
          format: date-time
          type:
          - string
          - 'null'
        export_location:
          description: s3 path to the Subject Access Request's ZIP file in the optimizely-sar-prod bucket
          example: s3://optimizely-sar-prod/{admin_account_id}-{parent_request_id}.zip
          type: string
        processing_started_time:
          description: Time when the processing of the request started
          format: date-time
          type:
          - string
          - 'null'
        status:
          description: Status of the Subject Access Request
          enum:
          - pending
          - processing
          - completed
          - failure
          example: processing
          type: string
      required:
      - status
      type: object
    SubjectAccessRequest:
      properties:
        account_id:
          description: The Account ID for the account the Subject Access Request will be executed.
          example: 12345
          format: int64
          readOnly: true
          type: integer
        completed_at_time:
          description: The time when the request was completed.
          format: date-time
          readOnly: true
          type:
          - string
          - 'null'
        data_type:
          description: "<p>The type of data to be accessed or deleted. The two options are:</p>\n\n<ul>\n    <li><code>user</code> - End users (also known as <em>Collaborators</em>) that are added to the accounts of our customers. A user can be a <a href=\"https://help.optimizely.com/Set_Up_Optimizely/Manage_collaborators_in_Optimizely_X\" rel=\"internal\"><u>collaborator</u></a> on multiple accounts.</li>\n    <li><code>visitor</code> - Visitors who visit or use our customers’ websites, apps and other digital products. Optimizely stores visitor data to calculate experiment results and to tailor content.</li>\n</ul>\n"
          enum:
          - user
          - visitor
          example: user
          type: string
        expired_at_time:
          description: Time when the url expires (7 days from the completed_at_time)
          format: date-time
          readOnly: true
          type: string
        export_location:
          description: The location to which the data will be exported. The data will be made accessible in a AWS S3 bucket.
          example: https://s3-us-west-2.amazonaws.com/optimizely-sar-prod/{account-id}-{request_id}.zip
          readOnly: true
          type: string
        id:
          description: The Subject Access Request ID.
          example: 12345
          format: int64
          readOnly: true
          type: integer
        identifier:
          description: The identifier value that you would like us to use when searching. If <code>user</code> was selected in the previous step, the identifier will be the email address for the User.
          example: test@optimizely.com
          maxLength: 355
          type: string
        identifier_type:
          description: "<p>User data is identified by the email address used to create the end user account. The endpoint only accepts the <code>email</code> datatype if you selected <code>user</code> for <strong>Datatype</strong>.<br>\n<br>\nIf you selected <code>visitor</code> for <strong>data_type</strong>, you can select 5 options for personal identifier types:</p>\n\n<ul>\n    <li>\n    <p><code>dcp_id</code> - Any ID used to identify targeting records in Optimizely.</p>\n    </li>\n    <li>\n    <p><code>email</code> - The email address of a visitor.</p>\n    </li>\n    <li>\n    <p><code>fullstack_id</code> - The unique identifier used for Full Stack experiments.</p>\n    </li>\n    <li>\n    <p><code>optimizely_end_user_id</code> - An Optimizely generated user cookie.</p>\n    </li>\n    <li>\n    <p><code>other</code> -&nbsp;Any other identifier that was uploaded to Optimizely.</p>\n    </li>\n</ul>\n"
          enum:
          - email
          - optimizely_end_user_id
          - dcp_id
          - fullstack_id
          - other
          example: email
          type: string
        processing_started_time:
          description: The time when the processing of the Subject Access Request started.
          format: date-time
          readOnly: true
          type:
          - string
          - 'null'
        request_type:
          description: '<code>delete</code> - Removes all data within an account that is associated to the identifier defined in the identifier field.

            <br>

            <code>access</code> - Finds all data stored in Optimizely systems associated to the identifier defined in the identifier field and exports it to an AWS S3 bucket for you to access.

            '
          enum:
          - access
          - delete
          example: access
          type: string
        requested_at_time:
          description: The time when the Subject Access Request was submitted.
          format: date-time
          readOnly: true
          type: string
        sla_deadline_time:
          description: The time by which the Subject Access Request must be completed.
          format: date-time
          readOnly: true
          type:
          - string
          - 'null'
        status:
          description: The status of the Subject Access Request.
          enum:
          - pending
          - processing
          - completed
          - failure
          example: pending
          readOnly: true
          type: string
      required:
      - data_type
      - identifier
      - identifier_type
      - request_type
      type: object
  parameters:
    page:
      description: 'Optional pagination argument that specifies the page to return. If you have 140 objects and you choose to return 100 objects per page you will be able to access the last 40 objects on page 2. The default value is 1.

        '
      in: query
      name: page
      required: false
      schema:
        default: 1
        type: integer
    per_page:
      description: Optional pagination argument that specifies the maximum number of objects to return per request
      in: query
      name: per_page
      required: false
      schema:
        default: 25
        maximum: 100
        type: integer
  securitySchemes:
    OAuth2:
      description: Write applications that authenticate with the REST API via OAuth 2.0. Or, to authenticate using a personal token, see https://docs.developers.optimizely.com/web/docs/personal-token
      flows:
        authorizationCode:
          authorizationUrl: https://app.optimizely.com/oauth2/authorize
          scopes:
            all: Full access to your account
          tokenUrl: https://app.optimizely.com/oauth2/token
      type: oauth2
    apiKey:
      scheme: bearer
      type: http