Vanta Controls API

Compliance controls and framework management

OpenAPI Specification

vanta-controls-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Conduct an audit Auditors Controls API
  version: 1.0.0
  description: The Auditor API lets audit firms conduct audits from a tool outside of Vanta. Unlock data syncing with Vanta through this API.
  termsOfService: https://www.vanta.com/terms
  license:
    name: UNLICENSED
  contact:
    name: API Support
    url: https://help.vanta.com/
    email: support@vanta.com
servers:
- url: https://api.vanta.com/v1
tags:
- name: Controls
  description: Compliance controls and framework management
paths:
  /v1/controls:
    get:
      operationId: listControls
      summary: List Controls
      description: Query information about compliance controls including control language and statuses.
      tags:
      - Controls
      parameters:
      - $ref: '#/components/parameters/pageSize'
      - $ref: '#/components/parameters/pageCursor'
      - name: frameworkId
        in: query
        schema:
          type: string
        description: Filter controls by framework identifier
      - name: status
        in: query
        schema:
          type: string
          enum:
          - PASSING
          - FAILING
          - NEEDS_ATTENTION
          - NOT_APPLICABLE
        description: Filter by control status
      responses:
        '200':
          description: Paginated list of controls
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ControlListResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
  /v1/frameworks:
    get:
      operationId: listFrameworks
      summary: List Frameworks
      description: Query all compliance frameworks configured in the organization.
      tags:
      - Controls
      parameters:
      - $ref: '#/components/parameters/pageSize'
      - $ref: '#/components/parameters/pageCursor'
      responses:
        '200':
          description: Paginated list of frameworks
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FrameworkListResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  parameters:
    pageCursor:
      name: pageCursor
      in: query
      schema:
        type: string
      description: Cursor for pagination — start from the item following this cursor
    pageSize:
      name: pageSize
      in: query
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 10
      description: Number of items to return per page (1-100)
  responses:
    Unauthorized:
      description: Unauthorized — missing or invalid access token
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    RateLimited:
      description: Rate limit exceeded
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    Control:
      type: object
      properties:
        id:
          type: string
          description: Unique control identifier
        name:
          type: string
          description: Control name
        description:
          type: string
          description: Control description and requirements
        status:
          type: string
          enum:
          - PASSING
          - FAILING
          - NEEDS_ATTENTION
          - NOT_APPLICABLE
          description: Current control status
        frameworkId:
          type: string
          description: Framework this control belongs to
        ownerId:
          type: string
          nullable: true
          description: User ID of the control owner
        testCount:
          type: integer
          description: Number of tests associated with this control
        passingTestCount:
          type: integer
          description: Number of passing tests
    ControlListResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Control'
        pageInfo:
          $ref: '#/components/schemas/PageInfo'
    Error:
      type: object
      properties:
        error:
          type: string
          description: Error code
        message:
          type: string
          description: Human-readable error description
        details:
          type: array
          items:
            type: string
          description: Additional error details
    PageInfo:
      type: object
      properties:
        pageSize:
          type: integer
          description: Number of items returned
        nextPageCursor:
          type: string
          nullable: true
          description: Cursor for the next page of results
        hasNextPage:
          type: boolean
          description: Whether there are more items after this page
    FrameworkListResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Framework'
        pageInfo:
          $ref: '#/components/schemas/PageInfo'
    Framework:
      type: object
      properties:
        id:
          type: string
          description: Unique framework identifier
        name:
          type: string
          description: Framework name (e.g., SOC 2, ISO 27001, HIPAA)
        description:
          type: string
          description: Framework description
        status:
          type: string
          enum:
          - IN_PROGRESS
          - READY_FOR_AUDIT
          - CERTIFIED
          description: Overall framework readiness status
        controlCount:
          type: integer
          description: Total number of controls in this framework
        passingControlCount:
          type: integer
          description: Number of passing controls
  securitySchemes:
    oauth:
      type: oauth2
      description: Get an oauth token from the token url and use it as a bearer token to access the Vanta API.
      flows:
        clientCredentials:
          scopes:
            auditor-api.audit:read: Grant read-only access to your audits
            auditor-api.audit:write: Grant read-write access to your audits
            auditor-api.auditor:read: Grant read-only access to your auditors
            auditor-api.auditor:write: Grant read-write access to your auditors
          tokenUrl: https://api.vanta.com/oauth/token
    bearerAuth:
      type: http
      scheme: bearer