Skip to content
Hoody.com

The Proxy Discovery endpoints enumerate the proxy groups, services, and merged access rules attached to a container. Use these endpoints for inspection and debugging. The merged service view (permissions_raw and hooks) is non-authoritative and is intended for diagnostics only. For authoritative writes, use the dedicated permissions and hooks endpoints.

Container IDs are 24-character lowercase hexadecimal ObjectIds. Requests with IDs in any other format are rejected with a 400 Bad Request. The examples below use 507f1f77bcf86cd799439012.

Returns all defined group names for the container, along with the number of auth rules each group contains.

NameInTypeRequiredDescription
idpathstringYesContainer ID
{
"statusCode": 200,
"message": "Container proxy groups listed",
"data": {
"groups": [
{ "name": "admins", "auth_rule_count": 3 },
{ "name": "developers", "auth_rule_count": 5 },
{ "name": "viewers", "auth_rule_count": 1 }
],
"file_version": 12,
"etag": "W/\"abc123def456\""
},
"propagation": {
"committed": true,
"complete": true,
"state": "applied",
"status_scope": "current",
"generation": 12,
"action": "list_groups",
"file_version": 12,
"succeeded_count": 1,
"failed_count": 0,
"pending_count": 0,
"target_count": 1,
"retained_count": 1
}
}
FieldTypeDescription
statusCodenumberHTTP-style status code returned in the envelope
messagestringHuman-readable status message
data.groupsarrayGroup names with auth-rule counts
data.groups[].namestringGroup name as defined in the proxy config
data.groups[].auth_rule_countintegerNumber of auth rules attached to the group
data.file_versionintegerMonotonic version of the underlying proxy file
data.etagstringWeak ETag for the current file version
propagation.committedbooleanWhether the change has been committed to the file
propagation.completebooleanWhether propagation has finished across all targets
propagation.statestringOne of pending, applied, failed, unknown, superseded
propagation.status_scopestringOne of current
propagation.generationintegerMonotonic generation number
propagation.actionstringAction that produced this propagation record
propagation.file_versionintegerFile version associated with this propagation
propagation.succeeded_countintegerTargets that successfully applied the change
propagation.failed_countintegerTargets that failed to apply the change
propagation.pending_countintegerTargets still pending
propagation.target_countintegerTotal targets targeted by the propagation
propagation.retained_countintegerTargets retaining the prior version
import { HoodyClient } from 'hoody-sdk';
const client = new HoodyClient({ baseURL: 'https://api.hoody.com', token: process.env.HOODY_TOKEN });
await client.api.proxy.groups.list('507f1f77bcf86cd799439012');

GET /api/v1/containers/{id}/proxy/services

Section titled “GET /api/v1/containers/{id}/proxy/services”

Returns every service name referenced by any permission cell or hook rule in the container’s proxy config.

NameInTypeRequiredDescription
idpathstringYesContainer ID
{
"statusCode": 200,
"message": "Container proxy services listed",
"data": {
"services": ["api", "postgres", "redis", "storage"],
"file_version": 12,
"etag": "W/\"abc123def456\""
},
"propagation": {
"committed": true,
"complete": true,
"state": "applied",
"status_scope": "current",
"generation": 12,
"action": "list_services",
"file_version": 12,
"succeeded_count": 1,
"failed_count": 0,
"pending_count": 0,
"target_count": 1,
"retained_count": 1
}
}
FieldTypeDescription
statusCodenumberHTTP-style status code returned in the envelope
messagestringHuman-readable status message
data.servicesarray<string>Service names referenced anywhere in the proxy config
data.file_versionintegerMonotonic version of the underlying proxy file
data.etagstringWeak ETag for the current file version
propagation.committedbooleanWhether the change has been committed to the file
propagation.completebooleanWhether propagation has finished across all targets
propagation.statestringOne of pending, applied, failed, unknown, superseded
propagation.status_scopestringOne of current
propagation.generationintegerMonotonic generation number
propagation.actionstringAction that produced this propagation record
propagation.file_versionintegerFile version associated with this propagation
propagation.succeeded_countintegerTargets that successfully applied the change
propagation.failed_countintegerTargets that failed to apply the change
propagation.pending_countintegerTargets still pending
propagation.target_countintegerTotal targets targeted by the propagation
propagation.retained_countintegerTargets retaining the prior version
import { HoodyClient } from 'hoody-sdk';
const client = new HoodyClient({ baseURL: 'https://api.hoody.com', token: process.env.HOODY_TOKEN });
await client.api.proxy.services.list('507f1f77bcf86cd799439012');

GET /api/v1/containers/{id}/proxy/services/{service}

Section titled “GET /api/v1/containers/{id}/proxy/services/{service}”

Returns a debug view of a single service: per-group access cells (permissions_raw), attached hooks, the effective default policy, and whether the service is reject-listed.

NameInTypeRequiredDescription
idpathstringYesContainer ID
servicepathstringYesService name
{
"statusCode": 200,
"message": "Container proxy service details retrieved",
"data": {
"service": "postgres",
"is_reject_listed": false,
"permissions_raw": {
"admins": { "access": "allow" },
"developers": { "access": "allow", "roles": ["read", "write"] },
"viewers": { "access": "deny" }
},
"hooks": [
{ "event": "connect", "action": "log" }
],
"effective_default": "deny",
"file_version": 12,
"etag": "W/\"abc123def456\""
},
"propagation": {
"committed": true,
"complete": true,
"state": "applied",
"status_scope": "current",
"generation": 12,
"action": "get_service",
"file_version": 12,
"succeeded_count": 1,
"failed_count": 0,
"pending_count": 0,
"target_count": 1,
"retained_count": 1
}
}
FieldTypeDescription
statusCodenumberHTTP-style status code returned in the envelope
messagestringHuman-readable status message
data.servicestringService name
data.is_reject_listedbooleanWhether the service is on the reject list
data.permissions_rawobjectPer-group access cells for this service (debug shape)
data.hooksarrayHooks attached to this service (debug shape)
data.effective_defaultstringEffective default policy: allow or deny
data.file_versionintegerMonotonic version of the underlying proxy file
data.etagstringWeak ETag for the current file version
propagation.committedbooleanWhether the change has been committed to the file
propagation.completebooleanWhether propagation has finished across all targets
propagation.statestringOne of pending, applied, failed, unknown, superseded
propagation.status_scopestringOne of current
propagation.generationintegerMonotonic generation number
propagation.actionstringAction that produced this propagation record
propagation.file_versionintegerFile version associated with this propagation
propagation.succeeded_countintegerTargets that successfully applied the change
propagation.failed_countintegerTargets that failed to apply the change
propagation.pending_countintegerTargets still pending
propagation.target_countintegerTotal targets targeted by the propagation
propagation.retained_countintegerTargets retaining the prior version
import { HoodyClient } from 'hoody-sdk';
const client = new HoodyClient({ baseURL: 'https://api.hoody.com', token: process.env.HOODY_TOKEN });
await client.api.proxy.services.get('507f1f77bcf86cd799439012', 'postgres');