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."
}Continuar la carga del escaneo
Continúa una carga BLAST por fragmentos. Esta ruta requiere una barra final. Las respuestas intermedias incluyen la cabecera Upload-Offset y no incluyen scan_id. Cuando el último fragmento completa el archivo, el cuerpo JSON incluye scan_id y project_id y no establece Upload-Offset.
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."
}Autorizaciones
Clave de API para la autenticación
Encabezados
Offset actual de la carga, en bytes
Tamaño total del archivo en bytes
Nombre del archivo que se está cargando
Identifies the client that triggered the scan. Requests without this header are attributed to the API.
api, cli, vscode, vs2022, intellij Parámetros de ruta
ID de transferencia de la solicitud inicial del escaneo
Cuerpo
Siguiente fragmento de datos del escaneo
Omite este campo para un escaneo completo. Envía true solo para un escaneo parcial. La API trata cualquier valor de formulario no vacío como escaneo parcial, incluida la cadena false.
true Lista de archivos que se deben escanear, separados por comas
Metadatos del escaneo proporcionados por el usuario como cadena de objeto JSON, p. ej., {"pipeline_url":"https://ci.example/run/123"}. Se validan en cada solicitud de fragmento y se asocian al escaneo cuando se completa la carga. Deben ser un objeto JSON de 16.384 bytes como máximo; de lo contrario, la solicitud falla con el código 400.
Si el worktree subido está dirty. La CLI envía true o false cuando tiene datos del repositorio. Omite el campo si el estado es desconocido.
true, false Tokens de tipo de escaneo separados por comas, aplicados al completar la carga (base, malicious, policy, secrets, pii y otros). La CLI asigna --scan-type blast a base. Omite para los valores predeterminados del servidor.
IDs de políticas separados por comas, aplicados al completar la carga. Los IDs no válidos devuelven 400.
Respuesta
Fragmento aceptado. Las respuestas intermedias establecen Upload-Offset. Las respuestas de finalización y de escaneo ya en curso no lo hacen.
ok "ok"
Presente cuando el último fragmento completa el archivo y se inicia un escaneo.
"1a5afaa3-72ac-458f-a492-ac40ffc88e76"
Presente junto con scan_id cuando se inicia un escaneo.
¿Esta página le ayudó?
