GetAsyncJob
Fetches an async job by UUID. When state = JOB_STATE_SUCCESS, spec.response carries the type-specific arm (sbom or vex) with a freshly signed download URL (5-minute TTL) and the stable object-store file_path.
curl --request GET \
--url https://api.endorlabs.com/v1/namespaces/{tenant_meta.namespace}/async-jobs/{uuid}import requests
url = "https://api.endorlabs.com/v1/namespaces/{tenant_meta.namespace}/async-jobs/{uuid}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.endorlabs.com/v1/namespaces/{tenant_meta.namespace}/async-jobs/{uuid}', 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.endorlabs.com/v1/namespaces/{tenant_meta.namespace}/async-jobs/{uuid}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.endorlabs.com/v1/namespaces/{tenant_meta.namespace}/async-jobs/{uuid}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.endorlabs.com/v1/namespaces/{tenant_meta.namespace}/async-jobs/{uuid}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.endorlabs.com/v1/namespaces/{tenant_meta.namespace}/async-jobs/{uuid}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"meta": {
"name": "<string>",
"annotations": {},
"create_time": "2023-11-07T05:31:56Z",
"created_by": "<string>",
"description": "<string>",
"index_data": {
"data": [
"<string>"
],
"search_score": 123,
"tenant": "<string>",
"will_be_deleted_at": "2023-11-07T05:31:56Z"
},
"kind": "<string>",
"parent_kind": "<string>",
"parent_uuid": "<string>",
"references": {},
"tags": [
"<string>"
],
"update_time": "2023-11-07T05:31:56Z",
"updated_by": "<string>",
"upsert_time": "2023-11-07T05:31:56Z",
"version": "<string>"
},
"spec": {
"request": {
"sbom": {
"component_type": "COMPONENT_TYPE_UNSPECIFIED",
"cyclonedx_spec_version": "CYCLONE_DX_SPEC_VERSION_UNSPECIFIED",
"export_parameters": {
"package_version_uuids": [
{}
],
"project_name": "<string>",
"project_uuid": "<string>",
"repository_version": "<string>"
},
"format": "FORMAT_UNSPECIFIED",
"hide_private_components": true,
"include_test_dependencies": true,
"include_vulnerabilities": true,
"kind": "SBOM_KIND_UNSPECIFIED",
"package_version_uuid": "<string>",
"spdx_spec_version": "SPDX_SPEC_VERSION_UNSPECIFIED"
},
"vex": {
"component_type": "COMPONENT_TYPE_UNSPECIFIED",
"cyclonedx_spec_version": "CYCLONE_DX_SPEC_VERSION_UNSPECIFIED",
"export_parameters": {
"package_version_uuids": [
{}
],
"project_name": "<string>",
"project_uuid": "<string>",
"repository_version": "<string>"
},
"format": "FORMAT_UNSPECIFIED",
"include_test_dependencies": true,
"kind": "SBOM_KIND_UNSPECIFIED",
"package_version_uuid": "<string>"
}
},
"type": "TYPE_UNSPECIFIED",
"response": {
"error_message": "<string>",
"sbom": {
"file_path": "<string>",
"report_url": "<string>",
"sbom_size_bytes": "<string>"
},
"vex": {
"file_path": "<string>",
"report_url": "<string>",
"vex_size_bytes": "<string>"
}
},
"state": "JOB_STATE_UNSPECIFIED"
},
"tenant_meta": {
"namespace": "<string>"
},
"uuid": "<string>"
}{
"code": 123,
"details": [
{
"@type": "<string>"
}
],
"message": "<string>"
}Path Parameters
Namespaces are a way to organize organizational units into virtual groupings of resources. Namespaces must be a fully qualified name, for example, the child namespace of namespace "endor.prod" called "app" is called "endor.prod.app".
The UUID of the requested resource.
Query Parameters
List of fields to return (all fields are returned by default).
Response
A successful response.
AsyncJob is an asynchronous job — SBOM export or VEX export types today, with more types added as they ship.
Common fields for all Endor Labs resources.
Show child attributes
Show child attributes
AsyncJob inputs and outputs.
Show child attributes
Show child attributes
Tenant related data for the tenant containing the resource.
Show child attributes
Show child attributes
UUID of the AsyncJob. Assigned by the server on Create; use it to fetch the job via GetAsyncJob.
Was this page helpful?
curl --request GET \
--url https://api.endorlabs.com/v1/namespaces/{tenant_meta.namespace}/async-jobs/{uuid}import requests
url = "https://api.endorlabs.com/v1/namespaces/{tenant_meta.namespace}/async-jobs/{uuid}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.endorlabs.com/v1/namespaces/{tenant_meta.namespace}/async-jobs/{uuid}', 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.endorlabs.com/v1/namespaces/{tenant_meta.namespace}/async-jobs/{uuid}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.endorlabs.com/v1/namespaces/{tenant_meta.namespace}/async-jobs/{uuid}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.endorlabs.com/v1/namespaces/{tenant_meta.namespace}/async-jobs/{uuid}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.endorlabs.com/v1/namespaces/{tenant_meta.namespace}/async-jobs/{uuid}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"meta": {
"name": "<string>",
"annotations": {},
"create_time": "2023-11-07T05:31:56Z",
"created_by": "<string>",
"description": "<string>",
"index_data": {
"data": [
"<string>"
],
"search_score": 123,
"tenant": "<string>",
"will_be_deleted_at": "2023-11-07T05:31:56Z"
},
"kind": "<string>",
"parent_kind": "<string>",
"parent_uuid": "<string>",
"references": {},
"tags": [
"<string>"
],
"update_time": "2023-11-07T05:31:56Z",
"updated_by": "<string>",
"upsert_time": "2023-11-07T05:31:56Z",
"version": "<string>"
},
"spec": {
"request": {
"sbom": {
"component_type": "COMPONENT_TYPE_UNSPECIFIED",
"cyclonedx_spec_version": "CYCLONE_DX_SPEC_VERSION_UNSPECIFIED",
"export_parameters": {
"package_version_uuids": [
{}
],
"project_name": "<string>",
"project_uuid": "<string>",
"repository_version": "<string>"
},
"format": "FORMAT_UNSPECIFIED",
"hide_private_components": true,
"include_test_dependencies": true,
"include_vulnerabilities": true,
"kind": "SBOM_KIND_UNSPECIFIED",
"package_version_uuid": "<string>",
"spdx_spec_version": "SPDX_SPEC_VERSION_UNSPECIFIED"
},
"vex": {
"component_type": "COMPONENT_TYPE_UNSPECIFIED",
"cyclonedx_spec_version": "CYCLONE_DX_SPEC_VERSION_UNSPECIFIED",
"export_parameters": {
"package_version_uuids": [
{}
],
"project_name": "<string>",
"project_uuid": "<string>",
"repository_version": "<string>"
},
"format": "FORMAT_UNSPECIFIED",
"include_test_dependencies": true,
"kind": "SBOM_KIND_UNSPECIFIED",
"package_version_uuid": "<string>"
}
},
"type": "TYPE_UNSPECIFIED",
"response": {
"error_message": "<string>",
"sbom": {
"file_path": "<string>",
"report_url": "<string>",
"sbom_size_bytes": "<string>"
},
"vex": {
"file_path": "<string>",
"report_url": "<string>",
"vex_size_bytes": "<string>"
}
},
"state": "JOB_STATE_UNSPECIFIED"
},
"tenant_meta": {
"namespace": "<string>"
},
"uuid": "<string>"
}{
"code": 123,
"details": [
{
"@type": "<string>"
}
],
"message": "<string>"
}