Describe an artifact
curl --request GET \
--url https://api.app.chainloop.dev/v1/artifacts/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.app.chainloop.dev/v1/artifacts/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.app.chainloop.dev/v1/artifacts/{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://api.app.chainloop.dev/v1/artifacts/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.app.chainloop.dev/v1/artifacts/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.app.chainloop.dev/v1/artifacts/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.app.chainloop.dev/v1/artifacts/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"artifact": {
"kind": "kind",
"name": "name",
"digest": "digest",
"created_at": "2000-01-23T04:56:07.000Z",
"id": "id",
"version": "version"
},
"pagination": {
"next_cursor": "next_cursor"
},
"evidences": [
{
"workflow_id": "workflow_id",
"workflow_name": "workflow_name",
"uploaded_to_cas": true,
"subject_version": "subject_version",
"annotations": {
"key": "annotations"
},
"created_at": "2000-01-23T04:56:07.000Z",
"project_name": "project_name",
"latest_in_project": true,
"policies_total": 2,
"project_version_name": "project_version_name",
"project_id": "project_id",
"ingestion_finished_at": "2000-01-23T04:56:07.000Z",
"digest": "digest",
"id": "id",
"workflow_run_id": "workflow_run_id",
"policies_passed": 5,
"kind": "kind",
"latest_in_project_version": true,
"ingestion_started_at": "2000-01-23T04:56:07.000Z",
"organization_name": "organization_name",
"project_version_id": "project_version_id",
"ingestion_has_error": true,
"policy_status_summary": {
"violated": 5,
"total": 0,
"has_gates": true,
"passed": 6,
"status": "RUN_POLICY_STATUS_UNSPECIFIED",
"skipped": 1
},
"organization_id": "organization_id",
"name": "name",
"subject_name": "subject_name"
},
{
"workflow_id": "workflow_id",
"workflow_name": "workflow_name",
"uploaded_to_cas": true,
"subject_version": "subject_version",
"annotations": {
"key": "annotations"
},
"created_at": "2000-01-23T04:56:07.000Z",
"project_name": "project_name",
"latest_in_project": true,
"policies_total": 2,
"project_version_name": "project_version_name",
"project_id": "project_id",
"ingestion_finished_at": "2000-01-23T04:56:07.000Z",
"digest": "digest",
"id": "id",
"workflow_run_id": "workflow_run_id",
"policies_passed": 5,
"kind": "kind",
"latest_in_project_version": true,
"ingestion_started_at": "2000-01-23T04:56:07.000Z",
"organization_name": "organization_name",
"project_version_id": "project_version_id",
"ingestion_has_error": true,
"policy_status_summary": {
"violated": 5,
"total": 0,
"has_gates": true,
"passed": 6,
"status": "RUN_POLICY_STATUS_UNSPECIFIED",
"skipped": 1
},
"organization_id": "organization_id",
"name": "name",
"subject_name": "subject_name"
}
]
}{
"code": 0,
"details": [
"details",
"details"
],
"message": "message"
}{
"code": 6,
"details": [
"details",
"details"
],
"message": "message"
}{
"code": 1,
"details": [
"details",
"details"
],
"message": "message"
}{
"code": 7,
"details": [
"details",
"details"
],
"message": "message"
}{
"code": 5,
"details": [
"details",
"details"
],
"message": "message"
}{
"code": 5,
"details": [
{
"@type": "@type"
},
{
"@type": "@type"
}
],
"message": "message"
}Describe an artifact
Get detailed information about an artifact by ID, including a paginated list of linked evidence.
GET
/
v1
/
artifacts
/
{id}
Describe an artifact
curl --request GET \
--url https://api.app.chainloop.dev/v1/artifacts/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.app.chainloop.dev/v1/artifacts/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.app.chainloop.dev/v1/artifacts/{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://api.app.chainloop.dev/v1/artifacts/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.app.chainloop.dev/v1/artifacts/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.app.chainloop.dev/v1/artifacts/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.app.chainloop.dev/v1/artifacts/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"artifact": {
"kind": "kind",
"name": "name",
"digest": "digest",
"created_at": "2000-01-23T04:56:07.000Z",
"id": "id",
"version": "version"
},
"pagination": {
"next_cursor": "next_cursor"
},
"evidences": [
{
"workflow_id": "workflow_id",
"workflow_name": "workflow_name",
"uploaded_to_cas": true,
"subject_version": "subject_version",
"annotations": {
"key": "annotations"
},
"created_at": "2000-01-23T04:56:07.000Z",
"project_name": "project_name",
"latest_in_project": true,
"policies_total": 2,
"project_version_name": "project_version_name",
"project_id": "project_id",
"ingestion_finished_at": "2000-01-23T04:56:07.000Z",
"digest": "digest",
"id": "id",
"workflow_run_id": "workflow_run_id",
"policies_passed": 5,
"kind": "kind",
"latest_in_project_version": true,
"ingestion_started_at": "2000-01-23T04:56:07.000Z",
"organization_name": "organization_name",
"project_version_id": "project_version_id",
"ingestion_has_error": true,
"policy_status_summary": {
"violated": 5,
"total": 0,
"has_gates": true,
"passed": 6,
"status": "RUN_POLICY_STATUS_UNSPECIFIED",
"skipped": 1
},
"organization_id": "organization_id",
"name": "name",
"subject_name": "subject_name"
},
{
"workflow_id": "workflow_id",
"workflow_name": "workflow_name",
"uploaded_to_cas": true,
"subject_version": "subject_version",
"annotations": {
"key": "annotations"
},
"created_at": "2000-01-23T04:56:07.000Z",
"project_name": "project_name",
"latest_in_project": true,
"policies_total": 2,
"project_version_name": "project_version_name",
"project_id": "project_id",
"ingestion_finished_at": "2000-01-23T04:56:07.000Z",
"digest": "digest",
"id": "id",
"workflow_run_id": "workflow_run_id",
"policies_passed": 5,
"kind": "kind",
"latest_in_project_version": true,
"ingestion_started_at": "2000-01-23T04:56:07.000Z",
"organization_name": "organization_name",
"project_version_id": "project_version_id",
"ingestion_has_error": true,
"policy_status_summary": {
"violated": 5,
"total": 0,
"has_gates": true,
"passed": 6,
"status": "RUN_POLICY_STATUS_UNSPECIFIED",
"skipped": 1
},
"organization_id": "organization_id",
"name": "name",
"subject_name": "subject_name"
}
]
}{
"code": 0,
"details": [
"details",
"details"
],
"message": "message"
}{
"code": 6,
"details": [
"details",
"details"
],
"message": "message"
}{
"code": 1,
"details": [
"details",
"details"
],
"message": "message"
}{
"code": 7,
"details": [
"details",
"details"
],
"message": "message"
}{
"code": 5,
"details": [
"details",
"details"
],
"message": "message"
}{
"code": 5,
"details": [
{
"@type": "@type"
},
{
"@type": "@type"
}
],
"message": "message"
}Authorizations
Bearer token for authentication
Path Parameters
UUID of the artifact to describe
Query Parameters
The cursor to start pagination from
The cursor to start pagination from
The limit of the number of entries to return
The maximum number of entries to return
Filter to return only the latest evidence per project
Filter to return only the latest evidence per project
Response
A successful response.
Response for the Describe method
Represents an artifact (container image, helm chart, etc.) stored in the platform
Show child attributes
Show child attributes
Example:
{ "kind": "kind", "name": "name", "digest": "digest", "created_at": "2000-01-23T04:56:07.000Z", "id": "id", "version": "version" }
Show child attributes
Show child attributes
Pagination information for cursor-based pagination
Show child attributes
Show child attributes
Example:
{ "next_cursor": "next_cursor" }
⌘I
