Read the latest or an exact historical approved policy for a specified contract type and policy id.
Access
Requires app_topolo_contracts.workspace:read and the intended authenticated organization and workspace. Select the permitted workspace through the supported resource-binding flow; do not add a workspace id to strict action input.
Steps
- Choose a supported contractType and discovered policyId; omission selects default.
- Supply version to read that exact immutable revision; omission reads the latest approved stored revision for that identity.
- Compare returned policyId/version and approval metadata before selecting it for a new upload.
Identifiers
- Discover upload choices using policies.list. Existing intake/review metadata identifies the captured historical policy version.
Request
GET /api/policy
Action: app_topolo_contracts.policy.get.
contractType: required, one ofmutual_nda,customer_order_form,custom_contract.policyId: optional.version: optional, integer.
Response and effects
- Reads/decrypts one policy; the handler returns policy:null when no matching row exists. It does not approve a template or change a captured review snapshot.
- A historical/latest read is not the same as the non-retired upload-choice list; validate current upload eligibility separately.
- The version query is numeric in the action input; transport mapping must retain the requested exact revision. A null policy is distinct from dependency refusal.
Examples
Example request and response
Request input:
{
"contractType": "mutual_nda",
"policyId": "default",
"version": 1
}
Illustrated response:
{
"policy": {
"policyId": "default",
"contractType": "mutual_nda",
"version": 1,
"confidentialityYears": 3,
"governingLaw": "England and Wales",
"approvedBy": "user_documentation_fixture",
"approvedAt": "2026-10-21T00:00:00.000Z"
}
}
HTTP 200 illustration. Hypothetical authorized operation only; inspect the action-specific fields and boundaries below.
Invalid input: stop before sending
The body deliberately names a contract type outside the supported enum.
{
"contractType": "unsupported_type",
"policyId": "default",
"version": 1
}
The action input schema rejects this value before a request is sent. The reviewed raw GET handler defines 400 invalid_contract_type when its parsed query fails. No raw request or response is observed.
Refusal or dependency failure
If: The workspace grant and storage binding are present, but protection readiness or protected-database initialization fails before the action handler runs.
Request input:
{
"contractType": "mutual_nda",
"policyId": "default",
"version": 1
}
Source error-code excerpt (HTTP 503):
{
"error": "contracts_protection_unavailable"
}
Preserve the dependency refusal; it is not a null policy result.
No matching policy revision
Request input:
{
"contractType": "mutual_nda",
"policyId": "default",
"version": 999
}
Illustrated response:
{
"policy": null
}
HTTP 200 illustration. A hypothetical successful read found no matching row; it does not authorize policy approval.
Verify the result
- Check returned type/id/version and captured approver/time; policy:null must not be substituted with default template values.
Recovery
- 400
invalid_contract_type: Correct the contract type, policy identity and numeric revision input. - 503
contracts_protection_unavailable: Preserve the dependency refusal; it is not a null policy result. - 401
authentication_required: Outer authentication/authorization contract: Authenticate again or provide a valid Topolo API key. Reconcile uncertain earlier write effects before any retry. - 403
permission_denied: Outer authentication/authorization contract: Grant the credential permission workspace:read and the required resource binding. Reconcile uncertain earlier write effects before any retry. - 429
rate_limited: Outer authentication/authorization contract: Wait for Retry-After when present, then retry without parallel duplicate calls. Reconcile uncertain earlier write effects before any retry.
Read-only. Re-read selection and current eligibility after a conflict; never replace a requested historical revision with latest silently.
Source and example limits — 21 October 2026: based on reviewed Contracts source 4bfd49a; current serving association is unverified. All requests, responses, approvals and document specimens shown are fictional and unrun. Offline schema/ZIP/XML checks do not prove application acceptance, legal completeness, provider outcomes or human approval.