Documentation Index

Fetch the complete documentation index at: /llms.txt

Use this file to discover all available pages before exploring further.

Skip to main content
PATCH
/
controls
/
{controlId}
Update a control's metadata
curl --request PATCH \
  --url https://api.vanta.com/v1/controls/{controlId} \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "<string>",
  "externalId": "<string>",
  "description": "<string>",
  "note": "<string>",
  "customFields": [
    {
      "label": "<string>",
      "value": "<string>"
    }
  ]
}
'
import requests

url = "https://api.vanta.com/v1/controls/{controlId}"

payload = {
"name": "<string>",
"externalId": "<string>",
"description": "<string>",
"note": "<string>",
"customFields": [
{
"label": "<string>",
"value": "<string>"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}

response = requests.patch(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
externalId: '<string>',
description: '<string>',
note: '<string>',
customFields: [{label: '<string>', value: '<string>'}]
})
};

fetch('https://api.vanta.com/v1/controls/{controlId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.vanta.com/v1/controls/{controlId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'externalId' => '<string>',
'description' => '<string>',
'note' => '<string>',
'customFields' => [
[
'label' => '<string>',
'value' => '<string>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://api.vanta.com/v1/controls/{controlId}"

payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"externalId\": \"<string>\",\n \"description\": \"<string>\",\n \"note\": \"<string>\",\n \"customFields\": [\n {\n \"label\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n}")

req, _ := http.NewRequest("PATCH", url, payload)

req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.patch("https://api.vanta.com/v1/controls/{controlId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"externalId\": \"<string>\",\n \"description\": \"<string>\",\n \"note\": \"<string>\",\n \"customFields\": [\n {\n \"label\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.vanta.com/v1/controls/{controlId}")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"externalId\": \"<string>\",\n \"description\": \"<string>\",\n \"note\": \"<string>\",\n \"customFields\": [\n {\n \"label\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n}"

response = http.request(request)
puts response.read_body
{
  "id": "a2f7e1b9d0c3f4e5a6c7b8d9",
  "externalId": "CRY-104",
  "name": "Data encryption utilized",
  "description": "Access reviews are performed to ensure that access is appropriate for the user's role and responsibilities.",
  "source": "Vanta",
  "domains": [
    "CRYPTOGRAPHIC_PROTECTIONS"
  ],
  "owner": {
    "id": "65e1efde08e8478f143a8ff9",
    "emailAddress": "example-person@email.com",
    "displayName": "Example Owner"
  },
  "note": "Remember to do by Friday",
  "numDocumentsPassing": 1,
  "numDocumentsTotal": 1,
  "numTestsPassing": 2,
  "numTestsTotal": 3,
  "status": "IN_PROGRESS",
  "role": "CONTROLLER",
  "customFields": [
    {
      "label": "Additional context",
      "value": "This control is critical for GDPR compliance"
    }
  ],
  "creationDate": null,
  "modificationDate": null
}

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

controlId
string
required

Body

application/json
name
string

A new name for the control.

externalId
string

The new external ID for the control.

description
string

The new description for the control.

domain
enum<string>

The new category for the control.

Available options:
ARTIFICIAL_&_AUTONOMOUS_TECHNOLOGY,
ASSET_MANAGEMENT,
BUSINESS_CONTINUITY_&_DISASTER_RECOVERY,
CAPACITY_&_PERFORMANCE_PLANNING,
CHANGE_MANAGEMENT,
CLOUD_SECURITY,
COMPLIANCE,
CONFIGURATION_MANAGEMENT,
CONTINUOUS_MONITORING,
CRYPTOGRAPHIC_PROTECTIONS,
DATA_CLASSIFICATION_&_HANDLING,
EMBEDDED_TECHNOLOGY,
ENDPOINT_SECURITY,
HUMAN_RESOURCES_SECURITY,
IDENTIFICATION_&_AUTHENTICATION,
INCIDENT_RESPONSE,
INFORMATION_ASSURANCE,
MAINTENANCE,
MOBILE_DEVICE_MANAGEMENT,
NETWORK SECURITY,
PHYSICAL_&_ENVIRONMENTAL_SECURITY,
PRIVACY,
PROJECT_&_RESOURCE MANAGEMENT,
RISK_MANAGEMENT,
SECURE_ENGINEERING_&_ARCHITECTURE,
SECURITY_AWARENESS_&_TRAINING,
SECURITY_OPERATIONS,
SECURITY_&_PRIVACY_GOVERNANCE,
TECHNOLOGY_DEVELOPMENT_&_ACQUISITION,
THIRD-PARTY_MANAGEMENT,
THREAT_MANAGEMENT,
VULNERABILITY_&_PATCH_MANAGEMENT,
WEB_SECURITY,
ADMINISTRATIVE,
PHYSICAL,
TECHNICAL,
BASIC,
DERIVED
note
string

The new note for the control.

customFields
object[]

The control's new values for custom fields.

Response

200 - application/json

Ok

id
string
required

The control's unique ID.

externalId
string | null
required

The control's external ID.

name
string
required

The control's name.

description
string
required

The control's description.

source
enum<string>
required

The control's source, either "VANTA" or "CUSTOM".

Available options:
Vanta,
Custom
domains
string[]
required

The security domains that the control belongs to.

owner
object | null
required

The control's owner.

customFields
object[]
required

The control's custom field values, if control custom fields is included in your Vanta instance.

creationDate
string<date-time> | null
required

When the control was created. Returns null for Vanta library controls.

modificationDate
string<date-time> | null
required

When the control was last modified. Returns null for Vanta library controls.

numDocumentsPassing
number<double>
required

The number of passing documents that are linked to the control.

numDocumentsTotal
number<double>
required

The total number of documents that are linked to the control.

numTestsPassing
number<double>
required

The number of passing tests that are linked to the control.

numTestsTotal
number<double>
required

The total number of tests that are linked to the control.

status
enum<string>
required

The status of the control as determined by number of passing tests and documents.

Available options:
NO_EVIDENCE_MAPPED,
NOT_STARTED,
IN_PROGRESS,
COMPLETED
note
string | null
required

A user created note for the control.

role
string | null

The control's GDPR role, if the control is a GDPR control.

Assistant
Responses are generated using AI and may contain mistakes.
Morty Proxy This is a proxified and sanitized view of the page, visit original site.