Activate project plugin configuration
Makes the configuration the project's active layer and returns the resulting effective configuration. When trusted signer keys are configured, its signature and artifacts are verified first. Requires edit_project_settings on the Guardian project, checked with Auth Service for every caller, a platform admin included; an unknown project is 403 like a forbidden one. Without the Guardian adapter the route answers 503.
https://<host>/api/v1/projects/{project_uuid}/plugin-configurations/{configurationId}/activatecurl --request POST \
--url 'https://<host>/api/v1/projects/{project_uuid}/plugin-configurations/{configurationId}/activate' \
--header 'Authorization: Bearer <token>'const response = await fetch("https://<host>/api/v1/projects/{project_uuid}/plugin-configurations/{configurationId}/activate", {
method: "POST",
headers: {
"Authorization": "Bearer <token>"
}
});
const data = await response.json();interface ProjectConfigurationResolutionResponse {
correlation_id?: string;
item?: Record<string, unknown>;
}
const response = await fetch("https://<host>/api/v1/projects/{project_uuid}/plugin-configurations/{configurationId}/activate", {
method: "POST",
headers: {
"Authorization": "Bearer <token>"
}
});
if (!response.ok) throw new Error(`${response.status} ${response.statusText}`);
const data: ProjectConfigurationResolutionResponse = await response.json();import requests
response = requests.post(
"https://<host>/api/v1/projects/{project_uuid}/plugin-configurations/{configurationId}/activate",
headers={
"Authorization": "Bearer <token>",
},
)
response.raise_for_status()
print(response.json())package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, err := http.NewRequest(http.MethodPost, "https://<host>/api/v1/projects/{project_uuid}/plugin-configurations/{configurationId}/activate", nil)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer <token>")
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))
}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/projects/{project_uuid}/plugin-configurations/{configurationId}/activate"))
.header("Authorization", "Bearer <token>")
.method("POST", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode() + " " + response.body());
}
}using System.Net.Http.Headers;
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Post, "https://<host>/api/v1/projects/{project_uuid}/plugin-configurations/{configurationId}/activate");
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", "<token>");
using var response = await client.SendAsync(request);
Console.WriteLine($"{(int)response.StatusCode} {await response.Content.ReadAsStringAsync()}");<?php
$ch = curl_init('https://<host>/api/v1/projects/{project_uuid}/plugin-configurations/{configurationId}/activate');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer <token>',
],
CURLOPT_RETURNTRANSFER => true,
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
echo $status . " " . $response . PHP_EOL;require "net/http"
uri = URI("https://<host>/api/v1/projects/{project_uuid}/plugin-configurations/{configurationId}/activate")
request = Net::HTTP::Post.new(uri)
request["Authorization"] = "Bearer <token>"
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|
http.request(request)
end
puts "#{response.code} #{response.body}"// Cargo.toml dependencies: reqwest, tokio (features "full")
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let response = reqwest::Client::new()
.post("https://<host>/api/v1/projects/{project_uuid}/plugin-configurations/{configurationId}/activate")
.header("Authorization", "Bearer <token>")
.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.ApiKeyAuth· API key in header "Authorization" — Type "Bearer" followed by a space and a Guardian Platform API key. Project-scoped routes and registration tokens check the key's scopes and project binding. Per-agent routes accept a key bound to no project that has empty scopes or full access, which acts as its holder, or a scope for what the route does: submit_agent_assessments reads an agent (its detail, configurations, state history and the files a state references, definitions, tools and operating profile, as its assessments rest on), view_agent_certifications reads its certifications, and manage_programs or review_agent_assessments attach a certification. A state's raw snapshot and findings, its audit exchanges and plugin events, and saving its operating profile take full access. A scope counts only while the key's holder still holds that permission in the key's organization, which auth-service reports as keyHeldScopes. A key never acts as an admin, so its holder's binding to the agent still decides.
Parameters
Path parameters
| Name | Type | Description |
|---|---|---|
project_uuidrequired | string | Project UUID |
configurationIdrequired | string | Configuration ID |
Responses
200OK
correlation_idstringiteminternal_controlhttp.projectConfigurationResolutionShow internal_controlhttp.projectConfigurationResolution
effective_hooksobjectShow properties
Map of
plugins.EffectiveHookEntry[]Array of
plugins.EffectiveHookEntryartifact_sha256stringconfig_jsonobjectconfiguration_idstringenabledbooleangranted_capabilitiesplugins.CapabilityGrantSetShow plugins.CapabilityGrantSet
agent.badge.writeplugins.AgentBadgeWriteGrantShow plugins.AgentBadgeWriteGrant
allowed_keysstring[]
cid.resolveplugins.CIDResolveGrantShow plugins.CIDResolveGrant
max_bytesinteger
http.requestplugins.HTTPRequestGrantShow plugins.HTTPRequestGrant
allowed_methodsstring[]allowed_url_prefixesstring[]max_inflightintegermax_request_bytesintegermax_response_bytesintegertimeout_msinteger
request.body.readplugins.RequestBodyReadGrantShow plugins.RequestBodyReadGrant
max_bytesinteger
hookplugins.HookNameOne of
request.startproject.bootstrapproxy.preproxy.postrequest.endidintegerlayerplugins.ConfigurationLayerOne of
globalprojectmatchplugins.MatchCriteriaShow plugins.MatchCriteria
agent_idplugins.MatchRuleShow plugins.MatchRule
operatorplugins.FilterOperatorOne of
exactprefixvaluestring
gateway_pathplugins.MatchRuleShow plugins.MatchRule
operatorplugins.FilterOperatorOne of
exactprefixvaluestring
methodplugins.MatchRuleShow plugins.MatchRule
operatorplugins.FilterOperatorOne of
exactprefixvaluestring
operationplugins.MatchRuleShow plugins.MatchRule
operatorplugins.FilterOperatorOne of
exactprefixvaluestring
providerplugins.MatchRuleShow plugins.MatchRule
operatorplugins.FilterOperatorOne of
exactprefixvaluestring
upstream_pathplugins.MatchRuleShow plugins.MatchRule
operatorplugins.FilterOperatorOne of
exactprefixvaluestring
order_indexintegerplugin_definition_idintegerplugin_idstringplugin_modeplugins.PluginModeOne of
enforcementobservabilityplugin_versionstringruntimeplugins.PluginRuntimeOne of
premadewasmsecret_ref_pathsstring[]timeout_msinteger
globalinternal_controlhttp.projectConfigurationActivationSummaryShow internal_controlhttp.projectConfigurationActivationSummary
activated_atstringactivated_bystringactivation_idintegerconfiguration_idstringcreated_atstringcreated_bystringentriesplugins.PluginConfigurationEntry[]Show properties
Array of
plugins.PluginConfigurationEntryartifact_sha256stringconfig_jsonobjectconfiguration_idstringenabledbooleangranted_capabilitiesplugins.CapabilityGrantSetShow plugins.CapabilityGrantSet
agent.badge.writeplugins.AgentBadgeWriteGrantShow plugins.AgentBadgeWriteGrant
allowed_keysstring[]
cid.resolveplugins.CIDResolveGrantShow plugins.CIDResolveGrant
max_bytesinteger
http.requestplugins.HTTPRequestGrantShow plugins.HTTPRequestGrant
allowed_methodsstring[]allowed_url_prefixesstring[]max_inflightintegermax_request_bytesintegermax_response_bytesintegertimeout_msinteger
request.body.readplugins.RequestBodyReadGrantShow plugins.RequestBodyReadGrant
max_bytesinteger
hookplugins.HookNameOne of
request.startproject.bootstrapproxy.preproxy.postrequest.endidintegermatchplugins.MatchCriteriaShow plugins.MatchCriteria
agent_idplugins.MatchRuleShow plugins.MatchRule
operatorplugins.FilterOperatorOne of
exactprefixvaluestring
gateway_pathplugins.MatchRuleShow plugins.MatchRule
operatorplugins.FilterOperatorOne of
exactprefixvaluestring
methodplugins.MatchRuleShow plugins.MatchRule
operatorplugins.FilterOperatorOne of
exactprefixvaluestring
operationplugins.MatchRuleShow plugins.MatchRule
operatorplugins.FilterOperatorOne of
exactprefixvaluestring
providerplugins.MatchRuleShow plugins.MatchRule
operatorplugins.FilterOperatorOne of
exactprefixvaluestring
upstream_pathplugins.MatchRuleShow plugins.MatchRule
operatorplugins.FilterOperatorOne of
exactprefixvaluestring
order_indexintegerplugin_definition_idintegerplugin_idstringplugin_modeplugins.PluginModeOne of
enforcementobservabilityplugin_versionstringruntimeplugins.PluginRuntimeOne of
premadewasmsecret_ref_pathsstring[]timeout_msinteger
entry_countintegerproject_urnstringproject_uuidstringstatusplugins.ConfigurationStatusOne of
draftactivesupersededversioninteger
membership_satisfiedbooleanprojectinternal_controlhttp.projectConfigurationActivationSummaryShow internal_controlhttp.projectConfigurationActivationSummary
activated_atstringactivated_bystringactivation_idintegerconfiguration_idstringcreated_atstringcreated_bystringentriesplugins.PluginConfigurationEntry[]Show properties
Array of
plugins.PluginConfigurationEntryartifact_sha256stringconfig_jsonobjectconfiguration_idstringenabledbooleangranted_capabilitiesplugins.CapabilityGrantSetShow plugins.CapabilityGrantSet
agent.badge.writeplugins.AgentBadgeWriteGrantShow plugins.AgentBadgeWriteGrant
allowed_keysstring[]
cid.resolveplugins.CIDResolveGrantShow plugins.CIDResolveGrant
max_bytesinteger
http.requestplugins.HTTPRequestGrantShow plugins.HTTPRequestGrant
allowed_methodsstring[]allowed_url_prefixesstring[]max_inflightintegermax_request_bytesintegermax_response_bytesintegertimeout_msinteger
request.body.readplugins.RequestBodyReadGrantShow plugins.RequestBodyReadGrant
max_bytesinteger
hookplugins.HookNameOne of
request.startproject.bootstrapproxy.preproxy.postrequest.endidintegermatchplugins.MatchCriteriaShow plugins.MatchCriteria
agent_idplugins.MatchRuleShow plugins.MatchRule
operatorplugins.FilterOperatorOne of
exactprefixvaluestring
gateway_pathplugins.MatchRuleShow plugins.MatchRule
operatorplugins.FilterOperatorOne of
exactprefixvaluestring
methodplugins.MatchRuleShow plugins.MatchRule
operatorplugins.FilterOperatorOne of
exactprefixvaluestring
operationplugins.MatchRuleShow plugins.MatchRule
operatorplugins.FilterOperatorOne of
exactprefixvaluestring
providerplugins.MatchRuleShow plugins.MatchRule
operatorplugins.FilterOperatorOne of
exactprefixvaluestring
upstream_pathplugins.MatchRuleShow plugins.MatchRule
operatorplugins.FilterOperatorOne of
exactprefixvaluestring
order_indexintegerplugin_definition_idintegerplugin_idstringplugin_modeplugins.PluginModeOne of
enforcementobservabilityplugin_versionstringruntimeplugins.PluginRuntimeOne of
premadewasmsecret_ref_pathsstring[]timeout_msinteger
entry_countintegerproject_urnstringproject_uuidstringstatusplugins.ConfigurationStatusOne of
draftactivesupersededversioninteger
project_urnstringproject_uuidstringrollback_candidatesinternal_controlhttp.projectConfigurationActivationSummary[]Show properties
Array of
internal_controlhttp.projectConfigurationActivationSummaryactivated_atstringactivated_bystringactivation_idintegerconfiguration_idstringcreated_atstringcreated_bystringentriesplugins.PluginConfigurationEntry[]Show properties
Array of
plugins.PluginConfigurationEntryartifact_sha256stringconfig_jsonobjectconfiguration_idstringenabledbooleangranted_capabilitiesplugins.CapabilityGrantSetShow plugins.CapabilityGrantSet
agent.badge.writeplugins.AgentBadgeWriteGrantShow plugins.AgentBadgeWriteGrant
allowed_keysstring[]
cid.resolveplugins.CIDResolveGrantShow plugins.CIDResolveGrant
max_bytesinteger
http.requestplugins.HTTPRequestGrantShow plugins.HTTPRequestGrant
allowed_methodsstring[]allowed_url_prefixesstring[]max_inflightintegermax_request_bytesintegermax_response_bytesintegertimeout_msinteger
request.body.readplugins.RequestBodyReadGrantShow plugins.RequestBodyReadGrant
max_bytesinteger
hookplugins.HookNameOne of
request.startproject.bootstrapproxy.preproxy.postrequest.endidintegermatchplugins.MatchCriteriaShow plugins.MatchCriteria
agent_idplugins.MatchRuleShow plugins.MatchRule
operatorplugins.FilterOperatorOne of
exactprefixvaluestring
gateway_pathplugins.MatchRuleShow plugins.MatchRule
operatorplugins.FilterOperatorOne of
exactprefixvaluestring
methodplugins.MatchRuleShow plugins.MatchRule
operatorplugins.FilterOperatorOne of
exactprefixvaluestring
operationplugins.MatchRuleShow plugins.MatchRule
operatorplugins.FilterOperatorOne of
exactprefixvaluestring
providerplugins.MatchRuleShow plugins.MatchRule
operatorplugins.FilterOperatorOne of
exactprefixvaluestring
upstream_pathplugins.MatchRuleShow plugins.MatchRule
operatorplugins.FilterOperatorOne of
exactprefixvaluestring
order_indexintegerplugin_definition_idintegerplugin_idstringplugin_modeplugins.PluginModeOne of
enforcementobservabilityplugin_versionstringruntimeplugins.PluginRuntimeOne of
premadewasmsecret_ref_pathsstring[]timeout_msinteger
entry_countintegerproject_urnstringproject_uuidstringstatusplugins.ConfigurationStatusOne of
draftactivesupersededversioninteger
stateplugins.ConfigurationResolutionStateOne of
activeempty
{
"correlation_id": "string",
"item": {
"effective_hooks": {
"key": [
{
"artifact_sha256": "string",
"config_json": {},
"configuration_id": "string",
"enabled": true,
"granted_capabilities": {
"agent.badge.write": {
"allowed_keys": [
"string"
]
},
"cid.resolve": {
"max_bytes": 0
},
"http.request": {
"allowed_methods": [
"string"
],
"allowed_url_prefixes": [
"string"
],
"max_inflight": 0,
"max_request_bytes": 0,
"max_response_bytes": 0,
"timeout_ms": 0
},
"request.body.read": {
"max_bytes": 0
}
},
"hook": "request.start",
"id": 0,
"layer": "global",
"match": {
"agent_id": {
"operator": "exact",
"value": "string"
},
"gateway_path": {
"operator": "exact",
"value": "string"
},
"method": {
"operator": "exact",
"value": "string"
},
"operation": {
"operator": "exact",
"value": "string"
},
"provider": {
"operator": "exact",
"value": "string"
},
"upstream_path": {
"operator": "exact",
"value": "string"
}
},
"order_index": 0,
"plugin_definition_id": 0,
"plugin_id": "string",
"plugin_mode": "enforcement",
"plugin_version": "string",
"runtime": "premade",
"secret_ref_paths": [
"string"
],
"timeout_ms": 0
}
]
},
"global": {
"activated_at": "string",
"activated_by": "string",
"activation_id": 0,
"configuration_id": "string",
"created_at": "string",
"created_by": "string",
"entries": [
{
"artifact_sha256": "string",
"config_json": {},
"configuration_id": "string",
"enabled": true,
"granted_capabilities": {
"agent.badge.write": {
"allowed_keys": [
"string"
]
},
"cid.resolve": {
"max_bytes": 0
},
"http.request": {
"allowed_methods": [
"string"
],
"allowed_url_prefixes": [
"string"
],
"max_inflight": 0,
"max_request_bytes": 0,
"max_response_bytes": 0,
"timeout_ms": 0
},
"request.body.read": {
"max_bytes": 0
}
},
"hook": "request.start",
"id": 0,
"match": {
"agent_id": {
"operator": "exact",
"value": "string"
},
"gateway_path": {
"operator": "exact",
"value": "string"
},
"method": {
"operator": "exact",
"value": "string"
},
"operation": {
"operator": "exact",
"value": "string"
},
"provider": {
"operator": "exact",
"value": "string"
},
"upstream_path": {
"operator": "exact",
"value": "string"
}
},
"order_index": 0,
"plugin_definition_id": 0,
"plugin_id": "string",
"plugin_mode": "enforcement",
"plugin_version": "string",
"runtime": "premade",
"secret_ref_paths": [
"string"
],
"timeout_ms": 0
}
],
"entry_count": 0,
"project_urn": "string",
"project_uuid": "string",
"status": "draft",
"version": 0
},
"membership_satisfied": true,
"project": {
"activated_at": "string",
"activated_by": "string",
"activation_id": 0,
"configuration_id": "string",
"created_at": "string",
"created_by": "string",
"entries": [
{
"artifact_sha256": "string",
"config_json": {},
"configuration_id": "string",
"enabled": true,
"granted_capabilities": {
"agent.badge.write": {
"allowed_keys": [
"string"
]
},
"cid.resolve": {
"max_bytes": 0
},
"http.request": {
"allowed_methods": [
"string"
],
"allowed_url_prefixes": [
"string"
],
"max_inflight": 0,
"max_request_bytes": 0,
"max_response_bytes": 0,
"timeout_ms": 0
},
"request.body.read": {
"max_bytes": 0
}
},
"hook": "request.start",
"id": 0,
"match": {
"agent_id": {
"operator": "exact",
"value": "string"
},
"gateway_path": {
"operator": "exact",
"value": "string"
},
"method": {
"operator": "exact",
"value": "string"
},
"operation": {
"operator": "exact",
"value": "string"
},
"provider": {
"operator": "exact",
"value": "string"
},
"upstream_path": {
"operator": "exact",
"value": "string"
}
},
"order_index": 0,
"plugin_definition_id": 0,
"plugin_id": "string",
"plugin_mode": "enforcement",
"plugin_version": "string",
"runtime": "premade",
"secret_ref_paths": [
"string"
],
"timeout_ms": 0
}
],
"entry_count": 0,
"project_urn": "string",
"project_uuid": "string",
"status": "draft",
"version": 0
},
"project_urn": "string",
"project_uuid": "string",
"rollback_candidates": [
{
"activated_at": "string",
"activated_by": "string",
"activation_id": 0,
"configuration_id": "string",
"created_at": "string",
"created_by": "string",
"entries": [
{
"artifact_sha256": "string",
"config_json": {},
"configuration_id": "string",
"enabled": true,
"granted_capabilities": {
"agent.badge.write": {
"allowed_keys": []
},
"cid.resolve": {
"max_bytes": 0
},
"http.request": {
"allowed_methods": [],
"allowed_url_prefixes": [],
"max_inflight": 0,
"max_request_bytes": 0,
"max_response_bytes": 0,
"timeout_ms": 0
},
"request.body.read": {
"max_bytes": 0
}
},
"hook": "request.start",
"id": 0,
"match": {
"agent_id": {
"operator": "exact",
"value": "string"
},
"gateway_path": {
"operator": "exact",
"value": "string"
},
"method": {
"operator": "exact",
"value": "string"
},
"operation": {
"operator": "exact",
"value": "string"
},
"provider": {
"operator": "exact",
"value": "string"
},
"upstream_path": {
"operator": "exact",
"value": "string"
}
},
"order_index": 0,
"plugin_definition_id": 0,
"plugin_id": "string",
"plugin_mode": "enforcement",
"plugin_version": "string",
"runtime": "premade",
"secret_ref_paths": [
"string"
],
"timeout_ms": 0
}
],
"entry_count": 0,
"project_urn": "string",
"project_uuid": "string",
"status": "draft",
"version": 0
}
],
"state": "active"
}
}400Bad Request
codestringcorrelation_idstringmessagestring
{
"code": "string",
"correlation_id": "string",
"message": "string"
}401Unauthorized
codestringcorrelation_idstringmessagestring
{
"code": "string",
"correlation_id": "string",
"message": "string"
}403Forbidden
codestringcorrelation_idstringmessagestring
{
"code": "string",
"correlation_id": "string",
"message": "string"
}404Not Found
codestringcorrelation_idstringmessagestring
{
"code": "string",
"correlation_id": "string",
"message": "string"
}500Internal Server Error
codestringcorrelation_idstringmessagestring
{
"code": "string",
"correlation_id": "string",
"message": "string"
}503Plugin store unavailable, or Auth Service unreachable
codestringcorrelation_idstringmessagestring
{
"code": "string",
"correlation_id": "string",
"message": "string"
}