import { createBusinessTransaction, ParmanaClient } from "@parmana/sdk";
import { readFileSync } from "node:fs";
const client = new ParmanaClient({
endpoint: "https://parmana-api-real.vercel.app",
apiKey: process.env.PARMANA_API_KEY!,
});
const inEffect = await client.policyInEffect("paytm:refund");
// The signed approval the approver sent, for this order and up to this amount.
const approval = JSON.parse(readFileSync("approval.json", "utf8"));
const transaction = createBusinessTransaction({
principalId: (await client.caller()).callerId,
purpose: "Refund order ORD-1042",
action: "paytm:refund",
target: "ORD-1042",
parameters: { orderId: "ORD-1042", transactionId: "TXN-9", amount: 750 },
policy: inEffect.policy,
signals: {
refundEligible: true,
fraudCheckPassed: true,
refundAmount: 750,
managerApproved: true,
approvalArtifact: approval,
},
});
const record = await client.createTransaction(transaction);
console.log(
record.businessTransactionId,
record.executions[0]?.decision.outcome,
);
import json
import os
from pathlib import Path
from parmana import ParmanaClient, create_business_transaction
client = ParmanaClient(
endpoint="https://parmana-api-real.vercel.app",
api_key=os.environ["PARMANA_API_KEY"],
)
in_effect = client.policy_in_effect("paytm:refund")
# The signed approval the approver sent, for this order and up to this amount.
approval = json.loads(Path("approval.json").read_text())
transaction = create_business_transaction(
principal_id=client.caller().caller_id,
purpose="Refund order ORD-1042",
action="paytm:refund",
target="ORD-1042",
parameters={"orderId": "ORD-1042", "transactionId": "TXN-9", "amount": 750},
policy=in_effect.policy,
signals={
"refundEligible": True,
"fraudCheckPassed": True,
"refundAmount": 750,
"managerApproved": True,
"approvalArtifact": approval,
},
)
record = client.create_transaction(transaction)
print(record.business_transaction_id, record.executions[0].decision.outcome)
Caller API key issued by scripts/generate-api-key.ts. Sent as Authorization: Bearer . Verified against a stored SHA-256 hash in constant time by packages/api/src/auth/StaticKeyAuthenticator.ts. Required on every route not listed as exempt in this document's top-level description. See /api-reference/authentication.
Body
application/json
Request payload for POST /execute and POST /transactions. status and createdAt are assigned by Parmana and must not be supplied by the client. Validation performed identically by both endpoints (each has its own inline businessTransactionId UUID check, then shares BusinessTransactionMapper.fromRequest and BusinessTransactionValidator): metadata.businessTransactionId must equal businessTransactionId; authorization.authorityId must equal authority.authorityId; intent.authorizationId must equal authorization.authorizationId; policy.name, policy.version, and intent.action must each be non-empty. No other structural validation is performed: authority, authorization, intent, policy, and signals objects are otherwise passed through as supplied, including any additional properties.
Immutable Business Transaction metadata supplied by the calling application. Not evaluated by Policy. businessTransactionId is the only required field; it must match the top-level businessTransactionId. Parmana rejects a mismatch with a 400.
Exact Policy to evaluate. The client explicitly supplies name, version, and schemaVersion; Parmana does not automatically discover or select a policy. If no matching policy file exists at policies/{name}/{version}/policy.json, the request fails with a 404 (policyId/policyVersion on POST /policies/validate) or a RUNTIME_ERROR (name/version elsewhere, from PolicyNotFoundError not otherwise mapped by the shared error handler in every route, see the error envelope note).
Opaque runtime facts evaluated by the resolved Policy's rules. Parmana assigns no business meaning to these values and does not statically validate them beyond the Policy's own signalsSchema declaration (see policies/{name}/{version}/policy.json). Scaled integers, not floats, for numeric signals such as amounts (house convention across every reference policy).
Approved and released. The body is the signed Execution Trust Record.
Response returned by POST /execute, POST /transactions, and GET /trust-records/{businessTransactionId}. A bare Execution Trust Record, no wrapper. POST /execute returns this with status 200; POST /transactions returns the identical shape with status 201.
Canonical immutable business context accepted by Parmana for execution: Authority -> Authorization -> Intent -> Business Transaction -> Policy. Every Business Transaction produces exactly one Decision, one Execution, and one Execution Trust Record.
Explicit binding linking policy-governance provenance (transaction.policy.contentHash/governanceAnchor) to what a connector actually did (executions[].evidence.attributes.connector). Not a new cryptographic guarantee on its own -- both were already covered by trustRecordHash/signature -- but a single, explicitly-named pointer an auditor can check without reconstructing the binding themselves. Absent on a Trust Record built before this field existed.
import { createBusinessTransaction, ParmanaClient } from "@parmana/sdk";
import { readFileSync } from "node:fs";
const client = new ParmanaClient({
endpoint: "https://parmana-api-real.vercel.app",
apiKey: process.env.PARMANA_API_KEY!,
});
const inEffect = await client.policyInEffect("paytm:refund");
// The signed approval the approver sent, for this order and up to this amount.
const approval = JSON.parse(readFileSync("approval.json", "utf8"));
const transaction = createBusinessTransaction({
principalId: (await client.caller()).callerId,
purpose: "Refund order ORD-1042",
action: "paytm:refund",
target: "ORD-1042",
parameters: { orderId: "ORD-1042", transactionId: "TXN-9", amount: 750 },
policy: inEffect.policy,
signals: {
refundEligible: true,
fraudCheckPassed: true,
refundAmount: 750,
managerApproved: true,
approvalArtifact: approval,
},
});
const record = await client.createTransaction(transaction);
console.log(
record.businessTransactionId,
record.executions[0]?.decision.outcome,
);
import json
import os
from pathlib import Path
from parmana import ParmanaClient, create_business_transaction
client = ParmanaClient(
endpoint="https://parmana-api-real.vercel.app",
api_key=os.environ["PARMANA_API_KEY"],
)
in_effect = client.policy_in_effect("paytm:refund")
# The signed approval the approver sent, for this order and up to this amount.
approval = json.loads(Path("approval.json").read_text())
transaction = create_business_transaction(
principal_id=client.caller().caller_id,
purpose="Refund order ORD-1042",
action="paytm:refund",
target="ORD-1042",
parameters={"orderId": "ORD-1042", "transactionId": "TXN-9", "amount": 750},
policy=in_effect.policy,
signals={
"refundEligible": True,
"fraudCheckPassed": True,
"refundAmount": 750,
"managerApproved": True,
"approvalArtifact": approval,
},
)
record = client.create_transaction(transaction)
print(record.business_transaction_id, record.executions[0].decision.outcome)
{"docsConfig":{"theme":"maple","$schema":"https://mintlify.com/docs.json","name":"Parmana","description":"Parmana lets businesses set clear limits on what AI can do, checks every action against those limits, and keeps a record of each decision.","colors":{"primary":"#6366F1","light":"#6366F1","dark":"#4338CA"},"logo":{"light":"https://mintcdn.com/parmanasystems/3fc1F82PB1uU1_pD/logo/logo-light.svg?fit=max\u0026auto=format\u0026n=3fc1F82PB1uU1_pD\u0026q=85\u0026s=902f62a6181def8e3c6b5aa71a40d247","dark":"https://mintcdn.com/parmanasystems/3fc1F82PB1uU1_pD/logo/logo-dark.svg?fit=max\u0026auto=format\u0026n=3fc1F82PB1uU1_pD\u0026q=85\u0026s=dba61af5a5c9f7960dbd6051e4ec24fb"},"favicon":"https://mintcdn.com/parmanasystems/3fc1F82PB1uU1_pD/logo/seal.svg?fit=max\u0026auto=format\u0026n=3fc1F82PB1uU1_pD\u0026q=85\u0026s=9ede6c2634c534c1d4eadfd76a08d84b","api":{"examples":{"prefill":true}},"background":{"color":{"light":"#FFFFFF","dark":"#1A1A1A"}},"navbar":{"links":[{"href":"https://github.com/pavancharak/parmana-verifier","label":"GitHub"},{"href":"https://github.com/pavancharak/parmana-verifier/discussions","label":"Discussions"}]},"footer":{"socials":{"github":"https://github.com/pavancharak/parmana-verifier"},"links":[{"header":"Legal","items":[{"label":"License and evaluation","href":"/license"},{"label":"Security","href":"https://docs.parmanasystems.com/license"}]}]},"fonts":{"family":"Inter"},"banner":{"content":"The Parmana repository, including the server, the SDKs and the offline verifier, is licensed under the Apache License 2.0. [License](/license)","dismissible":false},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"parmanasystems","hasAudioNarration":false,"actualSubdomain":"parmanasystems","customDomains":["docs.parmanasystems.com"],"gitSource":{"type":"github","owner":"pavancharak","repo":"parmana-core","deployBranch":"main","contentDirectory":"docs/site","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae812498216fd4b13f3a6df","collectionId":"3f93f0df-bc3f-4edb-a266-21d2a15a5afd","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae812498216fd4b13f3a6df"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae8e569ccb1a4e2ea06370f","clientVersion":"0.0.4054","searchFilterCounts":[{"language":"default","tag":"API reference","count":171},{"language":"default","tag":"TypeScript SDK","count":135},{"language":"default","tag":"REST API","count":69},{"language":"default","tag":"Interfaces","count":63},{"language":"default","tag":"Python SDK","count":48},{"language":"default","tag":"Classes","count":32},{"language":"default","tag":"Handbook","count":27},{"language":"default","tag":"Build with Parmana","count":26},{"language":"default","tag":"The Parmana Handbook","count":24},{"language":"default","tag":"Concepts","count":22}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/endpoints/create-transaction","slug":"/api-reference/endpoints/create-transaction","pageMetadata":{"title":"Create (execute) a Business Transaction","description":"In the sandbox, each `businessTransactionId` works once: a prefilled id returns `409` after its first use.","openapi":"openapi.bundled.yaml POST /transactions","href":"/api-reference/endpoints/create-transaction"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"In the sandbox, each \", _jsx(_components.code, {\n children: \"businessTransactionId\"\n }), \" works once: a prefilled id returns \", _jsx(_components.code, {\n children: \"409\"\n }), \" after its first use.\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Create (execute) a Business Transaction","description":"In the sandbox, each `businessTransactionId` works once: a prefilled id returns `409` after its first use.","openapi":"openapi.bundled.yaml POST /transactions","href":"/api-reference/endpoints/create-transaction"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Transactions"],"summary":"Create (execute) a Business Transaction","operationId":"createTransaction","description":"In the sandbox, each `businessTransactionId` works once: a prefilled id returns `409` after its first use.","requestBody":"6523445c-90ee-4bf5-8e4c-228420ef2d13","responses":{"201":"c365f88c-a10c-4492-b2d5-6677cbb2c497","400":"a047a685-427c-4c93-99ab-6b5cf0bed00a","401":"d4c43469-81cc-4784-b725-ec81469e5bf4","403":"289098d1-948f-4050-ac82-b939dee26355","404":"071914df-f0a0-452f-9dca-a4d77643b7cc","409":"581dad1f-e8cb-4eb9-a4f9-227f5d0dde86","429":"dfa59a88-54fc-4a13-be97-da5ed5e12510","500":"6ca07a8a-8e59-45f6-b449-620f0369ef52","502":"3874c816-9c6f-4813-a6aa-5b0e120eb6ec","503":"4b3cd6bd-651d-43be-bf58-76d520e4f4b8"},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl -X POST https://parmana-api-real.vercel.app/transactions \\\n -H \"Authorization: Bearer $PARMANA_API_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"businessTransactionId\": \"4cfe5661-42a6-4db0-8372-2d24dca235f2\",\n \"metadata\": {\n \"businessTransactionId\": \"4cfe5661-42a6-4db0-8372-2d24dca235f2\",\n \"sourceSystem\": \"docs-api-reference\",\n \"submittedBy\": \"docs-example\"\n },\n \"authority\": {\n \"authorityId\": \"be8afa44-ee3c-44c2-a4a2-ba119e128948\",\n \"authorityType\": \"SERVICE\",\n \"principalId\": \"docs-example-caller\",\n \"issuedAt\": \"2026-09-14T17:18:27.000Z\"\n },\n \"authorization\": {\n \"authorizationId\": \"81a1c120-d296-458b-bbe5-824a8617f23a\",\n \"authorityId\": \"be8afa44-ee3c-44c2-a4a2-ba119e128948\",\n \"purpose\": \"API reference example: transactions endpoint\",\n \"issuedAt\": \"2026-09-14T17:18:27.000Z\"\n },\n \"intent\": {\n \"intentId\": \"ceb89d68-13ac-4ff9-b7b9-dd0e15637baa\",\n \"authorizationId\": \"81a1c120-d296-458b-bbe5-824a8617f23a\",\n \"action\": \"test:fixture-execute\",\n \"target\": \"vendor://payments\",\n \"parameters\": {\n \"amount\": 250,\n \"currency\": \"USD\"\n },\n \"createdAt\": \"2026-09-14T17:18:27.000Z\"\n },\n \"policy\": {\n \"name\": \"vendor-payment\",\n \"version\": \"2.0.0\",\n \"schemaVersion\": \"1.0.0\"\n },\n \"signals\": {\n \"vendorVerified\": true,\n \"invoiceVerified\": true,\n \"paymentApproved\": true,\n \"sufficientFunds\": true,\n \"paymentAmount\": 250,\n \"riskScore\": 5,\n \"vendorId\": \"vendor://payments\"\n }\n }'"},{"lang":"typescript","label":"TypeScript","source":"import { createBusinessTransaction, ParmanaClient } from \"@parmana/sdk\";\nimport { readFileSync } from \"node:fs\";\n\nconst client = new ParmanaClient({\n endpoint: \"https://parmana-api-real.vercel.app\",\n apiKey: process.env.PARMANA_API_KEY!,\n});\n\nconst inEffect = await client.policyInEffect(\"paytm:refund\");\n\n// The signed approval the approver sent, for this order and up to this amount.\nconst approval = JSON.parse(readFileSync(\"approval.json\", \"utf8\"));\n\nconst transaction = createBusinessTransaction({\n principalId: (await client.caller()).callerId,\n purpose: \"Refund order ORD-1042\",\n action: \"paytm:refund\",\n target: \"ORD-1042\",\n parameters: { orderId: \"ORD-1042\", transactionId: \"TXN-9\", amount: 750 },\n policy: inEffect.policy,\n signals: {\n refundEligible: true,\n fraudCheckPassed: true,\n refundAmount: 750,\n managerApproved: true,\n approvalArtifact: approval,\n },\n});\n\nconst record = await client.createTransaction(transaction);\n\nconsole.log(\n record.businessTransactionId,\n record.executions[0]?.decision.outcome,\n);"},{"lang":"python","label":"Python","source":"import json\nimport os\nfrom pathlib import Path\n\nfrom parmana import ParmanaClient, create_business_transaction\n\nclient = ParmanaClient(\n endpoint=\"https://parmana-api-real.vercel.app\",\n api_key=os.environ[\"PARMANA_API_KEY\"],\n)\n\nin_effect = client.policy_in_effect(\"paytm:refund\")\n\n# The signed approval the approver sent, for this order and up to this amount.\napproval = json.loads(Path(\"approval.json\").read_text())\n\ntransaction = create_business_transaction(\n principal_id=client.caller().caller_id,\n purpose=\"Refund order ORD-1042\",\n action=\"paytm:refund\",\n target=\"ORD-1042\",\n parameters={\"orderId\": \"ORD-1042\", \"transactionId\": \"TXN-9\", \"amount\": 750},\n policy=in_effect.policy,\n signals={\n \"refundEligible\": True,\n \"fraudCheckPassed\": True,\n \"refundAmount\": 750,\n \"managerApproved\": True,\n \"approvalArtifact\": approval,\n },\n)\n\nrecord = client.create_transaction(transaction)\n\nprint(record.business_transaction_id, record.executions[0].decision.outcome)"}],"method":"post","type":"path","servers":["9de3dc50-5366-4d54-a47f-15b7519838b6","9ba31458-07b4-4af8-af1e-e984fd99f741"],"security":["e01a8f61-2586-45dd-8ee5-04f326eaca59"],"path":"/transactions","baseUrlOptions":["https://parmana-api-real.vercel.app","http://localhost:3000"],"title":"Create (execute) a Business Transaction","codeSamples":[{"label":"cURL","lang":"bash","source":"curl -X POST https://parmana-api-real.vercel.app/transactions \\\n -H \"Authorization: Bearer $PARMANA_API_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"businessTransactionId\": \"4cfe5661-42a6-4db0-8372-2d24dca235f2\",\n \"metadata\": {\n \"businessTransactionId\": \"4cfe5661-42a6-4db0-8372-2d24dca235f2\",\n \"sourceSystem\": \"docs-api-reference\",\n \"submittedBy\": \"docs-example\"\n },\n \"authority\": {\n \"authorityId\": \"be8afa44-ee3c-44c2-a4a2-ba119e128948\",\n \"authorityType\": \"SERVICE\",\n \"principalId\": \"docs-example-caller\",\n \"issuedAt\": \"2026-09-14T17:18:27.000Z\"\n },\n \"authorization\": {\n \"authorizationId\": \"81a1c120-d296-458b-bbe5-824a8617f23a\",\n \"authorityId\": \"be8afa44-ee3c-44c2-a4a2-ba119e128948\",\n \"purpose\": \"API reference example: transactions endpoint\",\n \"issuedAt\": \"2026-09-14T17:18:27.000Z\"\n },\n \"intent\": {\n \"intentId\": \"ceb89d68-13ac-4ff9-b7b9-dd0e15637baa\",\n \"authorizationId\": \"81a1c120-d296-458b-bbe5-824a8617f23a\",\n \"action\": \"test:fixture-execute\",\n \"target\": \"vendor://payments\",\n \"parameters\": {\n \"amount\": 250,\n \"currency\": \"USD\"\n },\n \"createdAt\": \"2026-09-14T17:18:27.000Z\"\n },\n \"policy\": {\n \"name\": \"vendor-payment\",\n \"version\": \"2.0.0\",\n \"schemaVersion\": \"1.0.0\"\n },\n \"signals\": {\n \"vendorVerified\": true,\n \"invoiceVerified\": true,\n \"paymentApproved\": true,\n \"sufficientFunds\": true,\n \"paymentAmount\": 250,\n \"riskScore\": 5,\n \"vendorId\": \"vendor://payments\"\n }\n }'"},{"label":"TypeScript","lang":"typescript","source":"import { createBusinessTransaction, ParmanaClient } from \"@parmana/sdk\";\nimport { readFileSync } from \"node:fs\";\n\nconst client = new ParmanaClient({\n endpoint: \"https://parmana-api-real.vercel.app\",\n apiKey: process.env.PARMANA_API_KEY!,\n});\n\nconst inEffect = await client.policyInEffect(\"paytm:refund\");\n\n// The signed approval the approver sent, for this order and up to this amount.\nconst approval = JSON.parse(readFileSync(\"approval.json\", \"utf8\"));\n\nconst transaction = createBusinessTransaction({\n principalId: (await client.caller()).callerId,\n purpose: \"Refund order ORD-1042\",\n action: \"paytm:refund\",\n target: \"ORD-1042\",\n parameters: { orderId: \"ORD-1042\", transactionId: \"TXN-9\", amount: 750 },\n policy: inEffect.policy,\n signals: {\n refundEligible: true,\n fraudCheckPassed: true,\n refundAmount: 750,\n managerApproved: true,\n approvalArtifact: approval,\n },\n});\n\nconst record = await client.createTransaction(transaction);\n\nconsole.log(\n record.businessTransactionId,\n record.executions[0]?.decision.outcome,\n);"},{"label":"Python","lang":"python","source":"import json\nimport os\nfrom pathlib import Path\n\nfrom parmana import ParmanaClient, create_business_transaction\n\nclient = ParmanaClient(\n endpoint=\"https://parmana-api-real.vercel.app\",\n api_key=os.environ[\"PARMANA_API_KEY\"],\n)\n\nin_effect = client.policy_in_effect(\"paytm:refund\")\n\n# The signed approval the approver sent, for this order and up to this amount.\napproval = json.loads(Path(\"approval.json\").read_text())\n\ntransaction = create_business_transaction(\n principal_id=client.caller().caller_id,\n purpose=\"Refund order ORD-1042\",\n action=\"paytm:refund\",\n target=\"ORD-1042\",\n parameters={\"orderId\": \"ORD-1042\", \"transactionId\": \"TXN-9\", \"amount\": 750},\n policy=in_effect.policy,\n signals={\n \"refundEligible\": True,\n \"fraudCheckPassed\": True,\n \"refundAmount\": 750,\n \"managerApproved\": True,\n \"approvalArtifact\": approval,\n },\n)\n\nrecord = client.create_transaction(transaction)\n\nprint(record.business_transaction_id, record.executions[0].decision.outcome)"}],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated","prefillPlaygroundWithExample":true,"prefillPlaygroundExamples":[{"body.businessTransactionId":"ae94f2aa-6120-4c83-bf5d-7108e380d5a8","body.metadata.businessTransactionId":"ae94f2aa-6120-4c83-bf5d-7108e380d5a8","body.metadata.correlationId":"cc1ca975-4935-4e9a-a591-8897af6b56fb","body.metadata.sourceSystem":"docs-example","body.metadata.submittedBy":"docs-reader","body.metadata.submittedAt":"2026-07-13T17:36:00.835Z","body.authority.authorityId":"authority-1","body.authority.authorityType":"SERVICE","body.authority.principalId":"sandbox-visitor","body.authority.issuedAt":"2026-07-13T17:36:00.835Z","body.authorization.authorizationId":"authorization-1","body.authorization.authorityId":"authority-1","body.authorization.purpose":"Trying the Parmana sandbox","body.authorization.issuedAt":"2026-07-13T17:36:00.835Z","body.intent.intentId":"intent-1","body.intent.authorizationId":"authorization-1","body.intent.action":"sandbox:receipt","body.intent.target":"order-docs-example","body.intent.parameters":{"note":"hello"},"body.intent.createdAt":"2026-07-13T17:36:00.835Z","body.policy.name":"sandbox-receipt","body.policy.version":"1.0.0","body.policy.schemaVersion":"1.0.0","body.signals":{"note":"hello","receiptApproved":false}},{"body.businessTransactionId":"ffe803db-fb24-498a-9826-47ddc7e7167d","body.metadata.businessTransactionId":"ffe803db-fb24-498a-9826-47ddc7e7167d","body.metadata.correlationId":"303003bf-3939-407d-855d-ffb338532d6d","body.metadata.sourceSystem":"vendor-payment-service","body.metadata.submittedBy":"ap-automation","body.metadata.submittedAt":"2026-07-08T03:54:34.783Z","body.authority.authorityId":"05ff9e2e-e5dd-40aa-9964-02c2574396c9","body.authority.authorityType":"SERVICE","body.authority.principalId":"ap-automation-svc","body.authority.issuedAt":"2026-07-08T03:54:34.784Z","body.authority.displayName":"Accounts Payable Automation","body.authorization.authorizationId":"5fb16a24-6688-4f6f-98ee-53a117f0f2c9","body.authorization.authorityId":"05ff9e2e-e5dd-40aa-9964-02c2574396c9","body.authorization.purpose":"Authorize vendor payment disbursement","body.authorization.issuedAt":"2026-07-08T03:54:34.784Z","body.intent.intentId":"023fbdd4-f206-4a42-b7dd-d5f865fd2c74","body.intent.authorizationId":"5fb16a24-6688-4f6f-98ee-53a117f0f2c9","body.intent.action":"payments:execute","body.intent.target":"vendor/V-300","body.intent.parameters":{"amount":3300,"currency":"USD"},"body.intent.createdAt":"2026-07-08T03:54:34.784Z","body.policy.name":"vendor-payment","body.policy.version":"2.0.0","body.policy.schemaVersion":"1.0.0","body.signals":{"vendorVerified":true,"invoiceVerified":true,"paymentApproved":true,"sufficientFunds":true,"paymentAmount":3300,"riskScore":9}}]},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"title":"Transaction Create Request","description":"Request payload for POST /execute and POST /transactions. status and createdAt are assigned by Parmana and must not be supplied by the client. Validation performed identically by both endpoints (each has its own inline businessTransactionId UUID check, then shares BusinessTransactionMapper.fromRequest and BusinessTransactionValidator): metadata.businessTransactionId must equal businessTransactionId; authorization.authorityId must equal authority.authorityId; intent.authorizationId must equal authorization.authorizationId; policy.name, policy.version, and intent.action must each be non-empty. No other structural validation is performed: authority, authorization, intent, policy, and signals objects are otherwise passed through as supplied, including any additional properties.","type":"object","additionalProperties":true,"required":["businessTransactionId","metadata","authority","authorization","intent","policy","signals"],"properties":{"businessTransactionId":{"type":"string","format":"uuid","description":"Unique Business Transaction identifier. Must be a valid UUID on both POST /execute and POST /transactions (rejected with 400 otherwise).","isRequired":true,"uniqueKey":"businessTransactionId","typeLabel":"string\u003cuuid>"},"metadata":{"title":"Metadata","description":"Immutable Business Transaction metadata supplied by the calling application. Not evaluated by Policy. businessTransactionId is the only required field; it must match the top-level businessTransactionId. Parmana rejects a mismatch with a 400.","type":"object","additionalProperties":true,"required":["businessTransactionId"],"properties":{"businessTransactionId":{"type":"string","format":"uuid","description":"Unique Business Transaction identifier. Must be a valid UUID.","isRequired":true,"uniqueKey":"metadata.businessTransactionId","typeLabel":"string\u003cuuid>"},"correlationId":{"type":"string","description":"Optional correlation identifier used by the calling application.","uniqueKey":"metadata.correlationId","typeLabel":"string"},"tenantId":{"type":"string","description":"Optional tenant identifier for multi-tenant deployments.","uniqueKey":"metadata.tenantId","typeLabel":"string"},"sourceSystem":{"type":"string","description":"Originating application or service.","uniqueKey":"metadata.sourceSystem","typeLabel":"string"},"submittedBy":{"type":"string","description":"Identity of the calling application or principal.","uniqueKey":"metadata.submittedBy","typeLabel":"string"},"submittedAt":{"type":"string","format":"date-time","description":"UTC timestamp when the Business Transaction was submitted.","uniqueKey":"metadata.submittedAt","typeLabel":"string\u003cdate-time>"}},"examples":[{"businessTransactionId":"eed2a972-1bf5-4166-8472-761f76fbf1b2","correlationId":"6b97caca-1605-4711-bf00-7e5a65434d93","sourceSystem":"vendor-payment-service","submittedBy":"ap-automation","submittedAt":"2026-07-07T16:38:59.285Z"}],"isRequired":true,"uniqueKey":"metadata","typeLabel":"Metadata · object"},"authority":{"title":"Authority","description":"Entity empowered to authorize execution within a trust domain. Immutable once issued.","type":"object","additionalProperties":true,"required":["authorityId","authorityType","principalId","issuedAt"],"properties":{"authorityId":{"type":"string","description":"Unique Authority identifier.","isRequired":true,"uniqueKey":"authority.authorityId","typeLabel":"string"},"authorityType":{"type":"string","description":"Type of authority.","enum":["USER","ROLE","SERVICE","ORGANIZATION"],"isRequired":true,"uniqueKey":"authority.authorityType","typeLabel":"enum\u003cstring>"},"principalId":{"type":"string","description":"Principal identifier.","isRequired":true,"uniqueKey":"authority.principalId","typeLabel":"string"},"issuedAt":{"type":"string","format":"date-time","description":"UTC timestamp when Authority became effective.","isRequired":true,"uniqueKey":"authority.issuedAt","typeLabel":"string\u003cdate-time>"},"displayName":{"type":"string","description":"Human-readable display name.","uniqueKey":"authority.displayName","typeLabel":"string"}},"examples":[{"authorityId":"c0c01c23-04a2-45f2-a821-ef24bfca02d3","authorityType":"SERVICE","principalId":"ap-automation-svc","displayName":"Accounts Payable Automation","issuedAt":"2026-07-07T16:38:59.285Z"}],"isRequired":true,"uniqueKey":"authority","typeLabel":"Authority · object"},"authorization":{"title":"Authorization","description":"Immutable trust artifact proving that an Authority granted approval for an intended execution.","type":"object","additionalProperties":true,"required":["authorizationId","authorityId","purpose","issuedAt"],"properties":{"authorizationId":{"type":"string","description":"Unique Authorization identifier.","isRequired":true,"uniqueKey":"authorization.authorizationId","typeLabel":"string"},"authorityId":{"type":"string","description":"Authority issuing this Authorization. Must match authority.authorityId. Parmana rejects a mismatch with a 400.","isRequired":true,"uniqueKey":"authorization.authorityId","typeLabel":"string"},"purpose":{"type":"string","description":"Business purpose for which the Authorization was granted.","isRequired":true,"uniqueKey":"authorization.purpose","typeLabel":"string"},"issuedAt":{"type":"string","format":"date-time","description":"UTC timestamp when the Authorization was issued.","isRequired":true,"uniqueKey":"authorization.issuedAt","typeLabel":"string\u003cdate-time>"},"expiresAt":{"type":"string","format":"date-time","description":"Optional expiration timestamp. After this time the Authorization is no longer valid.","uniqueKey":"authorization.expiresAt","typeLabel":"string\u003cdate-time>"}},"examples":[{"authorizationId":"6e9d6aa6-6d20-40a8-b05d-383516365cc7","authorityId":"c0c01c23-04a2-45f2-a821-ef24bfca02d3","purpose":"Authorize vendor payment disbursement","issuedAt":"2026-07-07T16:38:59.285Z"}],"isRequired":true,"uniqueKey":"authorization","typeLabel":"Authorization · object"},"intent":{"title":"Intent","description":"Immutable declaration of the action an Authority intends to be executed under an Authorization.","type":"object","additionalProperties":true,"required":["intentId","authorizationId","action","target","parameters","createdAt"],"properties":{"intentId":{"type":"string","description":"Unique Intent identifier.","isRequired":true,"uniqueKey":"intent.intentId","typeLabel":"string"},"authorizationId":{"type":"string","description":"Authorization under which this Intent was created. Must match authorization.authorizationId. Parmana rejects a mismatch with a 400.","isRequired":true,"uniqueKey":"intent.authorizationId","typeLabel":"string"},"action":{"type":"string","description":"Business action being requested. Required and non-empty. Parmana rejects an empty action with a 400.","examples":["VendorPayment","TransferFunds","DeployApplication"],"isRequired":true,"uniqueKey":"intent.action","typeLabel":"string"},"target":{"type":"string","description":"Target of the intended action.","examples":["vendor/V-100","account/12345"],"isRequired":true,"uniqueKey":"intent.target","typeLabel":"string"},"parameters":{"type":"object","description":"Immutable business parameters describing the intended action. Not evaluated by policy, see signals.","additionalProperties":true,"isRequired":true,"uniqueKey":"intent.parameters","typeLabel":"object"},"createdAt":{"type":"string","format":"date-time","description":"UTC timestamp when the Intent was created.","isRequired":true,"uniqueKey":"intent.createdAt","typeLabel":"string\u003cdate-time>"}},"examples":[{"intentId":"ae5865f6-181b-409a-90ec-1b4b8b8414ba","authorizationId":"6e9d6aa6-6d20-40a8-b05d-383516365cc7","action":"payments:execute","target":"vendor/V-100","parameters":{"amount":4500,"currency":"USD"},"createdAt":"2026-07-07T16:38:59.285Z"}],"isRequired":true,"uniqueKey":"intent","typeLabel":"Intent · object"},"policy":{"title":"Policy Reference","description":"Exact Policy to evaluate. The client explicitly supplies name, version, and schemaVersion; Parmana does not automatically discover or select a policy. If no matching policy file exists at policies/{name}/{version}/policy.json, the request fails with a 404 (policyId/policyVersion on POST /policies/validate) or a RUNTIME_ERROR (name/version elsewhere, from PolicyNotFoundError not otherwise mapped by the shared error handler in every route, see the error envelope note).","type":"object","additionalProperties":true,"required":["name","version","schemaVersion"],"properties":{"name":{"type":"string","description":"Policy name. Required and non-empty. Parmana rejects an empty name with a 400.","minLength":1,"isRequired":true,"uniqueKey":"policy.name","typeLabel":"string"},"version":{"type":"string","description":"Business policy version. Required and non-empty. Parmana rejects an empty version with a 400.","minLength":1,"examples":["2.0.0","1.0.0"],"isRequired":true,"uniqueKey":"policy.version","typeLabel":"string"},"schemaVersion":{"type":"string","description":"Signals schema version expected by the policy.","examples":["1.0.0"],"isRequired":true,"uniqueKey":"policy.schemaVersion","typeLabel":"string"},"contentHash":{"type":"string","description":"sha256 of the canonicalized policy.json content actually loaded for this decision (G-24). Server-computed, never caller-settable; absent on a request-supplied PolicyReference and on a PolicyReference built before this field existed. Only present on the copy embedded in an Execution Trust Record's transaction.policy.","uniqueKey":"policy.contentHash","typeLabel":"string"},"governanceAnchor":{"type":"object","description":"Whether the policy content above is traceable to a completed Policy Governance approval, resolved at decision time (G-45). Absent on a PolicyReference built before this field existed. Its presence does not imply POLICY_EXECUTION_VERIFICATION_ENFORCED is on -- only that the lookup ran and recorded what it found, which may honestly be \"no approval record exists for this policy yet.\"","additionalProperties":false,"required":["status"],"properties":{"status":{"type":"string","enum":["VERIFIED","NO_APPROVAL_RECORD","SIGNATURE_INVALID","CONTENT_MISMATCH"],"isRequired":true,"uniqueKey":"policy.governanceAnchor.status","typeLabel":"enum\u003cstring>"},"approvalRecordId":{"type":"string","description":"The PolicyChangeApprovalRecord this anchor resolved against. Present only when a record was found at all -- absent for NO_APPROVAL_RECORD.","uniqueKey":"policy.governanceAnchor.approvalRecordId","typeLabel":"string"}},"uniqueKey":"policy.governanceAnchor","typeLabel":"object"}},"examples":[{"name":"vendor-payment","version":"2.0.0","schemaVersion":"1.0.0"},{"name":"vendor-payment","version":"2.0.0","schemaVersion":"1.0.0","contentHash":"3f2504e04f8964e7ad0dbb0cf7fea1b4e0e1e0a3a1e1a4b6c8e0d5f6a7b8c9d0","governanceAnchor":{"status":"NO_APPROVAL_RECORD"}}],"isRequired":true,"uniqueKey":"policy","typeLabel":"Policy Reference · object"},"signals":{"title":"Signals","description":"Opaque runtime facts evaluated by the resolved Policy's rules. Parmana assigns no business meaning to these values and does not statically validate them beyond the Policy's own signalsSchema declaration (see policies/{name}/{version}/policy.json). Scaled integers, not floats, for numeric signals such as amounts (house convention across every reference policy).","type":"object","additionalProperties":true,"examples":[{"vendorVerified":true,"invoiceVerified":true,"paymentApproved":true,"sufficientFunds":true,"paymentAmount":4500,"riskScore":10}],"isRequired":true,"uniqueKey":"signals","typeLabel":"Signals · object"}},"examples":[{"businessTransactionId":"eed2a972-1bf5-4166-8472-761f76fbf1b2","metadata":{"businessTransactionId":"eed2a972-1bf5-4166-8472-761f76fbf1b2","correlationId":"6b97caca-1605-4711-bf00-7e5a65434d93","sourceSystem":"vendor-payment-service","submittedBy":"ap-automation","submittedAt":"2026-07-07T16:38:59.285Z"},"authority":{"authorityId":"c0c01c23-04a2-45f2-a821-ef24bfca02d3","authorityType":"SERVICE","principalId":"ap-automation-svc","displayName":"Accounts Payable Automation","issuedAt":"2026-07-07T16:38:59.285Z"},"authorization":{"authorizationId":"6e9d6aa6-6d20-40a8-b05d-383516365cc7","authorityId":"c0c01c23-04a2-45f2-a821-ef24bfca02d3","purpose":"Authorize vendor payment disbursement","issuedAt":"2026-07-07T16:38:59.285Z"},"intent":{"intentId":"ae5865f6-181b-409a-90ec-1b4b8b8414ba","authorizationId":"6e9d6aa6-6d20-40a8-b05d-383516365cc7","action":"payments:execute","target":"vendor/V-100","parameters":{"amount":4500,"currency":"USD"},"createdAt":"2026-07-07T16:38:59.285Z"},"policy":{"name":"vendor-payment","version":"2.0.0","schemaVersion":"1.0.0"},"signals":{"vendorVerified":true,"invoiceVerified":true,"paymentApproved":true,"sufficientFunds":true,"paymentAmount":4500,"riskScore":10}}],"uniqueKey":"","typeLabel":"Transaction Create Request · object"},"examples":{"sandbox-receipt":{"title":"sandbox-receipt","value":{"businessTransactionId":"ae94f2aa-6120-4c83-bf5d-7108e380d5a8","metadata":{"businessTransactionId":"ae94f2aa-6120-4c83-bf5d-7108e380d5a8","correlationId":"cc1ca975-4935-4e9a-a591-8897af6b56fb","sourceSystem":"docs-example","submittedBy":"docs-reader","submittedAt":"2026-07-13T17:36:00.835Z"},"authority":{"authorityId":"authority-1","authorityType":"SERVICE","principalId":"sandbox-visitor","issuedAt":"2026-07-13T17:36:00.835Z"},"authorization":{"authorizationId":"authorization-1","authorityId":"authority-1","purpose":"Trying the Parmana sandbox","issuedAt":"2026-07-13T17:36:00.835Z"},"intent":{"intentId":"intent-1","authorizationId":"authorization-1","action":"sandbox:receipt","target":"order-docs-example","parameters":{"note":"hello"},"createdAt":"2026-07-13T17:36:00.835Z"},"policy":{"name":"sandbox-receipt","version":"1.0.0","schemaVersion":"1.0.0"},"signals":{"note":"hello","receiptApproved":false}}},"vendor-payment-flow-transactions-endpoint":{"title":"vendor-payment-flow-transactions-endpoint","value":{"businessTransactionId":"ffe803db-fb24-498a-9826-47ddc7e7167d","metadata":{"businessTransactionId":"ffe803db-fb24-498a-9826-47ddc7e7167d","correlationId":"303003bf-3939-407d-855d-ffb338532d6d","sourceSystem":"vendor-payment-service","submittedBy":"ap-automation","submittedAt":"2026-07-08T03:54:34.783Z"},"authority":{"authorityId":"05ff9e2e-e5dd-40aa-9964-02c2574396c9","authorityType":"SERVICE","principalId":"ap-automation-svc","displayName":"Accounts Payable Automation","issuedAt":"2026-07-08T03:54:34.784Z"},"authorization":{"authorizationId":"5fb16a24-6688-4f6f-98ee-53a117f0f2c9","authorityId":"05ff9e2e-e5dd-40aa-9964-02c2574396c9","purpose":"Authorize vendor payment disbursement","issuedAt":"2026-07-08T03:54:34.784Z"},"intent":{"intentId":"023fbdd4-f206-4a42-b7dd-d5f865fd2c74","authorizationId":"5fb16a24-6688-4f6f-98ee-53a117f0f2c9","action":"payments:execute","target":"vendor/V-300","parameters":{"amount":3300,"currency":"USD"},"createdAt":"2026-07-08T03:54:34.784Z"},"policy":{"name":"vendor-payment","version":"2.0.0","schemaVersion":"1.0.0"},"signals":{"vendorVerified":true,"invoiceVerified":true,"paymentApproved":true,"sufficientFunds":true,"paymentAmount":3300,"riskScore":9},"status":"APPROVED","unexpectedField":"should-not-be-persisted"}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"c365f88c-a10c-4492-b2d5-6677cbb2c497":{"description":"Approved and released. The body is the signed Execution Trust Record.","content":{"application/json":{"schema":{"title":"Execution Trust Record Response","description":"Response returned by POST /execute, POST /transactions, and GET /trust-records/{businessTransactionId}. A bare Execution Trust Record, no wrapper. POST /execute returns this with status 200; POST /transactions returns the identical shape with status 201.","type":"object","additionalProperties":true,"required":["trustRecordId","businessTransactionId","transaction","overrides","executions","verifications","receipts","trustRecordHash","signature","createdAt","updatedAt"],"properties":{"trustRecordId":{"type":"string","description":"Unique Execution Trust Record identifier.","isRequired":true,"uniqueKey":"trustRecordId","typeLabel":"string"},"businessTransactionId":{"type":"string","description":"Business Transaction identifier.","isRequired":true,"uniqueKey":"businessTransactionId","typeLabel":"string"},"transaction":{"title":"Business Transaction","description":"Canonical immutable business context accepted by Parmana for execution: Authority -> Authorization -> Intent -> Business Transaction -> Policy. Every Business Transaction produces exactly one Decision, one Execution, and one Execution Trust Record.","type":"object","additionalProperties":true,"required":["businessTransactionId","metadata","authority","authorization","intent","policy","signals","status","createdAt"],"properties":{"businessTransactionId":{"type":"string","format":"uuid","description":"Unique Business Transaction identifier. Same value as metadata.businessTransactionId. Must be a valid UUID on both POST /execute and POST /transactions (rejected with a 400 otherwise).","x-default":"8ddd9ae9-eebe-4a5a-8182-4e6187466a74","isRequired":true,"uniqueKey":"transaction.businessTransactionId","typeLabel":"string\u003cuuid>"},"metadata":{"title":"Metadata","description":"Immutable Business Transaction metadata supplied by the calling application. Not evaluated by Policy. businessTransactionId is the only required field; it must match the top-level businessTransactionId. Parmana rejects a mismatch with a 400.","type":"object","additionalProperties":true,"required":["businessTransactionId"],"properties":{"businessTransactionId":{"type":"string","format":"uuid","description":"Unique Business Transaction identifier. Must be a valid UUID.","isRequired":true,"uniqueKey":"transaction.metadata.businessTransactionId","typeLabel":"string\u003cuuid>"},"correlationId":{"type":"string","description":"Optional correlation identifier used by the calling application.","uniqueKey":"transaction.metadata.correlationId","typeLabel":"string"},"tenantId":{"type":"string","description":"Optional tenant identifier for multi-tenant deployments.","uniqueKey":"transaction.metadata.tenantId","typeLabel":"string"},"sourceSystem":{"type":"string","description":"Originating application or service.","uniqueKey":"transaction.metadata.sourceSystem","typeLabel":"string"},"submittedBy":{"type":"string","description":"Identity of the calling application or principal.","uniqueKey":"transaction.metadata.submittedBy","typeLabel":"string"},"submittedAt":{"type":"string","format":"date-time","description":"UTC timestamp when the Business Transaction was submitted.","uniqueKey":"transaction.metadata.submittedAt","typeLabel":"string\u003cdate-time>"}},"examples":[{"businessTransactionId":"eed2a972-1bf5-4166-8472-761f76fbf1b2","correlationId":"6b97caca-1605-4711-bf00-7e5a65434d93","sourceSystem":"vendor-payment-service","submittedBy":"ap-automation","submittedAt":"2026-07-07T16:38:59.285Z"}],"isRequired":true,"uniqueKey":"transaction.metadata","typeLabel":"Metadata · object"},"authority":{"title":"Authority","description":"Entity empowered to authorize execution within a trust domain. Immutable once issued.","type":"object","additionalProperties":true,"required":["authorityId","authorityType","principalId","issuedAt"],"properties":{"authorityId":{"type":"string","description":"Unique Authority identifier.","isRequired":true,"uniqueKey":"transaction.authority.authorityId","typeLabel":"string"},"authorityType":{"type":"string","description":"Type of authority.","enum":["USER","ROLE","SERVICE","ORGANIZATION"],"isRequired":true,"uniqueKey":"transaction.authority.authorityType","typeLabel":"enum\u003cstring>"},"principalId":{"type":"string","description":"Principal identifier.","isRequired":true,"uniqueKey":"transaction.authority.principalId","typeLabel":"string"},"issuedAt":{"type":"string","format":"date-time","description":"UTC timestamp when Authority became effective.","isRequired":true,"uniqueKey":"transaction.authority.issuedAt","typeLabel":"string\u003cdate-time>"},"displayName":{"type":"string","description":"Human-readable display name.","uniqueKey":"transaction.authority.displayName","typeLabel":"string"}},"examples":[{"authorityId":"c0c01c23-04a2-45f2-a821-ef24bfca02d3","authorityType":"SERVICE","principalId":"ap-automation-svc","displayName":"Accounts Payable Automation","issuedAt":"2026-07-07T16:38:59.285Z"}],"isRequired":true,"uniqueKey":"transaction.authority","typeLabel":"Authority · object"},"authorization":{"title":"Authorization","description":"Immutable trust artifact proving that an Authority granted approval for an intended execution.","type":"object","additionalProperties":true,"required":["authorizationId","authorityId","purpose","issuedAt"],"properties":{"authorizationId":{"type":"string","description":"Unique Authorization identifier.","isRequired":true,"uniqueKey":"transaction.authorization.authorizationId","typeLabel":"string"},"authorityId":{"type":"string","description":"Authority issuing this Authorization. Must match authority.authorityId. Parmana rejects a mismatch with a 400.","isRequired":true,"uniqueKey":"transaction.authorization.authorityId","typeLabel":"string"},"purpose":{"type":"string","description":"Business purpose for which the Authorization was granted.","isRequired":true,"uniqueKey":"transaction.authorization.purpose","typeLabel":"string"},"issuedAt":{"type":"string","format":"date-time","description":"UTC timestamp when the Authorization was issued.","isRequired":true,"uniqueKey":"transaction.authorization.issuedAt","typeLabel":"string\u003cdate-time>"},"expiresAt":{"type":"string","format":"date-time","description":"Optional expiration timestamp. After this time the Authorization is no longer valid.","uniqueKey":"transaction.authorization.expiresAt","typeLabel":"string\u003cdate-time>"}},"examples":[{"authorizationId":"6e9d6aa6-6d20-40a8-b05d-383516365cc7","authorityId":"c0c01c23-04a2-45f2-a821-ef24bfca02d3","purpose":"Authorize vendor payment disbursement","issuedAt":"2026-07-07T16:38:59.285Z"}],"isRequired":true,"uniqueKey":"transaction.authorization","typeLabel":"Authorization · object"},"intent":{"title":"Intent","description":"Immutable declaration of the action an Authority intends to be executed under an Authorization.","type":"object","additionalProperties":true,"required":["intentId","authorizationId","action","target","parameters","createdAt"],"properties":{"intentId":{"type":"string","description":"Unique Intent identifier.","isRequired":true,"uniqueKey":"transaction.intent.intentId","typeLabel":"string"},"authorizationId":{"type":"string","description":"Authorization under which this Intent was created. Must match authorization.authorizationId. Parmana rejects a mismatch with a 400.","isRequired":true,"uniqueKey":"transaction.intent.authorizationId","typeLabel":"string"},"action":{"type":"string","description":"Business action being requested. Required and non-empty. Parmana rejects an empty action with a 400.","examples":["VendorPayment","TransferFunds","DeployApplication"],"isRequired":true,"uniqueKey":"transaction.intent.action","typeLabel":"string"},"target":{"type":"string","description":"Target of the intended action.","examples":["vendor/V-100","account/12345"],"isRequired":true,"uniqueKey":"transaction.intent.target","typeLabel":"string"},"parameters":{"type":"object","description":"Immutable business parameters describing the intended action. Not evaluated by policy, see signals.","additionalProperties":true,"isRequired":true,"uniqueKey":"transaction.intent.parameters","typeLabel":"object"},"createdAt":{"type":"string","format":"date-time","description":"UTC timestamp when the Intent was created.","isRequired":true,"uniqueKey":"transaction.intent.createdAt","typeLabel":"string\u003cdate-time>"}},"examples":[{"intentId":"ae5865f6-181b-409a-90ec-1b4b8b8414ba","authorizationId":"6e9d6aa6-6d20-40a8-b05d-383516365cc7","action":"payments:execute","target":"vendor/V-100","parameters":{"amount":4500,"currency":"USD"},"createdAt":"2026-07-07T16:38:59.285Z"}],"isRequired":true,"uniqueKey":"transaction.intent","typeLabel":"Intent · object"},"policy":{"title":"Policy Reference","description":"Exact Policy to evaluate. The client explicitly supplies name, version, and schemaVersion; Parmana does not automatically discover or select a policy. If no matching policy file exists at policies/{name}/{version}/policy.json, the request fails with a 404 (policyId/policyVersion on POST /policies/validate) or a RUNTIME_ERROR (name/version elsewhere, from PolicyNotFoundError not otherwise mapped by the shared error handler in every route, see the error envelope note).","type":"object","additionalProperties":true,"required":["name","version","schemaVersion"],"properties":{"name":{"type":"string","description":"Policy name. Required and non-empty. Parmana rejects an empty name with a 400.","minLength":1,"isRequired":true,"uniqueKey":"transaction.policy.name","typeLabel":"string"},"version":{"type":"string","description":"Business policy version. Required and non-empty. Parmana rejects an empty version with a 400.","minLength":1,"examples":["2.0.0","1.0.0"],"isRequired":true,"uniqueKey":"transaction.policy.version","typeLabel":"string"},"schemaVersion":{"type":"string","description":"Signals schema version expected by the policy.","examples":["1.0.0"],"isRequired":true,"uniqueKey":"transaction.policy.schemaVersion","typeLabel":"string"},"contentHash":{"type":"string","description":"sha256 of the canonicalized policy.json content actually loaded for this decision (G-24). Server-computed, never caller-settable; absent on a request-supplied PolicyReference and on a PolicyReference built before this field existed. Only present on the copy embedded in an Execution Trust Record's transaction.policy.","uniqueKey":"transaction.policy.contentHash","typeLabel":"string"},"governanceAnchor":{"type":"object","description":"Whether the policy content above is traceable to a completed Policy Governance approval, resolved at decision time (G-45). Absent on a PolicyReference built before this field existed. Its presence does not imply POLICY_EXECUTION_VERIFICATION_ENFORCED is on -- only that the lookup ran and recorded what it found, which may honestly be \"no approval record exists for this policy yet.\"","additionalProperties":false,"required":["status"],"properties":{"status":{"type":"string","enum":["VERIFIED","NO_APPROVAL_RECORD","SIGNATURE_INVALID","CONTENT_MISMATCH"],"isRequired":true,"uniqueKey":"transaction.policy.governanceAnchor.status","typeLabel":"enum\u003cstring>"},"approvalRecordId":{"type":"string","description":"The PolicyChangeApprovalRecord this anchor resolved against. Present only when a record was found at all -- absent for NO_APPROVAL_RECORD.","uniqueKey":"transaction.policy.governanceAnchor.approvalRecordId","typeLabel":"string"}},"uniqueKey":"transaction.policy.governanceAnchor","typeLabel":"object"}},"examples":[{"name":"vendor-payment","version":"2.0.0","schemaVersion":"1.0.0"},{"name":"vendor-payment","version":"2.0.0","schemaVersion":"1.0.0","contentHash":"3f2504e04f8964e7ad0dbb0cf7fea1b4e0e1e0a3a1e1a4b6c8e0d5f6a7b8c9d0","governanceAnchor":{"status":"NO_APPROVAL_RECORD"}}],"isRequired":true,"uniqueKey":"transaction.policy","typeLabel":"Policy Reference · object"},"signals":{"title":"Signals","description":"Opaque runtime facts evaluated by the resolved Policy's rules. Parmana assigns no business meaning to these values and does not statically validate them beyond the Policy's own signalsSchema declaration (see policies/{name}/{version}/policy.json). Scaled integers, not floats, for numeric signals such as amounts (house convention across every reference policy).","type":"object","additionalProperties":true,"examples":[{"vendorVerified":true,"invoiceVerified":true,"paymentApproved":true,"sufficientFunds":true,"paymentAmount":4500,"riskScore":10}],"isRequired":true,"uniqueKey":"transaction.signals","typeLabel":"Signals · object"},"status":{"type":"string","description":"Current Business Transaction lifecycle state. Always RECEIVED at creation on both POST /execute and POST /transactions. Parmana sets this field via BusinessTransactionMapper.fromRequest and ignores any status the client sends.","enum":["RECEIVED","POLICY_EVALUATED","APPROVED","REJECTED","OVERRIDDEN","EXECUTING","EXECUTED","FAILED","VERIFIED"],"isRequired":true,"uniqueKey":"transaction.status","typeLabel":"enum\u003cstring>"},"createdAt":{"type":"string","format":"date-time","description":"UTC timestamp when the Business Transaction was accepted by Parmana.","isRequired":true,"uniqueKey":"transaction.createdAt","typeLabel":"string\u003cdate-time>"}},"examples":[{"businessTransactionId":"eed2a972-1bf5-4166-8472-761f76fbf1b2","metadata":{"businessTransactionId":"eed2a972-1bf5-4166-8472-761f76fbf1b2","correlationId":"6b97caca-1605-4711-bf00-7e5a65434d93","sourceSystem":"vendor-payment-service","submittedBy":"ap-automation","submittedAt":"2026-07-07T16:38:59.285Z"},"authority":{"authorityId":"c0c01c23-04a2-45f2-a821-ef24bfca02d3","authorityType":"SERVICE","principalId":"ap-automation-svc","displayName":"Accounts Payable Automation","issuedAt":"2026-07-07T16:38:59.285Z"},"authorization":{"authorizationId":"6e9d6aa6-6d20-40a8-b05d-383516365cc7","authorityId":"c0c01c23-04a2-45f2-a821-ef24bfca02d3","purpose":"Authorize vendor payment disbursement","issuedAt":"2026-07-07T16:38:59.285Z"},"intent":{"intentId":"ae5865f6-181b-409a-90ec-1b4b8b8414ba","authorizationId":"6e9d6aa6-6d20-40a8-b05d-383516365cc7","action":"payments:execute","target":"vendor/V-100","parameters":{"amount":4500,"currency":"USD"},"createdAt":"2026-07-07T16:38:59.285Z"},"policy":{"name":"vendor-payment","version":"2.0.0","schemaVersion":"1.0.0"},"signals":{"vendorVerified":true,"invoiceVerified":true,"paymentApproved":true,"sufficientFunds":true,"paymentAmount":4500,"riskScore":10},"status":"RECEIVED","createdAt":"2026-07-07T16:38:59.325Z"}],"isRequired":true,"uniqueKey":"transaction","typeLabel":"Business Transaction · object"},"overrides":{"type":"array","description":"Override history. Append-only; empty on every transaction in this repository today (no route creates an Override).","items":{"title":"Override","description":"Immutable trust artifact recording an authorized human override for a Business Transaction. No API route in this repository currently creates an Override; this schema exists only because ExecutionTrustRecord.overrides is part of the append-only Trust Record shape; every captured example has an empty overrides array.","type":"object","additionalProperties":true,"required":["overrideId","businessTransactionId","approvedBy","reason","approvedAt"],"properties":{"overrideId":{"type":"string","description":"Unique Override identifier.","isRequired":true,"uniqueKey":"overrides.items.[INDEX].overrideId","typeLabel":"string"},"businessTransactionId":{"type":"string","description":"Business Transaction to which this Override belongs.","isRequired":true,"uniqueKey":"overrides.items.[INDEX].businessTransactionId","typeLabel":"string"},"approvedBy":{"type":"string","description":"Authorized user or system that approved the Override.","isRequired":true,"uniqueKey":"overrides.items.[INDEX].approvedBy","typeLabel":"string"},"reason":{"type":"string","description":"Human-readable reason for the Override.","isRequired":true,"uniqueKey":"overrides.items.[INDEX].reason","typeLabel":"string"},"approvedAt":{"type":"string","format":"date-time","description":"UTC timestamp when the Override was approved.","isRequired":true,"uniqueKey":"overrides.items.[INDEX].approvedAt","typeLabel":"string\u003cdate-time>"},"justification":{"type":"string","description":"Optional business justification.","uniqueKey":"overrides.items.[INDEX].justification","typeLabel":"string"}},"uniqueKey":"overrides.items.[INDEX]","typeLabel":"Override · object"},"isRequired":true,"uniqueKey":"overrides","typeLabel":"Override · object[]"},"executions":{"type":"array","description":"Execution history. Append-only.","items":{"title":"Execution","description":"Immutable trust artifact recording what actually happened while processing a Business Transaction. Every Execution records exactly one Decision produced by deterministic Policy evaluation.","type":"object","additionalProperties":true,"required":["executionId","businessTransactionId","decision","status","mode","startedAt"],"properties":{"executionId":{"type":"string","description":"Unique Execution identifier.","isRequired":true,"uniqueKey":"executions.items.[INDEX].executionId","typeLabel":"string"},"businessTransactionId":{"type":"string","description":"Business Transaction to which this Execution belongs.","isRequired":true,"uniqueKey":"executions.items.[INDEX].businessTransactionId","typeLabel":"string"},"decision":{"title":"Decision","description":"Immutable result of evaluating an Intent against a Policy. Decision does not create authority, grant authorization, or modify Intent; it only records the outcome of deterministic Policy evaluation.","type":"object","additionalProperties":true,"required":["decisionId","intentId","policy","signals","outcome","evaluatedAt"],"properties":{"decisionId":{"type":"string","description":"Unique Decision identifier.","isRequired":true,"uniqueKey":"executions.items.[INDEX].decision.decisionId","typeLabel":"string"},"intentId":{"type":"string","description":"Intent evaluated by this Decision.","isRequired":true,"uniqueKey":"executions.items.[INDEX].decision.intentId","typeLabel":"string"},"policy":{"title":"Policy Reference","description":"Exact Policy to evaluate. The client explicitly supplies name, version, and schemaVersion; Parmana does not automatically discover or select a policy. If no matching policy file exists at policies/{name}/{version}/policy.json, the request fails with a 404 (policyId/policyVersion on POST /policies/validate) or a RUNTIME_ERROR (name/version elsewhere, from PolicyNotFoundError not otherwise mapped by the shared error handler in every route, see the error envelope note).","type":"object","additionalProperties":true,"required":["name","version","schemaVersion"],"properties":{"name":{"type":"string","description":"Policy name. Required and non-empty. Parmana rejects an empty name with a 400.","minLength":1,"isRequired":true,"uniqueKey":"executions.items.[INDEX].decision.policy.name","typeLabel":"string"},"version":{"type":"string","description":"Business policy version. Required and non-empty. Parmana rejects an empty version with a 400.","minLength":1,"examples":["2.0.0","1.0.0"],"isRequired":true,"uniqueKey":"executions.items.[INDEX].decision.policy.version","typeLabel":"string"},"schemaVersion":{"type":"string","description":"Signals schema version expected by the policy.","examples":["1.0.0"],"isRequired":true,"uniqueKey":"executions.items.[INDEX].decision.policy.schemaVersion","typeLabel":"string"},"contentHash":{"type":"string","description":"sha256 of the canonicalized policy.json content actually loaded for this decision (G-24). Server-computed, never caller-settable; absent on a request-supplied PolicyReference and on a PolicyReference built before this field existed. Only present on the copy embedded in an Execution Trust Record's transaction.policy.","uniqueKey":"executions.items.[INDEX].decision.policy.contentHash","typeLabel":"string"},"governanceAnchor":{"type":"object","description":"Whether the policy content above is traceable to a completed Policy Governance approval, resolved at decision time (G-45). Absent on a PolicyReference built before this field existed. Its presence does not imply POLICY_EXECUTION_VERIFICATION_ENFORCED is on -- only that the lookup ran and recorded what it found, which may honestly be \"no approval record exists for this policy yet.\"","additionalProperties":false,"required":["status"],"properties":{"status":{"type":"string","enum":["VERIFIED","NO_APPROVAL_RECORD","SIGNATURE_INVALID","CONTENT_MISMATCH"],"isRequired":true,"uniqueKey":"executions.items.[INDEX].decision.policy.governanceAnchor.status","typeLabel":"enum\u003cstring>"},"approvalRecordId":{"type":"string","description":"The PolicyChangeApprovalRecord this anchor resolved against. Present only when a record was found at all -- absent for NO_APPROVAL_RECORD.","uniqueKey":"executions.items.[INDEX].decision.policy.governanceAnchor.approvalRecordId","typeLabel":"string"}},"uniqueKey":"executions.items.[INDEX].decision.policy.governanceAnchor","typeLabel":"object"}},"examples":[{"name":"vendor-payment","version":"2.0.0","schemaVersion":"1.0.0"},{"name":"vendor-payment","version":"2.0.0","schemaVersion":"1.0.0","contentHash":"3f2504e04f8964e7ad0dbb0cf7fea1b4e0e1e0a3a1e1a4b6c8e0d5f6a7b8c9d0","governanceAnchor":{"status":"NO_APPROVAL_RECORD"}}],"isRequired":true,"uniqueKey":"executions.items.[INDEX].decision.policy","typeLabel":"Policy Reference · object"},"signals":{"title":"Signals","description":"Opaque runtime facts evaluated by the resolved Policy's rules. Parmana assigns no business meaning to these values and does not statically validate them beyond the Policy's own signalsSchema declaration (see policies/{name}/{version}/policy.json). Scaled integers, not floats, for numeric signals such as amounts (house convention across every reference policy).","type":"object","additionalProperties":true,"examples":[{"vendorVerified":true,"invoiceVerified":true,"paymentApproved":true,"sufficientFunds":true,"paymentAmount":4500,"riskScore":10}],"isRequired":true,"uniqueKey":"executions.items.[INDEX].decision.signals","typeLabel":"Signals · object"},"outcome":{"type":"string","description":"Policy evaluation outcome. There are no intermediate states: a Decision is always exactly one of these two values.","enum":["APPROVED","REJECTED"],"isRequired":true,"uniqueKey":"executions.items.[INDEX].decision.outcome","typeLabel":"enum\u003cstring>"},"evaluatedAt":{"type":"string","format":"date-time","description":"UTC timestamp when policy evaluation completed.","isRequired":true,"uniqueKey":"executions.items.[INDEX].decision.evaluatedAt","typeLabel":"string\u003cdate-time>"},"reason":{"type":"string","description":"Human-readable explanation, taken from the matching Policy rule's outcome.reason.","uniqueKey":"executions.items.[INDEX].decision.reason","typeLabel":"string"},"matchedRuleId":{"type":"string","description":"Identifier of the Policy rule that matched, or \"none\" when no rule matched. Absent on a Decision built before this field existed (docs/VERIFICATION-GAPS.md G-44).","uniqueKey":"executions.items.[INDEX].decision.matchedRuleId","typeLabel":"string"},"evaluatedRules":{"type":"integer","description":"Number of rules evaluated before reaching a match (or exhausting the rule list). Same optionality as matchedRuleId.","uniqueKey":"executions.items.[INDEX].decision.evaluatedRules","typeLabel":"integer"},"matchedPath":{"type":"array","items":{"type":"string","uniqueKey":"executions.items.[INDEX].decision.matchedPath.items.[INDEX]","typeLabel":"string"},"description":"Ordered rule-id trace evaluation walked to reach matchedRuleId. Same optionality as matchedRuleId.","uniqueKey":"executions.items.[INDEX].decision.matchedPath","typeLabel":"string[]"},"assessment":{"type":"object","description":"Authority, business validation and, for a refusal, execution, each as its own status (RFC-0023). AUTHORIZED means the action type may be decided, not that this action is valid or was executed. Absent on decisions made before it existed.","required":["authority","businessValidation"],"properties":{"authority":{"type":"object","required":["status","reason"],"properties":{"status":{"type":"string","enum":["AUTHORIZED","NOT_AUTHORIZED","AUTHORITY_UNCLEAR","AUTHORITY_EXPIRED"],"isRequired":true,"uniqueKey":"executions.items.[INDEX].decision.assessment.authority.status","typeLabel":"enum\u003cstring>"},"reason":{"type":"string","isRequired":true,"uniqueKey":"executions.items.[INDEX].decision.assessment.authority.reason","typeLabel":"string"}},"isRequired":true,"uniqueKey":"executions.items.[INDEX].decision.assessment.authority","typeLabel":"object"},"businessValidation":{"type":"object","required":["status","reason"],"properties":{"status":{"type":"string","enum":["VALID","INVALID","MISSING_DATA","CONFLICTING_DATA","SOURCE_UNAVAILABLE","VALIDATION_EXPIRED","NOT_EVALUATED"],"isRequired":true,"uniqueKey":"executions.items.[INDEX].decision.assessment.businessValidation.status","typeLabel":"enum\u003cstring>"},"reason":{"type":"string","isRequired":true,"uniqueKey":"executions.items.[INDEX].decision.assessment.businessValidation.reason","typeLabel":"string"},"signals":{"type":"array","description":"Trusted Signals: facts established by their sources for this exact business object and action.","items":{"type":"object","uniqueKey":"executions.items.[INDEX].decision.assessment.businessValidation.signals.items.[INDEX]","typeLabel":"object"},"uniqueKey":"executions.items.[INDEX].decision.assessment.businessValidation.signals","typeLabel":"object[]"},"failures":{"type":"array","description":"Why business validation did not pass, one entry per signal that failed.","items":{"type":"object","required":["signalKey","status","reason"],"properties":{"signalKey":{"type":"string","isRequired":true,"uniqueKey":"executions.items.[INDEX].decision.assessment.businessValidation.failures.items.[INDEX].signalKey","typeLabel":"string"},"status":{"type":"string","enum":["VALID","INVALID","MISSING_DATA","CONFLICTING_DATA","SOURCE_UNAVAILABLE","VALIDATION_EXPIRED","NOT_EVALUATED"],"isRequired":true,"uniqueKey":"executions.items.[INDEX].decision.assessment.businessValidation.failures.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"reason":{"type":"string","isRequired":true,"uniqueKey":"executions.items.[INDEX].decision.assessment.businessValidation.failures.items.[INDEX].reason","typeLabel":"string"}},"uniqueKey":"executions.items.[INDEX].decision.assessment.businessValidation.failures.items.[INDEX]","typeLabel":"object"},"uniqueKey":"executions.items.[INDEX].decision.assessment.businessValidation.failures","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"executions.items.[INDEX].decision.assessment.businessValidation","typeLabel":"object"},"execution":{"type":"object","required":["status","reason"],"properties":{"status":{"type":"string","enum":["EXECUTED","NOT_EXECUTED","EXECUTION_FAILED","EXECUTION_UNKNOWN"],"isRequired":true,"uniqueKey":"executions.items.[INDEX].decision.assessment.execution.status","typeLabel":"enum\u003cstring>"},"reason":{"type":"string","isRequired":true,"uniqueKey":"executions.items.[INDEX].decision.assessment.execution.reason","typeLabel":"string"}},"uniqueKey":"executions.items.[INDEX].decision.assessment.execution","typeLabel":"object"}},"uniqueKey":"executions.items.[INDEX].decision.assessment","typeLabel":"object"}},"examples":[{"decisionId":"9d69dc0b-333a-4be3-b09f-358fece806f3","intentId":"ae5865f6-181b-409a-90ec-1b4b8b8414ba","policy":{"name":"vendor-payment","version":"2.0.0","schemaVersion":"1.0.0"},"signals":{"vendorVerified":true,"invoiceVerified":true,"paymentApproved":true,"sufficientFunds":true,"paymentAmount":4500,"riskScore":10},"outcome":"APPROVED","reason":"Vendor payment authorized. Vendor verification, invoice verification, payment approval, funding, and risk assessment requirements were satisfied.","matchedRuleId":"approve-payment","evaluatedRules":1,"matchedPath":["approve-payment"],"evaluatedAt":"2026-07-07T16:38:59.326Z"}],"isRequired":true,"uniqueKey":"executions.items.[INDEX].decision","typeLabel":"Decision · object"},"status":{"type":"string","description":"Execution lifecycle state.","enum":["PROCESSING","COMPLETED","FAILED"],"isRequired":true,"uniqueKey":"executions.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"mode":{"type":"string","description":"Execution mode.","enum":["SYNC","ASYNC"],"isRequired":true,"uniqueKey":"executions.items.[INDEX].mode","typeLabel":"enum\u003cstring>"},"startedAt":{"type":"string","format":"date-time","description":"UTC timestamp when execution started.","isRequired":true,"uniqueKey":"executions.items.[INDEX].startedAt","typeLabel":"string\u003cdate-time>"},"completedAt":{"type":"string","format":"date-time","description":"UTC timestamp when execution completed. Present only for terminal executions.","uniqueKey":"executions.items.[INDEX].completedAt","typeLabel":"string\u003cdate-time>"},"evidence":{"type":"object","description":"Immutable execution evidence: businessTransactionId, action, target, parameters, success, executedAt, and an optional attributes bag for execution-system-specific evidence (for example Connector SDK evidence, when a Connector executed this Execution).","additionalProperties":true,"uniqueKey":"executions.items.[INDEX].evidence","typeLabel":"object"},"metadata":{"type":"object","description":"Execution-specific metadata. Currently populated with authorizationId when the Execution is APPROVED.","additionalProperties":true,"uniqueKey":"executions.items.[INDEX].metadata","typeLabel":"object"}},"examples":[{"executionId":"90746492-7721-4228-b244-67bf8a45ca68","businessTransactionId":"44b34a79-e0f2-49d7-a48e-e52fff88182e","decision":{"decisionId":"8ec880cb-677a-4889-96f1-5a18a4edc1b5","intentId":"1e77d0b3-2e57-4e31-b780-03abc92f1b69","policy":{"name":"vendor-payment","version":"2.0.0","schemaVersion":"1.0.0"},"signals":{"vendorVerified":true,"invoiceVerified":true,"paymentApproved":true,"sufficientFunds":true,"paymentAmount":5000,"riskScore":12},"outcome":"APPROVED","reason":"Vendor payment authorized. Vendor verification, invoice verification, payment approval, funding, and risk assessment requirements were satisfied.","evaluatedAt":"2026-07-13T17:36:00.967Z"},"status":"COMPLETED","mode":"SYNC","startedAt":"2026-07-13T17:36:00.968Z","metadata":{"authorizationId":"dbc09266-2078-4d4e-93d0-f355eb7eebcc"},"evidence":{"businessTransactionId":"44b34a79-e0f2-49d7-a48e-e52fff88182e","action":"payments:execute","target":"vendor/V-500","parameters":{"amount":5000,"currency":"USD"},"success":true,"executedAt":"2026-07-13T17:36:00.970Z","attributes":{"connector":{"connectorId":"vendor-payment","connectorVersion":"1.0.0","capability":"payments:execute","sanitizedEndpoint":"vendor/V-500","credentialProviderId":"environment","requestSummary":{"businessTransactionId":"44b34a79-e0f2-49d7-a48e-e52fff88182e","action":"payments:execute","target":"vendor/V-500","parameters":{"amount":5000,"currency":"USD"}},"responseSummary":{"success":true,"metadata":{}},"startedAt":"2026-07-13T17:36:00.970Z","completedAt":"2026-07-13T17:36:00.970Z","connectorEvidenceHash":"c97411026a82b608d9b0f8b137a64e26d8af24bdda09310b639e527e08a9aada"}}},"completedAt":"2026-07-13T17:36:00.970Z"}],"uniqueKey":"executions.items.[INDEX]","typeLabel":"Execution · object"},"isRequired":true,"uniqueKey":"executions","typeLabel":"Execution · object[]"},"verifications":{"type":"array","description":"Verification history. Append-only.","items":{"title":"Verification","description":"Immutable result of verifying an entire Execution Trust Record: recomputed hash matches the stored hash, signature verifies, and every APPROVED Execution carries a non-empty authorizationId. All checks always run and are reported together in message; a failure in one does not skip the others.","type":"object","additionalProperties":true,"required":["verificationId","businessTransactionId","status","verifiedAt","trustRecordHash"],"properties":{"verificationId":{"type":"string","description":"Unique Verification identifier.","isRequired":true,"uniqueKey":"verifications.items.[INDEX].verificationId","typeLabel":"string"},"businessTransactionId":{"type":"string","description":"Business Transaction being verified.","isRequired":true,"uniqueKey":"verifications.items.[INDEX].businessTransactionId","typeLabel":"string"},"status":{"type":"string","description":"Verification result.","enum":["VERIFIED","FAILED"],"isRequired":true,"uniqueKey":"verifications.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"verifiedAt":{"type":"string","format":"date-time","description":"UTC timestamp when verification completed.","isRequired":true,"uniqueKey":"verifications.items.[INDEX].verifiedAt","typeLabel":"string\u003cdate-time>"},"trustRecordHash":{"type":"string","description":"Hash of the verified Execution Trust Record, proving exactly which record was verified.","isRequired":true,"uniqueKey":"verifications.items.[INDEX].trustRecordHash","typeLabel":"string"},"message":{"type":"string","description":"Human-readable verification summary: either the success message, or every failed check's message joined with \"; \".","uniqueKey":"verifications.items.[INDEX].message","typeLabel":"string"}},"examples":[{"verificationId":"0ad69d3f-7fd0-4507-ab38-e386146757ae","businessTransactionId":"eed2a972-1bf5-4166-8472-761f76fbf1b2","status":"VERIFIED","message":"Execution Trust Record verified successfully.","verifiedAt":"2026-07-07T16:38:59.344Z","trustRecordHash":"989aef83d595202ec02bb338ac00461abec0541098ea065f965b5cde342d3b25"}],"uniqueKey":"verifications.items.[INDEX]","typeLabel":"Verification · object"},"isRequired":true,"uniqueKey":"verifications","typeLabel":"Verification · object[]"},"receipts":{"type":"array","description":"Receipt history. Append-only.","items":{"title":"Receipt","description":"Cryptographically signed, immutable Execution Trust Receipt proving the outcome of an Execution Trust Record at the time it was issued.","type":"object","additionalProperties":true,"required":["receiptId","businessTransactionId","trustRecordHash","receiptHash","signature","algorithm","issuedAt"],"properties":{"receiptId":{"type":"string","description":"Unique Receipt identifier.","isRequired":true,"uniqueKey":"receipts.items.[INDEX].receiptId","typeLabel":"string"},"businessTransactionId":{"type":"string","description":"Business Transaction represented by this Receipt.","isRequired":true,"uniqueKey":"receipts.items.[INDEX].businessTransactionId","typeLabel":"string"},"trustRecordHash":{"type":"string","description":"Canonical hash of the Execution Trust Record, used for independent verification.","isRequired":true,"uniqueKey":"receipts.items.[INDEX].trustRecordHash","typeLabel":"string"},"receiptHash":{"type":"string","description":"Hash of this Receipt.","isRequired":true,"uniqueKey":"receipts.items.[INDEX].receiptHash","typeLabel":"string"},"signature":{"type":"string","description":"Base64-encoded digital signature over the Receipt.","isRequired":true,"uniqueKey":"receipts.items.[INDEX].signature","typeLabel":"string"},"algorithm":{"type":"string","description":"Signing algorithm.","examples":["ed25519"],"isRequired":true,"uniqueKey":"receipts.items.[INDEX].algorithm","typeLabel":"string"},"issuedAt":{"type":"string","format":"date-time","description":"UTC timestamp when the Receipt was generated.","isRequired":true,"uniqueKey":"receipts.items.[INDEX].issuedAt","typeLabel":"string\u003cdate-time>"},"executionId":{"type":"string","description":"Execution represented by this Receipt. Absent when the Receipt represents the latest transaction state; every Receipt currently produced by ReceiptService omits this field.","uniqueKey":"receipts.items.[INDEX].executionId","typeLabel":"string"}},"examples":[{"receiptId":"312ce65d-8ec4-4978-ac50-aeb0062ad7be","businessTransactionId":"eed2a972-1bf5-4166-8472-761f76fbf1b2","trustRecordHash":"989aef83d595202ec02bb338ac00461abec0541098ea065f965b5cde342d3b25","receiptHash":"2cc963456dd71e0e85f2d2fe743d4475072997287356ac1b9c6a9314b189ea8b","issuedAt":"2026-07-07T16:38:59.350Z","algorithm":"ed25519","signature":"2Z49nDSXubFNTpy0ovPwguGW3IpgvdJuiusCAadMNPS4cqmjRUthZmrfN3kZUO5m7Ku5v/poeLxtjsFKvXe9DA=="}],"uniqueKey":"receipts.items.[INDEX]","typeLabel":"Receipt · object"},"isRequired":true,"uniqueKey":"receipts","typeLabel":"Receipt · object[]"},"trustRecordHash":{"type":"string","description":"Canonical hash of the Execution Trust Record, computed over its canonical serialized form.","isRequired":true,"uniqueKey":"trustRecordHash","typeLabel":"string"},"signature":{"type":"object","description":"Cryptographic signature over the canonical Execution Trust Record, proving it was produced by Parmana and has not been modified since signing.","additionalProperties":true,"required":["algorithm","keyId","value","signedAt"],"properties":{"algorithm":{"type":"string","examples":["ed25519"],"isRequired":true,"uniqueKey":"signature.algorithm","typeLabel":"string"},"keyId":{"type":"string","description":"Identifier of the signing key.","isRequired":true,"uniqueKey":"signature.keyId","typeLabel":"string"},"value":{"type":"string","description":"Base64-encoded signature value.","isRequired":true,"uniqueKey":"signature.value","typeLabel":"string"},"signedAt":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"signature.signedAt","typeLabel":"string\u003cdate-time>"}},"isRequired":true,"uniqueKey":"signature","typeLabel":"object"},"createdAt":{"type":"string","format":"date-time","description":"UTC timestamp when the Execution Trust Record was first created.","isRequired":true,"uniqueKey":"createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","description":"UTC timestamp when the Execution Trust Record was last extended with a new immutable artifact.","isRequired":true,"uniqueKey":"updatedAt","typeLabel":"string\u003cdate-time>"},"evidenceAnchor":{"type":"object","description":"Explicit binding linking policy-governance provenance (transaction.policy.contentHash/governanceAnchor) to what a connector actually did (executions[].evidence.attributes.connector). Not a new cryptographic guarantee on its own -- both were already covered by trustRecordHash/signature -- but a single, explicitly-named pointer an auditor can check without reconstructing the binding themselves. Absent on a Trust Record built before this field existed.","additionalProperties":false,"required":["anchorHash"],"properties":{"anchorHash":{"type":"string","description":"sha256 of the canonicalized {policyContentHash, governanceAnchorStatus, connectorEvidenceHash} above.","isRequired":true,"uniqueKey":"evidenceAnchor.anchorHash","typeLabel":"string"},"policyContentHash":{"type":"string","description":"Copied from transaction.policy.contentHash (G-24). Present on every real Execution Trust Record.","uniqueKey":"evidenceAnchor.policyContentHash","typeLabel":"string"},"governanceAnchorStatus":{"type":"string","enum":["VERIFIED","NO_APPROVAL_RECORD","SIGNATURE_INVALID","CONTENT_MISMATCH"],"description":"Copied from transaction.policy.governanceAnchor.status (G-45). Absent only when no governance anchor resolver was configured for this deployment.","uniqueKey":"evidenceAnchor.governanceAnchorStatus","typeLabel":"enum\u003cstring>"},"connectorEvidenceHash":{"type":"string","description":"Copied from executions[0].evidence.attributes.connector.connectorEvidenceHash, when a real connector executed.","uniqueKey":"evidenceAnchor.connectorEvidenceHash","typeLabel":"string"}},"uniqueKey":"evidenceAnchor","typeLabel":"object"}},"examples":[{"trustRecordId":"759e916e-66d2-48c3-8869-55d557acf155","businessTransactionId":"eed2a972-1bf5-4166-8472-761f76fbf1b2","transaction":{"businessTransactionId":"eed2a972-1bf5-4166-8472-761f76fbf1b2","metadata":{"businessTransactionId":"eed2a972-1bf5-4166-8472-761f76fbf1b2","correlationId":"6b97caca-1605-4711-bf00-7e5a65434d93","sourceSystem":"vendor-payment-service","submittedBy":"ap-automation","submittedAt":"2026-07-07T16:38:59.285Z"},"authority":{"authorityId":"c0c01c23-04a2-45f2-a821-ef24bfca02d3","authorityType":"SERVICE","principalId":"ap-automation-svc","displayName":"Accounts Payable Automation","issuedAt":"2026-07-07T16:38:59.285Z"},"authorization":{"authorizationId":"6e9d6aa6-6d20-40a8-b05d-383516365cc7","authorityId":"c0c01c23-04a2-45f2-a821-ef24bfca02d3","purpose":"Authorize vendor payment disbursement","issuedAt":"2026-07-07T16:38:59.285Z"},"intent":{"intentId":"ae5865f6-181b-409a-90ec-1b4b8b8414ba","authorizationId":"6e9d6aa6-6d20-40a8-b05d-383516365cc7","action":"payments:execute","target":"vendor/V-100","parameters":{"amount":4500,"currency":"USD"},"createdAt":"2026-07-07T16:38:59.285Z"},"policy":{"name":"vendor-payment","version":"2.0.0","schemaVersion":"1.0.0"},"signals":{"vendorVerified":true,"invoiceVerified":true,"paymentApproved":true,"sufficientFunds":true,"paymentAmount":4500,"riskScore":10},"status":"RECEIVED","createdAt":"2026-07-07T16:38:59.325Z"},"overrides":[],"executions":[{"executionId":"2be38c15-f93c-4621-9a1c-7570c130dea0","businessTransactionId":"eed2a972-1bf5-4166-8472-761f76fbf1b2","decision":{"decisionId":"9d69dc0b-333a-4be3-b09f-358fece806f3","intentId":"ae5865f6-181b-409a-90ec-1b4b8b8414ba","policy":{"name":"vendor-payment","version":"2.0.0","schemaVersion":"1.0.0"},"signals":{"vendorVerified":true,"invoiceVerified":true,"paymentApproved":true,"sufficientFunds":true,"paymentAmount":4500,"riskScore":10},"outcome":"APPROVED","reason":"Vendor payment authorized. Vendor verification, invoice verification, payment approval, funding, and risk assessment requirements were satisfied.","evaluatedAt":"2026-07-07T16:38:59.326Z"},"status":"COMPLETED","mode":"SYNC","startedAt":"2026-07-07T16:38:59.328Z","metadata":{"authorizationId":"1dc2d137-fde2-4d9c-b298-79e9f8a0d03e"},"evidence":{"businessTransactionId":"eed2a972-1bf5-4166-8472-761f76fbf1b2","action":"payments:execute","target":"vendor/V-100","parameters":{"amount":4500,"currency":"USD"},"success":true,"executedAt":"2026-07-07T16:38:59.328Z","attributes":{"connector":{"connectorId":"vendor-payment","connectorVersion":"1.0.0","capability":"payments:execute","sanitizedEndpoint":"vendor/V-100","credentialProviderId":"environment","requestSummary":{"businessTransactionId":"eed2a972-1bf5-4166-8472-761f76fbf1b2","action":"payments:execute","target":"vendor/V-100","parameters":{"amount":4500,"currency":"USD"}},"responseSummary":{"success":true,"metadata":{}},"startedAt":"2026-07-07T16:38:59.328Z","completedAt":"2026-07-07T16:38:59.328Z","connectorEvidenceHash":"7bcacb3e399a713e44a4f48aa2783de8060ae28591e4fc1256b504bd32cd7aea"}}},"completedAt":"2026-07-07T16:38:59.329Z"}],"verifications":[{"verificationId":"0b96c8b4-9cd8-4162-81fc-086575cf0924","businessTransactionId":"eed2a972-1bf5-4166-8472-761f76fbf1b2","status":"VERIFIED","message":"Execution Trust Record verified successfully.","verifiedAt":"2026-07-07T16:38:59.331Z","trustRecordHash":"989aef83d595202ec02bb338ac00461abec0541098ea065f965b5cde342d3b25"}],"receipts":[{"receiptId":"3073a598-f927-4caf-8bb8-4f083f62b7e9","businessTransactionId":"eed2a972-1bf5-4166-8472-761f76fbf1b2","trustRecordHash":"989aef83d595202ec02bb338ac00461abec0541098ea065f965b5cde342d3b25","receiptHash":"8a5a0e9255dafef5ec588f0834e3c5b81dc7feb98a59f8bfa7083438fa58e231","issuedAt":"2026-07-07T16:38:59.331Z","algorithm":"ed25519","signature":"vzpykBuJhoy/2BdiR1x02KYZqMtKJu39olRJdzM5veSo9nYmoNSYQnt9HELlb2jlGWf07jPhP8ZXlrQnN4KQBA=="}],"createdAt":"2026-07-07T16:38:59.329Z","updatedAt":"2026-07-07T16:38:59.329Z","trustRecordHash":"989aef83d595202ec02bb338ac00461abec0541098ea065f965b5cde342d3b25","signature":{"algorithm":"ed25519","keyId":"default","value":"l41lr6nCUbrzEfoil/3+gkXd4zEQ9TR1qFaSwLuE70L/9U6cVz3VXdM1lPsDfELKh6RO4qcDrFWF/S3k4CAxAQ==","signedAt":"2026-07-07T16:38:59.330Z"}}],"uniqueKey":"","typeLabel":"Execution Trust Record Response · object"},"examples":{"test-fixture-flow":{"title":"test-fixture-flow","value":{"trustRecordId":"2770d2b5-9464-4c74-87aa-7a23ae4be7cd","businessTransactionId":"4cfe5661-42a6-4db0-8372-2d24dca235f2","transaction":{"businessTransactionId":"4cfe5661-42a6-4db0-8372-2d24dca235f2","metadata":{"businessTransactionId":"4cfe5661-42a6-4db0-8372-2d24dca235f2","sourceSystem":"docs-api-reference","submittedBy":"docs-example"},"authority":{"authorityId":"be8afa44-ee3c-44c2-a4a2-ba119e128948","authorityType":"SERVICE","principalId":"docs-example-caller","issuedAt":"2026-09-14T17:18:27.000Z"},"authorization":{"authorizationId":"81a1c120-d296-458b-bbe5-824a8617f23a","authorityId":"be8afa44-ee3c-44c2-a4a2-ba119e128948","purpose":"API reference example: transactions endpoint","issuedAt":"2026-09-14T17:18:27.000Z"},"intent":{"intentId":"ceb89d68-13ac-4ff9-b7b9-dd0e15637baa","authorizationId":"81a1c120-d296-458b-bbe5-824a8617f23a","action":"test:fixture-execute","target":"vendor://payments","parameters":{"amount":250,"currency":"USD"},"createdAt":"2026-09-14T17:18:27.000Z"},"policy":{"name":"vendor-payment","version":"2.0.0","schemaVersion":"1.0.0","contentHash":"27b396d84540aa792d88566da38537b671195c0c0049bac3aca41d4544a12b1a"},"signals":{"vendorVerified":true,"invoiceVerified":true,"paymentApproved":true,"sufficientFunds":true,"paymentAmount":250,"riskScore":5,"vendorId":"vendor://payments"},"status":"RECEIVED","createdAt":"2026-09-14T17:18:27.958Z"},"authorization":{"payload":{"version":1,"authorizationId":"232afef4-b320-4596-906c-b6adf6ef83ff","nonce":"b138d6ca-c509-4b3d-a2d1-09abd113d5a0","decisionId":"ac059ca3-9c2c-4e32-b4ad-bb8787444b2c","businessTransactionId":"4cfe5661-42a6-4db0-8372-2d24dca235f2","policyName":"vendor-payment","policyVersion":"2.0.0","policyContentHash":"27b396d84540aa792d88566da38537b671195c0c0049bac3aca41d4544a12b1a","signalsHash":"7518e06daf697fbdbacfb7f0f88d42cbe24aefae6e82b3801e60efa22c62f12c","submittedBy":"docs-example","authorizedAt":"2026-09-14T17:18:27.960Z","expiresAt":"2026-09-14T17:20:27.960Z","businessTransactionHash":"aa491841d05ce70f7f7157fbb8ba6fee0c4f886ea5fc16fa22de21e1bcaf25da"},"signature":"01OnI4GwrHrDeVneUHn01CnLnkwRN+pTHYQmHfEFJUIjIKIHmqe28QWe6KEcEYkzAhtJIS8ZmpvNVvW2pn5IBA==","keyId":"default","algorithm":"ed25519"},"overrides":[],"executions":[{"executionId":"d5a2dfb7-c642-43bc-a8ad-132df83a4a5a","businessTransactionId":"4cfe5661-42a6-4db0-8372-2d24dca235f2","decision":{"decisionId":"ac059ca3-9c2c-4e32-b4ad-bb8787444b2c","intentId":"ceb89d68-13ac-4ff9-b7b9-dd0e15637baa","policy":{"name":"vendor-payment","version":"2.0.0","schemaVersion":"1.0.0"},"signals":{"vendorVerified":true,"invoiceVerified":true,"paymentApproved":true,"sufficientFunds":true,"paymentAmount":250,"riskScore":5,"vendorId":"vendor://payments"},"outcome":"APPROVED","reason":"Vendor payment authorized. Vendor verification, invoice verification, payment approval, funding, and risk assessment requirements were satisfied.","evaluatedAt":"2026-09-14T17:18:27.960Z"},"status":"COMPLETED","mode":"SYNC","startedAt":"2026-09-14T17:18:27.963Z","metadata":{"authorizationId":"232afef4-b320-4596-906c-b6adf6ef83ff"},"previousChainHash":null,"chainHash":"bb16b8a121a770e956bd2b81ca23e9f73fc69ce5213d6711b4f3aa29aed37d5f","chainSignature":{"algorithm":"ed25519","keyId":"default","value":"wgxGxFN6lFvet10b3M01GliPAnazoYFFHh498w6vc/Stm1xTpe9af/Ee+9SsngEylzqs4E7EAbfG8+ehgyOHCw==","signedAt":"2026-09-14T17:18:27.975Z"},"evidence":{"businessTransactionId":"4cfe5661-42a6-4db0-8372-2d24dca235f2","action":"test:fixture-execute","target":"vendor://payments","parameters":{"amount":250,"currency":"USD"},"success":true,"executedAt":"2026-09-14T17:18:27.971Z","attributes":{"connector":{"connectorId":"test-fixture","connectorVersion":"1.0.0","capability":"test:fixture-execute","sanitizedEndpoint":"vendor://payments","credentialProviderId":"static","requestSummary":{"businessTransactionId":"4cfe5661-42a6-4db0-8372-2d24dca235f2","action":"test:fixture-execute","target":"vendor://payments","parameters":{"amount":250,"currency":"USD"}},"responseSummary":{"success":true,"metadata":{}},"startedAt":"2026-09-14T17:18:27.971Z","completedAt":"2026-09-14T17:18:27.971Z","connectorEvidenceHash":"af0c1560344e9376c903ad77ae5574ae5cb7f81e968d286b9e33e66b790059ea"}}},"completedAt":"2026-09-14T17:18:27.973Z"}],"verifications":[{"verificationId":"db0a48c7-893f-4cec-982f-f95e23608e5b","businessTransactionId":"4cfe5661-42a6-4db0-8372-2d24dca235f2","status":"VERIFIED","message":"Execution Trust Record verified successfully.","verifiedAt":"2026-09-14T17:18:27.981Z","trustRecordHash":"05fe72e8943fca8f451f631cd4f3ae61f8b62e0e8e92410d13166c67605d7892"}],"receipts":[{"receiptId":"0601d04d-3d3c-4b0c-9b37-e811b7eb8375","businessTransactionId":"4cfe5661-42a6-4db0-8372-2d24dca235f2","trustRecordHash":"05fe72e8943fca8f451f631cd4f3ae61f8b62e0e8e92410d13166c67605d7892","receiptHash":"f95295cb63aa045e17835fc06b367cb5305878e8ce13b268c9b72371c0da05f6","issuedAt":"2026-09-14T17:18:27.981Z","algorithm":"ed25519","signature":"PYhfZtyR+ON2X94ik82TSlh+IgBJT3PPz9FieAwgwepHR7K+LDNOHtVwpCbOakw2z3yeF+S/a8CGRBwGLUSxCA=="}],"createdAt":"2026-09-14T17:18:27.975Z","updatedAt":"2026-09-14T17:18:27.975Z","trustRecordHash":"05fe72e8943fca8f451f631cd4f3ae61f8b62e0e8e92410d13166c67605d7892","signature":{"algorithm":"ed25519","keyId":"default","value":"7q+9s+1mzxTdnwL5ogZnVHdNP4RqrBfJICu+tYdtQw+JObBcLVi1BESqin8KpJ+uZrmo+AcEgigmyKmCnc4ADQ==","signedAt":"2026-09-14T17:18:27.977Z"}}},"vendor-payment-flow-transactions-endpoint":{"title":"vendor-payment-flow-transactions-endpoint","value":{"trustRecordId":"d2111a67-86bb-4d5f-952c-a5a44d5e5144","businessTransactionId":"a0477e25-db8d-447d-9dbe-633e4705275f","transaction":{"businessTransactionId":"a0477e25-db8d-447d-9dbe-633e4705275f","metadata":{"businessTransactionId":"a0477e25-db8d-447d-9dbe-633e4705275f","correlationId":"a6ea6a80-d032-4749-9872-1843efaac04c","sourceSystem":"vendor-payment-service","submittedBy":"ap-automation","submittedAt":"2026-07-13T17:36:20.390Z"},"authority":{"authorityId":"a9c3938d-de22-454a-a75c-1666f3c1693d","authorityType":"SERVICE","principalId":"ap-automation-svc","displayName":"Accounts Payable Automation","issuedAt":"2026-07-13T17:36:20.390Z"},"authorization":{"authorizationId":"b45f2e89-6c0b-4534-8047-9a75734ccecf","authorityId":"a9c3938d-de22-454a-a75c-1666f3c1693d","purpose":"Authorize vendor payment disbursement","issuedAt":"2026-07-13T17:36:20.390Z"},"intent":{"intentId":"578850fb-277a-4bb7-99dd-6761961e10e1","authorizationId":"b45f2e89-6c0b-4534-8047-9a75734ccecf","action":"payments:execute","target":"vendor/V-700","parameters":{"amount":3300,"currency":"USD"},"createdAt":"2026-07-13T17:36:20.390Z"},"policy":{"name":"vendor-payment","version":"2.0.0","schemaVersion":"1.0.0"},"signals":{"vendorVerified":true,"invoiceVerified":true,"paymentApproved":true,"sufficientFunds":true,"paymentAmount":3300,"riskScore":9},"status":"RECEIVED","createdAt":"2026-07-13T17:36:20.483Z"},"overrides":[],"executions":[{"executionId":"028cdd7b-d04a-400f-ad1a-08eedc69e31e","businessTransactionId":"a0477e25-db8d-447d-9dbe-633e4705275f","decision":{"decisionId":"d70f66bd-2674-4c07-8c2f-f9a19f8f5fd2","intentId":"578850fb-277a-4bb7-99dd-6761961e10e1","policy":{"name":"vendor-payment","version":"2.0.0","schemaVersion":"1.0.0"},"signals":{"vendorVerified":true,"invoiceVerified":true,"paymentApproved":true,"sufficientFunds":true,"paymentAmount":3300,"riskScore":9},"outcome":"APPROVED","reason":"Vendor payment authorized. Vendor verification, invoice verification, payment approval, funding, and risk assessment requirements were satisfied.","evaluatedAt":"2026-07-13T17:36:20.484Z"},"status":"COMPLETED","mode":"SYNC","startedAt":"2026-07-13T17:36:20.485Z","metadata":{"authorizationId":"3a71d9ab-5f36-42b0-ba5b-214179fde2d9"},"evidence":{"businessTransactionId":"a0477e25-db8d-447d-9dbe-633e4705275f","action":"payments:execute","target":"vendor/V-700","parameters":{"amount":3300,"currency":"USD"},"success":true,"executedAt":"2026-07-13T17:36:20.486Z","attributes":{"connector":{"connectorId":"vendor-payment","connectorVersion":"1.0.0","capability":"payments:execute","sanitizedEndpoint":"vendor/V-700","credentialProviderId":"environment","requestSummary":{"businessTransactionId":"a0477e25-db8d-447d-9dbe-633e4705275f","action":"payments:execute","target":"vendor/V-700","parameters":{"amount":3300,"currency":"USD"}},"responseSummary":{"success":true,"metadata":{}},"startedAt":"2026-07-13T17:36:20.486Z","completedAt":"2026-07-13T17:36:20.486Z","connectorEvidenceHash":"d172eee9244766ced4e30678711bdb3093250cf3a93adb4b0ab41914b2da36c6"}}},"completedAt":"2026-07-13T17:36:20.486Z"}],"verifications":[{"verificationId":"39a20fd1-50a9-4b3a-a38b-7d261c616f41","businessTransactionId":"a0477e25-db8d-447d-9dbe-633e4705275f","status":"VERIFIED","message":"Execution Trust Record verified successfully.","verifiedAt":"2026-07-13T17:36:20.487Z","trustRecordHash":"20f53f013d8fb7a93666bdeca0fc6015b009406e4ae686e74244a626a66dd781"}],"receipts":[{"receiptId":"7bd6d010-a9c1-440f-9823-501fc116e64f","businessTransactionId":"a0477e25-db8d-447d-9dbe-633e4705275f","trustRecordHash":"20f53f013d8fb7a93666bdeca0fc6015b009406e4ae686e74244a626a66dd781","receiptHash":"fa267b72b5fdce8e4ab5e3273f788f08ffaadb27c7af47c34b94aa872b37ca40","issuedAt":"2026-07-13T17:36:20.487Z","algorithm":"ed25519","signature":"XZ4/ADgeML5fI7iWhTECN+dA642KROMjSLkMJdHGITNBXkryK+NWKkzzw9VGorBlBynrPHPF70OhgbNtrxqgAg=="}],"createdAt":"2026-07-13T17:36:20.486Z","updatedAt":"2026-07-13T17:36:20.486Z","trustRecordHash":"20f53f013d8fb7a93666bdeca0fc6015b009406e4ae686e74244a626a66dd781","signature":{"algorithm":"ed25519","keyId":"default","value":"teph6TYn3Q0s+/hjz3TQr4uNmaRrGaPsozXkbiEkf0MjfPDIEChYa2pBjrQktLFwXW8X8cnih8/z3Sd8vjasDA==","signedAt":"2026-07-13T17:36:20.487Z"}}}},"exampleType":"examples"}},"exampleType":"examples"},"a047a685-427c-4c93-99ab-6b5cf0bed00a":{"description":"The request is malformed and nothing was stored. The same checks as `POST /execute`.","content":{"application/json":{"schema":{"title":"Error Response","description":"Shared error envelope produced by packages/api/src/middleware/error-handler.ts and by every route's inline validation checks. error is always a plain human-readable string (never a nested object). code is present only when the failure was a RuntimeError subclass reaching the centralized error handler (VerificationFailedError, ReceiptGenerationError, or an uncategorized RuntimeError); it is absent from every inline route-level check (businessTransactionId format/required checks) and from BusinessTransactionValidationError, PolicyValidationError, SignalValidationError, PolicyNotFoundError, DuplicateBusinessTransactionError, and the generic 500 fallback. POST /policies/validate does NOT use this envelope at all. See its own response schema. For the triggering condition and recommended caller action behind any specific error/code/status combination, see the Error catalog at /api-reference/error-catalog.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable machine-readable error code. Only present for errors that reach the handler as a RuntimeError.","examples":["RUNTIME_ERROR","VERIFICATION_FAILED","RECEIPT_GENERATION_FAILED","POLICY_DENIED","CAPABILITY_NOT_ALLOWED","RATE_LIMITED","AUDIT_UNAVAILABLE","SIGNING_UNAVAILABLE","CONNECTOR_NOT_REGISTERED","EXECUTION_RECORD_INCOMPLETE","EXECUTION_INTENT_UNAVAILABLE","EXECUTION_INTENT_RESULT_NOT_RECORDED","EXECUTION_INTENT_NOT_FOUND","EXECUTION_INTENTS_NOT_ENABLED","EXECUTION_INTENT_NOT_RESOLVABLE","EXECUTION_INTENT_RESOLUTION_INVALID","NON_HUMAN_CALLER_DENIED","EXECUTION_OUTCOME_UNKNOWN","AUTHORIZATION_NO_LONGER_VALID"],"uniqueKey":"code","typeLabel":"string"},"executionStatus":{"type":"string","enum":["EXECUTION_UNKNOWN","NOT_EXECUTED"],"description":"RFC-0023 phase 4. EXECUTION_UNKNOWN with EXECUTION_OUTCOME_UNKNOWN: the action was released and the call failed, so whether it ran is unknown; never reported as failed, and the Execution Intent stays ERRORED until a person resolves it. NOT_EXECUTED with AUTHORIZATION_NO_LONGER_VALID: the release was refused because a business condition or the authority grant it rested on no longer held, and nothing was sent.","uniqueKey":"executionStatus","typeLabel":"enum\u003cstring>"}},"examples":[{"error":"businessTransactionId must be a valid UUID."},{"error":"Business Transaction 'eed2a972-1bf5-4166-8472-761f76fbf1b2' already exists."},{"error":"Execution rejected: Vendor payment rejected because the assessed payment risk exceeds the maximum permitted threshold.","code":"RUNTIME_ERROR"}],"uniqueKey":"","typeLabel":"Error Response · object"},"examples":{"badUuid":{"title":"badUuid","value":{"error":"businessTransactionId must be a valid UUID."}},"invariantMismatch":{"title":"invariantMismatch","value":{"error":"authorization.authorityId must match authority.authorityId."}}},"exampleType":"examples"}},"exampleType":"examples"},"d4c43469-81cc-4784-b725-ec81469e5bf4":{"description":"The `Authorization` header is missing, is not a bearer key, or names a key the server does not know. Nothing ran. Send a valid key.","content":{"application/json":{"schema":{"title":"Error Response","description":"Shared error envelope produced by packages/api/src/middleware/error-handler.ts and by every route's inline validation checks. error is always a plain human-readable string (never a nested object). code is present only when the failure was a RuntimeError subclass reaching the centralized error handler (VerificationFailedError, ReceiptGenerationError, or an uncategorized RuntimeError); it is absent from every inline route-level check (businessTransactionId format/required checks) and from BusinessTransactionValidationError, PolicyValidationError, SignalValidationError, PolicyNotFoundError, DuplicateBusinessTransactionError, and the generic 500 fallback. POST /policies/validate does NOT use this envelope at all. See its own response schema. For the triggering condition and recommended caller action behind any specific error/code/status combination, see the Error catalog at /api-reference/error-catalog.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable machine-readable error code. Only present for errors that reach the handler as a RuntimeError.","examples":["RUNTIME_ERROR","VERIFICATION_FAILED","RECEIPT_GENERATION_FAILED","POLICY_DENIED","CAPABILITY_NOT_ALLOWED","RATE_LIMITED","AUDIT_UNAVAILABLE","SIGNING_UNAVAILABLE","CONNECTOR_NOT_REGISTERED","EXECUTION_RECORD_INCOMPLETE","EXECUTION_INTENT_UNAVAILABLE","EXECUTION_INTENT_RESULT_NOT_RECORDED","EXECUTION_INTENT_NOT_FOUND","EXECUTION_INTENTS_NOT_ENABLED","EXECUTION_INTENT_NOT_RESOLVABLE","EXECUTION_INTENT_RESOLUTION_INVALID","NON_HUMAN_CALLER_DENIED","EXECUTION_OUTCOME_UNKNOWN","AUTHORIZATION_NO_LONGER_VALID"],"uniqueKey":"code","typeLabel":"string"},"executionStatus":{"type":"string","enum":["EXECUTION_UNKNOWN","NOT_EXECUTED"],"description":"RFC-0023 phase 4. EXECUTION_UNKNOWN with EXECUTION_OUTCOME_UNKNOWN: the action was released and the call failed, so whether it ran is unknown; never reported as failed, and the Execution Intent stays ERRORED until a person resolves it. NOT_EXECUTED with AUTHORIZATION_NO_LONGER_VALID: the release was refused because a business condition or the authority grant it rested on no longer held, and nothing was sent.","uniqueKey":"executionStatus","typeLabel":"enum\u003cstring>"}},"examples":[{"error":"businessTransactionId must be a valid UUID."},{"error":"Business Transaction 'eed2a972-1bf5-4166-8472-761f76fbf1b2' already exists."},{"error":"Execution rejected: Vendor payment rejected because the assessed payment risk exceeds the maximum permitted threshold.","code":"RUNTIME_ERROR"}],"uniqueKey":"","typeLabel":"Error Response · object"},"examples":{"authRequired":{"title":"authRequired","value":{"error":"authentication required"}}},"exampleType":"examples"}},"exampleType":"examples"},"289098d1-948f-4050-ac82-b939dee26355":{"description":"Refused, with the same codes and meaning as `POST /execute`.","content":{"application/json":{"schema":{"title":"Error Response","description":"Shared error envelope produced by packages/api/src/middleware/error-handler.ts and by every route's inline validation checks. error is always a plain human-readable string (never a nested object). code is present only when the failure was a RuntimeError subclass reaching the centralized error handler (VerificationFailedError, ReceiptGenerationError, or an uncategorized RuntimeError); it is absent from every inline route-level check (businessTransactionId format/required checks) and from BusinessTransactionValidationError, PolicyValidationError, SignalValidationError, PolicyNotFoundError, DuplicateBusinessTransactionError, and the generic 500 fallback. POST /policies/validate does NOT use this envelope at all. See its own response schema. For the triggering condition and recommended caller action behind any specific error/code/status combination, see the Error catalog at /api-reference/error-catalog.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable machine-readable error code. Only present for errors that reach the handler as a RuntimeError.","examples":["RUNTIME_ERROR","VERIFICATION_FAILED","RECEIPT_GENERATION_FAILED","POLICY_DENIED","CAPABILITY_NOT_ALLOWED","RATE_LIMITED","AUDIT_UNAVAILABLE","SIGNING_UNAVAILABLE","CONNECTOR_NOT_REGISTERED","EXECUTION_RECORD_INCOMPLETE","EXECUTION_INTENT_UNAVAILABLE","EXECUTION_INTENT_RESULT_NOT_RECORDED","EXECUTION_INTENT_NOT_FOUND","EXECUTION_INTENTS_NOT_ENABLED","EXECUTION_INTENT_NOT_RESOLVABLE","EXECUTION_INTENT_RESOLUTION_INVALID","NON_HUMAN_CALLER_DENIED","EXECUTION_OUTCOME_UNKNOWN","AUTHORIZATION_NO_LONGER_VALID"],"uniqueKey":"code","typeLabel":"string"},"executionStatus":{"type":"string","enum":["EXECUTION_UNKNOWN","NOT_EXECUTED"],"description":"RFC-0023 phase 4. EXECUTION_UNKNOWN with EXECUTION_OUTCOME_UNKNOWN: the action was released and the call failed, so whether it ran is unknown; never reported as failed, and the Execution Intent stays ERRORED until a person resolves it. NOT_EXECUTED with AUTHORIZATION_NO_LONGER_VALID: the release was refused because a business condition or the authority grant it rested on no longer held, and nothing was sent.","uniqueKey":"executionStatus","typeLabel":"enum\u003cstring>"}},"examples":[{"error":"businessTransactionId must be a valid UUID."},{"error":"Business Transaction 'eed2a972-1bf5-4166-8472-761f76fbf1b2' already exists."},{"error":"Execution rejected: Vendor payment rejected because the assessed payment risk exceeds the maximum permitted threshold.","code":"RUNTIME_ERROR"}],"uniqueKey":"","typeLabel":"Error Response · object"},"examples":{"principalNotAllowed":{"title":"principalNotAllowed","value":{"error":"Caller is not permitted to assert this authority.principalId."}},"capabilityNotAllowed":{"title":"capabilityNotAllowed","value":{"error":"Caller is not permitted to invoke this capability.","code":"CAPABILITY_NOT_ALLOWED"}},"policyDenied":{"title":"policyDenied","value":{"error":"Execution rejected: Vendor payment rejected because the assessed payment risk exceeds the maximum permitted threshold.","code":"POLICY_DENIED"}}},"exampleType":"examples"}},"exampleType":"examples"},"071914df-f0a0-452f-9dca-a4d77643b7cc":{"description":"`policy.name` and `policy.version` do not match a policy this server has.","content":{"application/json":{"schema":{"title":"Error Response","description":"Shared error envelope produced by packages/api/src/middleware/error-handler.ts and by every route's inline validation checks. error is always a plain human-readable string (never a nested object). code is present only when the failure was a RuntimeError subclass reaching the centralized error handler (VerificationFailedError, ReceiptGenerationError, or an uncategorized RuntimeError); it is absent from every inline route-level check (businessTransactionId format/required checks) and from BusinessTransactionValidationError, PolicyValidationError, SignalValidationError, PolicyNotFoundError, DuplicateBusinessTransactionError, and the generic 500 fallback. POST /policies/validate does NOT use this envelope at all. See its own response schema. For the triggering condition and recommended caller action behind any specific error/code/status combination, see the Error catalog at /api-reference/error-catalog.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable machine-readable error code. Only present for errors that reach the handler as a RuntimeError.","examples":["RUNTIME_ERROR","VERIFICATION_FAILED","RECEIPT_GENERATION_FAILED","POLICY_DENIED","CAPABILITY_NOT_ALLOWED","RATE_LIMITED","AUDIT_UNAVAILABLE","SIGNING_UNAVAILABLE","CONNECTOR_NOT_REGISTERED","EXECUTION_RECORD_INCOMPLETE","EXECUTION_INTENT_UNAVAILABLE","EXECUTION_INTENT_RESULT_NOT_RECORDED","EXECUTION_INTENT_NOT_FOUND","EXECUTION_INTENTS_NOT_ENABLED","EXECUTION_INTENT_NOT_RESOLVABLE","EXECUTION_INTENT_RESOLUTION_INVALID","NON_HUMAN_CALLER_DENIED","EXECUTION_OUTCOME_UNKNOWN","AUTHORIZATION_NO_LONGER_VALID"],"uniqueKey":"code","typeLabel":"string"},"executionStatus":{"type":"string","enum":["EXECUTION_UNKNOWN","NOT_EXECUTED"],"description":"RFC-0023 phase 4. EXECUTION_UNKNOWN with EXECUTION_OUTCOME_UNKNOWN: the action was released and the call failed, so whether it ran is unknown; never reported as failed, and the Execution Intent stays ERRORED until a person resolves it. NOT_EXECUTED with AUTHORIZATION_NO_LONGER_VALID: the release was refused because a business condition or the authority grant it rested on no longer held, and nothing was sent.","uniqueKey":"executionStatus","typeLabel":"enum\u003cstring>"}},"examples":[{"error":"businessTransactionId must be a valid UUID."},{"error":"Business Transaction 'eed2a972-1bf5-4166-8472-761f76fbf1b2' already exists."},{"error":"Execution rejected: Vendor payment rejected because the assessed payment risk exceeds the maximum permitted threshold.","code":"RUNTIME_ERROR"}],"uniqueKey":"","typeLabel":"Error Response · object"},"examples":{"policyNotFound":{"title":"policyNotFound","value":{"error":"Policy 'does-not-exist' version '9.9.9' was not found."}}},"exampleType":"examples"}},"exampleType":"examples"},"581dad1f-e8cb-4eb9-a4f9-227f5d0dde86":{"description":"This `businessTransactionId` was already used. Nothing ran again.","content":{"application/json":{"schema":{"title":"Error Response","description":"Shared error envelope produced by packages/api/src/middleware/error-handler.ts and by every route's inline validation checks. error is always a plain human-readable string (never a nested object). code is present only when the failure was a RuntimeError subclass reaching the centralized error handler (VerificationFailedError, ReceiptGenerationError, or an uncategorized RuntimeError); it is absent from every inline route-level check (businessTransactionId format/required checks) and from BusinessTransactionValidationError, PolicyValidationError, SignalValidationError, PolicyNotFoundError, DuplicateBusinessTransactionError, and the generic 500 fallback. POST /policies/validate does NOT use this envelope at all. See its own response schema. For the triggering condition and recommended caller action behind any specific error/code/status combination, see the Error catalog at /api-reference/error-catalog.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable machine-readable error code. Only present for errors that reach the handler as a RuntimeError.","examples":["RUNTIME_ERROR","VERIFICATION_FAILED","RECEIPT_GENERATION_FAILED","POLICY_DENIED","CAPABILITY_NOT_ALLOWED","RATE_LIMITED","AUDIT_UNAVAILABLE","SIGNING_UNAVAILABLE","CONNECTOR_NOT_REGISTERED","EXECUTION_RECORD_INCOMPLETE","EXECUTION_INTENT_UNAVAILABLE","EXECUTION_INTENT_RESULT_NOT_RECORDED","EXECUTION_INTENT_NOT_FOUND","EXECUTION_INTENTS_NOT_ENABLED","EXECUTION_INTENT_NOT_RESOLVABLE","EXECUTION_INTENT_RESOLUTION_INVALID","NON_HUMAN_CALLER_DENIED","EXECUTION_OUTCOME_UNKNOWN","AUTHORIZATION_NO_LONGER_VALID"],"uniqueKey":"code","typeLabel":"string"},"executionStatus":{"type":"string","enum":["EXECUTION_UNKNOWN","NOT_EXECUTED"],"description":"RFC-0023 phase 4. EXECUTION_UNKNOWN with EXECUTION_OUTCOME_UNKNOWN: the action was released and the call failed, so whether it ran is unknown; never reported as failed, and the Execution Intent stays ERRORED until a person resolves it. NOT_EXECUTED with AUTHORIZATION_NO_LONGER_VALID: the release was refused because a business condition or the authority grant it rested on no longer held, and nothing was sent.","uniqueKey":"executionStatus","typeLabel":"enum\u003cstring>"}},"examples":[{"error":"businessTransactionId must be a valid UUID."},{"error":"Business Transaction 'eed2a972-1bf5-4166-8472-761f76fbf1b2' already exists."},{"error":"Execution rejected: Vendor payment rejected because the assessed payment risk exceeds the maximum permitted threshold.","code":"RUNTIME_ERROR"}],"uniqueKey":"","typeLabel":"Error Response · object"},"examples":{"duplicate":{"title":"duplicate","value":{"error":"Business Transaction '1a341e62-18de-408e-9b34-89aec901dae5' already exists."}}},"exampleType":"examples"}},"exampleType":"examples"},"dfa59a88-54fc-4a13-be97-da5ed5e12510":{"description":"Too many requests from this caller on this route in the last minute. The default limits are 30 per caller per minute on `/execute`, 300 per IP address on `/health` and `/ready`, and 60 per IP address shared by the unauthenticated verification and handbook routes. The request never reached the handler, so nothing was recorded or executed. Wait the number of seconds in the `Retry-After` header, then retry.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"title":"Error Response","description":"Shared error envelope produced by packages/api/src/middleware/error-handler.ts and by every route's inline validation checks. error is always a plain human-readable string (never a nested object). code is present only when the failure was a RuntimeError subclass reaching the centralized error handler (VerificationFailedError, ReceiptGenerationError, or an uncategorized RuntimeError); it is absent from every inline route-level check (businessTransactionId format/required checks) and from BusinessTransactionValidationError, PolicyValidationError, SignalValidationError, PolicyNotFoundError, DuplicateBusinessTransactionError, and the generic 500 fallback. POST /policies/validate does NOT use this envelope at all. See its own response schema. For the triggering condition and recommended caller action behind any specific error/code/status combination, see the Error catalog at /api-reference/error-catalog.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable machine-readable error code. Only present for errors that reach the handler as a RuntimeError.","examples":["RUNTIME_ERROR","VERIFICATION_FAILED","RECEIPT_GENERATION_FAILED","POLICY_DENIED","CAPABILITY_NOT_ALLOWED","RATE_LIMITED","AUDIT_UNAVAILABLE","SIGNING_UNAVAILABLE","CONNECTOR_NOT_REGISTERED","EXECUTION_RECORD_INCOMPLETE","EXECUTION_INTENT_UNAVAILABLE","EXECUTION_INTENT_RESULT_NOT_RECORDED","EXECUTION_INTENT_NOT_FOUND","EXECUTION_INTENTS_NOT_ENABLED","EXECUTION_INTENT_NOT_RESOLVABLE","EXECUTION_INTENT_RESOLUTION_INVALID","NON_HUMAN_CALLER_DENIED","EXECUTION_OUTCOME_UNKNOWN","AUTHORIZATION_NO_LONGER_VALID"],"uniqueKey":"code","typeLabel":"string"},"executionStatus":{"type":"string","enum":["EXECUTION_UNKNOWN","NOT_EXECUTED"],"description":"RFC-0023 phase 4. EXECUTION_UNKNOWN with EXECUTION_OUTCOME_UNKNOWN: the action was released and the call failed, so whether it ran is unknown; never reported as failed, and the Execution Intent stays ERRORED until a person resolves it. NOT_EXECUTED with AUTHORIZATION_NO_LONGER_VALID: the release was refused because a business condition or the authority grant it rested on no longer held, and nothing was sent.","uniqueKey":"executionStatus","typeLabel":"enum\u003cstring>"}},"examples":[{"error":"businessTransactionId must be a valid UUID."},{"error":"Business Transaction 'eed2a972-1bf5-4166-8472-761f76fbf1b2' already exists."},{"error":"Execution rejected: Vendor payment rejected because the assessed payment risk exceeds the maximum permitted threshold.","code":"RUNTIME_ERROR"}],"uniqueKey":"","typeLabel":"Error Response · object"},"examples":{"rateLimited":{"title":"rateLimited","value":{"error":"Rate limit exceeded. Try again later.","code":"RATE_LIMITED"}}},"exampleType":"examples"}},"exampleType":"examples"},"6ca07a8a-8e59-45f6-b449-620f0369ef52":{"description":"`EXECUTION_RECORD_INCOMPLETE`: released, but the signed record could not be produced. Do not resend; an operator finalizes it. See `POST /execute`.","content":{"application/json":{"schema":{"title":"Error Response","description":"Shared error envelope produced by packages/api/src/middleware/error-handler.ts and by every route's inline validation checks. error is always a plain human-readable string (never a nested object). code is present only when the failure was a RuntimeError subclass reaching the centralized error handler (VerificationFailedError, ReceiptGenerationError, or an uncategorized RuntimeError); it is absent from every inline route-level check (businessTransactionId format/required checks) and from BusinessTransactionValidationError, PolicyValidationError, SignalValidationError, PolicyNotFoundError, DuplicateBusinessTransactionError, and the generic 500 fallback. POST /policies/validate does NOT use this envelope at all. See its own response schema. For the triggering condition and recommended caller action behind any specific error/code/status combination, see the Error catalog at /api-reference/error-catalog.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable machine-readable error code. Only present for errors that reach the handler as a RuntimeError.","examples":["RUNTIME_ERROR","VERIFICATION_FAILED","RECEIPT_GENERATION_FAILED","POLICY_DENIED","CAPABILITY_NOT_ALLOWED","RATE_LIMITED","AUDIT_UNAVAILABLE","SIGNING_UNAVAILABLE","CONNECTOR_NOT_REGISTERED","EXECUTION_RECORD_INCOMPLETE","EXECUTION_INTENT_UNAVAILABLE","EXECUTION_INTENT_RESULT_NOT_RECORDED","EXECUTION_INTENT_NOT_FOUND","EXECUTION_INTENTS_NOT_ENABLED","EXECUTION_INTENT_NOT_RESOLVABLE","EXECUTION_INTENT_RESOLUTION_INVALID","NON_HUMAN_CALLER_DENIED","EXECUTION_OUTCOME_UNKNOWN","AUTHORIZATION_NO_LONGER_VALID"],"uniqueKey":"code","typeLabel":"string"},"executionStatus":{"type":"string","enum":["EXECUTION_UNKNOWN","NOT_EXECUTED"],"description":"RFC-0023 phase 4. EXECUTION_UNKNOWN with EXECUTION_OUTCOME_UNKNOWN: the action was released and the call failed, so whether it ran is unknown; never reported as failed, and the Execution Intent stays ERRORED until a person resolves it. NOT_EXECUTED with AUTHORIZATION_NO_LONGER_VALID: the release was refused because a business condition or the authority grant it rested on no longer held, and nothing was sent.","uniqueKey":"executionStatus","typeLabel":"enum\u003cstring>"}},"examples":[{"error":"businessTransactionId must be a valid UUID."},{"error":"Business Transaction 'eed2a972-1bf5-4166-8472-761f76fbf1b2' already exists."},{"error":"Execution rejected: Vendor payment rejected because the assessed payment risk exceeds the maximum permitted threshold.","code":"RUNTIME_ERROR"}],"uniqueKey":"","typeLabel":"Error Response · object"},"examples":{"executionRecordIncomplete":{"title":"executionRecordIncomplete","value":{"error":"The action for business transaction 'e54187e6-431f-4e1c-9c0e-ff2cb5d6d40a' was released to the execution system, but its signed Execution Trust Record could not be produced. Do not retry as a new transaction: reconcile against the connector and the execution audit events for this businessTransactionId. authorizationId: 381ef27a-0955-4085-9e5d-e4223fef2986.","code":"EXECUTION_RECORD_INCOMPLETE"}}},"exampleType":"examples"}},"exampleType":"examples"},"3874c816-9c6f-4813-a6aa-5b0e120eb6ec":{"description":"`EXECUTION_OUTCOME_UNKNOWN`: released, then the connector call failed. Do not resend under a new id; check the target system, then resolve the intent. See `POST /execute`.","content":{"application/json":{"schema":{"title":"Error Response","description":"Shared error envelope produced by packages/api/src/middleware/error-handler.ts and by every route's inline validation checks. error is always a plain human-readable string (never a nested object). code is present only when the failure was a RuntimeError subclass reaching the centralized error handler (VerificationFailedError, ReceiptGenerationError, or an uncategorized RuntimeError); it is absent from every inline route-level check (businessTransactionId format/required checks) and from BusinessTransactionValidationError, PolicyValidationError, SignalValidationError, PolicyNotFoundError, DuplicateBusinessTransactionError, and the generic 500 fallback. POST /policies/validate does NOT use this envelope at all. See its own response schema. For the triggering condition and recommended caller action behind any specific error/code/status combination, see the Error catalog at /api-reference/error-catalog.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable machine-readable error code. Only present for errors that reach the handler as a RuntimeError.","examples":["RUNTIME_ERROR","VERIFICATION_FAILED","RECEIPT_GENERATION_FAILED","POLICY_DENIED","CAPABILITY_NOT_ALLOWED","RATE_LIMITED","AUDIT_UNAVAILABLE","SIGNING_UNAVAILABLE","CONNECTOR_NOT_REGISTERED","EXECUTION_RECORD_INCOMPLETE","EXECUTION_INTENT_UNAVAILABLE","EXECUTION_INTENT_RESULT_NOT_RECORDED","EXECUTION_INTENT_NOT_FOUND","EXECUTION_INTENTS_NOT_ENABLED","EXECUTION_INTENT_NOT_RESOLVABLE","EXECUTION_INTENT_RESOLUTION_INVALID","NON_HUMAN_CALLER_DENIED","EXECUTION_OUTCOME_UNKNOWN","AUTHORIZATION_NO_LONGER_VALID"],"uniqueKey":"code","typeLabel":"string"},"executionStatus":{"type":"string","enum":["EXECUTION_UNKNOWN","NOT_EXECUTED"],"description":"RFC-0023 phase 4. EXECUTION_UNKNOWN with EXECUTION_OUTCOME_UNKNOWN: the action was released and the call failed, so whether it ran is unknown; never reported as failed, and the Execution Intent stays ERRORED until a person resolves it. NOT_EXECUTED with AUTHORIZATION_NO_LONGER_VALID: the release was refused because a business condition or the authority grant it rested on no longer held, and nothing was sent.","uniqueKey":"executionStatus","typeLabel":"enum\u003cstring>"}},"examples":[{"error":"businessTransactionId must be a valid UUID."},{"error":"Business Transaction 'eed2a972-1bf5-4166-8472-761f76fbf1b2' already exists."},{"error":"Execution rejected: Vendor payment rejected because the assessed payment risk exceeds the maximum permitted threshold.","code":"RUNTIME_ERROR"}],"uniqueKey":"","typeLabel":"Error Response · object"},"examples":{"executionOutcomeUnknown":{"title":"executionOutcomeUnknown","value":{"error":"The action for business transaction '38dcf000-99ed-43af-8666-46c63c8ada74' was released to the execution system, but the call failed, so whether it was performed is unknown. Do not retry as a new transaction: check the target system, then close the Execution Intent with POST /execution-intents/38dcf000-99ed-43af-8666-46c63c8ada74/resolve. authorizationId: 4d291c90-9e93-4a8a-b214-8cc6526fe2e3.","code":"EXECUTION_OUTCOME_UNKNOWN"}}},"exampleType":"examples"}},"exampleType":"examples"},"4b3cd6bd-651d-43be-bf58-76d520e4f4b8":{"description":"Refused before release: nothing was executed. `SIGNING_UNAVAILABLE`: the server could not prove it can sign a Trust Record. `AUDIT_UNAVAILABLE`: the caller audit trail could not be written. `EXECUTION_INTENT_UNAVAILABLE`: the signed Execution Intent could not be stored. For these three, retry later with a new `businessTransactionId`, because the first one was already accepted. `CONNECTOR_NOT_REGISTERED`: no connector is configured for this action on this deployment; the operator must configure it before any retry.","content":{"application/json":{"schema":{"title":"Error Response","description":"Shared error envelope produced by packages/api/src/middleware/error-handler.ts and by every route's inline validation checks. error is always a plain human-readable string (never a nested object). code is present only when the failure was a RuntimeError subclass reaching the centralized error handler (VerificationFailedError, ReceiptGenerationError, or an uncategorized RuntimeError); it is absent from every inline route-level check (businessTransactionId format/required checks) and from BusinessTransactionValidationError, PolicyValidationError, SignalValidationError, PolicyNotFoundError, DuplicateBusinessTransactionError, and the generic 500 fallback. POST /policies/validate does NOT use this envelope at all. See its own response schema. For the triggering condition and recommended caller action behind any specific error/code/status combination, see the Error catalog at /api-reference/error-catalog.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable machine-readable error code. Only present for errors that reach the handler as a RuntimeError.","examples":["RUNTIME_ERROR","VERIFICATION_FAILED","RECEIPT_GENERATION_FAILED","POLICY_DENIED","CAPABILITY_NOT_ALLOWED","RATE_LIMITED","AUDIT_UNAVAILABLE","SIGNING_UNAVAILABLE","CONNECTOR_NOT_REGISTERED","EXECUTION_RECORD_INCOMPLETE","EXECUTION_INTENT_UNAVAILABLE","EXECUTION_INTENT_RESULT_NOT_RECORDED","EXECUTION_INTENT_NOT_FOUND","EXECUTION_INTENTS_NOT_ENABLED","EXECUTION_INTENT_NOT_RESOLVABLE","EXECUTION_INTENT_RESOLUTION_INVALID","NON_HUMAN_CALLER_DENIED","EXECUTION_OUTCOME_UNKNOWN","AUTHORIZATION_NO_LONGER_VALID"],"uniqueKey":"code","typeLabel":"string"},"executionStatus":{"type":"string","enum":["EXECUTION_UNKNOWN","NOT_EXECUTED"],"description":"RFC-0023 phase 4. EXECUTION_UNKNOWN with EXECUTION_OUTCOME_UNKNOWN: the action was released and the call failed, so whether it ran is unknown; never reported as failed, and the Execution Intent stays ERRORED until a person resolves it. NOT_EXECUTED with AUTHORIZATION_NO_LONGER_VALID: the release was refused because a business condition or the authority grant it rested on no longer held, and nothing was sent.","uniqueKey":"executionStatus","typeLabel":"enum\u003cstring>"}},"examples":[{"error":"businessTransactionId must be a valid UUID."},{"error":"Business Transaction 'eed2a972-1bf5-4166-8472-761f76fbf1b2' already exists."},{"error":"Execution rejected: Vendor payment rejected because the assessed payment risk exceeds the maximum permitted threshold.","code":"RUNTIME_ERROR"}],"uniqueKey":"","typeLabel":"Error Response · object"},"examples":{"executionIntentUnavailable":{"title":"executionIntentUnavailable","value":{"error":"The signed Execution Intent for business transaction '2c3cae0f-fd3c-4962-8147-83f3710a2fc9' could not be created and stored; refusing to release the action. Nothing was executed. Cause: new row for relation \"execution_intents\" violates check constraint \"sbx_block_intents\"","code":"EXECUTION_INTENT_UNAVAILABLE"}},"signingUnavailable":{"title":"signingUnavailable","value":{"error":"Evidence signing is unavailable; refusing to release the action because a signed Execution Trust Record could not be produced. Nothing was executed.","code":"SIGNING_UNAVAILABLE"}},"auditUnavailable":{"title":"auditUnavailable","value":{"error":"Caller authentication audit trail is unavailable; refusing to proceed without an audit record.","code":"AUDIT_UNAVAILABLE"}},"connectorNotRegistered":{"title":"connectorNotRegistered","value":{"error":"No connector is registered for capability 'paytm:refund' on this deployment. Nothing was executed. The operator must configure the connector.","code":"CONNECTOR_NOT_REGISTERED"}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"e01a8f61-2586-45dd-8ee5-04f326eaca59":{"bearerAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"Caller API key issued by scripts/generate-api-key.ts. Sent as Authorization: Bearer \u003ckey>. Verified against a stored SHA-256 hash in constant time by packages/api/src/auth/StaticKeyAuthenticator.ts. Required on every route not listed as exempt in this document's top-level description. See /api-reference/authentication.\n","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"9de3dc50-5366-4d54-a47f-15b7519838b6":{"url":"https://parmana-api-real.vercel.app","description":"Production. Needs a key issued by the operator."},"9ba31458-07b4-4af8-af1e-e984fd99f741":{"url":"http://localhost:3000","description":"Local (packages/api, PORT env var, default 3000)"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"Authorization","description":"Caller API key issued by scripts/generate-api-key.ts. Sent as Authorization: Bearer \u003ckey>. Verified against a stored SHA-256 hash in constant time by packages/api/src/auth/StaticKeyAuthenticator.ts. Required on every route not listed as exempt in this document's top-level description. See /api-reference/authentication.\n","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Authorization","type":"string","description":"Caller API key issued by scripts/generate-api-key.ts. Sent as Authorization: Bearer \u003ckey>. Verified against a stored SHA-256 hash in constant time by packages/api/src/auth/StaticKeyAuthenticator.ts. Required on every route not listed as exempt in this document's top-level description. See /api-reference/authentication.\n","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"openapi.bundled.yaml"},"subdomain":"parmanasystems","siteName":"Parmana","title":"Create (execute) a Business Transaction - Parmana","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-24T13:07:45.707Z","originalFileLocation":"api-reference/endpoints/create-transaction.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"In the sandbox, each businessTransactionId works once: a prefilled id returns 409 after its first use.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Parmana\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/parmanasystems/etjcJguz6BN6OG2a/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/parmanasystems/etjcJguz6BN6OG2a/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/parmanasystems/etjcJguz6BN6OG2a/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/parmanasystems/etjcJguz6BN6OG2a/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/parmanasystems/etjcJguz6BN6OG2a/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/parmanasystems/etjcJguz6BN6OG2a/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/parmanasystems/etjcJguz6BN6OG2a/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/parmanasystems/etjcJguz6BN6OG2a/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/parmanasystems/etjcJguz6BN6OG2a/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create (execute) a Business Transaction - Parmana\">\u003cmeta data-mint-head property=\"og:description\" content=\"In the sandbox, each businessTransactionId works once: a prefilled id returns 409 after its first use.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Parmana\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.parmanasystems.com/api-reference/endpoints/create-transaction\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://parmanasystems.mintlify.app/_mintlify/api/og/v2?division=Transactions\u0026amp;title=Create+%28execute%29+a+Business+Transaction\u0026amp;description=In+the+sandbox%2C+each+%60businessTransactionId%60+works+once%3A+a+prefilled+id+returns+%60409%60+after+its+first+use.\u0026amp;theme=330e7d48bcc953731fc52f38\u0026amp;signature=139641f3ff19ebff448d6193e1701176dd81859703cd75d9e408cdb96a2867be\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Create (execute) a Business Transaction - Parmana\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"In the sandbox, each businessTransactionId works once: a prefilled id returns 409 after its first use.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://parmanasystems.mintlify.app/_mintlify/api/og/v2?division=Transactions\u0026amp;title=Create+%28execute%29+a+Business+Transaction\u0026amp;description=In+the+sandbox%2C+each+%60businessTransactionId%60+works+once%3A+a+prefilled+id+returns+%60409%60+after+its+first+use.\u0026amp;theme=330e7d48bcc953731fc52f38\u0026amp;signature=139641f3ff19ebff448d6193e1701176dd81859703cd75d9e408cdb96a2867be\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/parmanasystems/etjcJguz6BN6OG2a/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Parmana\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#6366F1\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.parmanasystems.com/api-reference/endpoints/create-transaction\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/endpoints/create-transaction.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.parmanasystems.com/#organization\",\"name\":\"Parmana\",\"url\":\"https://docs.parmanasystems.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/parmanasystems/3fc1F82PB1uU1_pD/logo/logo-light.svg?fit=max\u0026auto=format\u0026n=3fc1F82PB1uU1_pD\u0026q=85\u0026s=902f62a6181def8e3c6b5aa71a40d247\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.parmanasystems.com#website\",\"name\":\"Parmana\",\"url\":\"https://docs.parmanasystems.com\",\"publisher\":{\"@id\":\"https://docs.parmanasystems.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.parmanasystems.com/api-reference/endpoints/create-transaction#webpage\",\"url\":\"https://docs.parmanasystems.com/api-reference/endpoints/create-transaction\",\"name\":\"Create (execute) a Business Transaction\",\"description\":\"In the sandbox, each businessTransactionId works once: a prefilled id returns 409 after its first use.\",\"dateModified\":\"2026-10-24T13:07:45.707Z\",\"isPartOf\":{\"@id\":\"https://docs.parmanasystems.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.parmanasystems.com/api-reference/endpoints/create-transaction#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.parmanasystems.com/api-reference/endpoints/create-transaction#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Transactions\",\"item\":\"https://docs.parmanasystems.com/api-reference/endpoints/list-transactions\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create (execute) a Business Transaction\",\"item\":\"https://docs.parmanasystems.com/api-reference/endpoints/create-transaction\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.parmanasystems.com/api-reference/endpoints/create-transaction#apireference\",\"headline\":\"Create (execute) a Business Transaction\",\"name\":\"Create (execute) a Business Transaction\",\"description\":\"In the sandbox, each businessTransactionId works once: a prefilled id returns 409 after its first use.\",\"url\":\"https://docs.parmanasystems.com/api-reference/endpoints/create-transaction\",\"mainEntityOfPage\":{\"@id\":\"https://docs.parmanasystems.com/api-reference/endpoints/create-transaction#webpage\"},\"dateModified\":\"2026-10-24T13:07:45.707Z\",\"publisher\":{\"@id\":\"https://docs.parmanasystems.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.parmanasystems.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Parmana\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Parmana","nav":{"global":null,"tabs":[{"tab":"Get started","pages":[{"title":"Get started","href":""}]},{"tab":"Concepts","pages":[{"title":"Concepts","href":"/concepts/policies-and-the-decision"}]},{"tab":"Guides","pages":[{"title":"Guides","href":"/guides/full-integration-overview"}]},{"tab":"TypeScript SDK","pages":[{"title":"TypeScript SDK","href":"/sdks/typescript"}]},{"tab":"Python SDK","pages":[{"title":"Python SDK","href":"/sdks/python"}]},{"tab":"Connector SDKs","pages":[{"title":"Connector SDKs","href":"/integrations/overview"}]},{"tab":"REST API","groups":[{"group":"REST API guide","pages":[{"title":"REST API Introduction","href":"/api-reference/introduction"},{"title":"Authentication","href":"/api-reference/authentication"},{"title":"Error Handling","href":"/api-reference/error-handling"},{"title":"Idempotency and Nonces","href":"/api-reference/idempotency-and-nonces"},{"title":"Error Catalog","href":"/api-reference/error-catalog"},{"title":"SDK coverage of the API","href":"/sdks/api-coverage"}]},{"group":"Execution","pages":[{"title":"Execute a Business Transaction","openapi":"openapi.bundled.yaml POST /execute","href":"/api-reference/endpoints/execute-transaction"}]},{"group":"Transactions","pages":[{"title":"List Business Transactions","description":"Lists the Business Transactions your key submitted, as a bare array with no paging metadata.","openapi":"openapi.bundled.yaml GET /transactions","href":"/api-reference/endpoints/list-transactions"},{"title":"Create (execute) a Business Transaction","openapi":"openapi.bundled.yaml POST /transactions","href":"/api-reference/endpoints/create-transaction"},{"title":"Get Business Transaction","description":"Returns one Business Transaction as it was stored.","openapi":"openapi.bundled.yaml GET /transactions/{businessTransactionId}","href":"/api-reference/endpoints/get-transaction"}]},{"group":"Verification","pages":[{"title":"Verify an Execution Trust Record","openapi":"openapi.bundled.yaml POST /verify","href":"/api-reference/endpoints/verify-transaction"},{"title":"Get latest Verification","openapi":"openapi.bundled.yaml GET /verification/{businessTransactionId}","href":"/api-reference/endpoints/get-latest-verification"}]},{"group":"Receipts","pages":[{"title":"Generate a Receipt","openapi":"openapi.bundled.yaml POST /receipt","href":"/api-reference/endpoints/generate-receipt"},{"title":"Get latest Receipt","openapi":"openapi.bundled.yaml GET /receipt/latest/{businessTransactionId}","href":"/api-reference/endpoints/get-latest-receipt"}]},{"group":"Trust Records","pages":[{"title":"Bulk-export Execution Trust Records (compliance/audit)","openapi":"openapi.bundled.yaml GET /trust-records","href":"/api-reference/endpoints/list-trust-records"},{"title":"Get Execution Trust Record","openapi":"openapi.bundled.yaml GET /trust-records/{businessTransactionId}","href":"/api-reference/endpoints/get-trust-record"}]},{"group":"Replay","pages":[{"title":"Replay an Execution Trust Record","openapi":"openapi.bundled.yaml POST /replay","href":"/api-reference/endpoints/replay-transaction"}]},{"group":"Policies","pages":[{"title":"Get the policy a capability's requests must declare right now","openapi":"openapi.bundled.yaml GET /policies/in-effect","href":"/api-reference/endpoints/get-policy-in-effect"},{"title":"Validate that a Policy exists and is readable","openapi":"openapi.bundled.yaml POST /policies/validate","href":"/api-reference/endpoints/validate-policy"}]},{"group":"Policy Governance","pages":[{"title":"Propose a policy change (maker)","openapi":"openapi.bundled.yaml POST /policies/{name}/{version}/pending-changes","href":"/api-reference/endpoints/propose-policy-change"},{"title":"List pending policy changes (maker-checker)","openapi":"openapi.bundled.yaml GET /policies/pending-changes","href":"/api-reference/endpoints/list-pending-policy-changes"},{"title":"Approve a pending policy change (checker)","openapi":"openapi.bundled.yaml POST /policies/pending-changes/{id}/approve","href":"/api-reference/endpoints/approve-policy-change"},{"title":"Reject a pending policy change (checker)","openapi":"openapi.bundled.yaml POST /policies/pending-changes/{id}/reject","href":"/api-reference/endpoints/reject-policy-change"}]},{"group":"Approvers","pages":[{"title":"List approver keys","openapi":"openapi.bundled.yaml GET /approval-issuers","href":"/api-reference/endpoints/list-approval-issuers"},{"title":"List approver changes","openapi":"openapi.bundled.yaml GET /approval-issuers/changes","href":"/api-reference/endpoints/list-approval-issuer-changes"},{"title":"Propose adding or revoking an approver key","openapi":"openapi.bundled.yaml POST /approval-issuers/changes","href":"/api-reference/endpoints/propose-approval-issuer-change"},{"title":"Approve an approver change","openapi":"openapi.bundled.yaml POST /approval-issuers/changes/{id}/approve","href":"/api-reference/endpoints/approve-approval-issuer-change"},{"title":"Reject an approver change","openapi":"openapi.bundled.yaml POST /approval-issuers/changes/{id}/reject","href":"/api-reference/endpoints/reject-approval-issuer-change"}]},{"group":"External Connectors","pages":[{"title":"List external connectors","openapi":"openapi.bundled.yaml GET /external-connectors","href":"/api-reference/endpoints/list-external-connectors"},{"title":"List external connector changes","openapi":"openapi.bundled.yaml GET /external-connectors/changes","href":"/api-reference/endpoints/list-external-connector-changes"},{"title":"Propose registering or revoking an external connector","openapi":"openapi.bundled.yaml POST /external-connectors/changes","href":"/api-reference/endpoints/propose-external-connector-change"},{"title":"Approve an external connector change","openapi":"openapi.bundled.yaml POST /external-connectors/changes/{id}/approve","href":"/api-reference/endpoints/approve-external-connector-change"},{"title":"Reject an external connector change","openapi":"openapi.bundled.yaml POST /external-connectors/changes/{id}/reject","href":"/api-reference/endpoints/reject-external-connector-change"}]},{"group":"Business Signal Sources","pages":[{"title":"List business signal sources","openapi":"openapi.bundled.yaml GET /business-signal-sources","href":"/api-reference/endpoints/list-business-signal-sources"},{"title":"List business signal source changes","openapi":"openapi.bundled.yaml GET /business-signal-sources/changes","href":"/api-reference/endpoints/list-business-signal-source-changes"},{"title":"Propose registering or revoking a business signal source","openapi":"openapi.bundled.yaml POST /business-signal-sources/changes","href":"/api-reference/endpoints/propose-business-signal-source-change"},{"title":"Approve a business signal source change","openapi":"openapi.bundled.yaml POST /business-signal-sources/changes/{id}/approve","href":"/api-reference/endpoints/approve-business-signal-source-change"},{"title":"Reject a business signal source change","openapi":"openapi.bundled.yaml POST /business-signal-sources/changes/{id}/reject","href":"/api-reference/endpoints/reject-business-signal-source-change"}]},{"group":"Authority Grants","pages":[{"title":"List authority grants","openapi":"openapi.bundled.yaml GET /authority-grants","href":"/api-reference/endpoints/list-authority-grants"},{"title":"List authority grant changes","openapi":"openapi.bundled.yaml GET /authority-grants/changes","href":"/api-reference/endpoints/list-authority-grant-changes"},{"title":"Propose granting or revoking an agent's authority","openapi":"openapi.bundled.yaml POST /authority-grants/changes","href":"/api-reference/endpoints/propose-authority-grant-change"},{"title":"Approve an authority grant change","openapi":"openapi.bundled.yaml POST /authority-grants/changes/{id}/approve","href":"/api-reference/endpoints/approve-authority-grant-change"},{"title":"Reject an authority grant change","openapi":"openapi.bundled.yaml POST /authority-grants/changes/{id}/reject","href":"/api-reference/endpoints/reject-authority-grant-change"}]},{"group":"Sandbox","pages":[{"title":"Get a demo approval (sandbox only)","openapi":"openapi.bundled.yaml POST /sandbox/approvals","href":"/api-reference/endpoints/create-sandbox-approval"}]},{"group":"Kill Switch","pages":[{"title":"Trip the operator kill switch","openapi":"openapi.bundled.yaml POST /kill-switch/trip","href":"/api-reference/endpoints/trip-kill-switch"},{"title":"Reset the operator kill switch","openapi":"openapi.bundled.yaml POST /kill-switch/reset","href":"/api-reference/endpoints/reset-kill-switch"},{"title":"Read the kill switch state","openapi":"openapi.bundled.yaml GET /kill-switch/status","href":"/api-reference/endpoints/get-kill-switch-status"},{"title":"Record a kill switch probe result","openapi":"openapi.bundled.yaml POST /kill-switch/probes","href":"/api-reference/endpoints/record-kill-switch-probe"}]},{"group":"Refusal Records","pages":[{"title":"Verify a Refusal Record's signature","openapi":"openapi.bundled.yaml POST /refusal/verify","href":"/api-reference/endpoints/verify-refusal-record"},{"title":"Get a Refusal Record by transaction ID","openapi":"openapi.bundled.yaml GET /refusal/{businessTransactionId}","href":"/api-reference/endpoints/get-refusal-record"}]},{"group":"Execution Intents","pages":[{"title":"Verify an Execution Intent's signature","openapi":"openapi.bundled.yaml POST /execution-intents/verify","href":"/api-reference/endpoints/verify-execution-intent"},{"title":"List Execution Intents that never reached a signed Trust Record","openapi":"openapi.bundled.yaml GET /execution-intents/unfinalized","href":"/api-reference/endpoints/list-unfinalized-execution-intents"},{"title":"Get an Execution Intent and its status","openapi":"openapi.bundled.yaml GET /execution-intents/{businessTransactionId}","href":"/api-reference/endpoints/get-execution-intent"},{"title":"Rebuild the signed Trust Record for a released action","openapi":"openapi.bundled.yaml POST /execution-intents/{businessTransactionId}/finalize","href":"/api-reference/endpoints/finalize-execution-intent"},{"title":"Close an intent you reconciled by hand","openapi":"openapi.bundled.yaml POST /execution-intents/{businessTransactionId}/resolve","href":"/api-reference/endpoints/resolve-execution-intent"}]},{"group":"Audit","pages":[{"title":"Verify a signed caller-authentication audit event","openapi":"openapi.bundled.yaml POST /audit/verify","href":"/api-reference/endpoints/verify-audit-event"}]},{"group":"System","pages":[{"title":"Root","openapi":"openapi.bundled.yaml GET /","href":"/api-reference/endpoints/get-root"},{"title":"Health check","openapi":"openapi.bundled.yaml GET /health","href":"/api-reference/endpoints/get-health"},{"title":"Readiness check","openapi":"openapi.bundled.yaml GET /ready","href":"/api-reference/endpoints/get-ready"},{"title":"Get the OpenAPI spec","openapi":"openapi.bundled.yaml GET /openapi.yaml","href":"/api-reference/endpoints/get-open-api-spec"},{"title":"Get the OpenAPI spec, as JSON","openapi":"openapi.bundled.yaml GET /openapi.json","href":"/api-reference/endpoints/get-open-api-spec-json"},{"title":"Machine-readable SDK and discovery manifest","openapi":"openapi.bundled.yaml GET /api-manifest.json","href":"/api-reference/endpoints/get-api-manifest"},{"title":"Service version","openapi":"openapi.bundled.yaml GET /version","href":"/api-reference/endpoints/get-version"},{"title":"Fetch a public signing key for independent, offline verification","openapi":"openapi.bundled.yaml GET /keys/{keyId}","href":"/api-reference/endpoints/get-key"},{"title":"List every public signing key this deployment can currently produce","openapi":"openapi.bundled.yaml GET /.well-known/jwks.json","href":"/api-reference/endpoints/get-jwks"},{"title":"Get the authenticated caller's identity and resolved scope","openapi":"openapi.bundled.yaml GET /callers/me","href":"/api-reference/endpoints/get-caller-me"}]},{"group":"Handbook","pages":[{"title":"Download the Parmana Handbook (PDF)","openapi":"openapi.bundled.yaml GET /parmana-handbook.pdf","href":"/api-reference/endpoints/get-handbook-pdf"},{"title":"Capture an email address, then redirect straight to the handbook PDF","openapi":"openapi.bundled.yaml GET /handbook/download-leads","href":"/api-reference/endpoints/get-handbook-download-lead"},{"title":"Capture an email address before unlocking the handbook PDF download","openapi":"openapi.bundled.yaml POST /handbook/download-leads","href":"/api-reference/endpoints/create-handbook-download-lead"}]}]},{"tab":"Deploy and operate","pages":[{"title":"Deploy and operate","href":"/self-hosted/overview"}]},{"tab":"Reference","pages":[{"title":"Reference","href":"/reference/shared"}]},{"tab":"Build book","pages":[{"title":"Build book","href":"/build-book/overview"}]},{"tab":"Handbook","pages":[{"title":"Handbook","href":"/handbook/overview"}]}]},"basePath":"","title":"Create (execute) a Business Transaction - Parmana","buildId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","deploymentId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","dynamics":["10e4515597","c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["BannerMarkdown-DIeMibn4.js","dist-DJnKvr0g.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","clsx-B2v50t8t.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","OpenApiReferenceProvider-C8RPHPxo.js","utils-0BK-9q6z.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DfjzsUJT.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B4v9psJ4.js","snippetPresets-CpTQv-Ez.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-Buji1S4J.js","ApiExamples-BNP-Fvr0.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BSgu6h1D.js","shallow-Biv1i9Gs.js","getApiPlaygroundDisplay-BoGOXhtF.js","CodeSnippet-DvQoT18_.js","CodeSnippets-Dnpa15xT.js","getPastedJson-xAIyhUFE.js","icon-S6FBih11.js","MethodPill-SaYeUZyk.js","DuplicateIcon-Cs-p3v2Q.js","createIcon-DjCFEoHq.js","DynamicMarkdown-BcnBltEQ.js","SectionHeading-BUBl0eEF.js","axios-vUo_bRtp.js","Markdown-h4cOoD8d.js","AssistantPageLink-BHrrjR1K.js"]}