curl --request PATCH \
--url https://api.agentsfleet.net/v1/admin/fleet-libraries/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"description": null,
"name": null,
"published": null,
"required_credentials_reasons": "<unknown>",
"source_ref": null,
"source_repo": null
}
'import requests
url = "https://api.agentsfleet.net/v1/admin/fleet-libraries/{id}"
payload = {
"description": None,
"name": None,
"published": None,
"required_credentials_reasons": "<unknown>",
"source_ref": None,
"source_repo": None
}
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({
description: null,
name: null,
published: null,
required_credentials_reasons: '<unknown>',
source_ref: null,
source_repo: null
})
};
fetch('https://api.agentsfleet.net/v1/admin/fleet-libraries/{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.agentsfleet.net/v1/admin/fleet-libraries/{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 => json_encode([
'description' => null,
'name' => null,
'published' => null,
'required_credentials_reasons' => '<unknown>',
'source_ref' => null,
'source_repo' => null
]),
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://api.agentsfleet.net/v1/admin/fleet-libraries/{id}"
payload := strings.NewReader("{\n \"description\": null,\n \"name\": null,\n \"published\": null,\n \"required_credentials_reasons\": \"<unknown>\",\n \"source_ref\": null,\n \"source_repo\": null\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://api.agentsfleet.net/v1/admin/fleet-libraries/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"description\": null,\n \"name\": null,\n \"published\": null,\n \"required_credentials_reasons\": \"<unknown>\",\n \"source_ref\": null,\n \"source_repo\": null\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agentsfleet.net/v1/admin/fleet-libraries/{id}")
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 \"description\": null,\n \"name\": null,\n \"published\": null,\n \"required_credentials_reasons\": \"<unknown>\",\n \"source_ref\": null,\n \"source_repo\": null\n}"
response = http.request(request)
puts response.read_body{
"description": "<string>",
"etag": "<string>",
"id": "<string>",
"name": "<string>",
"required_credentials_reasons": "<unknown>",
"requirements": {
"credentials": [
"<string>"
],
"network_hosts": [
"<string>"
],
"tools": [
"<string>"
],
"trigger_present": true
},
"source_ref": "<string>",
"source_repo": "<string>",
"updated_at": 123,
"visibility": "<string>",
"content_hash": "<string>"
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}Curate, publish, or unpublish a platform Fleet library entry
Partial update. description and required_credentials_reasons are the two fields no bundle can supply, so they are operator-owned: a later bundle refetch never overwrites them. published moves the entry between draft (stored, invisible to every tenant) and public (live in every workspace gallery and installable). Publishing an entry whose bundle was never fetched is refused — a published entry always has something to install. Requires the platform-library:write scope. Send If-Match with the row’s etag to reject stale edits before they can repoint the source or unpublish the entry. Omitting the header preserves last-write-wins behavior.
curl --request PATCH \
--url https://api.agentsfleet.net/v1/admin/fleet-libraries/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"description": null,
"name": null,
"published": null,
"required_credentials_reasons": "<unknown>",
"source_ref": null,
"source_repo": null
}
'import requests
url = "https://api.agentsfleet.net/v1/admin/fleet-libraries/{id}"
payload = {
"description": None,
"name": None,
"published": None,
"required_credentials_reasons": "<unknown>",
"source_ref": None,
"source_repo": None
}
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({
description: null,
name: null,
published: null,
required_credentials_reasons: '<unknown>',
source_ref: null,
source_repo: null
})
};
fetch('https://api.agentsfleet.net/v1/admin/fleet-libraries/{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.agentsfleet.net/v1/admin/fleet-libraries/{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 => json_encode([
'description' => null,
'name' => null,
'published' => null,
'required_credentials_reasons' => '<unknown>',
'source_ref' => null,
'source_repo' => null
]),
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://api.agentsfleet.net/v1/admin/fleet-libraries/{id}"
payload := strings.NewReader("{\n \"description\": null,\n \"name\": null,\n \"published\": null,\n \"required_credentials_reasons\": \"<unknown>\",\n \"source_ref\": null,\n \"source_repo\": null\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://api.agentsfleet.net/v1/admin/fleet-libraries/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"description\": null,\n \"name\": null,\n \"published\": null,\n \"required_credentials_reasons\": \"<unknown>\",\n \"source_ref\": null,\n \"source_repo\": null\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agentsfleet.net/v1/admin/fleet-libraries/{id}")
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 \"description\": null,\n \"name\": null,\n \"published\": null,\n \"required_credentials_reasons\": \"<unknown>\",\n \"source_ref\": null,\n \"source_repo\": null\n}"
response = http.request(request)
puts response.read_body{
"description": "<string>",
"etag": "<string>",
"id": "<string>",
"name": "<string>",
"required_credentials_reasons": "<unknown>",
"requirements": {
"credentials": [
"<string>"
],
"network_hosts": [
"<string>"
],
"tools": [
"<string>"
],
"trigger_present": true
},
"source_ref": "<string>",
"source_repo": "<string>",
"updated_at": 123,
"visibility": "<string>",
"content_hash": "<string>"
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}Authorizations
Obtain a token via the CLI auth flow (POST /v1/auth/sessions) or GitHub OAuth
Headers
Optional catalog row version from the list response. Stale values return 412 with the current etag.
Path Parameters
UUIDv7 of the resource.
Body
Partial operator edit for one Fleet-library row.
Replacement description.
Replacement display name.
Publish or withdraw.
Operator-authored reason copy.
Replacement branch or tag.
Replacement GitHub owner/repository.
Response
The entry as it now reads, under its new entity tag
One metadata-only platform Fleet-library row.
Curated description.
Strong version over the editable row surface.
Slug identity.
Display name.
Operator-authored per-credential reason copy.
Derived requirement names and trigger presence.
Show child attributes
Show child attributes
Fetched revision.
GitHub owner/repository.
Last mutation instant in epoch milliseconds.
Draft or public.
Content identity, never support-file bytes.