FurniOpsDocs
API referenceVendor

Accept an agreement for the organisation

Records that the signer accepts, for the organisation, exactly the version and text they were shown (its version and sha256), with their typed name and title and their statement that they may bind it. A version or hash that is not the newest answers 409 conflict: show the new text and ask again. Accepting a version already accepted returns the earlier acceptance. Owners and admins only; never an AI agent's tool.

POST/v1/agreements/{kind}/acceptances

Records that the signer accepts, for the organisation, exactly the version and text they were shown (its version and sha256), with their typed name and title and their statement that they may bind it. A version or hash that is not the newest answers 409 conflict: show the new text and ask again. Accepting a version already accepted returns the earlier acceptance. Owners and admins only; never an AI agent's tool.

Authorization

apiKey
AuthorizationBearer <token>

An API key (fo_live_… / fo_test_…) as a bearer token

In: header

Path Parameters

kind*"vendor_data"

Which agreement

Value in

  • "vendor_data"

Header Parameters

FurniOps-Version?string

Dated API version; pinned per organisation on first use and overridable per request

Value in

  • "2026-10-01"
  • "2026-10-04"
FurniOps-Mode?string

The data the request acts on: test is the organisation's sandbox. An OAuth token picks it (live by default); an API key's mode is fixed, and naming the other one is refused

Value in

  • "live"
  • "test"
Idempotency-Key*string

Unique key for this operation, reused on retries (24 h)

Length1 <= length <= 257
FurniOps-Dry-Run?string

Preview the write and change nothing: true answers the would-be response, explain a Preview (application/vnd.furniops.preview+json)

Value in

  • "true"
  • "explain"

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Accepting the version shown, as signed

Response Body

application/json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

curl -X POST "https://example.com/v1/agreements/vendor_data/acceptances" \  -H "Idempotency-Key: string" \  -H "Content-Type: application/json" \  -d '{    "version": 1,    "sha256": "string",    "signer_name": "string",    "signer_title": "string",    "authority_confirmed": true  }'
{  "object": "agreement_acceptance",  "id": "string",  "agreement": "string",  "kind": "vendor_data",  "version": 1,  "sha256": "string",  "signer": {    "user": "string",    "name": "string",    "title": "string"  },  "authority_confirmed": true,  "method": "click",  "ip": "string",  "user_agent": "string",  "accepted_at": "2019-08-24T14:15:22Z"}