Add agent key
Admin only.
post
https://<host>/api/v1/agents/{agentId}/keysbash
curl --request POST \
--url 'https://<host>/api/v1/agents/{agentId}/keys' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{"did":"string"}'javascript
const response = await fetch("https://<host>/api/v1/agents/{agentId}/keys", {
method: "POST",
headers: {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
"did": "string"
})
});
const data = await response.json();typescript
interface AgentKeyResponse {
correlation_id?: string;
item?: Record<string, unknown>;
}
const response = await fetch("https://<host>/api/v1/agents/{agentId}/keys", {
method: "POST",
headers: {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
"did": "string"
})
});
if (!response.ok) throw new Error(`${response.status} ${response.statusText}`);
const data: AgentKeyResponse = await response.json();python
import requests
response = requests.post(
"https://<host>/api/v1/agents/{agentId}/keys",
headers={
"Authorization": "Bearer <token>",
"Content-Type": "application/json",
},
json={
"did": "string",
},
)
response.raise_for_status()
print(response.json())go
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"did": "string"
}`)
req, err := http.NewRequest(http.MethodPost, "https://<host>/api/v1/agents/{agentId}/keys", body)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
data, err := io.ReadAll(res.Body)
if err != nil {
panic(err)
}
fmt.Println(res.Status, string(data))
}java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Example {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://<host>/api/v1/agents/{agentId}/keys"))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString("""
{
"did": "string"
}
"""))
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode() + " " + response.body());
}
}csharp
using System.Net.Http.Headers;
using System.Text;
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Post, "https://<host>/api/v1/agents/{agentId}/keys");
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", "<token>");
request.Content = new StringContent("""
{
"did": "string"
}
""", Encoding.UTF8, "application/json");
using var response = await client.SendAsync(request);
Console.WriteLine($"{(int)response.StatusCode} {await response.Content.ReadAsStringAsync()}");php
<?php
$ch = curl_init('https://<host>/api/v1/agents/{agentId}/keys');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer <token>',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => <<<'JSON'
{
"did": "string"
}
JSON,
CURLOPT_RETURNTRANSFER => true,
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
echo $status . " " . $response . PHP_EOL;ruby
require "net/http"
uri = URI("https://<host>/api/v1/agents/{agentId}/keys")
request = Net::HTTP::Post.new(uri)
request["Authorization"] = "Bearer <token>"
request["Content-Type"] = "application/json"
request.body = <<~'JSON'
{
"did": "string"
}
JSON
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|
http.request(request)
end
puts "#{response.code} #{response.body}"rust
// Cargo.toml dependencies: reqwest (features "json"), serde_json, tokio (features "full")
use serde_json::json;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let response = reqwest::Client::new()
.post("https://<host>/api/v1/agents/{agentId}/keys")
.header("Authorization", "Bearer <token>")
.json(&json!({
"did": "string"
}))
.send()
.await?;
println!("{} {}", response.status(), response.text().await?);
Ok(())
}Authorizations
BearerAuth· API key in header "Authorization" — Type "Bearer" followed by a space and a sign-in token: a Guardian Platform JWT, or an OIDC ID token in a standalone deployment.
Parameters
Path parameters
| Name | Type | Description |
|---|---|---|
agentIdrequired | string | Agent ID |
Request bodyrequired
DID to add
application/json
didstring
Examplejson
{
"did": "string"
}Responses
201Created
application/json
correlation_idstringitemgithub_com_eqtylab_gateway_control-plane_service_internal_discovery.AgentKeyShow github_com_eqtylab_gateway_control-plane_service_internal_discovery.AgentKey
added_bystringWho added it; told only to an admin and the agent's operators
added_by_api_key_idstringThe API key's public ID; told only to an admin and the agent's operators
added_by_emailstringTheir email; told only to an admin and the agent's operators
added_viastring (enum)AddedVia is how the key joined its agent: registration_token, api_key or control_plane; empty when no record of it survives. AddedBy is the subject of whoever added it, the registering principal or the admin, and AddedByAPIKeyID the API key's public ID.
One of
registration_tokenapi_keycontrol_planecreated_atstringdidstringstatusstringupdated_atstring
Examplejson
{
"correlation_id": "string",
"item": {
"added_by": "string",
"added_by_api_key_id": "string",
"added_by_email": "string",
"added_via": "registration_token",
"created_at": "string",
"did": "string",
"status": "string",
"updated_at": "string"
}
}400Bad Request
application/json
codestringcorrelation_idstringmessagestring
Examplejson
{
"code": "string",
"correlation_id": "string",
"message": "string"
}401Unauthorized
application/json
codestringcorrelation_idstringmessagestring
Examplejson
{
"code": "string",
"correlation_id": "string",
"message": "string"
}403Forbidden
application/json
codestringcorrelation_idstringmessagestring
Examplejson
{
"code": "string",
"correlation_id": "string",
"message": "string"
}404Not Found
application/json
codestringcorrelation_idstringmessagestring
Examplejson
{
"code": "string",
"correlation_id": "string",
"message": "string"
}409DID already registered
application/json
codestringcorrelation_idstringmessagestring
Examplejson
{
"code": "string",
"correlation_id": "string",
"message": "string"
}500Internal Server Error
application/json
codestringcorrelation_idstringmessagestring
Examplejson
{
"code": "string",
"correlation_id": "string",
"message": "string"
}