EQTY LabDocs

Activate plugin configuration

Makes the configuration the active global configuration, which gateways pick up on their next refresh. When trusted signer keys are configured, its signature and its WASM artifacts' stored bytes are verified first. Admin only; API keys are refused.

posthttps://<host>/api/v1/plugin-configurations/{configurationId}/activate
bash
curl --request POST \
  --url 'https://<host>/api/v1/plugin-configurations/{configurationId}/activate' \
  --header 'Authorization: Bearer <token>'
javascript
const response = await fetch("https://<host>/api/v1/plugin-configurations/{configurationId}/activate", {
  method: "POST",
  headers: {
    "Authorization": "Bearer <token>"
  }
});

const data = await response.json();
typescript
interface ActiveConfigurationResponse {
  correlation_id?: string;
  item?: Record<string, unknown>;
}

const response = await fetch("https://<host>/api/v1/plugin-configurations/{configurationId}/activate", {
  method: "POST",
  headers: {
    "Authorization": "Bearer <token>"
  }
});
if (!response.ok) throw new Error(`${response.status} ${response.statusText}`);

const data: ActiveConfigurationResponse = await response.json();
python
import requests

response = requests.post(
    "https://<host>/api/v1/plugin-configurations/{configurationId}/activate",
    headers={
        "Authorization": "Bearer <token>",
    },
)
response.raise_for_status()
print(response.json())
go
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	req, err := http.NewRequest(http.MethodPost, "https://<host>/api/v1/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))
}
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/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());
    }
}
csharp
using System.Net.Http.Headers;

using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Post, "https://<host>/api/v1/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
<?php

$ch = curl_init('https://<host>/api/v1/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;
ruby
require "net/http"

uri = URI("https://<host>/api/v1/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}"
rust
// 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/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.

Parameters

Path parameters

NameTypeDescription
configurationId
required
string

Configuration ID

Responses

200OK

application/json
  • correlation_idstring
  • itemplugins.ActiveConfiguration
    Show plugins.ActiveConfiguration
    • activated_atstring
    • activated_bystring
    • activation_idinteger
    • configurationplugins.PluginConfiguration
      Show plugins.PluginConfiguration
      • created_atstring
      • created_bystring
      • entriesplugins.PluginConfigurationEntry[]
        Show properties

        Array of plugins.PluginConfigurationEntry

        • artifact_sha256string
        • config_jsonobject
        • configuration_idstring
        • enabledboolean
        • granted_capabilitiesplugins.CapabilityGrantSet
          Show plugins.CapabilityGrantSet
          • agent.badge.writeplugins.AgentBadgeWriteGrant
            Show plugins.AgentBadgeWriteGrant
            • allowed_keysstring[]
          • cid.resolveplugins.CIDResolveGrant
            Show plugins.CIDResolveGrant
            • max_bytesinteger
          • http.requestplugins.HTTPRequestGrant
            Show plugins.HTTPRequestGrant
            • allowed_methodsstring[]
            • allowed_url_prefixesstring[]
            • max_inflightinteger
            • max_request_bytesinteger
            • max_response_bytesinteger
            • timeout_msinteger
          • request.body.readplugins.RequestBodyReadGrant
            Show plugins.RequestBodyReadGrant
            • max_bytesinteger
        • hookplugins.HookName

          One ofrequest.startproject.bootstrapproxy.preproxy.postrequest.end

        • idinteger
        • matchplugins.MatchCriteria
          Show plugins.MatchCriteria
          • agent_idplugins.MatchRule
            Show plugins.MatchRule
            • operatorplugins.FilterOperator

              One ofexactprefix

            • valuestring
          • gateway_pathplugins.MatchRule
            Show plugins.MatchRule
            • operatorplugins.FilterOperator

              One ofexactprefix

            • valuestring
          • methodplugins.MatchRule
            Show plugins.MatchRule
            • operatorplugins.FilterOperator

              One ofexactprefix

            • valuestring
          • operationplugins.MatchRule
            Show plugins.MatchRule
            • operatorplugins.FilterOperator

              One ofexactprefix

            • valuestring
          • providerplugins.MatchRule
            Show plugins.MatchRule
            • operatorplugins.FilterOperator

              One ofexactprefix

            • valuestring
          • upstream_pathplugins.MatchRule
            Show plugins.MatchRule
            • operatorplugins.FilterOperator

              One ofexactprefix

            • valuestring
        • order_indexinteger
        • plugin_definition_idinteger
        • plugin_idstring
        • plugin_modeplugins.PluginMode

          One ofenforcementobservability

        • plugin_versionstring
        • runtimeplugins.PluginRuntime

          One ofpremadewasm

        • secret_ref_pathsstring[]
        • timeout_msinteger
      • idstring
      • manifest_jsonobject
      • manifest_signaturestring
      • project_urnstring
      • signer_key_idstring
      • statusplugins.ConfigurationStatus

        One ofdraftactivesuperseded

      • versioninteger
    • configuration_idstring
    • entry_countinteger
    • project_urnstring
    • versioninteger
Examplejson
{
  "correlation_id": "string",
  "item": {
    "activated_at": "string",
    "activated_by": "string",
    "activation_id": 0,
    "configuration": {
      "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
        }
      ],
      "id": "string",
      "manifest_json": {},
      "manifest_signature": "string",
      "project_urn": "string",
      "signer_key_id": "string",
      "status": "draft",
      "version": 0
    },
    "configuration_id": "string",
    "entry_count": 0,
    "project_urn": "string",
    "version": 0
  }
}

400Bad Request

application/json
  • codestring
  • correlation_idstring
  • messagestring
Examplejson
{
  "code": "string",
  "correlation_id": "string",
  "message": "string"
}

401Unauthorized

application/json
  • codestring
  • correlation_idstring
  • messagestring
Examplejson
{
  "code": "string",
  "correlation_id": "string",
  "message": "string"
}

403Forbidden

application/json
  • codestring
  • correlation_idstring
  • messagestring
Examplejson
{
  "code": "string",
  "correlation_id": "string",
  "message": "string"
}

404Not Found

application/json
  • codestring
  • correlation_idstring
  • messagestring
Examplejson
{
  "code": "string",
  "correlation_id": "string",
  "message": "string"
}

500Internal Server Error

application/json
  • codestring
  • correlation_idstring
  • messagestring
Examplejson
{
  "code": "string",
  "correlation_id": "string",
  "message": "string"
}

503Plugin or artifact store not configured

application/json
  • codestring
  • correlation_idstring
  • messagestring
Examplejson
{
  "code": "string",
  "correlation_id": "string",
  "message": "string"
}