curl --request PATCH \
--url https://semgrep.dev/api/agent/deployments/{deploymentId}/repos/{idOrName} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"deploymentId": 123,
"idOrName": 456,
"name": "my-new-project",
"managedScans": {
"diffScan": true,
"numConfigs": 123,
"fullScan": true
},
"tagsChanges": [
{
"operation": "ADD_TAGS",
"tags": [
"tag1",
"tag2",
"tag3"
]
}
],
"primaryBranch": "refs/heads/deploy",
"aiScans": {
"fullScan": true
}
}
'import requests
url = "https://semgrep.dev/api/agent/deployments/{deploymentId}/repos/{idOrName}"
payload = {
"deploymentId": 123,
"idOrName": 456,
"name": "my-new-project",
"managedScans": {
"diffScan": True,
"numConfigs": 123,
"fullScan": True
},
"tagsChanges": [
{
"operation": "ADD_TAGS",
"tags": ["tag1", "tag2", "tag3"]
}
],
"primaryBranch": "refs/heads/deploy",
"aiScans": { "fullScan": True }
}
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({
deploymentId: 123,
idOrName: 456,
name: 'my-new-project',
managedScans: {diffScan: true, numConfigs: 123, fullScan: true},
tagsChanges: [{operation: 'ADD_TAGS', tags: ['tag1', 'tag2', 'tag3']}],
primaryBranch: 'refs/heads/deploy',
aiScans: {fullScan: true}
})
};
fetch('https://semgrep.dev/api/agent/deployments/{deploymentId}/repos/{idOrName}', 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://semgrep.dev/api/agent/deployments/{deploymentId}/repos/{idOrName}",
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([
'deploymentId' => 123,
'idOrName' => 456,
'name' => 'my-new-project',
'managedScans' => [
'diffScan' => true,
'numConfigs' => 123,
'fullScan' => true
],
'tagsChanges' => [
[
'operation' => 'ADD_TAGS',
'tags' => [
'tag1',
'tag2',
'tag3'
]
]
],
'primaryBranch' => 'refs/heads/deploy',
'aiScans' => [
'fullScan' => true
]
]),
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://semgrep.dev/api/agent/deployments/{deploymentId}/repos/{idOrName}"
payload := strings.NewReader("{\n \"deploymentId\": 123,\n \"idOrName\": 456,\n \"name\": \"my-new-project\",\n \"managedScans\": {\n \"diffScan\": true,\n \"numConfigs\": 123,\n \"fullScan\": true\n },\n \"tagsChanges\": [\n {\n \"operation\": \"ADD_TAGS\",\n \"tags\": [\n \"tag1\",\n \"tag2\",\n \"tag3\"\n ]\n }\n ],\n \"primaryBranch\": \"refs/heads/deploy\",\n \"aiScans\": {\n \"fullScan\": true\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://semgrep.dev/api/agent/deployments/{deploymentId}/repos/{idOrName}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"deploymentId\": 123,\n \"idOrName\": 456,\n \"name\": \"my-new-project\",\n \"managedScans\": {\n \"diffScan\": true,\n \"numConfigs\": 123,\n \"fullScan\": true\n },\n \"tagsChanges\": [\n {\n \"operation\": \"ADD_TAGS\",\n \"tags\": [\n \"tag1\",\n \"tag2\",\n \"tag3\"\n ]\n }\n ],\n \"primaryBranch\": \"refs/heads/deploy\",\n \"aiScans\": {\n \"fullScan\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://semgrep.dev/api/agent/deployments/{deploymentId}/repos/{idOrName}")
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 \"deploymentId\": 123,\n \"idOrName\": 456,\n \"name\": \"my-new-project\",\n \"managedScans\": {\n \"diffScan\": true,\n \"numConfigs\": 123,\n \"fullScan\": true\n },\n \"tagsChanges\": [\n {\n \"operation\": \"ADD_TAGS\",\n \"tags\": [\n \"tag1\",\n \"tag2\",\n \"tag3\"\n ]\n }\n ],\n \"primaryBranch\": \"refs/heads/deploy\",\n \"aiScans\": {\n \"fullScan\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"repo": {
"id": "<string>",
"name": "<string>",
"tags": [
"<string>"
],
"provisionedAt": "2023-11-07T05:31:56Z",
"latestScan": {
"id": "<string>",
"startedAt": "2023-11-07T05:31:56Z",
"completedAt": "2023-11-07T05:31:56Z",
"exitCode": "<string>",
"hasLogs": true,
"isManagedScanPlaceholder": true
},
"deploymentId": "<string>",
"url": "<string>",
"ignoredFiles": [
"<string>"
],
"productIgnoredFiles": {
"sast": [
"<string>"
],
"sca": [
"<string>"
],
"secrets": [
"<string>"
]
},
"firstScanId": "<string>",
"isArchived": true,
"isDisconnected": true,
"hasCodeAccess": true,
"managedScans": {
"diffScan": true,
"numConfigs": 123,
"fullScan": true
},
"isSetup": true,
"scmLastSyncedAt": 123,
"provider": "PROVIDER_GITHUB",
"defaultBranch": "<string>",
"refs": [
{
"repoRefId": "<string>",
"ref": "<string>",
"isDefault": true,
"isPrimary": true
}
],
"primaryRef": {
"id": "<string>",
"ref": "<string>",
"isOverride": true
},
"defaultRef": {
"id": "<string>",
"ref": "<string>"
},
"lastScannedRef": {
"id": "<string>",
"ref": "<string>"
},
"latestFullScaScanParserErrors": {
"errors": [
{
"location": {
"path": "<string>",
"startLine": "<string>",
"startCol": "<string>",
"endLine": "<string>",
"endCol": "<string>",
"url": "<string>",
"committedAt": "2023-11-07T05:31:56Z"
},
"reason": "<string>",
"parser": "<string>",
"text": "<string>"
}
]
},
"latestFullScaScanAt": "2023-11-07T05:31:56Z",
"scaInfo": {
"dependencyCounts": {}
},
"linkedRepos": [
"<string>"
],
"repositoryScmLinkId": "<string>",
"tokenScopes": {
"readMetadata": true,
"readPullRequest": true,
"writePullRequestComment": true,
"readContents": true,
"readMembers": true,
"manageWebhooks": true,
"writeContents": true,
"writePullRequest": true
},
"cloudContext": {
"id": "<string>",
"cnappInstallationId": "<string>",
"cnappInstallationBaseUrl": "<string>",
"isDeployed": true,
"publicExposure": true,
"lastSuccessfulIngestionCompletedAt": "2023-11-07T05:31:56Z"
},
"aiScans": {
"fullScan": true
},
"isScmArchived": true,
"isSemgrepArchived": true,
"archivedAt": "2023-11-07T05:31:56Z"
}
}Update project
Use a “Merge Patch” to update a project’s name or SMS settings.
curl --request PATCH \
--url https://semgrep.dev/api/agent/deployments/{deploymentId}/repos/{idOrName} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"deploymentId": 123,
"idOrName": 456,
"name": "my-new-project",
"managedScans": {
"diffScan": true,
"numConfigs": 123,
"fullScan": true
},
"tagsChanges": [
{
"operation": "ADD_TAGS",
"tags": [
"tag1",
"tag2",
"tag3"
]
}
],
"primaryBranch": "refs/heads/deploy",
"aiScans": {
"fullScan": true
}
}
'import requests
url = "https://semgrep.dev/api/agent/deployments/{deploymentId}/repos/{idOrName}"
payload = {
"deploymentId": 123,
"idOrName": 456,
"name": "my-new-project",
"managedScans": {
"diffScan": True,
"numConfigs": 123,
"fullScan": True
},
"tagsChanges": [
{
"operation": "ADD_TAGS",
"tags": ["tag1", "tag2", "tag3"]
}
],
"primaryBranch": "refs/heads/deploy",
"aiScans": { "fullScan": True }
}
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({
deploymentId: 123,
idOrName: 456,
name: 'my-new-project',
managedScans: {diffScan: true, numConfigs: 123, fullScan: true},
tagsChanges: [{operation: 'ADD_TAGS', tags: ['tag1', 'tag2', 'tag3']}],
primaryBranch: 'refs/heads/deploy',
aiScans: {fullScan: true}
})
};
fetch('https://semgrep.dev/api/agent/deployments/{deploymentId}/repos/{idOrName}', 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://semgrep.dev/api/agent/deployments/{deploymentId}/repos/{idOrName}",
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([
'deploymentId' => 123,
'idOrName' => 456,
'name' => 'my-new-project',
'managedScans' => [
'diffScan' => true,
'numConfigs' => 123,
'fullScan' => true
],
'tagsChanges' => [
[
'operation' => 'ADD_TAGS',
'tags' => [
'tag1',
'tag2',
'tag3'
]
]
],
'primaryBranch' => 'refs/heads/deploy',
'aiScans' => [
'fullScan' => true
]
]),
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://semgrep.dev/api/agent/deployments/{deploymentId}/repos/{idOrName}"
payload := strings.NewReader("{\n \"deploymentId\": 123,\n \"idOrName\": 456,\n \"name\": \"my-new-project\",\n \"managedScans\": {\n \"diffScan\": true,\n \"numConfigs\": 123,\n \"fullScan\": true\n },\n \"tagsChanges\": [\n {\n \"operation\": \"ADD_TAGS\",\n \"tags\": [\n \"tag1\",\n \"tag2\",\n \"tag3\"\n ]\n }\n ],\n \"primaryBranch\": \"refs/heads/deploy\",\n \"aiScans\": {\n \"fullScan\": true\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://semgrep.dev/api/agent/deployments/{deploymentId}/repos/{idOrName}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"deploymentId\": 123,\n \"idOrName\": 456,\n \"name\": \"my-new-project\",\n \"managedScans\": {\n \"diffScan\": true,\n \"numConfigs\": 123,\n \"fullScan\": true\n },\n \"tagsChanges\": [\n {\n \"operation\": \"ADD_TAGS\",\n \"tags\": [\n \"tag1\",\n \"tag2\",\n \"tag3\"\n ]\n }\n ],\n \"primaryBranch\": \"refs/heads/deploy\",\n \"aiScans\": {\n \"fullScan\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://semgrep.dev/api/agent/deployments/{deploymentId}/repos/{idOrName}")
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 \"deploymentId\": 123,\n \"idOrName\": 456,\n \"name\": \"my-new-project\",\n \"managedScans\": {\n \"diffScan\": true,\n \"numConfigs\": 123,\n \"fullScan\": true\n },\n \"tagsChanges\": [\n {\n \"operation\": \"ADD_TAGS\",\n \"tags\": [\n \"tag1\",\n \"tag2\",\n \"tag3\"\n ]\n }\n ],\n \"primaryBranch\": \"refs/heads/deploy\",\n \"aiScans\": {\n \"fullScan\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"repo": {
"id": "<string>",
"name": "<string>",
"tags": [
"<string>"
],
"provisionedAt": "2023-11-07T05:31:56Z",
"latestScan": {
"id": "<string>",
"startedAt": "2023-11-07T05:31:56Z",
"completedAt": "2023-11-07T05:31:56Z",
"exitCode": "<string>",
"hasLogs": true,
"isManagedScanPlaceholder": true
},
"deploymentId": "<string>",
"url": "<string>",
"ignoredFiles": [
"<string>"
],
"productIgnoredFiles": {
"sast": [
"<string>"
],
"sca": [
"<string>"
],
"secrets": [
"<string>"
]
},
"firstScanId": "<string>",
"isArchived": true,
"isDisconnected": true,
"hasCodeAccess": true,
"managedScans": {
"diffScan": true,
"numConfigs": 123,
"fullScan": true
},
"isSetup": true,
"scmLastSyncedAt": 123,
"provider": "PROVIDER_GITHUB",
"defaultBranch": "<string>",
"refs": [
{
"repoRefId": "<string>",
"ref": "<string>",
"isDefault": true,
"isPrimary": true
}
],
"primaryRef": {
"id": "<string>",
"ref": "<string>",
"isOverride": true
},
"defaultRef": {
"id": "<string>",
"ref": "<string>"
},
"lastScannedRef": {
"id": "<string>",
"ref": "<string>"
},
"latestFullScaScanParserErrors": {
"errors": [
{
"location": {
"path": "<string>",
"startLine": "<string>",
"startCol": "<string>",
"endLine": "<string>",
"endCol": "<string>",
"url": "<string>",
"committedAt": "2023-11-07T05:31:56Z"
},
"reason": "<string>",
"parser": "<string>",
"text": "<string>"
}
]
},
"latestFullScaScanAt": "2023-11-07T05:31:56Z",
"scaInfo": {
"dependencyCounts": {}
},
"linkedRepos": [
"<string>"
],
"repositoryScmLinkId": "<string>",
"tokenScopes": {
"readMetadata": true,
"readPullRequest": true,
"writePullRequestComment": true,
"readContents": true,
"readMembers": true,
"manageWebhooks": true,
"writeContents": true,
"writePullRequest": true
},
"cloudContext": {
"id": "<string>",
"cnappInstallationId": "<string>",
"cnappInstallationBaseUrl": "<string>",
"isDeployed": true,
"publicExposure": true,
"lastSuccessfulIngestionCompletedAt": "2023-11-07T05:31:56Z"
},
"aiScans": {
"fullScan": true
},
"isScmArchived": true,
"isSemgrepArchived": true,
"archivedAt": "2023-11-07T05:31:56Z"
}
}Authorizations
Get access to data with your API token. Example header:
Authorization: Bearer 2991e2fb4b540fe75b8f90677b0b892b6314e4961cb001fe6eb452eee248a628
The token can be provisioned from the Tokens section in your Settings, and requires explicitly enabling Web API access.
Path Parameters
The unique numerical identifier for the deployment.
123
A unique identifier for the project to modify. For example, 456 for uint64 ID or "my-org/my-repo" for name-slug.
456
Body
The unique numerical identifier for the deployment.
123
A unique identifier for the project to modify. For example, 456 for uint64 ID or "my-org/my-repo" for name-slug.
456
The new name for the project. If not provided, the project name will not be changed.
"my-new-project"
Show child attributes
Show child attributes
The change(s) to apply to the project's tags.
Show child attributes
Show child attributes
The new primary branch for the project. If not provided, the project's primary branch will not be changed.
If you set primary_branch to "None", the project's primary branch will be set to the project's default branch, if known.
Note: the project's "default branch" is detected from your source code manager. The "primary branch" will override the default branch.
"refs/heads/deploy"
Show child attributes
Show child attributes
Response
OK
Show child attributes
Show child attributes
Was this page helpful?