Проголосовать по заявке
Голос одобряющего. reject = вето (заявка REJECTED). Финальный approve (добран порог) применяет мутацию В ЭТОМ ЖЕ запросе (с optimistic-lock: если цель изменилась — REJECTED stale). В ответе финальный статус + resolvedResultId / applyError.
curl -X POST "https://policy-engine-rest.ezig.workers.dev/api/v1/vaults/demo_vault/approval-requests/example_string/approvals" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-d '{
"decision": "approve",
"comment": "example_string"
}'
import requests
import json
url = "https://policy-engine-rest.ezig.workers.dev/api/v1/vaults/demo_vault/approval-requests/example_string/approvals"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN"
}
data = {
"decision": "approve",
"comment": "example_string"
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
const response = await fetch("https://policy-engine-rest.ezig.workers.dev/api/v1/vaults/demo_vault/approval-requests/example_string/approvals", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN"
},
body: JSON.stringify({
"decision": "approve",
"comment": "example_string"
})
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
"bytes"
"encoding/json"
)
func main() {
data := []byte(`{
"decision": "approve",
"comment": "example_string"
}`)
req, err := http.NewRequest("POST", "https://policy-engine-rest.ezig.workers.dev/api/v1/vaults/demo_vault/approval-requests/example_string/approvals", bytes.NewBuffer(data))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer YOUR_API_TOKEN")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://policy-engine-rest.ezig.workers.dev/api/v1/vaults/demo_vault/approval-requests/example_string/approvals')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request['Authorization'] = 'Bearer YOUR_API_TOKEN'
request.body = '{
"decision": "approve",
"comment": "example_string"
}'
response = http.request(request)
puts response.body
{
"status": "example_string",
"approvals": 42,
"threshold": 42,
"finalized": true,
"applyError": {
"code": "example_string",
"message": "example_string"
},
"resolvedResultId": "example_string",
"stepsProgress": [
{
"stepIndex": 42,
"action": "example_string",
"threshold": 42,
"approvals": 42,
"satisfied": true
}
]
}
{
"error": "Unauthorized",
"message": "Authentication required. Please provide a valid API token",
"code": 401
}
{
"error": "Forbidden",
"message": "You don't have permission to access this resource",
"code": 403
}
{
"error": "Not Found",
"message": "The requested resource was not found",
"code": 404
}
{
"error": "Conflict",
"message": "The request conflicts with the current state of the resource",
"code": 409,
"details": "Resource already exists"
}
{
"error": "Internal Server Error",
"message": "An unexpected error occurred on the server",
"code": 500,
"requestId": "req_1234567890"
}
/api/v1/vaults/{code}/approval-requests/{id}/approvalsTarget server for requests. Edit to use your own host.
better-auth session token. Мобилка/сервисы. Веб использует cookie.
API key (sent in cookie)
Уникальный код Vault'а (slug)
id заявки (cuid)
The media type of the request body
Request Preview
Response
Response will appear here after sending the request
Authentication
Bearer token. better-auth session token. Мобилка/сервисы. Веб использует cookie.
API Key for authentication. Provide your API key in the cookie.
Path Parameters
id заявки (cuid)
Responses
true — этот голос финализировал заявку (применена/отклонена)
Только для композитных заявок: прогресс по шагам