Skip to content
Testnet only: a reference implementation, not a production service.Tokens and bank transfers here are simulated and have no value.

Approvals

4 operations under approvals. Examples read $API and $KEY from your shell.

GET /v1/approvals

Parameters

  • status string optional in query, one of pending, approved, rejected, canceled, expired
  • object_id string optional in query
  • limit integer required in query
  • starting_after string optional in query

Responses

200 Default Response

object

  • data array required

    Each item:

    • object string required one of approval
    • id string required
    • status string required one of pending, approved, rejected, canceled, expired
    • action string required
    • object_type string required
    • object_id string required
    • amount decimal string required
    • currency string required
    • rule object required
      • action string required
      • currency string required
      • min_amount decimal string required
      • approvers_required number required
    • policy_version integer required
    • approvals_count integer required
    • approvers_required integer required
    • maker object required
      • type string required
      • id string required
    • decisions array required

      Each item:

      • user_id string required
      • decision string required one of approve, reject
      • comment string required (nullable)
      • created_at string required
    • can_decide boolean required
    • created_at string required
    • decided_at string required (nullable)
    • version integer required
  • has_more boolean required

Errors are RFC 9457 problem documents (application/problem+json).

curl

curl -s \
  "$API/v1/approvals?limit=1" \
  -H "authorization: Bearer $KEY"
Copied

SDK

import { createScrClient } from "@scr/sdk";

// The client sends the API key for you.
const client = createScrClient({ baseUrl: process.env.API!, apiKey: process.env.KEY! });
const { data, error } = await client.GET("/v1/approvals", {
  params: { query: { limit: 1 } },
});
Copied

GET /v1/approvals/{id}

Parameters

  • id string required in path

Responses

200 Default Response

object

  • object string required one of approval
  • id string required
  • status string required one of pending, approved, rejected, canceled, expired
  • action string required
  • object_type string required
  • object_id string required
  • amount decimal string required
  • currency string required
  • rule object required
    • action string required
    • currency string required
    • min_amount decimal string required
    • approvers_required number required
  • policy_version integer required
  • approvals_count integer required
  • approvers_required integer required
  • maker object required
    • type string required
    • id string required
  • decisions array required

    Each item:

    • user_id string required
    • decision string required one of approve, reject
    • comment string required (nullable)
    • created_at string required
  • can_decide boolean required
  • created_at string required
  • decided_at string required (nullable)
  • version integer required

Errors are RFC 9457 problem documents (application/problem+json).

curl

curl -s \
  "$API/v1/approvals/$ID" \
  -H "authorization: Bearer $KEY"
Copied

SDK

import { createScrClient } from "@scr/sdk";

// The client sends the API key for you.
const client = createScrClient({ baseUrl: process.env.API!, apiKey: process.env.KEY! });
const { data, error } = await client.GET("/v1/approvals/{id}", {
  params: { path: { id: "<id>" } },
});
Copied

POST /v1/approvals/{id}/approve

Send an Idempotency-Key header on every POST so a retry never repeats the request.

Parameters

  • id string required in path

Request body

application/json, required

object

  • comment string optional

Responses

200 Default Response

object

  • object string required one of approval
  • id string required
  • status string required one of pending, approved, rejected, canceled, expired
  • action string required
  • object_type string required
  • object_id string required
  • amount decimal string required
  • currency string required
  • rule object required
    • action string required
    • currency string required
    • min_amount decimal string required
    • approvers_required number required
  • policy_version integer required
  • approvals_count integer required
  • approvers_required integer required
  • maker object required
    • type string required
    • id string required
  • decisions array required

    Each item:

    • user_id string required
    • decision string required one of approve, reject
    • comment string required (nullable)
    • created_at string required
  • can_decide boolean required
  • created_at string required
  • decided_at string required (nullable)
  • version integer required

Errors are RFC 9457 problem documents (application/problem+json).

curl

curl -s \
  -X POST \
  "$API/v1/approvals/$ID/approve" \
  -H "authorization: Bearer $KEY" \
  -H "idempotency-key: $(uuidgen)" \
  -H "content-type: application/json" \
  -d '{}'
Copied

SDK

import { createScrClient } from "@scr/sdk";

// The client sends the API key and an Idempotency-Key for you.
const client = createScrClient({ baseUrl: process.env.API!, apiKey: process.env.KEY! });
const { data, error } = await client.POST("/v1/approvals/{id}/approve", {
  params: { path: { id: "<id>" } },
  body: {},
});
Copied

POST /v1/approvals/{id}/reject

Send an Idempotency-Key header on every POST so a retry never repeats the request.

Parameters

  • id string required in path

Request body

application/json, required

object

  • reason string required

Responses

200 Default Response

object

  • object string required one of approval
  • id string required
  • status string required one of pending, approved, rejected, canceled, expired
  • action string required
  • object_type string required
  • object_id string required
  • amount decimal string required
  • currency string required
  • rule object required
    • action string required
    • currency string required
    • min_amount decimal string required
    • approvers_required number required
  • policy_version integer required
  • approvals_count integer required
  • approvers_required integer required
  • maker object required
    • type string required
    • id string required
  • decisions array required

    Each item:

    • user_id string required
    • decision string required one of approve, reject
    • comment string required (nullable)
    • created_at string required
  • can_decide boolean required
  • created_at string required
  • decided_at string required (nullable)
  • version integer required

Errors are RFC 9457 problem documents (application/problem+json).

curl

curl -s \
  -X POST \
  "$API/v1/approvals/$ID/reject" \
  -H "authorization: Bearer $KEY" \
  -H "idempotency-key: $(uuidgen)" \
  -H "content-type: application/json" \
  -d '{"reason":"<reason>"}'
Copied

SDK

import { createScrClient } from "@scr/sdk";

// The client sends the API key and an Idempotency-Key for you.
const client = createScrClient({ baseUrl: process.env.API!, apiKey: process.env.KEY! });
const { data, error } = await client.POST("/v1/approvals/{id}/reject", {
  params: { path: { id: "<id>" } },
  body: {
    "reason": "<reason>"
  },
});
Copied

Edit on GitHub