Publish a local agent as a Library agent definition for the organization or one project (or --propose it). Requires --execute.
curl --request POST \
--url http://localhost:3000/api/v1/agents/publish \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"id": "<string>",
"description": "<string>",
"execute": true,
"note": "<string>",
"propose": true,
"scope": "<string>",
"slug": "<string>"
}
'import requests
url = "http://localhost:3000/api/v1/agents/publish"
payload = {
"id": "<string>",
"description": "<string>",
"execute": True,
"note": "<string>",
"propose": True,
"scope": "<string>",
"slug": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
id: '<string>',
description: '<string>',
execute: true,
note: '<string>',
propose: true,
scope: '<string>',
slug: '<string>'
})
};
fetch('http://localhost:3000/api/v1/agents/publish', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "3000",
CURLOPT_URL => "http://localhost:3000/api/v1/agents/publish",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'id' => '<string>',
'description' => '<string>',
'execute' => true,
'note' => '<string>',
'propose' => true,
'scope' => '<string>',
'slug' => '<string>'
]),
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 := "http://localhost:3000/api/v1/agents/publish"
payload := strings.NewReader("{\n \"id\": \"<string>\",\n \"description\": \"<string>\",\n \"execute\": true,\n \"note\": \"<string>\",\n \"propose\": true,\n \"scope\": \"<string>\",\n \"slug\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", 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.post("http://localhost:3000/api/v1/agents/publish")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"id\": \"<string>\",\n \"description\": \"<string>\",\n \"execute\": true,\n \"note\": \"<string>\",\n \"propose\": true,\n \"scope\": \"<string>\",\n \"slug\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:3000/api/v1/agents/publish")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"id\": \"<string>\",\n \"description\": \"<string>\",\n \"execute\": true,\n \"note\": \"<string>\",\n \"propose\": true,\n \"scope\": \"<string>\",\n \"slug\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"agent": "<string>",
"contentHash": "<string>",
"item": {
"archived": true,
"contentHash": "<string>",
"description": "<string>",
"externalAllowed": true,
"kind": "<string>",
"name": "<string>",
"project": {
"id": "<string>",
"slug": "<string>",
"name": "<string>"
},
"publishedAt": "<string>",
"publishedBy": {
"name": "<string>"
},
"ref": "<string>",
"scope": "org",
"slug": "<string>",
"updatedAt": "<string>",
"version": 123
},
"leftOut": [
{
"reason": "<string>",
"skill": "<string>"
}
],
"manifest": {
"model": "<string>",
"profile": "<string>",
"provider": "<string>",
"skills": [
"<string>"
]
},
"next": "<string>",
"proposal": {
"author": {
"agentId": "<string>",
"name": "<string>",
"self": true
},
"baseVersion": 123,
"can": {
"edit": true,
"publish": true,
"reject": true,
"submit": true,
"withdraw": true
},
"contentHash": "<string>",
"createdAt": "<string>",
"currentVersion": 123,
"decidedAt": "<string>",
"decidedBy": {
"name": "<string>"
},
"decisionReason": "<string>",
"description": "<string>",
"externalAllowed": true,
"fileCount": 123,
"name": "<string>",
"note": "<string>",
"number": 123,
"openComments": 123,
"proposedAt": "<string>",
"publishedVersion": 123,
"ref": "<string>",
"reviewUrl": "<string>",
"round": 123,
"stale": true,
"status": "draft",
"totalBytes": 123,
"updatedAt": "<string>"
},
"ref": "<string>",
"success": true,
"unchanged": true,
"version": 123
}agents
Publish a local agent as a Library agent definition for the organization or one project (or --propose it). Requires --execute.
POST
/
api
/
v1
/
agents
/
publish
Publish a local agent as a Library agent definition for the organization or one project (or --propose it). Requires --execute.
curl --request POST \
--url http://localhost:3000/api/v1/agents/publish \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"id": "<string>",
"description": "<string>",
"execute": true,
"note": "<string>",
"propose": true,
"scope": "<string>",
"slug": "<string>"
}
'import requests
url = "http://localhost:3000/api/v1/agents/publish"
payload = {
"id": "<string>",
"description": "<string>",
"execute": True,
"note": "<string>",
"propose": True,
"scope": "<string>",
"slug": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
id: '<string>',
description: '<string>',
execute: true,
note: '<string>',
propose: true,
scope: '<string>',
slug: '<string>'
})
};
fetch('http://localhost:3000/api/v1/agents/publish', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "3000",
CURLOPT_URL => "http://localhost:3000/api/v1/agents/publish",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'id' => '<string>',
'description' => '<string>',
'execute' => true,
'note' => '<string>',
'propose' => true,
'scope' => '<string>',
'slug' => '<string>'
]),
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 := "http://localhost:3000/api/v1/agents/publish"
payload := strings.NewReader("{\n \"id\": \"<string>\",\n \"description\": \"<string>\",\n \"execute\": true,\n \"note\": \"<string>\",\n \"propose\": true,\n \"scope\": \"<string>\",\n \"slug\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", 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.post("http://localhost:3000/api/v1/agents/publish")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"id\": \"<string>\",\n \"description\": \"<string>\",\n \"execute\": true,\n \"note\": \"<string>\",\n \"propose\": true,\n \"scope\": \"<string>\",\n \"slug\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:3000/api/v1/agents/publish")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"id\": \"<string>\",\n \"description\": \"<string>\",\n \"execute\": true,\n \"note\": \"<string>\",\n \"propose\": true,\n \"scope\": \"<string>\",\n \"slug\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"agent": "<string>",
"contentHash": "<string>",
"item": {
"archived": true,
"contentHash": "<string>",
"description": "<string>",
"externalAllowed": true,
"kind": "<string>",
"name": "<string>",
"project": {
"id": "<string>",
"slug": "<string>",
"name": "<string>"
},
"publishedAt": "<string>",
"publishedBy": {
"name": "<string>"
},
"ref": "<string>",
"scope": "org",
"slug": "<string>",
"updatedAt": "<string>",
"version": 123
},
"leftOut": [
{
"reason": "<string>",
"skill": "<string>"
}
],
"manifest": {
"model": "<string>",
"profile": "<string>",
"provider": "<string>",
"skills": [
"<string>"
]
},
"next": "<string>",
"proposal": {
"author": {
"agentId": "<string>",
"name": "<string>",
"self": true
},
"baseVersion": 123,
"can": {
"edit": true,
"publish": true,
"reject": true,
"submit": true,
"withdraw": true
},
"contentHash": "<string>",
"createdAt": "<string>",
"currentVersion": 123,
"decidedAt": "<string>",
"decidedBy": {
"name": "<string>"
},
"decisionReason": "<string>",
"description": "<string>",
"externalAllowed": true,
"fileCount": 123,
"name": "<string>",
"note": "<string>",
"number": 123,
"openComments": 123,
"proposedAt": "<string>",
"publishedVersion": 123,
"ref": "<string>",
"reviewUrl": "<string>",
"round": 123,
"stale": true,
"status": "draft",
"totalBytes": 123,
"updatedAt": "<string>"
},
"ref": "<string>",
"success": true,
"unchanged": true,
"version": 123
}Authorizations
Runtime context-key (rctx_*) issued by the Ravi gateway. Required for every non-open scope. Bootstrap the first key with ravi daemon init-admin-key; rotate, derive, and revoke via the ravi context family. Specs: runtime/context-keys, sdk/auth.
Body
application/json
Local agent id
What the agent does (default: its own description)
Confirm the publish (without it, print the plan and exit 3)
Version note, at most 500 characters
Propose it for review instead of publishing
org, or the Console project slug the agent belongs to
Library slug (default: the agent id)
Response
Success — body conforms to the @Returns schema.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes