Exige la aprobación de una persona para una escritura
Deja que una escritura rechazada espera en la cola de aprobación hasta que una persona con sesión iniciada la apruebe y luego reintenta con el token.
coordination.approve
Deja que una escritura rechazada espera en la cola de aprobación hasta que una persona con sesión iniciada la apruebe y luego reintenta con el token.
coordination.approvePasa por Intramedial acciones de agentes, hashes de contenido, pruebas de API, DNS, webhooks, llamadas LLM y commits. Obtén un recibo firmado que cualquiera verifica, sin fiarse de nadie.
Algunas escrituras no deben pasar solo porque un agente lo diga. La admisión rechaza una escritura sin token y deja una solicitud; un administrador o aprobador autorizado la decide, y aprobar emite un token para ese actor, recurso y verbo.
El código lee la clave de INTRAMEDIAL_KEY. Guárdala en tu shell o en tu almacén de secretos, nunca en un archivo que suba al repositorio. Las llamadas que requieren una persona con sesión iniciada no pueden usar una clave: las hace la consola.
Declara una escritura sin token. La admisión la rechaza, y el approvalId de la respuesta nombra la solicitud que espera en la cola a que una persona decida.
La decisión regresa como approval, con su estado.
{
"approval": {
"id": "apr_7f3a",
"actorDid": "did:web:acme.example:agent:billing",
"resource": "repo:payments/main",
"action": "write",
: ,
: ,
: ,
: ,
: ,
: ,
: ,
: ,
:
},
:
}coordination.approvecoordination-approve
curl -sS -X POST https://api.intramedial.com/api/v1/acp/coordination/admit \
-H "Authorization: Bearer $INTRAMEDIAL_KEY" \
-H "Content-Type: application/json" \
-d '{
"actorDid": "did:web:acme.example:agent:billing",
"resource": "repo:payments/main",
"action": "write"
}'const res = await fetch("https://api.intramedial.com/api/v1/acp/coordination/admit", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INTRAMEDIAL_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
actorDid: "did:web:acme.example:agent:billing",
resource: "repo:payments/main",
action: "write",
}),
});
console.log(res.status, await res.json());import os, requests
res = requests.post(
"https://api.intramedial.com/api/v1/acp/coordination/admit",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
json={
"actorDid": "did:web:acme.example:agent:billing",
"resource": "repo:payments/main",
"action": "write",
},
timeout=30,
)
print(res.status_code, res.json())Un aprobador con sesión iniciada lee la solicitud en la consola y la aprueba. Una clave o un agente no puede decidir; este es el cuerpo que envía la consola.
{
"id": "apr_7f3a",
"reason": "expected batch"
}El agente reintenta con el token como confirmationToken. Es de un solo uso y está vinculado al actor, recurso y verbo.
curl -sS -X POST https://api.intramedial.com/api/v1/acp/coordination/admit \
-H "Authorization: Bearer $INTRAMEDIAL_KEY" \
-H "Content-Type: application/json" \
-d '{
"actorDid": "did:web:acme.example:agent:billing",
"resource": "repo:payments/main",
"action": "write",
"confirmationToken": "…"
}'const res = await fetch("https://api.intramedial.com/api/v1/acp/coordination/admit", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INTRAMEDIAL_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
actorDid: "did:web:acme.example:agent:billing",
resource: "repo:payments/main",
action: "write",
confirmationToken: "…",
}),
});
console.log(res.status, await res.json());import os, requests
res = requests.post(
"https://api.intramedial.com/api/v1/acp/coordination/admit",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
json={
"actorDid": "did:web:acme.example:agent:billing",
"resource": "repo:payments/main",
"action": "write",
"confirmationToken": "…",
},
timeout=30,
)
print(res.status_code, res.json())Copiado de: /docs/coordination-approve
El libro mayor es de solo anexado y está sellado bajo raíces de Merkle. La hora de una entrada es el reloj propio de Intramedial, y un paquete firmado puede verificarse sin conexión con la clave publicada.
Abre una solicitud de control dual para un alcance fijo, haz que un segundo administrador aprueba su digest y luego ejecuta la acción controlada.
dual.control-scopesObtén la clave de prueba gratis, atestigua un hash con content.attest y verifica el recibo firmado que vuelve.
coordination.admitAdmite la escritura de un agente en un repositorio mediante Intralock y publica el veredicto en el commit como ejecución de verificación o estado.
github.enforceUn email breve cuando añadimos recetas. Ningún otro correo, y puedes darte de baja desde cualquier mensaje.
Sin cuenta: 35 llamadas en 7 días en las rutas attest, con recibos marcados como de prueba. Regístrate cuando quieras seguir.