curl --request GET \
--url https://use.hoop.dev/api/sidecarsimport requests
url = "https://use.hoop.dev/api/sidecars"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://use.hoop.dev/api/sidecars', 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://use.hoop.dev/api/sidecars",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://use.hoop.dev/api/sidecars"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://use.hoop.dev/api/sidecars")
.asString();require 'uri'
require 'net/http'
url = URI("https://use.hoop.dev/api/sidecars")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body[
{
"applied_revision": "8f14e45fceea167a5a36dedd4bea2543",
"bound_rules": [
{
"kind": "guardrail",
"listener_name": "appdb",
"rule_name": "no-destructive-sql"
}
],
"configuration": {},
"created_at": "<string>",
"created_by": "<string>",
"detached_rules": {
"deleted": {
"analyzers": [
"<string>"
],
"data_masking": [
"<string>"
],
"guardrails": [
"<string>"
]
},
"unbound": {
"analyzers": [
"<string>"
],
"data_masking": [
"<string>"
],
"guardrails": [
"<string>"
]
}
},
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"last_outcome": "applied",
"last_seen_at": "<string>",
"name": "payments-sidecar",
"org_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"served_revision": "8f14e45fceea167a5a36dedd4bea2543",
"version": "1.0.0"
}
]{
"message": "the error description"
}{
"message": "the error description"
}List Sidecars
List all sidecars for the organization
curl --request GET \
--url https://use.hoop.dev/api/sidecarsimport requests
url = "https://use.hoop.dev/api/sidecars"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://use.hoop.dev/api/sidecars', 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://use.hoop.dev/api/sidecars",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://use.hoop.dev/api/sidecars"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://use.hoop.dev/api/sidecars")
.asString();require 'uri'
require 'net/http'
url = URI("https://use.hoop.dev/api/sidecars")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body[
{
"applied_revision": "8f14e45fceea167a5a36dedd4bea2543",
"bound_rules": [
{
"kind": "guardrail",
"listener_name": "appdb",
"rule_name": "no-destructive-sql"
}
],
"configuration": {},
"created_at": "<string>",
"created_by": "<string>",
"detached_rules": {
"deleted": {
"analyzers": [
"<string>"
],
"data_masking": [
"<string>"
],
"guardrails": [
"<string>"
]
},
"unbound": {
"analyzers": [
"<string>"
],
"data_masking": [
"<string>"
],
"guardrails": [
"<string>"
]
}
},
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"last_outcome": "applied",
"last_seen_at": "<string>",
"name": "payments-sidecar",
"org_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"served_revision": "8f14e45fceea167a5a36dedd4bea2543",
"version": "1.0.0"
}
]{
"message": "the error description"
}{
"message": "the error description"
}Response
OK
"8f14e45fceea167a5a36dedd4bea2543"
BoundRules names the rules the control plane distributes to this sidecar, and the listener each one lands on.
They are NOT inside Configuration and never will be: a bound rule is folded into the SERVED document on every handshake and nothing is stored, so one row update reaches a fleet. That is also why this field has to exist — a page reading Configuration alone shows a listener enforcing nothing while the sidecar enforces the rule.
Show child attributes
Show child attributes
The stored daemon configuration.
Creation timestamp
Subject of the admin who created it
DetachedRules names the rules an owner switch removed, on the PATCH that switched. Deleted rules came from this sidecar's file; unbound rules stay for their other targets.
Show child attributes
Show child attributes
Unique identifier
LastOutcome is what the sidecar did with the last configuration it handled: applied, unchanged, restart, refused or retry.
It is the field that separates a sidecar enforcing the current rules from one that refused them and kept the old ones. A refusal, or a document needing a restart, leaves the sidecar handshaking on time with stale rules, and nothing else tells the two apart.
Empty for a sidecar that has handled nothing yet, or one too old to report. Empty must read as unknown, never as converged.
"applied"
Last time the sidecar handshook. Empty until it does.
Human-readable name
"payments-sidecar"
Organization ID
ServedRevision names the configuration last answered to this sidecar, and AppliedRevision the one it says it is running. Equal means the sidecar is enforcing what the control plane holds.
Both are opaque: the control plane issues them and compares them to itself. Nothing parses them.
"8f14e45fceea167a5a36dedd4bea2543"
Version reported at the last handshake. Empty until the sidecar calls.
"1.0.0"
Was this page helpful?