curl --request PATCH \
--url https://www.corgea.app/api/v1/start-scan/{transfer_id}/ \
--header 'CORGEA-TOKEN: <api-key>' \
--header 'Content-Type: multipart/form-data' \
--header 'Upload-Length: <upload-length>' \
--header 'Upload-Name: <upload-name>' \
--header 'Upload-Offset: <upload-offset>' \
--form chunk_data='@example-file' \
--form 'project_name=<string>' \
--form 'branch=<string>' \
--form 'repo_url=<string>' \
--form 'sha=<string>' \
--form partial_scan=true \
--form 'files_to_scan=<string>' \
--form 'metadata=<string>' \
--form 'scan_configs=<string>' \
--form 'target_policies=<string>'import requests
url = "https://www.corgea.app/api/v1/start-scan/{transfer_id}/"
files = { "chunk_data": ("example-file", open("example-file", "rb")) }
payload = {
"project_name": "<string>",
"branch": "<string>",
"repo_url": "<string>",
"sha": "<string>",
"partial_scan": "true",
"files_to_scan": "<string>",
"metadata": "<string>",
"scan_configs": "<string>",
"target_policies": "<string>"
}
headers = {
"Upload-Offset": "<upload-offset>",
"Upload-Length": "<upload-length>",
"Upload-Name": "<upload-name>",
"CORGEA-TOKEN": "<api-key>"
}
response = requests.patch(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('chunk_data', '<string>');
form.append('project_name', '<string>');
form.append('branch', '<string>');
form.append('repo_url', '<string>');
form.append('sha', '<string>');
form.append('partial_scan', 'true');
form.append('files_to_scan', '<string>');
form.append('metadata', '<string>');
form.append('scan_configs', '<string>');
form.append('target_policies', '<string>');
const options = {
method: 'PATCH',
headers: {
'Upload-Offset': '<upload-offset>',
'Upload-Length': '<upload-length>',
'Upload-Name': '<upload-name>',
'CORGEA-TOKEN': '<api-key>'
}
};
options.body = form;
fetch('https://www.corgea.app/api/v1/start-scan/{transfer_id}/', 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://www.corgea.app/api/v1/start-scan/{transfer_id}/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"chunk_data\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"project_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"branch\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"repo_url\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"sha\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"partial_scan\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files_to_scan\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"metadata\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"scan_configs\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"target_policies\"\r\n\r\n<string>\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"CORGEA-TOKEN: <api-key>",
"Content-Type: multipart/form-data",
"Upload-Length: <upload-length>",
"Upload-Name: <upload-name>",
"Upload-Offset: <upload-offset>"
],
]);
$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://www.corgea.app/api/v1/start-scan/{transfer_id}/"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"chunk_data\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"project_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"branch\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"repo_url\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"sha\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"partial_scan\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files_to_scan\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"metadata\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"scan_configs\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"target_policies\"\r\n\r\n<string>\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Upload-Offset", "<upload-offset>")
req.Header.Add("Upload-Length", "<upload-length>")
req.Header.Add("Upload-Name", "<upload-name>")
req.Header.Add("CORGEA-TOKEN", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://www.corgea.app/api/v1/start-scan/{transfer_id}/")
.header("Upload-Offset", "<upload-offset>")
.header("Upload-Length", "<upload-length>")
.header("Upload-Name", "<upload-name>")
.header("CORGEA-TOKEN", "<api-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"chunk_data\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"project_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"branch\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"repo_url\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"sha\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"partial_scan\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files_to_scan\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"metadata\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"scan_configs\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"target_policies\"\r\n\r\n<string>\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.corgea.app/api/v1/start-scan/{transfer_id}/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Upload-Offset"] = '<upload-offset>'
request["Upload-Length"] = '<upload-length>'
request["Upload-Name"] = '<upload-name>'
request["CORGEA-TOKEN"] = '<api-key>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"chunk_data\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"project_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"branch\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"repo_url\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"sha\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"partial_scan\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files_to_scan\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"metadata\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"scan_configs\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"target_policies\"\r\n\r\n<string>\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"status": "ok",
"message": "Chunk received."
}Scan-Upload fortsetzen
Setzt einen BLAST-Upload in Chunks fort. Dieser Pfad erfordert einen abschließenden Schrägstrich. Zwischenresponses enthalten den Header Upload-Offset und keine scan_id. Wenn der letzte Chunk das Archiv vervollständigt, enthält der JSON-Body scan_id und project_id und setzt Upload-Offset nicht.
curl --request PATCH \
--url https://www.corgea.app/api/v1/start-scan/{transfer_id}/ \
--header 'CORGEA-TOKEN: <api-key>' \
--header 'Content-Type: multipart/form-data' \
--header 'Upload-Length: <upload-length>' \
--header 'Upload-Name: <upload-name>' \
--header 'Upload-Offset: <upload-offset>' \
--form chunk_data='@example-file' \
--form 'project_name=<string>' \
--form 'branch=<string>' \
--form 'repo_url=<string>' \
--form 'sha=<string>' \
--form partial_scan=true \
--form 'files_to_scan=<string>' \
--form 'metadata=<string>' \
--form 'scan_configs=<string>' \
--form 'target_policies=<string>'import requests
url = "https://www.corgea.app/api/v1/start-scan/{transfer_id}/"
files = { "chunk_data": ("example-file", open("example-file", "rb")) }
payload = {
"project_name": "<string>",
"branch": "<string>",
"repo_url": "<string>",
"sha": "<string>",
"partial_scan": "true",
"files_to_scan": "<string>",
"metadata": "<string>",
"scan_configs": "<string>",
"target_policies": "<string>"
}
headers = {
"Upload-Offset": "<upload-offset>",
"Upload-Length": "<upload-length>",
"Upload-Name": "<upload-name>",
"CORGEA-TOKEN": "<api-key>"
}
response = requests.patch(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('chunk_data', '<string>');
form.append('project_name', '<string>');
form.append('branch', '<string>');
form.append('repo_url', '<string>');
form.append('sha', '<string>');
form.append('partial_scan', 'true');
form.append('files_to_scan', '<string>');
form.append('metadata', '<string>');
form.append('scan_configs', '<string>');
form.append('target_policies', '<string>');
const options = {
method: 'PATCH',
headers: {
'Upload-Offset': '<upload-offset>',
'Upload-Length': '<upload-length>',
'Upload-Name': '<upload-name>',
'CORGEA-TOKEN': '<api-key>'
}
};
options.body = form;
fetch('https://www.corgea.app/api/v1/start-scan/{transfer_id}/', 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://www.corgea.app/api/v1/start-scan/{transfer_id}/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"chunk_data\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"project_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"branch\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"repo_url\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"sha\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"partial_scan\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files_to_scan\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"metadata\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"scan_configs\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"target_policies\"\r\n\r\n<string>\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"CORGEA-TOKEN: <api-key>",
"Content-Type: multipart/form-data",
"Upload-Length: <upload-length>",
"Upload-Name: <upload-name>",
"Upload-Offset: <upload-offset>"
],
]);
$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://www.corgea.app/api/v1/start-scan/{transfer_id}/"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"chunk_data\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"project_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"branch\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"repo_url\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"sha\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"partial_scan\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files_to_scan\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"metadata\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"scan_configs\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"target_policies\"\r\n\r\n<string>\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Upload-Offset", "<upload-offset>")
req.Header.Add("Upload-Length", "<upload-length>")
req.Header.Add("Upload-Name", "<upload-name>")
req.Header.Add("CORGEA-TOKEN", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://www.corgea.app/api/v1/start-scan/{transfer_id}/")
.header("Upload-Offset", "<upload-offset>")
.header("Upload-Length", "<upload-length>")
.header("Upload-Name", "<upload-name>")
.header("CORGEA-TOKEN", "<api-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"chunk_data\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"project_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"branch\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"repo_url\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"sha\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"partial_scan\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files_to_scan\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"metadata\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"scan_configs\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"target_policies\"\r\n\r\n<string>\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.corgea.app/api/v1/start-scan/{transfer_id}/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Upload-Offset"] = '<upload-offset>'
request["Upload-Length"] = '<upload-length>'
request["Upload-Name"] = '<upload-name>'
request["CORGEA-TOKEN"] = '<api-key>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"chunk_data\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"project_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"branch\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"repo_url\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"sha\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"partial_scan\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files_to_scan\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"metadata\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"scan_configs\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"target_policies\"\r\n\r\n<string>\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"status": "ok",
"message": "Chunk received."
}Autorisierungen
API-Key für die Authentifizierung
Header
Aktueller Byte-Offset des Uploads
Gesamtgröße der Datei in Byte
Name der hochgeladenen Datei
Identifies the client that triggered the scan. Requests without this header are attributed to the API.
api, cli, vscode, vs2022, intellij Pfadparameter
Transfer-ID aus dem initialen Scan-Request
Body
Nächster Daten-Chunk für den Scan
Lassen Sie dieses Feld bei einem vollständigen Scan weg. Senden Sie true nur bei einem partiellen Scan. Die API behandelt jeden nicht leeren Formularwert als partiellen Scan, einschließlich der Zeichenkette false.
true Kommagetrennte Liste der zu scannenden Dateien
Vom Benutzer bereitgestellte Scan-Metadaten als JSON-Objekt-String, z. B. {"pipeline_url":"https://ci.example/run/123"}. Sie werden bei jedem Chunk-Request validiert und nach Abschluss des Uploads dem Scan zugeordnet. Der Wert muss ein JSON-Objekt mit höchstens 16.384 Byte sein; andernfalls schlägt der Request mit Status 400 fehl.
Ob der hochgeladene Worktree dirty ist. Die CLI sendet true oder false, wenn Repo-Infos vorliegen. Lassen Sie das Feld weg, wenn der Status unbekannt ist.
true, false Kommagetrennte Scan-Typ-Tokens, die nach Abschluss des Uploads gelten (base, malicious, policy, secrets, pii und weitere). Die CLI mappt --scan-type blast auf base. Weglassen für Server-Standardwerte.
Kommagetrennte Policy-IDs, die nach Abschluss des Uploads gelten. Ungültige IDs liefern 400.
Antwort
Chunk akzeptiert. Zwischenresponses setzen Upload-Offset. Abschlussantworten und Antworten bei bereits laufendem Scan tun das nicht.
ok "ok"
Enthalten, wenn der letzte Chunk das Archiv vervollständigt und ein Scan startet.
"1a5afaa3-72ac-458f-a492-ac40ffc88e76"
Zusammen mit scan_id enthalten, wenn ein Scan startet.
War diese Seite hilfreich?
