Read a proposal awaiting the tenant's consent
const url = 'https://api.canopyhq.dev/consent/example';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.canopyhq.dev/consent/example \ --header 'Authorization: Bearer <token>'Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”One proposal. Minted per POST, so two proposals of one document are two requests, each with its own secret and its own key.
The request the proposal was minted under.
Responses
Section titled “Responses”What the vendor proposes, and for an update the currently installed document it replaces.
The proposed document, with the currently installed document for an update.
object
The vendor document version, read through the same shape chain as storage.
The composed document served to an install or the console. The install reads it with the presets it may open sessions on.
object
A preset the install may name on dial, as the install reads it: what it runs, never where its secret is.
object
Whether a dial that names no preset runs on this one.
Which kind of provider, without where it is or what it dials with.
What the tenant lands at consent. The consented presets are a set with a
default a dial that names none runs on; a config written before the set
existed consents to its default alone. An empty policy list allows every
tool and an empty extra-tools list adds nothing. The policies name tools
as the model sees them and compile in policy, against the surface the
resolved connections give, which is not this type’s to know.
object
A tool the tenant brings that the vendor did not state: a pre-registered remote, such as an MCP server the tenant already links to.
object
The name by which an MCP server identifies and invokes a tool.
The default preset: what a session runs on when its dial names none.
Every preset a session may name, the default among them.
The tenant’s rules for one tool, named by the name the model sees.
object
The tool enable. Off, nothing else here matters.
What a tool’s allow items do: nothing under Permissive, where only deny
items bind; bind under Restrictive, where a conditioned arg must satisfy
one of them.
Args projected for evidence alone, conditioned or not.
A vendor document with its wire version beside the vendor fields.
object
The vendor document version, read through the same shape chain as storage.
Example
{ "current": { "inferences": [ { "provider": "simulated" } ], "tenant": { "policies": [ { "items": [ { "effect": "allow", "op": "is" } ], "posture": "permissive" } ] } }}No console token, or one that did not verify.
No such request, or it lapsed or was granted already.