contracts.create
What it does
Bind a template document or inline template to actual parties, resolved terms and native ledgers. This creates a draft and no cash, shares or commitments. It freezes activity versions and retains source document relations. Missing required terms and incompatible shared ledgers are rejected.
Before you send it
An authorized OAuth connection may call it, including a headless client. Effective membership, application grant and token permissions still apply. Describe contracts.create through GET /v1/catalog/commands/{name} before acting.
The envelope may reference a registered source document of kind contract, template, source_document; this is separate from any evidence required by the input.
Inputs
Put these fields inside the envelope’s input object. The outer envelope names the command, a stable idempotency_key and effective_at; request and recovery rules explain those separately. Use exact minor-unit integer strings for monetary fields. Take existing IDs from prior reads or command results; choose a new identity only where the command asks for one.
Required means required within its containing object; an optional parent can be omitted.
| Field | Type | Required | Meaning and accepted values |
|---|---|---|---|
classification | object | No | |
lifecycle | object | No | |
lifecycle.term | object | Yes | |
lifecycle.term.index | integer | Yes | Minimum: 1. Maximum: 9007199254740991. |
lifecycle.term.startsOn | string | Yes | Format: date. Minimum length: 1. Pattern: "^\\d{4}-\\d{2}-\\d{2}$". |
lifecycle.term.endsOn | string | No | Format: date. Minimum length: 1. Pattern: "^\\d{4}-\\d{2}-\\d{2}$". |
lifecycle.term.rolling | schema-defined | No | Choose a matching alternative in the exact schema below. |
lifecycle.atTermEnd | string | Yes | Choose "renew", "evergreen", "end", "renew_once". |
lifecycle.renewal | object | No | |
lifecycle.renewal.length | schema-defined | No | Choose a matching alternative in the exact schema below. |
lifecycle.renewal.price | schema-defined | Yes | Choose a matching alternative in the exact schema below. |
lifecycle.notice | object | Yes | |
lifecycle.notice.days | integer | Yes | Minimum: 0. Maximum: 366. |
lifecycle.notice.basis | string | Yes | Choose "calendar", "weekdays". |
lifecycle.notice.remindDaysBefore | integer | No | Minimum: 0. Maximum: 366. |
lifecycle.cancellation | object | No | |
lifecycle.cancellation.windows | array | Yes | Items: object. Minimum items: 0. Maximum items: 20. |
lifecycle.cancellation.windows[].from | string | Yes | Choose "term_start", "term_end". |
lifecycle.cancellation.windows[].days | integer | Yes | Minimum: 0. Maximum: 366. |
lifecycle.cancellation.onlyInWindows | boolean | No | Must be true. |
lifecycle.cancellation.otherwise | schema-defined | Yes | Choose a matching alternative in the exact schema below. |
lifecycle.changes | object | No | |
lifecycle.changes.termsChange | schema-defined | No | Choose a matching alternative in the exact schema below. |
lifecycle.changes.priceChange | schema-defined | No | Choose a matching alternative in the exact schema below. |
agreements | object | No | |
agreements.changes | object | No | |
agreements.changes.termsChange | schema-defined | No | Choose a matching alternative in the exact schema below. |
agreements.changes.priceChange | schema-defined | No | Choose a matching alternative in the exact schema below. |
agreements.refs | array | Yes | Items: object. Minimum items: 1. Maximum items: 20. |
agreements.refs[].key | string | Yes | Minimum length: 1. |
agreements.refs[].role | string | Yes | Choose "agreement", "order_form", "schedule", "policy". |
agreements.refs[].url | string | Yes | Format: uri. Minimum length: 1. Maximum length: 2048. |
agreements.refs[].label | string | No | Minimum length: 1. |
agreements.refs[].cid | string | No | Minimum length: 1. |
agreements.refs[].method | object | Yes | |
agreements.refs[].method.kind | string | Yes | Choose "pdf", "markdown", "html", "html_blanked", "html_extract", "embedded_json", "api_json", "text_render", "unstable". |
agreements.refs[].method.command | string | No | Minimum length: 1. Maximum length: 1000. |
agreements.refs[].seenAt | string | Yes | Format: date. Minimum length: 1. Pattern: "^\\d{4}-\\d{2}-\\d{2}$". |
agreements.refs[].history | string | No | Choose "vendor_archive", "git", "wayback". |
agreements.refs[].catalog | object | No | |
agreements.refs[].catalog.cid | string | Yes | Minimum length: 1. |
agreements.refs[].documentId | string | No | Minimum length: 1. |
agreements.precedence | object | Yes | |
agreements.precedence.stated | boolean | Yes | |
agreements.precedence.order | array | No | Items: string. Minimum items: 0. Maximum items: 20. |
agreements.precedence.orderFormWinsOn | array | No | Items: string. Minimum items: 0. Maximum items: 20. |
paymentTerms | object | No | |
paymentTerms.statementClosingDay | integer | No | Minimum: 1. Maximum: 31. |
paymentTerms.paymentDueDay | integer | No | Minimum: 1. Maximum: 31. |
paymentTerms.autopay | boolean | No | Whether the issuer is instructed to collect automatically from the paying account. |
paymentTerms.payingAccountId | string | No | Registered payment account; omit to clear the default. Minimum length: 1. |
templateDocumentId | string | No | Minimum length: 1. Example: "doc_template". |
definition | object | No | |
definition.vendorPlan | object | No | |
definition.vendorPlan.catalog | string | No | |
definition.vendorPlan.cid | string | Yes | |
definition.vendorPlan.template | string | Yes | |
definition.vendorPlan.relation | string | Yes | Choose "adopted", "derived". |
definition.lifecycle | object | No | |
definition.lifecycle.term | object | Yes | |
definition.lifecycle.term.index | integer | Yes | Minimum: 1. Maximum: 9007199254740991. |
definition.lifecycle.term.startsOn | string | Yes | Format: date. Minimum length: 1. Pattern: "^\\d{4}-\\d{2}-\\d{2}$". |
definition.lifecycle.term.endsOn | string | No | Format: date. Minimum length: 1. Pattern: "^\\d{4}-\\d{2}-\\d{2}$". |
definition.lifecycle.term.rolling | schema-defined | No | Choose a matching alternative in the exact schema below. |
definition.lifecycle.atTermEnd | string | Yes | Choose "renew", "evergreen", "end", "renew_once". |
definition.lifecycle.renewal | object | No | |
definition.lifecycle.renewal.length | schema-defined | No | Choose a matching alternative in the exact schema below. |
definition.lifecycle.renewal.price | schema-defined | Yes | Choose a matching alternative in the exact schema below. |
definition.lifecycle.notice | object | Yes | |
definition.lifecycle.notice.days | integer | Yes | Minimum: 0. Maximum: 366. |
definition.lifecycle.notice.basis | string | Yes | Choose "calendar", "weekdays". |
definition.lifecycle.notice.remindDaysBefore | integer | No | Minimum: 0. Maximum: 366. |
definition.lifecycle.cancellation | object | No | |
definition.lifecycle.cancellation.windows | array | Yes | Items: object. Minimum items: 0. Maximum items: 20. |
definition.lifecycle.cancellation.windows[].from | string | Yes | Choose "term_start", "term_end". |
definition.lifecycle.cancellation.windows[].days | integer | Yes | Minimum: 0. Maximum: 366. |
definition.lifecycle.cancellation.onlyInWindows | boolean | No | Must be true. |
definition.lifecycle.cancellation.otherwise | schema-defined | Yes | Choose a matching alternative in the exact schema below. |
definition.lifecycle.changes | object | No | |
definition.lifecycle.changes.termsChange | schema-defined | No | Choose a matching alternative in the exact schema below. |
definition.lifecycle.changes.priceChange | schema-defined | No | Choose a matching alternative in the exact schema below. |
definition.agreements | object | No | |
definition.agreements.changes | object | No | |
definition.agreements.changes.termsChange | schema-defined | No | Choose a matching alternative in the exact schema below. |
definition.agreements.changes.priceChange | schema-defined | No | Choose a matching alternative in the exact schema below. |
definition.agreements.refs | array | Yes | Items: object. Minimum items: 1. Maximum items: 20. |
definition.agreements.refs[].key | string | Yes | Minimum length: 1. |
definition.agreements.refs[].role | string | Yes | Choose "agreement", "order_form", "schedule", "policy". |
definition.agreements.refs[].url | string | Yes | Format: uri. Minimum length: 1. Maximum length: 2048. |
definition.agreements.refs[].label | string | No | Minimum length: 1. |
definition.agreements.refs[].cid | string | No | Minimum length: 1. |
definition.agreements.refs[].method | object | Yes | |
definition.agreements.refs[].method.kind | string | Yes | Choose "pdf", "markdown", "html", "html_blanked", "html_extract", "embedded_json", "api_json", "text_render", "unstable". |
definition.agreements.refs[].method.command | string | No | Minimum length: 1. Maximum length: 1000. |
definition.agreements.refs[].seenAt | string | Yes | Format: date. Minimum length: 1. Pattern: "^\\d{4}-\\d{2}-\\d{2}$". |
definition.agreements.refs[].history | string | No | Choose "vendor_archive", "git", "wayback". |
definition.agreements.refs[].catalog | object | No | |
definition.agreements.refs[].catalog.cid | string | Yes | Minimum length: 1. |
definition.agreements.refs[].documentId | string | No | Minimum length: 1. |
definition.agreements.precedence | object | Yes | |
definition.agreements.precedence.stated | boolean | Yes | |
definition.agreements.precedence.order | array | No | Items: string. Minimum items: 0. Maximum items: 20. |
definition.agreements.precedence.orderFormWinsOn | array | No | Items: string. Minimum items: 0. Maximum items: 20. |
definition.model | string | Yes | Must be "priced-rights-v1". |
definition.name | string | Yes | Minimum length: 1. |
definition.plan | string | No | Choose "on_sale", "off_sale". |
definition.parties | array | Yes | Items: string. Minimum items: 1. Maximum items: 100. |
definition.partyCategories | object | No | |
definition.ledgers | object | No | |
definition.activities | array | Yes | Items: object. Minimum items: 1. Maximum items: 100. |
definition.activities[].key | string | Yes | Minimum length: 1. |
definition.activities[].activityDocumentId | string | Yes | Minimum length: 1. |
definition.activities[].partyRole | string | Yes | Minimum length: 1. |
definition.activities[].ledgers | object | No | |
definition.activities[].terms | object | No | |
definition.consequences | array | No | Items: object. Minimum items: 0. Maximum items: 100. |
definition.consequences[].key | string | Yes | Minimum length: 1. |
definition.consequences[].sourceRights | array | Yes | Items: string. Minimum items: 1. Maximum items: 100. |
definition.consequences[].rule | schema-defined | Yes | Choose a matching alternative in the exact schema below. |
definition.consequences[].trigger | schema-defined | Yes | Choose a matching alternative in the exact schema below. |
definition.consequences[].evidence | array | Yes | Each item must be "acceptance", "economic", "service". Minimum items: 1. Maximum items: 100. |
definition.creditPools | array | No | Items: object. Minimum items: 1. Maximum items: 20. |
definition.creditPools[].key | string | Yes | Minimum length: 1. |
definition.creditPools[].lots | array | Yes | Items: object. Minimum items: 1. Maximum items: 20. |
definition.creditPools[].lots[].right | string | Yes | Minimum length: 1. |
definition.creditPools[].lots[].eligibleRights | array | Yes | Items: string. Minimum items: 1. Maximum items: 100. |
definition.creditPools[].drawAt | string | Yes | Choose "recognition", "billing". |
definition.creditPools[].drawOrder | array | Yes | Each item must be "expiry", "granted_first", "bought_first", "narrowest_scope", "oldest". Minimum items: 1. Maximum items: 5. |
parties | object | Yes | |
terms | object | No | |
ledgerBindings | object | No | Ledger alias → existing ledger id. Every GAAP alias needs one. A business starts with its selected functional-currency ledger (USD only when omitted at initialization); binding a GAAP alias to another currency’s canonical id (led_ + the zero-padded ISO 4217 numeric code, e.g. led_00000000000000000000000978 for EUR) opens that ledger with this contract, even while it is a draft. |
sourceDocumentIds | array | No | Items: string. Maximum items: 100. |
concession | object | No | A concession offer this contract takes (concessions.create_offer), by offerId or by the code the customer typed: its discount becomes the terms of each right’s concession reduction, from the right’s start for the offer’s months. email is the customer’s address the offer is assigned to, or that its eligibility checks. |
concession.offerId | string | No | Minimum length: 1. |
concession.code | string | No | Minimum length: 1. |
concession.email | string | No | Minimum length: 1. |
After acceptance
When the command emits events, its documented effects and receipt are recorded in the command transaction. The response returns commandId, replayed, the command-specific result below and emitted events with their IDs and CIDs. A command is not automatically a cash movement or revenue recognition: use the behavior above to determine what this command records.
Inspect result and the affected records or reports before continuing. Save returned identifiers for later calls. Fetch GET /v1/commands/{id} with commandId to recover the accepted receipt; retry the same intent with the same idempotency key if the response was lost. Some commands can succeed with events: [] and return a transient result and commandId without persisting a receipt. A lookup of that ID can return null; retain the returned result and verify the affected record. Retrying can re-evaluate the current state rather than replay a stored result. A domain no_change is a separate success outcome with no persisted receipt.
Result fields
Required means required within its containing object; an optional parent can be omitted.
| Field | Type | Required | Meaning and accepted values |
|---|---|---|---|
id | string | Yes | Minimum length: 1. |
documentId | string | Yes | Minimum length: 1. |
cid | string | Yes | Minimum length: 1. |
flags | array | No | Items: string. |
All commands · Operation and errors · Reusable schemas
Keep credentials out of prompts; rehearse writes only in a disposable sandbox.
Exact request schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": {
"const": "contracts.create"
},
"input": {
"type": "object",
"additionalProperties": false,
"properties": {
"classification": {
"type": "object",
"maxProperties": 100,
"additionalProperties": {
"type": "object",
"additionalProperties": false,
"properties": {
"expenseAccount": {
"type": "integer"
},
"expenseFunction": {
"type": "string"
},
"taxCode": {
"type": [
"string",
"null"
]
},
"taxTreatment": {
"enum": [
"exclusive",
"inclusive",
null
]
}
}
}
},
"lifecycle": {
"type": "object",
"additionalProperties": false,
"properties": {
"term": {
"type": "object",
"additionalProperties": false,
"properties": {
"index": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"startsOn": {
"type": "string",
"minLength": 1,
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"endsOn": {
"type": "string",
"minLength": 1,
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"rolling": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"properties": {
"everyMonths": {
"type": "integer",
"minimum": 1,
"maximum": 120
}
},
"required": [
"everyMonths"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"everyDays": {
"type": "integer",
"minimum": 1,
"maximum": 3660
}
},
"required": [
"everyDays"
]
}
]
}
},
"required": [
"index",
"startsOn"
]
},
"atTermEnd": {
"enum": [
"renew",
"evergreen",
"end",
"renew_once"
]
},
"renewal": {
"type": "object",
"additionalProperties": false,
"properties": {
"length": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"properties": {
"everyMonths": {
"type": "integer",
"minimum": 1,
"maximum": 120
}
},
"required": [
"everyMonths"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"everyDays": {
"type": "integer",
"minimum": 1,
"maximum": 3660
}
},
"required": [
"everyDays"
]
}
]
},
"price": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"enum": [
"same",
"list"
]
},
"reducedLosesPrice": {
"type": "object",
"additionalProperties": false,
"properties": {
"quantityTerms": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"right": {
"type": "string",
"minLength": 1
},
"term": {
"type": "string",
"minLength": 1
}
},
"required": [
"right",
"term"
]
},
"maxItems": 100,
"minItems": 1
}
},
"required": [
"quantityTerms"
]
}
},
"required": [
"rule"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "uplift"
},
"bps": {
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"terms": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"right": {
"type": "string",
"minLength": 1
},
"term": {
"type": "string",
"minLength": 1
}
},
"required": [
"right",
"term"
]
},
"maxItems": 100,
"minItems": 1
},
"reducedLosesPrice": {
"type": "object",
"additionalProperties": false,
"properties": {
"quantityTerms": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"right": {
"type": "string",
"minLength": 1
},
"term": {
"type": "string",
"minLength": 1
}
},
"required": [
"right",
"term"
]
},
"maxItems": 100,
"minItems": 1
}
},
"required": [
"quantityTerms"
]
}
},
"required": [
"rule",
"bps",
"terms"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "capped"
},
"bps": {
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"terms": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"right": {
"type": "string",
"minLength": 1
},
"term": {
"type": "string",
"minLength": 1
}
},
"required": [
"right",
"term"
]
},
"maxItems": 100,
"minItems": 1
},
"index": {
"type": "string",
"minLength": 1
},
"uncappedWhen": {
"type": "array",
"items": {
"enum": [
"quantity_reduced",
"term_shortened"
]
},
"maxItems": 2,
"minItems": 0
},
"reducedLosesPrice": {
"type": "object",
"additionalProperties": false,
"properties": {
"quantityTerms": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"right": {
"type": "string",
"minLength": 1
},
"term": {
"type": "string",
"minLength": 1
}
},
"required": [
"right",
"term"
]
},
"maxItems": 100,
"minItems": 1
}
},
"required": [
"quantityTerms"
]
}
},
"required": [
"rule",
"bps",
"terms"
]
}
]
}
},
"required": [
"price"
]
},
"notice": {
"type": "object",
"additionalProperties": false,
"properties": {
"days": {
"type": "integer",
"minimum": 0,
"maximum": 366
},
"basis": {
"enum": [
"calendar",
"weekdays"
]
},
"remindDaysBefore": {
"type": "integer",
"minimum": 0,
"maximum": 366
}
},
"required": [
"days",
"basis"
]
},
"cancellation": {
"type": "object",
"additionalProperties": false,
"properties": {
"windows": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"from": {
"enum": [
"term_start",
"term_end"
]
},
"days": {
"type": "integer",
"minimum": 0,
"maximum": 366
}
},
"required": [
"from",
"days"
]
},
"maxItems": 20,
"minItems": 0
},
"onlyInWindows": {
"const": true
},
"otherwise": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "none"
}
},
"required": [
"type"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "fee"
},
"right": {
"type": "string",
"minLength": 1
}
},
"required": [
"type",
"right"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "accelerate"
},
"rights": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"maxItems": 100,
"minItems": 1
}
},
"required": [
"type",
"rights"
]
}
]
}
},
"required": [
"windows",
"otherwise"
]
},
"changes": {
"type": "object",
"additionalProperties": false,
"properties": {
"termsChange": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "on_posting"
},
"from": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "after_notice"
},
"from": {
"type": "string",
"minLength": 1
},
"noticeDays": {
"type": "integer",
"minimum": 0,
"maximum": 366
}
},
"required": [
"rule",
"noticeDays"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "next_term"
},
"from": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "at_renewal"
},
"from": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "locked_to_order"
},
"from": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "objection_until_renewal"
},
"from": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule"
]
}
]
},
"priceChange": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "no_notice"
},
"from": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "after_notice"
},
"from": {
"type": "string",
"minLength": 1
},
"noticeDays": {
"type": "integer",
"minimum": 0,
"maximum": 366
}
},
"required": [
"rule",
"noticeDays"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "held_for_paid_term"
},
"from": {
"type": "string",
"minLength": 1
},
"noticeDays": {
"type": "integer",
"minimum": 0,
"maximum": 366
}
},
"required": [
"rule",
"noticeDays"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "at_renewal"
},
"from": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "capped_at_renewal"
},
"from": {
"type": "string",
"minLength": 1
},
"capPpm": {
"type": "integer",
"minimum": 0,
"maximum": 10000000
},
"index": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule",
"capPpm"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "mid_term_credit"
},
"from": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule"
]
}
]
}
},
"required": []
}
},
"required": [
"term",
"atTermEnd",
"notice"
]
},
"agreements": {
"type": "object",
"additionalProperties": false,
"properties": {
"changes": {
"type": "object",
"additionalProperties": false,
"properties": {
"termsChange": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "on_posting"
},
"from": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "after_notice"
},
"from": {
"type": "string",
"minLength": 1
},
"noticeDays": {
"type": "integer",
"minimum": 0,
"maximum": 366
}
},
"required": [
"rule",
"noticeDays"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "next_term"
},
"from": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "at_renewal"
},
"from": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "locked_to_order"
},
"from": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "objection_until_renewal"
},
"from": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule"
]
}
]
},
"priceChange": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "no_notice"
},
"from": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "after_notice"
},
"from": {
"type": "string",
"minLength": 1
},
"noticeDays": {
"type": "integer",
"minimum": 0,
"maximum": 366
}
},
"required": [
"rule",
"noticeDays"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "held_for_paid_term"
},
"from": {
"type": "string",
"minLength": 1
},
"noticeDays": {
"type": "integer",
"minimum": 0,
"maximum": 366
}
},
"required": [
"rule",
"noticeDays"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "at_renewal"
},
"from": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "capped_at_renewal"
},
"from": {
"type": "string",
"minLength": 1
},
"capPpm": {
"type": "integer",
"minimum": 0,
"maximum": 10000000
},
"index": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule",
"capPpm"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "mid_term_credit"
},
"from": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule"
]
}
]
}
},
"required": []
},
"refs": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"key": {
"type": "string",
"minLength": 1
},
"role": {
"enum": [
"agreement",
"order_form",
"schedule",
"policy"
]
},
"url": {
"type": "string",
"minLength": 1,
"format": "uri",
"maxLength": 2048
},
"label": {
"type": "string",
"minLength": 1
},
"cid": {
"type": "string",
"minLength": 1
},
"method": {
"type": "object",
"additionalProperties": false,
"properties": {
"kind": {
"enum": [
"pdf",
"markdown",
"html",
"html_blanked",
"html_extract",
"embedded_json",
"api_json",
"text_render",
"unstable"
]
},
"command": {
"type": "string",
"minLength": 1,
"maxLength": 1000
}
},
"required": [
"kind"
]
},
"seenAt": {
"type": "string",
"minLength": 1,
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"history": {
"enum": [
"vendor_archive",
"git",
"wayback"
]
},
"catalog": {
"type": "object",
"additionalProperties": false,
"properties": {
"cid": {
"type": "string",
"minLength": 1
}
},
"required": [
"cid"
]
},
"documentId": {
"type": "string",
"minLength": 1
}
},
"required": [
"key",
"role",
"url",
"method",
"seenAt"
]
},
"maxItems": 20,
"minItems": 1
},
"precedence": {
"type": "object",
"additionalProperties": false,
"properties": {
"stated": {
"type": "boolean"
},
"order": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"maxItems": 20,
"minItems": 0
},
"orderFormWinsOn": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"maxItems": 20,
"minItems": 0
}
},
"required": [
"stated"
]
}
},
"required": [
"refs",
"precedence"
]
},
"paymentTerms": {
"type": "object",
"additionalProperties": false,
"properties": {
"statementClosingDay": {
"type": "integer",
"minimum": 1,
"maximum": 31
},
"paymentDueDay": {
"type": "integer",
"minimum": 1,
"maximum": 31
},
"autopay": {
"type": "boolean",
"description": "Whether the issuer is instructed to collect automatically from the paying account."
},
"payingAccountId": {
"type": "string",
"minLength": 1,
"description": "Registered payment account; omit to clear the default."
}
}
},
"templateDocumentId": {
"type": "string",
"minLength": 1
},
"definition": {
"type": "object",
"additionalProperties": false,
"properties": {
"vendorPlan": {
"type": "object",
"additionalProperties": false,
"properties": {
"catalog": {
"type": "string"
},
"cid": {
"type": "string"
},
"template": {
"type": "string"
},
"relation": {
"enum": [
"adopted",
"derived"
]
}
},
"required": [
"cid",
"template",
"relation"
]
},
"lifecycle": {
"type": "object",
"additionalProperties": false,
"properties": {
"term": {
"type": "object",
"additionalProperties": false,
"properties": {
"index": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"startsOn": {
"type": "string",
"minLength": 1,
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"endsOn": {
"type": "string",
"minLength": 1,
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"rolling": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"properties": {
"everyMonths": {
"type": "integer",
"minimum": 1,
"maximum": 120
}
},
"required": [
"everyMonths"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"everyDays": {
"type": "integer",
"minimum": 1,
"maximum": 3660
}
},
"required": [
"everyDays"
]
}
]
}
},
"required": [
"index",
"startsOn"
]
},
"atTermEnd": {
"enum": [
"renew",
"evergreen",
"end",
"renew_once"
]
},
"renewal": {
"type": "object",
"additionalProperties": false,
"properties": {
"length": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"properties": {
"everyMonths": {
"type": "integer",
"minimum": 1,
"maximum": 120
}
},
"required": [
"everyMonths"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"everyDays": {
"type": "integer",
"minimum": 1,
"maximum": 3660
}
},
"required": [
"everyDays"
]
}
]
},
"price": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"enum": [
"same",
"list"
]
},
"reducedLosesPrice": {
"type": "object",
"additionalProperties": false,
"properties": {
"quantityTerms": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"right": {
"type": "string",
"minLength": 1
},
"term": {
"type": "string",
"minLength": 1
}
},
"required": [
"right",
"term"
]
},
"maxItems": 100,
"minItems": 1
}
},
"required": [
"quantityTerms"
]
}
},
"required": [
"rule"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "uplift"
},
"bps": {
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"terms": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"right": {
"type": "string",
"minLength": 1
},
"term": {
"type": "string",
"minLength": 1
}
},
"required": [
"right",
"term"
]
},
"maxItems": 100,
"minItems": 1
},
"reducedLosesPrice": {
"type": "object",
"additionalProperties": false,
"properties": {
"quantityTerms": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"right": {
"type": "string",
"minLength": 1
},
"term": {
"type": "string",
"minLength": 1
}
},
"required": [
"right",
"term"
]
},
"maxItems": 100,
"minItems": 1
}
},
"required": [
"quantityTerms"
]
}
},
"required": [
"rule",
"bps",
"terms"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "capped"
},
"bps": {
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"terms": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"right": {
"type": "string",
"minLength": 1
},
"term": {
"type": "string",
"minLength": 1
}
},
"required": [
"right",
"term"
]
},
"maxItems": 100,
"minItems": 1
},
"index": {
"type": "string",
"minLength": 1
},
"uncappedWhen": {
"type": "array",
"items": {
"enum": [
"quantity_reduced",
"term_shortened"
]
},
"maxItems": 2,
"minItems": 0
},
"reducedLosesPrice": {
"type": "object",
"additionalProperties": false,
"properties": {
"quantityTerms": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"right": {
"type": "string",
"minLength": 1
},
"term": {
"type": "string",
"minLength": 1
}
},
"required": [
"right",
"term"
]
},
"maxItems": 100,
"minItems": 1
}
},
"required": [
"quantityTerms"
]
}
},
"required": [
"rule",
"bps",
"terms"
]
}
]
}
},
"required": [
"price"
]
},
"notice": {
"type": "object",
"additionalProperties": false,
"properties": {
"days": {
"type": "integer",
"minimum": 0,
"maximum": 366
},
"basis": {
"enum": [
"calendar",
"weekdays"
]
},
"remindDaysBefore": {
"type": "integer",
"minimum": 0,
"maximum": 366
}
},
"required": [
"days",
"basis"
]
},
"cancellation": {
"type": "object",
"additionalProperties": false,
"properties": {
"windows": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"from": {
"enum": [
"term_start",
"term_end"
]
},
"days": {
"type": "integer",
"minimum": 0,
"maximum": 366
}
},
"required": [
"from",
"days"
]
},
"maxItems": 20,
"minItems": 0
},
"onlyInWindows": {
"const": true
},
"otherwise": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "none"
}
},
"required": [
"type"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "fee"
},
"right": {
"type": "string",
"minLength": 1
}
},
"required": [
"type",
"right"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "accelerate"
},
"rights": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"maxItems": 100,
"minItems": 1
}
},
"required": [
"type",
"rights"
]
}
]
}
},
"required": [
"windows",
"otherwise"
]
},
"changes": {
"type": "object",
"additionalProperties": false,
"properties": {
"termsChange": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "on_posting"
},
"from": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "after_notice"
},
"from": {
"type": "string",
"minLength": 1
},
"noticeDays": {
"type": "integer",
"minimum": 0,
"maximum": 366
}
},
"required": [
"rule",
"noticeDays"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "next_term"
},
"from": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "at_renewal"
},
"from": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "locked_to_order"
},
"from": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "objection_until_renewal"
},
"from": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule"
]
}
]
},
"priceChange": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "no_notice"
},
"from": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "after_notice"
},
"from": {
"type": "string",
"minLength": 1
},
"noticeDays": {
"type": "integer",
"minimum": 0,
"maximum": 366
}
},
"required": [
"rule",
"noticeDays"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "held_for_paid_term"
},
"from": {
"type": "string",
"minLength": 1
},
"noticeDays": {
"type": "integer",
"minimum": 0,
"maximum": 366
}
},
"required": [
"rule",
"noticeDays"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "at_renewal"
},
"from": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "capped_at_renewal"
},
"from": {
"type": "string",
"minLength": 1
},
"capPpm": {
"type": "integer",
"minimum": 0,
"maximum": 10000000
},
"index": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule",
"capPpm"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "mid_term_credit"
},
"from": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule"
]
}
]
}
},
"required": []
}
},
"required": [
"term",
"atTermEnd",
"notice"
]
},
"agreements": {
"type": "object",
"additionalProperties": false,
"properties": {
"changes": {
"type": "object",
"additionalProperties": false,
"properties": {
"termsChange": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "on_posting"
},
"from": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "after_notice"
},
"from": {
"type": "string",
"minLength": 1
},
"noticeDays": {
"type": "integer",
"minimum": 0,
"maximum": 366
}
},
"required": [
"rule",
"noticeDays"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "next_term"
},
"from": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "at_renewal"
},
"from": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "locked_to_order"
},
"from": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "objection_until_renewal"
},
"from": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule"
]
}
]
},
"priceChange": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "no_notice"
},
"from": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "after_notice"
},
"from": {
"type": "string",
"minLength": 1
},
"noticeDays": {
"type": "integer",
"minimum": 0,
"maximum": 366
}
},
"required": [
"rule",
"noticeDays"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "held_for_paid_term"
},
"from": {
"type": "string",
"minLength": 1
},
"noticeDays": {
"type": "integer",
"minimum": 0,
"maximum": 366
}
},
"required": [
"rule",
"noticeDays"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "at_renewal"
},
"from": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "capped_at_renewal"
},
"from": {
"type": "string",
"minLength": 1
},
"capPpm": {
"type": "integer",
"minimum": 0,
"maximum": 10000000
},
"index": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule",
"capPpm"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"rule": {
"const": "mid_term_credit"
},
"from": {
"type": "string",
"minLength": 1
}
},
"required": [
"rule"
]
}
]
}
},
"required": []
},
"refs": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"key": {
"type": "string",
"minLength": 1
},
"role": {
"enum": [
"agreement",
"order_form",
"schedule",
"policy"
]
},
"url": {
"type": "string",
"minLength": 1,
"format": "uri",
"maxLength": 2048
},
"label": {
"type": "string",
"minLength": 1
},
"cid": {
"type": "string",
"minLength": 1
},
"method": {
"type": "object",
"additionalProperties": false,
"properties": {
"kind": {
"enum": [
"pdf",
"markdown",
"html",
"html_blanked",
"html_extract",
"embedded_json",
"api_json",
"text_render",
"unstable"
]
},
"command": {
"type": "string",
"minLength": 1,
"maxLength": 1000
}
},
"required": [
"kind"
]
},
"seenAt": {
"type": "string",
"minLength": 1,
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"history": {
"enum": [
"vendor_archive",
"git",
"wayback"
]
},
"catalog": {
"type": "object",
"additionalProperties": false,
"properties": {
"cid": {
"type": "string",
"minLength": 1
}
},
"required": [
"cid"
]
},
"documentId": {
"type": "string",
"minLength": 1
}
},
"required": [
"key",
"role",
"url",
"method",
"seenAt"
]
},
"maxItems": 20,
"minItems": 1
},
"precedence": {
"type": "object",
"additionalProperties": false,
"properties": {
"stated": {
"type": "boolean"
},
"order": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"maxItems": 20,
"minItems": 0
},
"orderFormWinsOn": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"maxItems": 20,
"minItems": 0
}
},
"required": [
"stated"
]
}
},
"required": [
"refs",
"precedence"
]
},
"model": {
"const": "priced-rights-v1"
},
"name": {
"type": "string",
"minLength": 1
},
"plan": {
"enum": [
"on_sale",
"off_sale"
]
},
"parties": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"minItems": 1,
"maxItems": 100
},
"partyCategories": {
"type": "object",
"maxProperties": 100,
"additionalProperties": {
"type": "array",
"items": {
"enum": [
"customer",
"vendor",
"founder",
"investor",
"provider",
"employee"
]
},
"minItems": 0,
"maxItems": 6
}
},
"ledgers": {
"type": "object",
"maxProperties": 100,
"additionalProperties": {
"type": "object",
"additionalProperties": false,
"properties": {
"classification": {
"enum": [
"gaap",
"contractual",
"operational",
"ownership",
"planning"
]
},
"unitKind": {
"enum": [
"currency",
"share",
"usage",
"credit",
"right",
"token",
"other"
]
},
"unitCode": {
"type": "string",
"minLength": 1
},
"decimals": {
"type": "integer",
"minimum": 0,
"maximum": 18
},
"accountTemplate": {
"enum": [
"gaap_startup",
"contract_flow",
"capacity",
"meter",
"entitlement",
"issued_instrument"
]
}
},
"required": [
"classification",
"unitKind",
"unitCode",
"decimals",
"accountTemplate"
]
}
},
"activities": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"key": {
"type": "string",
"minLength": 1
},
"activityDocumentId": {
"type": "string",
"minLength": 1
},
"partyRole": {
"type": "string",
"minLength": 1
},
"ledgers": {
"type": "object",
"maxProperties": 100,
"additionalProperties": {
"type": "string",
"minLength": 1
}
},
"terms": {
"type": "object",
"maxProperties": 100,
"additionalProperties": {
"type": "string",
"minLength": 1
}
}
},
"required": [
"key",
"activityDocumentId",
"partyRole"
]
},
"minItems": 1,
"maxItems": 100
},
"consequences": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"key": {
"type": "string",
"minLength": 1
},
"sourceRights": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"minItems": 1,
"maxItems": 100
},
"rule": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "grant_capacity"
},
"capacityLedger": {
"type": "string",
"minLength": 1
},
"quantity": {
"type": "string",
"pattern": "^(term|fact):[a-zA-Z][a-zA-Z0-9_-]{0,63}$"
},
"expiresAtTerm": {
"type": "string",
"minLength": 1
}
},
"required": [
"type",
"capacityLedger",
"quantity",
"expiresAtTerm"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "consume_capacity"
},
"capacityLedger": {
"type": "string",
"minLength": 1
},
"quantity": {
"type": "string",
"pattern": "^(term|fact):[a-zA-Z][a-zA-Z0-9_-]{0,63}$"
},
"grantOccurrenceFact": {
"type": "string",
"minLength": 1
},
"overageRight": {
"type": "string",
"minLength": 1
}
},
"required": [
"type",
"capacityLedger",
"quantity",
"grantOccurrenceFact"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "expire_capacity"
},
"capacityLedger": {
"type": "string",
"minLength": 1
},
"valueLedger": {
"type": "string",
"minLength": 1
}
},
"required": [
"type",
"capacityLedger"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "minimum"
},
"eligibleRights": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"minItems": 1,
"maxItems": 100
},
"minimum": {
"type": "string",
"pattern": "^(term|fact):[a-zA-Z][a-zA-Z0-9_-]{0,63}$"
},
"currencyTerm": {
"type": "string",
"minLength": 1
},
"completeThroughFact": {
"type": "string",
"minLength": 1
}
},
"required": [
"type",
"eligibleRights",
"minimum",
"currencyTerm",
"completeThroughFact"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "refund_unearned"
},
"monetaryLedger": {
"type": "string",
"minLength": 1
},
"amount": {
"type": "string",
"pattern": "^(term|fact):[a-zA-Z][a-zA-Z0-9_-]{0,63}$"
},
"taxClaimFact": {
"type": "string",
"minLength": 1
}
},
"required": [
"type",
"monetaryLedger",
"amount"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "profit_allocation"
},
"result": {
"enum": [
"profit",
"loss"
]
},
"monetaryLedger": {
"type": "string",
"minLength": 1
},
"ownershipLedger": {
"type": "string",
"minLength": 1
},
"amount": {
"type": "string",
"pattern": "^(term|fact):[a-zA-Z][a-zA-Z0-9_-]{0,63}$"
},
"completeThroughFact": {
"type": "string",
"minLength": 1
}
},
"required": [
"type",
"monetaryLedger",
"ownershipLedger",
"amount",
"completeThroughFact"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "profit_allocation"
},
"result": {
"enum": [
"profit",
"loss"
]
},
"monetaryLedger": {
"type": "string",
"minLength": 1
},
"ownershipBasis": {
"const": "agreement"
},
"amount": {
"type": "string",
"pattern": "^(term|fact):[a-zA-Z][a-zA-Z0-9_-]{0,63}$"
},
"completeThroughFact": {
"type": "string",
"minLength": 1
}
},
"required": [
"type",
"monetaryLedger",
"ownershipBasis",
"amount",
"completeThroughFact"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "close_draws"
},
"monetaryLedger": {
"type": "string",
"minLength": 1
},
"completeThroughFact": {
"type": "string",
"minLength": 1
}
},
"required": [
"type",
"monetaryLedger",
"completeThroughFact"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "authorize_units"
},
"unitsLedger": {
"type": "string",
"minLength": 1
},
"quantity": {
"type": "string",
"pattern": "^(term|fact):[a-zA-Z][a-zA-Z0-9_-]{0,63}$"
}
},
"required": [
"type",
"unitsLedger",
"quantity"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "issue_units"
},
"capitalAllocation": {
"type": "object",
"additionalProperties": false,
"properties": {
"shareCapital": {
"type": "string",
"pattern": "^(term|fact):[a-zA-Z][a-zA-Z0-9_-]{0,63}$"
},
"sharePremium": {
"type": "string",
"pattern": "^(term|fact):[a-zA-Z][a-zA-Z0-9_-]{0,63}$"
}
},
"required": [
"shareCapital",
"sharePremium"
]
},
"unitsLedger": {
"type": "string",
"minLength": 1
},
"quantity": {
"type": "string",
"pattern": "^(term|fact):[a-zA-Z][a-zA-Z0-9_-]{0,63}$"
},
"consideration": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "money"
},
"amount": {
"type": "string",
"pattern": "^(term|fact):[a-zA-Z][a-zA-Z0-9_-]{0,63}$"
},
"currencyTerm": {
"type": "string",
"minLength": 1
},
"recognition": {
"enum": [
"unconditional_obligation",
"condition_satisfied"
]
}
},
"required": [
"type",
"amount",
"currencyTerm",
"recognition"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "units"
},
"quantity": {
"type": "string",
"pattern": "^(term|fact):[a-zA-Z][a-zA-Z0-9_-]{0,63}$"
},
"ledger": {
"type": "string",
"minLength": 1
}
},
"required": [
"type",
"quantity",
"ledger"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "claim"
},
"claimFact": {
"type": "string",
"minLength": 1
},
"amount": {
"type": "string",
"pattern": "^(term|fact):[a-zA-Z][a-zA-Z0-9_-]{0,63}$"
},
"currencyTerm": {
"type": "string",
"minLength": 1
}
},
"required": [
"type",
"claimFact",
"amount",
"currencyTerm"
]
}
]
},
"restricted": {
"type": "boolean"
}
},
"required": [
"type",
"unitsLedger",
"quantity",
"consideration",
"restricted"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "capital_contribution"
},
"consideration": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "money"
},
"amount": {
"type": "string",
"pattern": "^(term|fact):[a-zA-Z][a-zA-Z0-9_-]{0,63}$"
},
"currencyTerm": {
"type": "string",
"minLength": 1
},
"recognition": {
"enum": [
"unconditional_obligation",
"condition_satisfied"
]
}
},
"required": [
"type",
"amount",
"currencyTerm",
"recognition"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "units"
},
"quantity": {
"type": "string",
"pattern": "^(term|fact):[a-zA-Z][a-zA-Z0-9_-]{0,63}$"
},
"ledger": {
"type": "string",
"minLength": 1
}
},
"required": [
"type",
"quantity",
"ledger"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "claim"
},
"claimFact": {
"type": "string",
"minLength": 1
},
"amount": {
"type": "string",
"pattern": "^(term|fact):[a-zA-Z][a-zA-Z0-9_-]{0,63}$"
},
"currencyTerm": {
"type": "string",
"minLength": 1
}
},
"required": [
"type",
"claimFact",
"amount",
"currencyTerm"
]
}
]
}
},
"required": [
"type",
"consideration"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "financing_commitment"
},
"consideration": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "money"
},
"amount": {
"type": "string",
"pattern": "^(term|fact):[a-zA-Z][a-zA-Z0-9_-]{0,63}$"
},
"currencyTerm": {
"type": "string",
"minLength": 1
},
"recognition": {
"enum": [
"unconditional_obligation",
"condition_satisfied"
]
}
},
"required": [
"type",
"amount",
"currencyTerm",
"recognition"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "units"
},
"quantity": {
"type": "string",
"pattern": "^(term|fact):[a-zA-Z][a-zA-Z0-9_-]{0,63}$"
},
"ledger": {
"type": "string",
"minLength": 1
}
},
"required": [
"type",
"quantity",
"ledger"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "claim"
},
"claimFact": {
"type": "string",
"minLength": 1
},
"amount": {
"type": "string",
"pattern": "^(term|fact):[a-zA-Z][a-zA-Z0-9_-]{0,63}$"
},
"currencyTerm": {
"type": "string",
"minLength": 1
}
},
"required": [
"type",
"claimFact",
"amount",
"currencyTerm"
]
}
]
},
"liability": {
"const": "owner_advance"
}
},
"required": [
"type",
"consideration"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "capital_distribution"
},
"amount": {
"type": "string",
"pattern": "^(term|fact):[a-zA-Z][a-zA-Z0-9_-]{0,63}$"
}
},
"required": [
"type",
"amount"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "owner_draw"
},
"amount": {
"type": "string",
"pattern": "^(term|fact):[a-zA-Z][a-zA-Z0-9_-]{0,63}$"
}
},
"required": [
"type",
"amount"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "vest_units"
},
"unitsLedger": {
"type": "string",
"minLength": 1
},
"quantity": {
"type": "string",
"pattern": "^(term|fact):[a-zA-Z][a-zA-Z0-9_-]{0,63}$"
},
"grantOccurrenceFact": {
"type": "string",
"minLength": 1
}
},
"required": [
"type",
"unitsLedger",
"quantity",
"grantOccurrenceFact"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "vest_units"
},
"unitsLedger": {
"type": "string",
"minLength": 1
},
"quantity": {
"type": "string",
"pattern": "^(term|fact):[a-zA-Z][a-zA-Z0-9_-]{0,63}$"
},
"grantConsequence": {
"type": "string",
"minLength": 1
}
},
"required": [
"type",
"unitsLedger",
"quantity",
"grantConsequence"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "convert_claim"
},
"claimFact": {
"type": "string",
"minLength": 1
},
"amount": {
"type": "string",
"pattern": "^(term|fact):[a-zA-Z][a-zA-Z0-9_-]{0,63}$"
},
"currencyTerm": {
"type": "string",
"minLength": 1
},
"monetaryLedger": {
"type": "string",
"minLength": 1
},
"equityAccount": {
"enum": [
3100,
3110,
3120
]
},
"units": {
"type": "object",
"additionalProperties": false,
"properties": {
"ledger": {
"type": "string",
"minLength": 1
},
"quantity": {
"type": "string",
"pattern": "^(term|fact):[a-zA-Z][a-zA-Z0-9_-]{0,63}$"
},
"restricted": {
"type": "boolean"
}
},
"required": [
"ledger",
"quantity",
"restricted"
]
}
},
"required": [
"type",
"claimFact",
"amount",
"currencyTerm",
"monetaryLedger",
"equityAccount"
]
}
]
},
"trigger": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "transition"
},
"action": {
"enum": [
"accept",
"cancel",
"terminate"
]
}
},
"required": [
"type",
"action"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "exercise"
},
"activityKey": {
"type": "string",
"minLength": 1
}
},
"required": [
"type",
"activityKey"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "period_close"
},
"schedule": {
"type": "object",
"additionalProperties": false,
"properties": {
"startTerm": {
"type": "string",
"minLength": 1
},
"anchorTerm": {
"type": "string",
"minLength": 1
},
"endTerm": {
"type": "string",
"minLength": 1
},
"everyMonths": {
"type": "integer",
"minimum": 1,
"maximum": 120
},
"timing": {
"enum": [
"start",
"end"
]
},
"offsetDays": {
"type": "integer",
"minimum": -365,
"maximum": 365
},
"serviceEvidence": {
"const": "elapsed_time"
}
},
"required": [
"startTerm",
"everyMonths",
"timing",
"offsetDays"
]
}
},
"required": [
"type",
"schedule"
]
}
]
},
"evidence": {
"type": "array",
"items": {
"enum": [
"acceptance",
"economic",
"service"
]
},
"minItems": 1,
"maxItems": 100
}
},
"required": [
"key",
"sourceRights",
"trigger",
"rule",
"evidence"
]
},
"minItems": 0,
"maxItems": 100
},
"creditPools": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"key": {
"type": "string",
"minLength": 1
},
"lots": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"right": {
"type": "string",
"minLength": 1
},
"eligibleRights": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"minItems": 1,
"maxItems": 100
}
},
"required": [
"right",
"eligibleRights"
]
},
"minItems": 1,
"maxItems": 20
},
"drawAt": {
"enum": [
"recognition",
"billing"
]
},
"drawOrder": {
"type": "array",
"items": {
"enum": [
"expiry",
"granted_first",
"bought_first",
"narrowest_scope",
"oldest"
]
},
"minItems": 1,
"maxItems": 5
}
},
"required": [
"key",
"lots",
"drawAt",
"drawOrder"
]
},
"minItems": 1,
"maxItems": 20
}
},
"required": [
"model",
"name",
"parties",
"activities"
]
},
"parties": {
"type": "object",
"additionalProperties": {
"type": "string",
"minLength": 1
},
"maxProperties": 100
},
"terms": {
"type": "object",
"additionalProperties": {
"type": "object",
"additionalProperties": {
"type": "string",
"minLength": 1
},
"maxProperties": 100
},
"maxProperties": 100
},
"ledgerBindings": {
"type": "object",
"additionalProperties": {
"type": "string",
"minLength": 1
},
"maxProperties": 100,
"description": "Ledger alias → existing ledger id. Every GAAP alias needs one. A business starts with its selected functional-currency ledger (USD only when omitted at initialization); binding a GAAP alias to another currency's canonical id (led_ + the zero-padded ISO 4217 numeric code, e.g. led_00000000000000000000000978 for EUR) opens that ledger with this contract, even while it is a draft."
},
"sourceDocumentIds": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"maxItems": 100
},
"concession": {
"type": "object",
"additionalProperties": false,
"description": "A concession offer this contract takes (concessions.create_offer), by `offerId` or by the `code` the customer typed: its discount becomes the terms of each right's `concession` reduction, from the right's start for the offer's months. `email` is the customer's address the offer is assigned to, or that its eligibility checks.",
"properties": {
"offerId": {
"type": "string",
"minLength": 1
},
"code": {
"type": "string",
"minLength": 1
},
"email": {
"type": "string",
"minLength": 1
}
}
}
},
"required": [
"parties"
]
},
"idempotency_key": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"effective_at": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
},
"source_document_id": {
"description": "A registered document of kind contract, template, source_document that caused this command.",
"type": "string",
"minLength": 1
}
},
"required": [
"name",
"input",
"idempotency_key",
"effective_at"
],
"additionalProperties": false
}Accepted command receipt
{
"type": "object",
"required": [
"commandId",
"replayed",
"result",
"events"
],
"properties": {
"commandId": {
"type": "string"
},
"replayed": {
"type": "boolean"
},
"imported": {
"const": true,
"description": "The command's events are history from before the business joined Economico, recorded as an import: free of monthly events."
},
"result": {
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"documentId": {
"type": "string",
"minLength": 1
},
"cid": {
"type": "string",
"minLength": 1
},
"flags": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
}
},
"required": [
"id",
"documentId",
"cid"
]
},
"events": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"cid": {
"type": "string"
}
}
}
}
}
}Example request
{
"name": "contracts.create",
"input": {
"templateDocumentId": "doc_template",
"parties": {
"customer": "party_customer"
}
},
"effective_at": "2026-09-01T00:00:00Z",
"idempotency_key": "contracts.create-example-0"
}