/settingsupdateAccountingSettings
The approved contract does not provide a longer purpose statement for this operation.
- App
- Accounting
- Contract
- Accounting API 0.1.1
- Lifecycle
- preview
- Runtime
- not-public
- Operation ID
- updateAccountingSettings
- Canonical origin
- Not declared; gateway routing required
Availability: This is a preview contract with runtime status not-public. Publication documents an approved interface; it does not imply public production access.
Purpose and use cases
PUT /settings
The owning App is Vision Accounting. Accounting owns financial records, exact arithmetic, approvals, audit evidence, workspace grants, and ledger invariants.
Business use cases and out-of-scope behavior are not yet declared in the approved OpenAPI description.
Request
PUT /settings
This contract intentionally declares no direct server URL. Obtain the routed App origin before attempting the request.
Authentication and authorization
Send a Vision-issued bearer token for the exact App audience. The token must include the accounting entitlement and satisfy the aws-… accounting workspace required binding.
- Required scope:
accounting:settings:write
Human roles are not declared in OpenAPI. Record-level and business permission checks remain the owning App's authority.
Headers
Authorization: Bearer <access-token>— required.Accept: application/json— recommended where a JSON response is declared.Content-Type: application/json— required for the documented request representation.
Undeclared tracing, idempotency, conditional-request, and version headers are not assumed on this page.
Path and query parameters
| Name | Location | Type | Rules | Description |
|---|---|---|---|---|
| Idempotency-Key | header | string | required; minimum length 16; maximum length 160; pattern ^[A-Za-z0-9._:-]+$ | Not described in the contract. |
Request body
Media type: application/json. The body is required.
| Field | Type | Rules | Description |
|---|---|---|---|
| schemaVersion | "vision-accounting-settings-update.v1" | required | Not described in the contract. |
| expectedVersion | integer | required; minimum 1 | Not described in the contract. |
| legalName | string | null | required; maximum length 240 | Not described in the contract. |
| tradingName | string | null | required; maximum length 240 | Not described in the contract. |
| issuerAddress | object | required | Not described in the contract. |
| accountingBasis | undecided | cash | accrual | required | Not described in the contract. |
| functionalCurrency | string | required; pattern ^[A-Z]{3}$ | Not described in the contract. |
| fiscalYearStartMonth | integer | required; minimum 1; maximum 12 | Not described in the contract. |
| defaultPaymentTermsDays | integer | required; minimum 0; maximum 365 | Not described in the contract. |
| invoicePrefix | string | required; pattern ^[A-Z0-9-]{1,20}$ | Not described in the contract. |
Runnable examples
Placeholder values are generated from the approved schema and are not live credentials or customer data. Replace every angle-bracket or shell variable value. Examples cannot be run until the App has a routed base URL and your client has the required grant.
curl '${APP_BASE_URL}/settings' \
--request PUT \
--header 'authorization: Bearer ${ACCESS_TOKEN}' \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '{
"schemaVersion": "vision-accounting-settings-update.v1",
"expectedVersion": 1,
"legalName": "<legalName>",
"tradingName": "<tradingName>",
"issuerAddress": {},
"accountingBasis": "undecided",
"functionalCurrency": "<functionalCurrency>",
"fiscalYearStartMonth": 1,
"defaultPaymentTermsDays": 0,
"invoicePrefix": "<invoicePrefix>"
}'const response = await fetch('${APP_BASE_URL}/settings', {
method: 'PUT',
headers: {
authorization: `Bearer ${ACCESS_TOKEN}`,
accept: 'application/json',
'content-type': 'application/json',
},
body: JSON.stringify({
"schemaVersion": "vision-accounting-settings-update.v1",
"expectedVersion": 1,
"legalName": "<legalName>",
"tradingName": "<tradingName>",
"issuerAddress": {},
"accountingBasis": "undecided",
"functionalCurrency": "<functionalCurrency>",
"fiscalYearStartMonth": 1,
"defaultPaymentTermsDays": 0,
"invoicePrefix": "<invoicePrefix>"
}),
}
if (!response.ok) throw new Error(`Vision API ${response.status}`)
const result = await response.json()import json
import urllib.parse
import urllib.request
request = urllib.request.Request(
'${APP_BASE_URL}/settings',
data=json.dumps({"schemaVersion":"vision-accounting-settings-update.v1","expectedVersion":1,"legalName":"<legalName>","tradingName":"<tradingName>","issuerAddress":{},"accountingBasis":"undecided","functionalCurrency":"<functionalCurrency>","fiscalYearStartMonth":1,"defaultPaymentTermsDays":0,"invoicePrefix":"<invoicePrefix>"}).encode(),
headers={
"Accept": "application/json",
"Authorization": "Bearer <ACCESS_TOKEN>",
"Content-Type": "application/json"
},
method='PUT',
)
with urllib.request.urlopen(request, timeout=30) as response:
result = json.load(response)The current TypeScript reference client covers Platform token exchange and core reads. No native SDK helper is declared for this operation; use the HTTP contract directly and follow the SDK guidance.
Responses
| Status | Meaning | Schema |
|---|---|---|
| 200 | Durable Accounting command result | object |
| 400 | Safe Accounting error | object |
| 401 | Safe Accounting error | object |
| 403 | Safe Accounting error | object |
| 409 | Safe Accounting error | object |
Success response schema
| Field | Type | Rules | Description |
|---|---|---|---|
| schemaVersion | "vision-accounting-command-result.v1" | required | Not described in the contract. |
| operation | string | required | Not described in the contract. |
| outcome | succeeded | pending | required | Not described in the contract. |
| commandReceiptReference | string | required | Not described in the contract. |
| subjectReference | string | required | Not described in the contract. |
| recordVersion | integer | required; minimum 1 | Not described in the contract. |
| replayed | boolean | required | Not described in the contract. |
{
"schemaVersion": "vision-accounting-command-result.v1",
"operation": "<operation>",
"outcome": "succeeded",
"commandReceiptReference": "<commandReceiptReference>",
"subjectReference": "<subjectReference>",
"recordVersion": 1,
"replayed": true
}Errors and troubleshooting
Error bodies and codes are shown only where the approved contract declares them. Use status, the declared error schema, and any correlation identifier returned by the App; do not infer that two Apps share one envelope.
400— Safe Accounting error401— Safe Accounting error403— Safe Accounting error409— Safe Accounting error
Collection behavior
Pagination: not declared. Filtering/search: not declared. Sorting: not declared.
Cursor lifetime, cursor binding, stable ordering, maximum traversal, and unknown-filter behavior are not assumed unless stated by a parameter description or schema constraint above.
Operational behavior
- Rate limit: No operation-specific limit or 429 response is declared.
- Retry: Retry only when the documented error model or response headers authorize it. Timeout and backoff values are not declared by this operation.
- Idempotency: No idempotency header or replay window is declared.
- Concurrency: No ETag, If-Match, or optimistic-version header is declared.
Security and privacy
- Keep client credentials and bearer tokens on trusted servers.
- Send only to the exact approved HTTPS origin and audience.
- Treat response data according to the owning App's classification and retention policy; the OpenAPI contract does not itself grant data access.
- Do not log credentials, tokens, complete private payloads, or secrets.
Edge cases and known documentation gaps
- No detailed operation description.
- No direct server URL; gateway routing is unresolved here.
- One or more parameters have no field-level description.
- The request body has no purpose or conditional-rule description.
- Business roles, timeout, retry budget, rate value, idempotency window, and concurrency behavior are absent unless explicitly stated above.
Related operations and workflows
- GET /meta — No summary declared
- GET /ready — No summary declared
- GET /actor — No summary declared
- GET /overview — No summary declared
- GET /counterparties — No summary declared
- POST /counterparties — No summary declared
- GET /invoices — No summary declared
- POST /invoice-drafts — No summary declared
Contract history and evidence
- Contract version:
0.1.1 - Approved snapshot SHA-256:
0274eb8dd78d6a7750706c01ab6515334b41a16fde8697e54ceb5f65f9bd8f27 - Approval: Anthony, 2026-08-20T14:18:47.325Z (contract-unification-20260820)
- Download the authoritative OpenAPI 3.1 snapshot