@hyperscale0/udl 2.6.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -322
- package/LICENSING.md +1 -2
- package/README.md +3 -114
- package/TRADEMARKS.md +2 -2
- package/dist/diagnostics.d.ts +21 -201
- package/dist/diagnostics.d.ts.map +1 -1
- package/dist/diagnostics.js +29 -193
- package/dist/diagnostics.js.map +1 -1
- package/dist/evolution.d.ts +3 -132
- package/dist/evolution.d.ts.map +1 -1
- package/dist/evolution.js +29 -633
- package/dist/evolution.js.map +1 -1
- package/dist/finance.d.ts +5 -72
- package/dist/finance.d.ts.map +1 -1
- package/dist/finance.js +233 -737
- package/dist/finance.js.map +1 -1
- package/dist/index.d.ts +7 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -12
- package/dist/index.js.map +1 -1
- package/dist/instrument-references.d.ts.map +1 -1
- package/dist/instrument-references.js +3 -2
- package/dist/instrument-references.js.map +1 -1
- package/dist/schema.d.ts +2079 -4564
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +270 -1609
- package/dist/schema.js.map +1 -1
- package/dist/validation.d.ts +8 -104
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +653 -3271
- package/dist/validation.js.map +1 -1
- package/docs/README.md +147 -14
- package/package.json +7 -11
- package/spec/README.md +151 -164
- package/spec/darb.udl.json +249 -0
- package/spec/udl.schema.json +4104 -3202
- package/src/diagnostics.ts +51 -246
- package/src/evolution.ts +39 -1045
- package/src/finance.ts +287 -1127
- package/src/index.ts +18 -142
- package/src/instrument-references.ts +3 -2
- package/src/schema.ts +285 -1843
- package/src/validation.ts +870 -5611
- package/conformance/README.md +0 -82
- package/conformance/evolution/action-contract.expected.json +0 -10
- package/conformance/evolution/action-contract.live.udl +0 -44
- package/conformance/evolution/action-contract.next.udl +0 -45
- package/conformance/evolution/product-identity.expected.json +0 -10
- package/conformance/evolution/product-identity.live.udl +0 -55
- package/conformance/evolution/product-identity.next.udl +0 -55
- package/conformance/evolution/version-required.expected.json +0 -10
- package/conformance/evolution/version-required.live.udl +0 -55
- package/conformance/evolution/version-required.next.udl +0 -58
- package/conformance/invalid/action-without-transition.expected.json +0 -10
- package/conformance/invalid/action-without-transition.udl +0 -60
- package/conformance/invalid/agent-description-too-long.expected.json +0 -10
- package/conformance/invalid/agent-description-too-long.udl +0 -57
- package/conformance/invalid/blank-title.expected.json +0 -10
- package/conformance/invalid/blank-title.udl +0 -54
- package/conformance/invalid/call-binds-results.expected.json +0 -10
- package/conformance/invalid/call-binds-results.udl +0 -314
- package/conformance/invalid/call-unknown-action.expected.json +0 -10
- package/conformance/invalid/call-unknown-action.udl +0 -314
- package/conformance/invalid/composition-dial-duplicate-key.expected.json +0 -10
- package/conformance/invalid/composition-dial-duplicate-key.udl +0 -73
- package/conformance/invalid/depth-budget.expected.json +0 -10
- package/conformance/invalid/depth-budget.udl +0 -49
- package/conformance/invalid/duplicate-subject.expected.json +0 -10
- package/conformance/invalid/duplicate-subject.udl +0 -230
- package/conformance/invalid/forged-effects.expected.json +0 -10
- package/conformance/invalid/forged-effects.udl +0 -76
- package/conformance/invalid/format-version.expected.json +0 -10
- package/conformance/invalid/format-version.udl +0 -54
- package/conformance/invalid/instrument-id-not-snake-case.expected.json +0 -10
- package/conformance/invalid/instrument-id-not-snake-case.udl +0 -54
- package/conformance/invalid/invalid-aggregate-gate-shape.expected.json +0 -10
- package/conformance/invalid/invalid-aggregate-gate-shape.udl +0 -1819
- package/conformance/invalid/invalid-check-duration.expected.json +0 -10
- package/conformance/invalid/invalid-check-duration.udl +0 -219
- package/conformance/invalid/invalid-dial-anchor.expected.json +0 -10
- package/conformance/invalid/invalid-dial-anchor.udl +0 -219
- package/conformance/invalid/invalid-exception-parent-ref.expected.json +0 -10
- package/conformance/invalid/invalid-exception-parent-ref.udl +0 -2487
- package/conformance/invalid/invalid-exposure-shape.expected.json +0 -10
- package/conformance/invalid/invalid-exposure-shape.udl +0 -1819
- package/conformance/invalid/invalid-journeys.expected.json +0 -10
- package/conformance/invalid/invalid-journeys.udl +0 -77
- package/conformance/invalid/invalid-remainder.expected.json +0 -10
- package/conformance/invalid/invalid-remainder.udl +0 -220
- package/conformance/invalid/invalid-schema-keyword.expected.json +0 -10
- package/conformance/invalid/invalid-schema-keyword.udl +0 -220
- package/conformance/invalid/invalid-utf8.expected.json +0 -10
- package/conformance/invalid/invalid-utf8.udl +0 -1
- package/conformance/invalid/leaf-effect-mismatch.expected.json +0 -10
- package/conformance/invalid/leaf-effect-mismatch.udl +0 -314
- package/conformance/invalid/malformed-json.expected.json +0 -10
- package/conformance/invalid/malformed-json.udl +0 -1
- package/conformance/invalid/missing-create-action.expected.json +0 -10
- package/conformance/invalid/missing-create-action.udl +0 -48
- package/conformance/invalid/missing-exception-amount-field.expected.json +0 -10
- package/conformance/invalid/missing-exception-amount-field.udl +0 -2487
- package/conformance/invalid/missing-exception-contract.expected.json +0 -14
- package/conformance/invalid/missing-exception-contract.udl +0 -2523
- package/conformance/invalid/missing-exception-reason-field.expected.json +0 -10
- package/conformance/invalid/missing-exception-reason-field.udl +0 -2487
- package/conformance/invalid/not-an-object.expected.json +0 -10
- package/conformance/invalid/not-an-object.udl +0 -1
- package/conformance/invalid/payout-reconcile-not-a-bank-debit.expected.json +0 -10
- package/conformance/invalid/payout-reconcile-not-a-bank-debit.udl +0 -259
- package/conformance/invalid/piece-plan-without-partition.expected.json +0 -10
- package/conformance/invalid/piece-plan-without-partition.udl +0 -305
- package/conformance/invalid/private-action-independent-approval.expected.json +0 -10
- package/conformance/invalid/private-action-independent-approval.udl +0 -314
- package/conformance/invalid/quote-freeze-set-incomplete.expected.json +0 -10
- package/conformance/invalid/quote-freeze-set-incomplete.udl +0 -261
- package/conformance/invalid/quote-named-reference-gate.expected.json +0 -10
- package/conformance/invalid/quote-named-reference-gate.udl +0 -50
- package/conformance/invalid/reconcile-named-reference-gate.expected.json +0 -10
- package/conformance/invalid/reconcile-named-reference-gate.udl +0 -50
- package/conformance/invalid/unfund-order-not-reversed.expected.json +0 -10
- package/conformance/invalid/unfund-order-not-reversed.udl +0 -314
- package/conformance/invalid/unknown-key.expected.json +0 -10
- package/conformance/invalid/unknown-key.udl +0 -55
- package/conformance/invalid/unknown-reference-gate-field.expected.json +0 -10
- package/conformance/invalid/unknown-reference-gate-field.udl +0 -1819
- package/conformance/invalid/unknown-required-field.expected.json +0 -10
- package/conformance/invalid/unknown-required-field.udl +0 -220
- package/conformance/invalid/unreachable-state.expected.json +0 -10
- package/conformance/invalid/unreachable-state.udl +0 -55
- package/conformance/invalid/wrong-exception-amount-field.expected.json +0 -10
- package/conformance/invalid/wrong-exception-amount-field.udl +0 -2487
- package/conformance/invalid/wrong-exception-reason-field.expected.json +0 -10
- package/conformance/invalid/wrong-exception-reason-field.udl +0 -2487
- package/conformance/valid/agent-description.expected.json +0 -6
- package/conformance/valid/agent-description.udl +0 -66
- package/conformance/valid/attested.expected.json +0 -6
- package/conformance/valid/attested.udl +0 -251
- package/conformance/valid/cards.expected.json +0 -6
- package/conformance/valid/cards.udl +0 -1579
- package/conformance/valid/commerce-escrow.expected.json +0 -6
- package/conformance/valid/commerce-escrow.udl +0 -1512
- package/conformance/valid/compiled-crowdfunding.expected.json +0 -6
- package/conformance/valid/compiled-crowdfunding.udl +0 -1843
- package/conformance/valid/compiled-watch-club.expected.json +0 -6
- package/conformance/valid/compiled-watch-club.udl +0 -2486
- package/conformance/valid/complete-contract.expected.json +0 -6
- package/conformance/valid/complete-contract.udl +0 -218
- package/conformance/valid/effect-signatures.expected.json +0 -6
- package/conformance/valid/effect-signatures.udl +0 -75
- package/conformance/valid/hand-edited.expected.json +0 -6
- package/conformance/valid/hand-edited.udl +0 -1
- package/conformance/valid/insured-car-marketplace.expected.json +0 -6
- package/conformance/valid/insured-car-marketplace.udl +0 -1050
- package/conformance/valid/insured-travel.expected.json +0 -6
- package/conformance/valid/insured-travel.udl +0 -3469
- package/conformance/valid/minimal.expected.json +0 -6
- package/conformance/valid/minimal.udl +0 -62
- package/conformance/valid/piece-plan-calls.expected.json +0 -6
- package/conformance/valid/piece-plan-calls.udl +0 -314
- package/conformance/valid/protection.expected.json +0 -6
- package/conformance/valid/protection.udl +0 -1551
- package/conformance/valid/string-escaping.expected.json +0 -6
- package/conformance/valid/string-escaping.udl +0 -54
- package/conformance/valid/vocabulary.expected.json +0 -6
- package/conformance/valid/vocabulary.udl +0 -2012
- package/dist/allocation.d.ts +0 -60
- package/dist/allocation.d.ts.map +0 -1
- package/dist/allocation.js +0 -177
- package/dist/allocation.js.map +0 -1
- package/dist/check-profiles.d.ts +0 -57
- package/dist/check-profiles.d.ts.map +0 -1
- package/dist/check-profiles.js +0 -62
- package/dist/check-profiles.js.map +0 -1
- package/dist/distribution.d.ts +0 -15
- package/dist/distribution.d.ts.map +0 -1
- package/dist/distribution.js +0 -49
- package/dist/distribution.js.map +0 -1
- package/dist/effects.d.ts +0 -58
- package/dist/effects.d.ts.map +0 -1
- package/dist/effects.js +0 -1126
- package/dist/effects.js.map +0 -1
- package/dist/reference.d.ts +0 -3
- package/dist/reference.d.ts.map +0 -1
- package/dist/reference.js +0 -28
- package/dist/reference.js.map +0 -1
- package/dist/vocabulary.d.ts +0 -23
- package/dist/vocabulary.d.ts.map +0 -1
- package/dist/vocabulary.js +0 -1052
- package/dist/vocabulary.js.map +0 -1
- package/docs/funding-custody.md +0 -165
- package/docs/guide/01-a-document.md +0 -37
- package/docs/guide/02-money-steps.md +0 -23
- package/docs/guide/03-laws.md +0 -18
- package/docs/guide/04-fees-and-remainder.md +0 -36
- package/docs/guide/05-checks-updates-dials.md +0 -7
- package/docs/guide/06-effects.md +0 -11
- package/docs/guide/07-evolution.md +0 -11
- package/docs/guide/08-implementing.md +0 -13
- package/docs/guide/09-schedules-and-allocation.md +0 -132
- package/docs/llms-full.txt +0 -2008
- package/docs/llms.txt +0 -14
- package/docs/piece-plans.md +0 -148
- package/docs/reference/canonical.md +0 -16
- package/docs/reference/clauses.md +0 -1585
- package/docs/reference/cli.md +0 -24
- package/docs/reference/diagnostics.md +0 -38
- package/skills/udl/SKILL.md +0 -28
- package/src/allocation.ts +0 -259
- package/src/check-profiles.ts +0 -80
- package/src/distribution.ts +0 -61
- package/src/effects.ts +0 -1920
- package/src/reference.ts +0 -31
- package/src/vocabulary.ts +0 -1635
|
@@ -1,1551 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"instruments": [
|
|
3
|
-
{
|
|
4
|
-
"actionOrder": [
|
|
5
|
-
"create",
|
|
6
|
-
"bind",
|
|
7
|
-
"activate",
|
|
8
|
-
"preview",
|
|
9
|
-
"cancel",
|
|
10
|
-
"withdraw",
|
|
11
|
-
"endorse",
|
|
12
|
-
"expire"
|
|
13
|
-
],
|
|
14
|
-
"actions": {
|
|
15
|
-
"activate": {
|
|
16
|
-
"description": "Starts cover at the declared time and pays the held premium to the insurer under the machine principal.",
|
|
17
|
-
"due": {
|
|
18
|
-
"field": "startsAt"
|
|
19
|
-
},
|
|
20
|
-
"earnable": true,
|
|
21
|
-
"effects": {
|
|
22
|
-
"moves": [
|
|
23
|
-
{
|
|
24
|
-
"signature": "moves.transfer.internal",
|
|
25
|
-
"source": "moves[0]"
|
|
26
|
-
}
|
|
27
|
-
],
|
|
28
|
-
"schedules": [
|
|
29
|
-
{
|
|
30
|
-
"signature": "schedules.due",
|
|
31
|
-
"source": "due"
|
|
32
|
-
}
|
|
33
|
-
]
|
|
34
|
-
},
|
|
35
|
-
"examples": [
|
|
36
|
-
{
|
|
37
|
-
"input": {
|
|
38
|
-
"policyId": "pol_sandbox_protection001",
|
|
39
|
-
"tenantId": "ten_sandbox_protection01"
|
|
40
|
-
},
|
|
41
|
-
"name": "activate_cover_at_start"
|
|
42
|
-
}
|
|
43
|
-
],
|
|
44
|
-
"moves": [
|
|
45
|
-
{
|
|
46
|
-
"bind": {
|
|
47
|
-
"amount": {
|
|
48
|
-
"from": "instance",
|
|
49
|
-
"path": "fields.premiumAmount"
|
|
50
|
-
},
|
|
51
|
-
"currency": {
|
|
52
|
-
"from": "instance",
|
|
53
|
-
"path": "fields.currency"
|
|
54
|
-
},
|
|
55
|
-
"destinationAccountId": {
|
|
56
|
-
"from": "instance",
|
|
57
|
-
"path": "fields.insurerAccountId"
|
|
58
|
-
},
|
|
59
|
-
"productId": {
|
|
60
|
-
"from": "instance",
|
|
61
|
-
"path": "productId"
|
|
62
|
-
},
|
|
63
|
-
"sourceAccountId": {
|
|
64
|
-
"from": "instance",
|
|
65
|
-
"path": "refs.premiumReserveAccountId"
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
|
-
"capture": {
|
|
69
|
-
"premiumTransferId": "transferId"
|
|
70
|
-
},
|
|
71
|
-
"key": "transfer",
|
|
72
|
-
"operation": "internal_transfer.create"
|
|
73
|
-
}
|
|
74
|
-
],
|
|
75
|
-
"steps": [],
|
|
76
|
-
"summary": "Activate a policy"
|
|
77
|
-
},
|
|
78
|
-
"bind": {
|
|
79
|
-
"agentDescription": "Ask the carrier to accept the risk under a 15 second deadline, where a timeout declines, then move the full premium from the policyholder into the policy's premium reserve. Only a quoted policy binds. Cover is not live yet. Activation happens at startsAt. This moves the policyholder's money.",
|
|
80
|
-
"decision": {
|
|
81
|
-
"capability": "insurance_carrier",
|
|
82
|
-
"deadlineMs": 15000,
|
|
83
|
-
"onTimeout": "decline"
|
|
84
|
-
},
|
|
85
|
-
"description": "Asks the carrier to accept the risk, then moves the premium into its dedicated reserve until cover starts.",
|
|
86
|
-
"effects": {
|
|
87
|
-
"decides": [
|
|
88
|
-
{
|
|
89
|
-
"signature": "decides.insurance_carrier",
|
|
90
|
-
"source": "decision"
|
|
91
|
-
}
|
|
92
|
-
],
|
|
93
|
-
"moves": [
|
|
94
|
-
{
|
|
95
|
-
"signature": "moves.transfer.internal",
|
|
96
|
-
"source": "moves[0]"
|
|
97
|
-
}
|
|
98
|
-
]
|
|
99
|
-
},
|
|
100
|
-
"eventName": "policy.bound",
|
|
101
|
-
"examples": [
|
|
102
|
-
{
|
|
103
|
-
"input": {
|
|
104
|
-
"policyId": "pol_sandbox_protection001",
|
|
105
|
-
"tenantId": "ten_sandbox_protection01"
|
|
106
|
-
},
|
|
107
|
-
"name": "bind_carrier_accepted_risk"
|
|
108
|
-
}
|
|
109
|
-
],
|
|
110
|
-
"moves": [
|
|
111
|
-
{
|
|
112
|
-
"bind": {
|
|
113
|
-
"amount": {
|
|
114
|
-
"from": "instance",
|
|
115
|
-
"path": "fields.premiumAmount"
|
|
116
|
-
},
|
|
117
|
-
"currency": {
|
|
118
|
-
"from": "instance",
|
|
119
|
-
"path": "fields.currency"
|
|
120
|
-
},
|
|
121
|
-
"destinationAccountId": {
|
|
122
|
-
"from": "instance",
|
|
123
|
-
"path": "refs.premiumReserveAccountId"
|
|
124
|
-
},
|
|
125
|
-
"productId": {
|
|
126
|
-
"from": "instance",
|
|
127
|
-
"path": "productId"
|
|
128
|
-
},
|
|
129
|
-
"sourceAccountId": {
|
|
130
|
-
"from": "instance",
|
|
131
|
-
"path": "fields.policyholderAccountId"
|
|
132
|
-
}
|
|
133
|
-
},
|
|
134
|
-
"capture": {
|
|
135
|
-
"premiumFundingTransferId": "transferId"
|
|
136
|
-
},
|
|
137
|
-
"key": "transfer",
|
|
138
|
-
"operation": "internal_transfer.create"
|
|
139
|
-
}
|
|
140
|
-
],
|
|
141
|
-
"steps": [],
|
|
142
|
-
"summary": "Bind a policy"
|
|
143
|
-
},
|
|
144
|
-
"cancel": {
|
|
145
|
-
"agentDescription": "Confirm the previewed cancellation and return the entire reserved premium to the policyholder. It requires preview first and only works before cover activates. This moves money and does not reverse. An active policy has no cancellation path and runs to its expiry.",
|
|
146
|
-
"commit": "preview",
|
|
147
|
-
"description": "Confirms the previewed cancellation and returns the entire reserved premium to the policyholder before cover starts.",
|
|
148
|
-
"effects": {
|
|
149
|
-
"moves": [
|
|
150
|
-
{
|
|
151
|
-
"signature": "moves.transfer.internal",
|
|
152
|
-
"source": "moves[0]"
|
|
153
|
-
}
|
|
154
|
-
]
|
|
155
|
-
},
|
|
156
|
-
"examples": [
|
|
157
|
-
{
|
|
158
|
-
"input": {
|
|
159
|
-
"policyId": "pol_sandbox_protection001",
|
|
160
|
-
"tenantId": "ten_sandbox_protection01"
|
|
161
|
-
},
|
|
162
|
-
"name": "confirm_pre_activation_cancel"
|
|
163
|
-
}
|
|
164
|
-
],
|
|
165
|
-
"moves": [
|
|
166
|
-
{
|
|
167
|
-
"bind": {
|
|
168
|
-
"amount": {
|
|
169
|
-
"from": "instance",
|
|
170
|
-
"path": "refs.unwindRefund"
|
|
171
|
-
},
|
|
172
|
-
"currency": {
|
|
173
|
-
"from": "instance",
|
|
174
|
-
"path": "fields.currency"
|
|
175
|
-
},
|
|
176
|
-
"destinationAccountId": {
|
|
177
|
-
"from": "instance",
|
|
178
|
-
"path": "fields.policyholderAccountId"
|
|
179
|
-
},
|
|
180
|
-
"productId": {
|
|
181
|
-
"from": "instance",
|
|
182
|
-
"path": "productId"
|
|
183
|
-
},
|
|
184
|
-
"sourceAccountId": {
|
|
185
|
-
"from": "instance",
|
|
186
|
-
"path": "refs.premiumReserveAccountId"
|
|
187
|
-
}
|
|
188
|
-
},
|
|
189
|
-
"capture": {
|
|
190
|
-
"premiumRefundTransferId": "transferId"
|
|
191
|
-
},
|
|
192
|
-
"key": "transfer",
|
|
193
|
-
"operation": "internal_transfer.create"
|
|
194
|
-
}
|
|
195
|
-
],
|
|
196
|
-
"steps": [],
|
|
197
|
-
"summary": "Cancel a policy"
|
|
198
|
-
},
|
|
199
|
-
"create": {
|
|
200
|
-
"agentDescription": "Open a quote against one declared-value subject with its premium, coverage limit, peril schedule, and term, and provision the premium reserve. No premium moves. A renewal may name the prior policy only while that prior term is active or already expired.",
|
|
201
|
-
"description": "Creates a quote against one declared-value risk and provisions the premium reserve. No premium moves until the carrier binds.",
|
|
202
|
-
"effects": {
|
|
203
|
-
"reads": [
|
|
204
|
-
{
|
|
205
|
-
"signature": "reads.requires_refs",
|
|
206
|
-
"source": "requiresRefs"
|
|
207
|
-
}
|
|
208
|
-
]
|
|
209
|
-
},
|
|
210
|
-
"eventName": "policy.quoted",
|
|
211
|
-
"examples": [
|
|
212
|
-
{
|
|
213
|
-
"input": {
|
|
214
|
-
"coverageLimit": "200000",
|
|
215
|
-
"currency": "SAR",
|
|
216
|
-
"expiresAt": "2027-08-01T00:00:00.000Z",
|
|
217
|
-
"insurerAccountId": "acct_sandbox_insurer0001",
|
|
218
|
-
"perilSchedule": [
|
|
219
|
-
{
|
|
220
|
-
"deductibleBps": 500,
|
|
221
|
-
"limitAmount": "200000",
|
|
222
|
-
"peril": "accidental_damage",
|
|
223
|
-
"waitingPeriodDays": 0
|
|
224
|
-
},
|
|
225
|
-
{
|
|
226
|
-
"deductibleBps": 250,
|
|
227
|
-
"limitAmount": "200000",
|
|
228
|
-
"peril": "theft",
|
|
229
|
-
"waitingPeriodDays": 7
|
|
230
|
-
}
|
|
231
|
-
],
|
|
232
|
-
"policyholderAccountId": "acct_sandbox_holder00001",
|
|
233
|
-
"premiumAmount": "12500",
|
|
234
|
-
"productId": "prd_sandbox_protection01",
|
|
235
|
-
"startsAt": "2026-08-01T00:00:00.000Z",
|
|
236
|
-
"subject": "sbj_sandbox_protection001",
|
|
237
|
-
"tenantId": "ten_sandbox_protection01",
|
|
238
|
-
"termsSummary": "Annual cover for accidental damage and theft."
|
|
239
|
-
},
|
|
240
|
-
"name": "quote_asset_protection"
|
|
241
|
-
}
|
|
242
|
-
],
|
|
243
|
-
"moves": [],
|
|
244
|
-
"requiresRefs": [
|
|
245
|
-
{
|
|
246
|
-
"field": "renewalOfPolicyId",
|
|
247
|
-
"optional": true,
|
|
248
|
-
"statuses": [
|
|
249
|
-
"active",
|
|
250
|
-
"expired"
|
|
251
|
-
]
|
|
252
|
-
}
|
|
253
|
-
],
|
|
254
|
-
"steps": [
|
|
255
|
-
{
|
|
256
|
-
"bind": {
|
|
257
|
-
"currency": {
|
|
258
|
-
"from": "instance",
|
|
259
|
-
"path": "fields.currency"
|
|
260
|
-
},
|
|
261
|
-
"owner.id": {
|
|
262
|
-
"from": "instance",
|
|
263
|
-
"path": "productId"
|
|
264
|
-
},
|
|
265
|
-
"owner.type": {
|
|
266
|
-
"from": "const",
|
|
267
|
-
"value": "product"
|
|
268
|
-
},
|
|
269
|
-
"productId": {
|
|
270
|
-
"from": "instance",
|
|
271
|
-
"path": "productId"
|
|
272
|
-
},
|
|
273
|
-
"role": {
|
|
274
|
-
"from": "const",
|
|
275
|
-
"value": "product_escrow"
|
|
276
|
-
}
|
|
277
|
-
},
|
|
278
|
-
"capture": {
|
|
279
|
-
"premiumReserveAccountId": "accountId"
|
|
280
|
-
},
|
|
281
|
-
"operation": "account.escrow.provision"
|
|
282
|
-
}
|
|
283
|
-
],
|
|
284
|
-
"summary": "Quote a policy"
|
|
285
|
-
},
|
|
286
|
-
"endorse": {
|
|
287
|
-
"agentDescription": "Rewrite the peril schedule, terms summary, or expiry on active cover. The carrier approves under a 15 second deadline and a timeout declines. No premium moves, because mid-term repricing is not modeled. A change that should reprice the cover needs a new policy.",
|
|
288
|
-
"decision": {
|
|
289
|
-
"capability": "insurance_carrier",
|
|
290
|
-
"deadlineMs": 15000,
|
|
291
|
-
"onTimeout": "decline"
|
|
292
|
-
},
|
|
293
|
-
"description": "Applies a carrier-approved mid-term change to active cover: the peril schedule, terms summary, or expiry may be rewritten. No premium moves; mid-term premium adjustment is not modeled.",
|
|
294
|
-
"effects": {
|
|
295
|
-
"decides": [
|
|
296
|
-
{
|
|
297
|
-
"signature": "decides.insurance_carrier",
|
|
298
|
-
"source": "decision"
|
|
299
|
-
}
|
|
300
|
-
]
|
|
301
|
-
},
|
|
302
|
-
"examples": [
|
|
303
|
-
{
|
|
304
|
-
"input": {
|
|
305
|
-
"expiresAt": "2027-11-01T00:00:00.000Z",
|
|
306
|
-
"policyId": "pol_sandbox_protection001",
|
|
307
|
-
"tenantId": "ten_sandbox_protection01",
|
|
308
|
-
"termsSummary": "Extended cover incl. water damage."
|
|
309
|
-
},
|
|
310
|
-
"name": "endorse_extend_active_cover"
|
|
311
|
-
}
|
|
312
|
-
],
|
|
313
|
-
"input": {
|
|
314
|
-
"additionalProperties": false,
|
|
315
|
-
"properties": {
|
|
316
|
-
"expiresAt": {
|
|
317
|
-
"format": "hyperscale-date-time",
|
|
318
|
-
"type": "string"
|
|
319
|
-
},
|
|
320
|
-
"perilSchedule": {
|
|
321
|
-
"items": {
|
|
322
|
-
"additionalProperties": false,
|
|
323
|
-
"properties": {
|
|
324
|
-
"deductibleBps": {
|
|
325
|
-
"maximum": 10000,
|
|
326
|
-
"minimum": 0,
|
|
327
|
-
"type": "integer"
|
|
328
|
-
},
|
|
329
|
-
"limitAmount": {
|
|
330
|
-
"description": "Positive minor-unit integer amount serialized as a string (at most 18 digits)",
|
|
331
|
-
"pattern": "^[1-9][0-9]{0,17}$",
|
|
332
|
-
"type": "string"
|
|
333
|
-
},
|
|
334
|
-
"peril": {
|
|
335
|
-
"pattern": "^[a-z][a-z0-9_]{1,79}$",
|
|
336
|
-
"type": "string"
|
|
337
|
-
},
|
|
338
|
-
"waitingPeriodDays": {
|
|
339
|
-
"maximum": 3650,
|
|
340
|
-
"minimum": 0,
|
|
341
|
-
"type": "integer"
|
|
342
|
-
}
|
|
343
|
-
},
|
|
344
|
-
"required": [
|
|
345
|
-
"peril",
|
|
346
|
-
"limitAmount",
|
|
347
|
-
"deductibleBps",
|
|
348
|
-
"waitingPeriodDays"
|
|
349
|
-
],
|
|
350
|
-
"type": "object"
|
|
351
|
-
},
|
|
352
|
-
"maxItems": 24,
|
|
353
|
-
"minItems": 1,
|
|
354
|
-
"type": "array"
|
|
355
|
-
},
|
|
356
|
-
"termsSummary": {
|
|
357
|
-
"maxLength": 1000,
|
|
358
|
-
"minLength": 1,
|
|
359
|
-
"type": "string"
|
|
360
|
-
}
|
|
361
|
-
},
|
|
362
|
-
"type": "object"
|
|
363
|
-
},
|
|
364
|
-
"moves": [],
|
|
365
|
-
"steps": [],
|
|
366
|
-
"summary": "Endorse a policy",
|
|
367
|
-
"updates": [
|
|
368
|
-
"perilSchedule",
|
|
369
|
-
"termsSummary",
|
|
370
|
-
"expiresAt"
|
|
371
|
-
]
|
|
372
|
-
},
|
|
373
|
-
"expire": {
|
|
374
|
-
"description": "Ends active cover at term under the machine principal. Earned premium remains with the insurer.",
|
|
375
|
-
"due": {
|
|
376
|
-
"field": "expiresAt"
|
|
377
|
-
},
|
|
378
|
-
"effects": {
|
|
379
|
-
"schedules": [
|
|
380
|
-
{
|
|
381
|
-
"signature": "schedules.due",
|
|
382
|
-
"source": "due"
|
|
383
|
-
}
|
|
384
|
-
]
|
|
385
|
-
},
|
|
386
|
-
"examples": [
|
|
387
|
-
{
|
|
388
|
-
"input": {
|
|
389
|
-
"policyId": "pol_sandbox_protection001",
|
|
390
|
-
"tenantId": "ten_sandbox_protection01"
|
|
391
|
-
},
|
|
392
|
-
"name": "expire_cover_at_term"
|
|
393
|
-
}
|
|
394
|
-
],
|
|
395
|
-
"moves": [],
|
|
396
|
-
"requiresDrainedAccount": {
|
|
397
|
-
"path": "refs.premiumReserveAccountId"
|
|
398
|
-
},
|
|
399
|
-
"steps": [],
|
|
400
|
-
"summary": "Expire a policy"
|
|
401
|
-
},
|
|
402
|
-
"preview": {
|
|
403
|
-
"agentDescription": "Price the cancellation refund while the policy is bound and cover has not started. No money moves. Under the declared schedule the refund is the whole premium. Required before cancel, which is the call that actually returns the money.",
|
|
404
|
-
"description": "Quotes the full premium refund while cover is bound but not active. No money moves until cancellation is confirmed.",
|
|
405
|
-
"effects": {
|
|
406
|
-
"holds": [
|
|
407
|
-
{
|
|
408
|
-
"signature": "holds.quote",
|
|
409
|
-
"source": "quote"
|
|
410
|
-
}
|
|
411
|
-
],
|
|
412
|
-
"schedules": [
|
|
413
|
-
{
|
|
414
|
-
"signature": "schedules.expiry",
|
|
415
|
-
"source": "quote"
|
|
416
|
-
}
|
|
417
|
-
]
|
|
418
|
-
},
|
|
419
|
-
"examples": [
|
|
420
|
-
{
|
|
421
|
-
"input": {
|
|
422
|
-
"policyId": "pol_sandbox_protection001",
|
|
423
|
-
"tenantId": "ten_sandbox_protection01"
|
|
424
|
-
},
|
|
425
|
-
"name": "preview_pre_activation_cancel"
|
|
426
|
-
}
|
|
427
|
-
],
|
|
428
|
-
"moves": [],
|
|
429
|
-
"quote": {
|
|
430
|
-
"baseField": "premiumAmount",
|
|
431
|
-
"chargeRef": "unwindPenalty",
|
|
432
|
-
"charges": [
|
|
433
|
-
{
|
|
434
|
-
"bps": 0
|
|
435
|
-
}
|
|
436
|
-
],
|
|
437
|
-
"expires": {
|
|
438
|
-
"offset": "PT15M"
|
|
439
|
-
},
|
|
440
|
-
"fixes": [
|
|
441
|
-
"policyholderAccountId",
|
|
442
|
-
"premiumAmount"
|
|
443
|
-
],
|
|
444
|
-
"netDestinationField": "policyholderAccountId",
|
|
445
|
-
"netRef": "unwindRefund"
|
|
446
|
-
},
|
|
447
|
-
"steps": [],
|
|
448
|
-
"summary": "Preview policy cancellation"
|
|
449
|
-
},
|
|
450
|
-
"withdraw": {
|
|
451
|
-
"agentDescription": "Drop a quote the carrier never bound. Only a quoted policy withdraws, no premium has moved, and the premium reserve must be empty. No preview is needed because there is nothing to refund.",
|
|
452
|
-
"description": "Closes an unbound quote. No premium moved, so no cancellation preview is required.",
|
|
453
|
-
"eventName": "policy.withdrawn",
|
|
454
|
-
"examples": [
|
|
455
|
-
{
|
|
456
|
-
"input": {
|
|
457
|
-
"policyId": "pol_sandbox_protection001",
|
|
458
|
-
"tenantId": "ten_sandbox_protection01"
|
|
459
|
-
},
|
|
460
|
-
"name": "withdraw_unbound_quote"
|
|
461
|
-
}
|
|
462
|
-
],
|
|
463
|
-
"moves": [],
|
|
464
|
-
"requiresDrainedAccount": {
|
|
465
|
-
"path": "refs.premiumReserveAccountId"
|
|
466
|
-
},
|
|
467
|
-
"steps": [],
|
|
468
|
-
"summary": "Withdraw a policy quote"
|
|
469
|
-
}
|
|
470
|
-
},
|
|
471
|
-
"agentDescription": "Reach for policy when the caller quotes carrier-backed cover over one declared-value subject and drives it through bind, endorsement, and expiry. Between bind and activation the premium sits in a per-policy reserve and is fully refundable. Once cover activates the premium is the insurer's. Claims are a separate instrument.",
|
|
472
|
-
"aggregateInvariants": [
|
|
473
|
-
{
|
|
474
|
-
"childField": "claimAmount",
|
|
475
|
-
"childInstrumentId": "claim",
|
|
476
|
-
"childRefField": "policyId",
|
|
477
|
-
"childStatuses": [
|
|
478
|
-
"filed",
|
|
479
|
-
"assessed",
|
|
480
|
-
"approved",
|
|
481
|
-
"paid"
|
|
482
|
-
],
|
|
483
|
-
"parentField": "coverageLimit"
|
|
484
|
-
}
|
|
485
|
-
],
|
|
486
|
-
"callerParkedStates": {
|
|
487
|
-
"cancel_quoted": "a quoted cancellation moves money only when the caller confirms it",
|
|
488
|
-
"quoted": "binding or withdrawing a quote is the policyholder's decision"
|
|
489
|
-
},
|
|
490
|
-
"description": "A policy quotes protection over one subject, binds after a carrier decision, activates at its declared start, and expires at term. Premium remains refundable while bound but not active; activation pays the insurer and opens the policy to claims.",
|
|
491
|
-
"fields": {
|
|
492
|
-
"coverageLimit": {
|
|
493
|
-
"description": "Positive minor-unit integer amount serialized as a string (at most 18 digits)",
|
|
494
|
-
"pattern": "^[1-9][0-9]{0,17}$",
|
|
495
|
-
"type": "string"
|
|
496
|
-
},
|
|
497
|
-
"currency": {
|
|
498
|
-
"description": "ISO 4217 currency code",
|
|
499
|
-
"maxLength": 3,
|
|
500
|
-
"minLength": 3,
|
|
501
|
-
"pattern": "^[A-Z]{3}$",
|
|
502
|
-
"type": "string"
|
|
503
|
-
},
|
|
504
|
-
"expiresAt": {
|
|
505
|
-
"format": "hyperscale-date-time",
|
|
506
|
-
"type": "string"
|
|
507
|
-
},
|
|
508
|
-
"insurerAccountId": {
|
|
509
|
-
"description": "Hyperscale account ID",
|
|
510
|
-
"pattern": "^acct_(sandbox|live)_[a-z0-9]{8,64}$",
|
|
511
|
-
"type": "string",
|
|
512
|
-
"x-hyperscale-reference-filter": {
|
|
513
|
-
"column": "role",
|
|
514
|
-
"values": [
|
|
515
|
-
"customer_balance"
|
|
516
|
-
]
|
|
517
|
-
}
|
|
518
|
-
},
|
|
519
|
-
"perilSchedule": {
|
|
520
|
-
"items": {
|
|
521
|
-
"additionalProperties": false,
|
|
522
|
-
"properties": {
|
|
523
|
-
"deductibleBps": {
|
|
524
|
-
"maximum": 10000,
|
|
525
|
-
"minimum": 0,
|
|
526
|
-
"type": "integer"
|
|
527
|
-
},
|
|
528
|
-
"limitAmount": {
|
|
529
|
-
"description": "Positive minor-unit integer amount serialized as a string (at most 18 digits)",
|
|
530
|
-
"pattern": "^[1-9][0-9]{0,17}$",
|
|
531
|
-
"type": "string"
|
|
532
|
-
},
|
|
533
|
-
"peril": {
|
|
534
|
-
"pattern": "^[a-z][a-z0-9_]{1,79}$",
|
|
535
|
-
"type": "string"
|
|
536
|
-
},
|
|
537
|
-
"waitingPeriodDays": {
|
|
538
|
-
"maximum": 3650,
|
|
539
|
-
"minimum": 0,
|
|
540
|
-
"type": "integer"
|
|
541
|
-
}
|
|
542
|
-
},
|
|
543
|
-
"required": [
|
|
544
|
-
"peril",
|
|
545
|
-
"limitAmount",
|
|
546
|
-
"deductibleBps",
|
|
547
|
-
"waitingPeriodDays"
|
|
548
|
-
],
|
|
549
|
-
"type": "object"
|
|
550
|
-
},
|
|
551
|
-
"maxItems": 24,
|
|
552
|
-
"minItems": 1,
|
|
553
|
-
"type": "array"
|
|
554
|
-
},
|
|
555
|
-
"policyholderAccountId": {
|
|
556
|
-
"description": "Hyperscale account ID",
|
|
557
|
-
"pattern": "^acct_(sandbox|live)_[a-z0-9]{8,64}$",
|
|
558
|
-
"type": "string",
|
|
559
|
-
"x-hyperscale-reference-filter": {
|
|
560
|
-
"column": "role",
|
|
561
|
-
"values": [
|
|
562
|
-
"customer_balance"
|
|
563
|
-
]
|
|
564
|
-
}
|
|
565
|
-
},
|
|
566
|
-
"premiumAmount": {
|
|
567
|
-
"description": "Positive minor-unit integer amount serialized as a string (at most 18 digits)",
|
|
568
|
-
"pattern": "^[1-9][0-9]{0,17}$",
|
|
569
|
-
"type": "string"
|
|
570
|
-
},
|
|
571
|
-
"renewalOfPolicyId": {
|
|
572
|
-
"description": "Prior policy this quote renews; the prior term must be active or already expired",
|
|
573
|
-
"pattern": "^pol_(sandbox|live)_[a-z0-9]{8,64}$",
|
|
574
|
-
"type": "string"
|
|
575
|
-
},
|
|
576
|
-
"startsAt": {
|
|
577
|
-
"format": "hyperscale-date-time",
|
|
578
|
-
"type": "string"
|
|
579
|
-
},
|
|
580
|
-
"termsSummary": {
|
|
581
|
-
"maxLength": 1000,
|
|
582
|
-
"minLength": 1,
|
|
583
|
-
"type": "string"
|
|
584
|
-
}
|
|
585
|
-
},
|
|
586
|
-
"id": "policy",
|
|
587
|
-
"idPrefix": "pol",
|
|
588
|
-
"lifecycle": {
|
|
589
|
-
"initial": "quoted",
|
|
590
|
-
"states": [
|
|
591
|
-
"quoted",
|
|
592
|
-
"bound",
|
|
593
|
-
"active",
|
|
594
|
-
"cancel_quoted",
|
|
595
|
-
"canceled",
|
|
596
|
-
"expired"
|
|
597
|
-
],
|
|
598
|
-
"transitions": {
|
|
599
|
-
"activate": {
|
|
600
|
-
"from": [
|
|
601
|
-
"bound"
|
|
602
|
-
],
|
|
603
|
-
"to": "active"
|
|
604
|
-
},
|
|
605
|
-
"bind": {
|
|
606
|
-
"from": [
|
|
607
|
-
"quoted"
|
|
608
|
-
],
|
|
609
|
-
"to": "bound"
|
|
610
|
-
},
|
|
611
|
-
"cancel": {
|
|
612
|
-
"from": [
|
|
613
|
-
"cancel_quoted"
|
|
614
|
-
],
|
|
615
|
-
"to": "canceled"
|
|
616
|
-
},
|
|
617
|
-
"endorse": {
|
|
618
|
-
"from": [
|
|
619
|
-
"active"
|
|
620
|
-
],
|
|
621
|
-
"to": "active"
|
|
622
|
-
},
|
|
623
|
-
"expire": {
|
|
624
|
-
"from": [
|
|
625
|
-
"active"
|
|
626
|
-
],
|
|
627
|
-
"to": "expired"
|
|
628
|
-
},
|
|
629
|
-
"preview": {
|
|
630
|
-
"from": [
|
|
631
|
-
"bound"
|
|
632
|
-
],
|
|
633
|
-
"to": "cancel_quoted"
|
|
634
|
-
},
|
|
635
|
-
"withdraw": {
|
|
636
|
-
"from": [
|
|
637
|
-
"quoted"
|
|
638
|
-
],
|
|
639
|
-
"to": "canceled"
|
|
640
|
-
}
|
|
641
|
-
}
|
|
642
|
-
},
|
|
643
|
-
"nav": [
|
|
644
|
-
"Blueprints",
|
|
645
|
-
"Policies"
|
|
646
|
-
],
|
|
647
|
-
"parties": {
|
|
648
|
-
"beneficiary": "insurerAccountId",
|
|
649
|
-
"payer": "policyholderAccountId"
|
|
650
|
-
},
|
|
651
|
-
"required": [
|
|
652
|
-
"policyholderAccountId",
|
|
653
|
-
"insurerAccountId",
|
|
654
|
-
"premiumAmount",
|
|
655
|
-
"coverageLimit",
|
|
656
|
-
"currency",
|
|
657
|
-
"startsAt",
|
|
658
|
-
"expiresAt",
|
|
659
|
-
"perilSchedule"
|
|
660
|
-
],
|
|
661
|
-
"subject": {
|
|
662
|
-
"kinds": [
|
|
663
|
-
"policy_risk",
|
|
664
|
-
"flight_itinerary",
|
|
665
|
-
"lodging_stay",
|
|
666
|
-
"vehicle",
|
|
667
|
-
"merchandise",
|
|
668
|
-
"pet",
|
|
669
|
-
"traveler_party",
|
|
670
|
-
"employee_census"
|
|
671
|
-
]
|
|
672
|
-
},
|
|
673
|
-
"summary": "Carrier-backed protection over one declared-value subject.",
|
|
674
|
-
"templateId": "insurance",
|
|
675
|
-
"title": "Policy",
|
|
676
|
-
"update": {
|
|
677
|
-
"examples": [
|
|
678
|
-
{
|
|
679
|
-
"input": {
|
|
680
|
-
"perilSchedule": [
|
|
681
|
-
{
|
|
682
|
-
"deductibleBps": 500,
|
|
683
|
-
"limitAmount": "200000",
|
|
684
|
-
"peril": "accidental_damage",
|
|
685
|
-
"waitingPeriodDays": 0
|
|
686
|
-
},
|
|
687
|
-
{
|
|
688
|
-
"deductibleBps": 250,
|
|
689
|
-
"limitAmount": "200000",
|
|
690
|
-
"peril": "theft",
|
|
691
|
-
"waitingPeriodDays": 7
|
|
692
|
-
}
|
|
693
|
-
],
|
|
694
|
-
"policyId": "pol_sandbox_protection001",
|
|
695
|
-
"tenantId": "ten_sandbox_protection01",
|
|
696
|
-
"termsSummary": "Covers accidental damage and theft."
|
|
697
|
-
},
|
|
698
|
-
"name": "refine_quoted_cover"
|
|
699
|
-
}
|
|
700
|
-
],
|
|
701
|
-
"fields": [
|
|
702
|
-
"startsAt",
|
|
703
|
-
"expiresAt",
|
|
704
|
-
"perilSchedule",
|
|
705
|
-
"termsSummary"
|
|
706
|
-
],
|
|
707
|
-
"states": [
|
|
708
|
-
"quoted"
|
|
709
|
-
]
|
|
710
|
-
}
|
|
711
|
-
},
|
|
712
|
-
{
|
|
713
|
-
"actionOrder": [
|
|
714
|
-
"create",
|
|
715
|
-
"assess",
|
|
716
|
-
"approve",
|
|
717
|
-
"attest",
|
|
718
|
-
"pay",
|
|
719
|
-
"deny",
|
|
720
|
-
"reverse"
|
|
721
|
-
],
|
|
722
|
-
"actions": {
|
|
723
|
-
"approve": {
|
|
724
|
-
"agentDescription": "Ask the claims adjuster for a verdict and hold the claim amount from the insurer account for the claimant. Only an assessed claim can approve, and an adjuster that misses the deadline declines by default. The hold reserves money without settling it. Pay posts it, reverse voids it.",
|
|
725
|
-
"decision": {
|
|
726
|
-
"capability": "insurance_claims_adjuster",
|
|
727
|
-
"deadlineMs": 15000,
|
|
728
|
-
"onTimeout": "decline"
|
|
729
|
-
},
|
|
730
|
-
"description": "Asks the claims adjuster to approve the assessed demand, then holds the immutable claim amount from the insurer for the claimant. For a carrier that exposes an adjudication API: the verdict is the provider's, taken just in time under a deadline.",
|
|
731
|
-
"effects": {
|
|
732
|
-
"decides": [
|
|
733
|
-
{
|
|
734
|
-
"signature": "decides.insurance_claims_adjuster",
|
|
735
|
-
"source": "decision"
|
|
736
|
-
}
|
|
737
|
-
],
|
|
738
|
-
"holds": [
|
|
739
|
-
{
|
|
740
|
-
"signature": "holds.reserve",
|
|
741
|
-
"source": "moves[0]"
|
|
742
|
-
}
|
|
743
|
-
],
|
|
744
|
-
"moves": [
|
|
745
|
-
{
|
|
746
|
-
"signature": "moves.transfer.internal",
|
|
747
|
-
"source": "moves[0]"
|
|
748
|
-
}
|
|
749
|
-
]
|
|
750
|
-
},
|
|
751
|
-
"examples": [
|
|
752
|
-
{
|
|
753
|
-
"input": {
|
|
754
|
-
"claimId": "clm_sandbox_protection001",
|
|
755
|
-
"tenantId": "ten_sandbox_protection01"
|
|
756
|
-
},
|
|
757
|
-
"name": "approve_assessed_claim"
|
|
758
|
-
}
|
|
759
|
-
],
|
|
760
|
-
"moves": [
|
|
761
|
-
{
|
|
762
|
-
"bind": {
|
|
763
|
-
"amount": {
|
|
764
|
-
"from": "instance",
|
|
765
|
-
"path": "fields.claimAmount"
|
|
766
|
-
},
|
|
767
|
-
"currency": {
|
|
768
|
-
"from": "instance",
|
|
769
|
-
"path": "fields.currency"
|
|
770
|
-
},
|
|
771
|
-
"destinationAccountId": {
|
|
772
|
-
"from": "instance",
|
|
773
|
-
"path": "fields.claimantAccountId"
|
|
774
|
-
},
|
|
775
|
-
"sourceAccountId": {
|
|
776
|
-
"from": "instance",
|
|
777
|
-
"path": "fields.insurerAccountId"
|
|
778
|
-
}
|
|
779
|
-
},
|
|
780
|
-
"capture": {
|
|
781
|
-
"claimTransferId": "transferId"
|
|
782
|
-
},
|
|
783
|
-
"key": "transfer",
|
|
784
|
-
"operation": "internal_transfer.reserve"
|
|
785
|
-
}
|
|
786
|
-
],
|
|
787
|
-
"steps": [],
|
|
788
|
-
"summary": "Approve a claim"
|
|
789
|
-
},
|
|
790
|
-
"assess": {
|
|
791
|
-
"agentDescription": "Mark the filed evidence ready for an approval decision. Only a filed claim can assess and no money moves. A claim filed validly during cover stays alive even if the policy term later expires.",
|
|
792
|
-
"description": "Marks filed evidence ready for an approval decision. A claim validly filed during cover continues even if the policy term later expires.",
|
|
793
|
-
"examples": [
|
|
794
|
-
{
|
|
795
|
-
"input": {
|
|
796
|
-
"claimId": "clm_sandbox_protection001",
|
|
797
|
-
"tenantId": "ten_sandbox_protection01"
|
|
798
|
-
},
|
|
799
|
-
"name": "complete_claim_assessment"
|
|
800
|
-
}
|
|
801
|
-
],
|
|
802
|
-
"moves": [],
|
|
803
|
-
"steps": [],
|
|
804
|
-
"summary": "Assess a claim"
|
|
805
|
-
},
|
|
806
|
-
"attest": {
|
|
807
|
-
"agentDescription": "Record an approval the insurer already made outside the platform and hold the claim amount from the insurer for the claimant. Only an assessed claim can attest, and the caller must assert the insurer as the acting party. Use this where the carrier has no adjudication API. Where one exists, approve calls it.",
|
|
808
|
-
"description": "Records the insurer's own approval of the assessed demand, taken outside the platform, and holds the immutable claim amount from the insurer for the claimant. The insurer must be asserted as the acting party. Use this where the carrier exposes no adjudication API; where one exists, approve calls it instead.",
|
|
809
|
-
"effects": {
|
|
810
|
-
"decides": [
|
|
811
|
-
{
|
|
812
|
-
"signature": "decides.tenant_port",
|
|
813
|
-
"source": "port"
|
|
814
|
-
}
|
|
815
|
-
],
|
|
816
|
-
"holds": [
|
|
817
|
-
{
|
|
818
|
-
"signature": "holds.reserve",
|
|
819
|
-
"source": "moves[0]"
|
|
820
|
-
}
|
|
821
|
-
],
|
|
822
|
-
"moves": [
|
|
823
|
-
{
|
|
824
|
-
"signature": "moves.transfer.internal",
|
|
825
|
-
"source": "moves[0]"
|
|
826
|
-
}
|
|
827
|
-
]
|
|
828
|
-
},
|
|
829
|
-
"examples": [
|
|
830
|
-
{
|
|
831
|
-
"input": {
|
|
832
|
-
"actorAccountId": "acct_sandbox_insurer0001",
|
|
833
|
-
"claimId": "clm_sandbox_protection001",
|
|
834
|
-
"tenantId": "ten_sandbox_protection01"
|
|
835
|
-
},
|
|
836
|
-
"name": "attest_insurer_approval"
|
|
837
|
-
}
|
|
838
|
-
],
|
|
839
|
-
"moves": [
|
|
840
|
-
{
|
|
841
|
-
"bind": {
|
|
842
|
-
"amount": {
|
|
843
|
-
"from": "instance",
|
|
844
|
-
"path": "fields.claimAmount"
|
|
845
|
-
},
|
|
846
|
-
"currency": {
|
|
847
|
-
"from": "instance",
|
|
848
|
-
"path": "fields.currency"
|
|
849
|
-
},
|
|
850
|
-
"destinationAccountId": {
|
|
851
|
-
"from": "instance",
|
|
852
|
-
"path": "fields.claimantAccountId"
|
|
853
|
-
},
|
|
854
|
-
"sourceAccountId": {
|
|
855
|
-
"from": "instance",
|
|
856
|
-
"path": "fields.insurerAccountId"
|
|
857
|
-
}
|
|
858
|
-
},
|
|
859
|
-
"capture": {
|
|
860
|
-
"claimTransferId": "transferId"
|
|
861
|
-
},
|
|
862
|
-
"key": "transfer",
|
|
863
|
-
"operation": "internal_transfer.reserve"
|
|
864
|
-
}
|
|
865
|
-
],
|
|
866
|
-
"port": {
|
|
867
|
-
"allowedParties": [
|
|
868
|
-
"payer"
|
|
869
|
-
]
|
|
870
|
-
},
|
|
871
|
-
"steps": [],
|
|
872
|
-
"summary": "Attest an out-of-band claim approval"
|
|
873
|
-
},
|
|
874
|
-
"create": {
|
|
875
|
-
"agentDescription": "File a demand against a policy. The policy must be active, and the filed amount is reserved against its aggregate coverage limit. The caller supplies the peril, the moment it occurred, the claim amount, and both accounts. No money moves at filing.",
|
|
876
|
-
"description": "Records a demand against an active policy and reserves its filed amount against the policy's aggregate coverage limit.",
|
|
877
|
-
"effects": {
|
|
878
|
-
"reads": [
|
|
879
|
-
{
|
|
880
|
-
"signature": "reads.requires_refs",
|
|
881
|
-
"source": "requiresRefs"
|
|
882
|
-
}
|
|
883
|
-
]
|
|
884
|
-
},
|
|
885
|
-
"eventName": "claim.filed",
|
|
886
|
-
"examples": [
|
|
887
|
-
{
|
|
888
|
-
"input": {
|
|
889
|
-
"claimAmount": "75000",
|
|
890
|
-
"claimantAccountId": "acct_sandbox_holder00001",
|
|
891
|
-
"currency": "SAR",
|
|
892
|
-
"evidenceSummary": "Covered equipment was damaged in an accidental fall.",
|
|
893
|
-
"insurerAccountId": "acct_sandbox_insurer0001",
|
|
894
|
-
"occurredAt": "2026-10-14T11:30:00.000Z",
|
|
895
|
-
"peril": "accidental_damage",
|
|
896
|
-
"policyId": "pol_sandbox_protection001",
|
|
897
|
-
"productId": "prd_sandbox_protection01",
|
|
898
|
-
"subject": "sbj_sandbox_protection001",
|
|
899
|
-
"tenantId": "ten_sandbox_protection01"
|
|
900
|
-
},
|
|
901
|
-
"name": "file_accidental_damage_claim"
|
|
902
|
-
}
|
|
903
|
-
],
|
|
904
|
-
"moves": [],
|
|
905
|
-
"requiresRefs": [
|
|
906
|
-
{
|
|
907
|
-
"field": "policyId",
|
|
908
|
-
"statuses": [
|
|
909
|
-
"active"
|
|
910
|
-
]
|
|
911
|
-
}
|
|
912
|
-
],
|
|
913
|
-
"steps": [],
|
|
914
|
-
"summary": "File a claim"
|
|
915
|
-
},
|
|
916
|
-
"deny": {
|
|
917
|
-
"agentDescription": "Close a filed or assessed demand with no payout. Only a claim with no hold behind it can deny, so an approved claim goes through reverse instead. No money moves.",
|
|
918
|
-
"description": "Closes a filed or assessed demand before any payout hold exists.",
|
|
919
|
-
"eventName": "claim.denied",
|
|
920
|
-
"examples": [
|
|
921
|
-
{
|
|
922
|
-
"input": {
|
|
923
|
-
"claimId": "clm_sandbox_protection001",
|
|
924
|
-
"tenantId": "ten_sandbox_protection01"
|
|
925
|
-
},
|
|
926
|
-
"name": "deny_unapproved_claim"
|
|
927
|
-
}
|
|
928
|
-
],
|
|
929
|
-
"moves": [],
|
|
930
|
-
"steps": [],
|
|
931
|
-
"summary": "Deny a claim"
|
|
932
|
-
},
|
|
933
|
-
"pay": {
|
|
934
|
-
"agentDescription": "Post the approved hold so the claim amount settles into the claimant account. Only an approved claim can pay. This settles money and is terminal.",
|
|
935
|
-
"description": "Posts the approved hold and settles the claim amount into the claimant account.",
|
|
936
|
-
"effects": {
|
|
937
|
-
"moves": [
|
|
938
|
-
{
|
|
939
|
-
"signature": "moves.transfer.internal",
|
|
940
|
-
"source": "moves[0]"
|
|
941
|
-
}
|
|
942
|
-
]
|
|
943
|
-
},
|
|
944
|
-
"eventName": "claim.paid",
|
|
945
|
-
"examples": [
|
|
946
|
-
{
|
|
947
|
-
"input": {
|
|
948
|
-
"claimId": "clm_sandbox_protection001",
|
|
949
|
-
"tenantId": "ten_sandbox_protection01"
|
|
950
|
-
},
|
|
951
|
-
"name": "pay_approved_claim"
|
|
952
|
-
}
|
|
953
|
-
],
|
|
954
|
-
"moves": [
|
|
955
|
-
{
|
|
956
|
-
"bind": {
|
|
957
|
-
"transferId": {
|
|
958
|
-
"from": "instance",
|
|
959
|
-
"path": "refs.claimTransferId"
|
|
960
|
-
}
|
|
961
|
-
},
|
|
962
|
-
"key": "transfer",
|
|
963
|
-
"operation": "internal_transfer.post"
|
|
964
|
-
}
|
|
965
|
-
],
|
|
966
|
-
"steps": [],
|
|
967
|
-
"summary": "Pay a claim"
|
|
968
|
-
},
|
|
969
|
-
"reverse": {
|
|
970
|
-
"agentDescription": "Void an approved payout hold before payment and close the claim as denied. Only an approved claim can reverse. The insurer's held funds are released and no settled money is clawed back.",
|
|
971
|
-
"description": "Voids an approved payout hold before payment and closes the claim denied. No settled money is reversed.",
|
|
972
|
-
"effects": {
|
|
973
|
-
"moves": [
|
|
974
|
-
{
|
|
975
|
-
"signature": "moves.transfer.internal",
|
|
976
|
-
"source": "moves[0]"
|
|
977
|
-
}
|
|
978
|
-
]
|
|
979
|
-
},
|
|
980
|
-
"examples": [
|
|
981
|
-
{
|
|
982
|
-
"input": {
|
|
983
|
-
"claimId": "clm_sandbox_protection001",
|
|
984
|
-
"tenantId": "ten_sandbox_protection01"
|
|
985
|
-
},
|
|
986
|
-
"name": "reverse_approved_claim"
|
|
987
|
-
}
|
|
988
|
-
],
|
|
989
|
-
"moves": [
|
|
990
|
-
{
|
|
991
|
-
"bind": {
|
|
992
|
-
"reason": {
|
|
993
|
-
"from": "const",
|
|
994
|
-
"value": "Claim approval reversed"
|
|
995
|
-
},
|
|
996
|
-
"transferId": {
|
|
997
|
-
"from": "instance",
|
|
998
|
-
"path": "refs.claimTransferId"
|
|
999
|
-
}
|
|
1000
|
-
},
|
|
1001
|
-
"key": "transfer",
|
|
1002
|
-
"operation": "internal_transfer.void"
|
|
1003
|
-
}
|
|
1004
|
-
],
|
|
1005
|
-
"steps": [],
|
|
1006
|
-
"summary": "Reverse claim approval"
|
|
1007
|
-
}
|
|
1008
|
-
},
|
|
1009
|
-
"agentDescription": "Reach for claim when a policyholder demands payment for a covered peril under an active policy. Filing reserves the amount against the policy's coverage limit. Use approve where the carrier exposes an adjudication API and attest where the insurer decides out of band. Premium collection and cover dates live on policy.",
|
|
1010
|
-
"callerParkedStates": {
|
|
1011
|
-
"approved": "paying or reversing an approved claim is the operator's deliberate money movement",
|
|
1012
|
-
"assessed": "approval or denial is an adjuster's judgment, whether the adjuster answers over an API or out of band",
|
|
1013
|
-
"filed": "assessment is an adjuster's judgment"
|
|
1014
|
-
},
|
|
1015
|
-
"description": "A claim is filed against an active policy, assessed, approved or denied, and paid from the insurer account through a held transfer. Approval can be reversed before payment, releasing the insurer's hold without moving settled money.",
|
|
1016
|
-
"dials": [
|
|
1017
|
-
{
|
|
1018
|
-
"action": "approve",
|
|
1019
|
-
"key": "adjuster_decision_deadline_ms",
|
|
1020
|
-
"kind": "decision_deadline_ms",
|
|
1021
|
-
"minMs": 1000,
|
|
1022
|
-
"summary": "How long approve waits for the claims adjuster's decision before the timeout default declines.",
|
|
1023
|
-
"title": "Adjuster decision deadline"
|
|
1024
|
-
}
|
|
1025
|
-
],
|
|
1026
|
-
"fields": {
|
|
1027
|
-
"claimAmount": {
|
|
1028
|
-
"description": "Positive minor-unit integer amount serialized as a string (at most 18 digits)",
|
|
1029
|
-
"pattern": "^[1-9][0-9]{0,17}$",
|
|
1030
|
-
"type": "string"
|
|
1031
|
-
},
|
|
1032
|
-
"claimantAccountId": {
|
|
1033
|
-
"description": "Hyperscale account ID",
|
|
1034
|
-
"pattern": "^acct_(sandbox|live)_[a-z0-9]{8,64}$",
|
|
1035
|
-
"type": "string",
|
|
1036
|
-
"x-hyperscale-reference-filter": {
|
|
1037
|
-
"column": "role",
|
|
1038
|
-
"values": [
|
|
1039
|
-
"customer_balance"
|
|
1040
|
-
]
|
|
1041
|
-
}
|
|
1042
|
-
},
|
|
1043
|
-
"currency": {
|
|
1044
|
-
"description": "ISO 4217 currency code",
|
|
1045
|
-
"maxLength": 3,
|
|
1046
|
-
"minLength": 3,
|
|
1047
|
-
"pattern": "^[A-Z]{3}$",
|
|
1048
|
-
"type": "string"
|
|
1049
|
-
},
|
|
1050
|
-
"evidenceSummary": {
|
|
1051
|
-
"maxLength": 2000,
|
|
1052
|
-
"minLength": 1,
|
|
1053
|
-
"type": "string"
|
|
1054
|
-
},
|
|
1055
|
-
"insurerAccountId": {
|
|
1056
|
-
"description": "Hyperscale account ID",
|
|
1057
|
-
"pattern": "^acct_(sandbox|live)_[a-z0-9]{8,64}$",
|
|
1058
|
-
"type": "string",
|
|
1059
|
-
"x-hyperscale-reference-filter": {
|
|
1060
|
-
"column": "role",
|
|
1061
|
-
"values": [
|
|
1062
|
-
"customer_balance"
|
|
1063
|
-
]
|
|
1064
|
-
}
|
|
1065
|
-
},
|
|
1066
|
-
"occurredAt": {
|
|
1067
|
-
"format": "hyperscale-date-time",
|
|
1068
|
-
"type": "string"
|
|
1069
|
-
},
|
|
1070
|
-
"peril": {
|
|
1071
|
-
"pattern": "^[a-z][a-z0-9_]{1,79}$",
|
|
1072
|
-
"type": "string"
|
|
1073
|
-
},
|
|
1074
|
-
"policyId": {
|
|
1075
|
-
"description": "Active policy this claim is made against",
|
|
1076
|
-
"pattern": "^pol_(sandbox|live)_[a-z0-9]{8,64}$",
|
|
1077
|
-
"type": "string"
|
|
1078
|
-
}
|
|
1079
|
-
},
|
|
1080
|
-
"id": "claim",
|
|
1081
|
-
"idPrefix": "clm",
|
|
1082
|
-
"lifecycle": {
|
|
1083
|
-
"initial": "filed",
|
|
1084
|
-
"states": [
|
|
1085
|
-
"filed",
|
|
1086
|
-
"assessed",
|
|
1087
|
-
"approved",
|
|
1088
|
-
"paid",
|
|
1089
|
-
"denied"
|
|
1090
|
-
],
|
|
1091
|
-
"transitions": {
|
|
1092
|
-
"approve": {
|
|
1093
|
-
"from": [
|
|
1094
|
-
"assessed"
|
|
1095
|
-
],
|
|
1096
|
-
"to": "approved"
|
|
1097
|
-
},
|
|
1098
|
-
"assess": {
|
|
1099
|
-
"from": [
|
|
1100
|
-
"filed"
|
|
1101
|
-
],
|
|
1102
|
-
"to": "assessed"
|
|
1103
|
-
},
|
|
1104
|
-
"attest": {
|
|
1105
|
-
"from": [
|
|
1106
|
-
"assessed"
|
|
1107
|
-
],
|
|
1108
|
-
"to": "approved"
|
|
1109
|
-
},
|
|
1110
|
-
"deny": {
|
|
1111
|
-
"from": [
|
|
1112
|
-
"filed",
|
|
1113
|
-
"assessed"
|
|
1114
|
-
],
|
|
1115
|
-
"to": "denied"
|
|
1116
|
-
},
|
|
1117
|
-
"pay": {
|
|
1118
|
-
"from": [
|
|
1119
|
-
"approved"
|
|
1120
|
-
],
|
|
1121
|
-
"to": "paid"
|
|
1122
|
-
},
|
|
1123
|
-
"reverse": {
|
|
1124
|
-
"from": [
|
|
1125
|
-
"approved"
|
|
1126
|
-
],
|
|
1127
|
-
"to": "denied"
|
|
1128
|
-
}
|
|
1129
|
-
}
|
|
1130
|
-
},
|
|
1131
|
-
"nav": [
|
|
1132
|
-
"Blueprints",
|
|
1133
|
-
"Claims"
|
|
1134
|
-
],
|
|
1135
|
-
"parties": {
|
|
1136
|
-
"beneficiary": "claimantAccountId",
|
|
1137
|
-
"payer": "insurerAccountId"
|
|
1138
|
-
},
|
|
1139
|
-
"required": [
|
|
1140
|
-
"policyId",
|
|
1141
|
-
"claimantAccountId",
|
|
1142
|
-
"insurerAccountId",
|
|
1143
|
-
"claimAmount",
|
|
1144
|
-
"currency",
|
|
1145
|
-
"peril",
|
|
1146
|
-
"occurredAt"
|
|
1147
|
-
],
|
|
1148
|
-
"subject": {
|
|
1149
|
-
"kinds": [
|
|
1150
|
-
"policy_risk",
|
|
1151
|
-
"flight_itinerary",
|
|
1152
|
-
"lodging_stay",
|
|
1153
|
-
"vehicle",
|
|
1154
|
-
"merchandise",
|
|
1155
|
-
"pet",
|
|
1156
|
-
"traveler_party",
|
|
1157
|
-
"employee_census"
|
|
1158
|
-
]
|
|
1159
|
-
},
|
|
1160
|
-
"summary": "Demand against active protection for one covered peril.",
|
|
1161
|
-
"templateId": "insurance",
|
|
1162
|
-
"title": "Claim",
|
|
1163
|
-
"update": {
|
|
1164
|
-
"examples": [
|
|
1165
|
-
{
|
|
1166
|
-
"input": {
|
|
1167
|
-
"claimId": "clm_sandbox_protection001",
|
|
1168
|
-
"evidenceSummary": "Damage assessment confirms the covered accidental event.",
|
|
1169
|
-
"tenantId": "ten_sandbox_protection01"
|
|
1170
|
-
},
|
|
1171
|
-
"name": "add_claim_evidence_summary"
|
|
1172
|
-
}
|
|
1173
|
-
],
|
|
1174
|
-
"fields": [
|
|
1175
|
-
"evidenceSummary"
|
|
1176
|
-
],
|
|
1177
|
-
"states": [
|
|
1178
|
-
"filed",
|
|
1179
|
-
"assessed"
|
|
1180
|
-
]
|
|
1181
|
-
}
|
|
1182
|
-
}
|
|
1183
|
-
],
|
|
1184
|
-
"product": "protection",
|
|
1185
|
-
"subjects": [
|
|
1186
|
-
{
|
|
1187
|
-
"declaredValue": "required",
|
|
1188
|
-
"kind": "vehicle",
|
|
1189
|
-
"schema": {
|
|
1190
|
-
"additionalProperties": false,
|
|
1191
|
-
"properties": {
|
|
1192
|
-
"make": {
|
|
1193
|
-
"maxLength": 60,
|
|
1194
|
-
"minLength": 1,
|
|
1195
|
-
"type": "string"
|
|
1196
|
-
},
|
|
1197
|
-
"mileageKm": {
|
|
1198
|
-
"maximum": 9007199254740991,
|
|
1199
|
-
"minimum": 0,
|
|
1200
|
-
"type": "integer"
|
|
1201
|
-
},
|
|
1202
|
-
"model": {
|
|
1203
|
-
"maxLength": 60,
|
|
1204
|
-
"minLength": 1,
|
|
1205
|
-
"type": "string"
|
|
1206
|
-
},
|
|
1207
|
-
"vin": {
|
|
1208
|
-
"maxLength": 17,
|
|
1209
|
-
"minLength": 11,
|
|
1210
|
-
"type": "string"
|
|
1211
|
-
},
|
|
1212
|
-
"year": {
|
|
1213
|
-
"pattern": "^\\d{4}$",
|
|
1214
|
-
"type": "string"
|
|
1215
|
-
}
|
|
1216
|
-
},
|
|
1217
|
-
"required": [
|
|
1218
|
-
"vin",
|
|
1219
|
-
"make",
|
|
1220
|
-
"model",
|
|
1221
|
-
"year",
|
|
1222
|
-
"mileageKm"
|
|
1223
|
-
],
|
|
1224
|
-
"type": "object"
|
|
1225
|
-
},
|
|
1226
|
-
"title": "Vehicle",
|
|
1227
|
-
"version": 1
|
|
1228
|
-
},
|
|
1229
|
-
{
|
|
1230
|
-
"declaredValue": "required",
|
|
1231
|
-
"kind": "merchandise",
|
|
1232
|
-
"schema": {
|
|
1233
|
-
"additionalProperties": false,
|
|
1234
|
-
"properties": {
|
|
1235
|
-
"brand": {
|
|
1236
|
-
"maxLength": 60,
|
|
1237
|
-
"minLength": 1,
|
|
1238
|
-
"type": "string"
|
|
1239
|
-
},
|
|
1240
|
-
"category": {
|
|
1241
|
-
"maxLength": 60,
|
|
1242
|
-
"minLength": 1,
|
|
1243
|
-
"type": "string"
|
|
1244
|
-
},
|
|
1245
|
-
"condition": {
|
|
1246
|
-
"enum": [
|
|
1247
|
-
"new",
|
|
1248
|
-
"excellent",
|
|
1249
|
-
"good",
|
|
1250
|
-
"fair",
|
|
1251
|
-
"poor"
|
|
1252
|
-
],
|
|
1253
|
-
"type": "string"
|
|
1254
|
-
},
|
|
1255
|
-
"model": {
|
|
1256
|
-
"maxLength": 60,
|
|
1257
|
-
"minLength": 1,
|
|
1258
|
-
"type": "string"
|
|
1259
|
-
},
|
|
1260
|
-
"serialNumber": {
|
|
1261
|
-
"maxLength": 80,
|
|
1262
|
-
"minLength": 1,
|
|
1263
|
-
"type": "string"
|
|
1264
|
-
},
|
|
1265
|
-
"yearOfManufacture": {
|
|
1266
|
-
"pattern": "^\\d{4}$",
|
|
1267
|
-
"type": "string"
|
|
1268
|
-
}
|
|
1269
|
-
},
|
|
1270
|
-
"required": [
|
|
1271
|
-
"category",
|
|
1272
|
-
"condition"
|
|
1273
|
-
],
|
|
1274
|
-
"type": "object"
|
|
1275
|
-
},
|
|
1276
|
-
"title": "Merchandise",
|
|
1277
|
-
"version": 1
|
|
1278
|
-
},
|
|
1279
|
-
{
|
|
1280
|
-
"declaredValue": "required",
|
|
1281
|
-
"kind": "policy_risk",
|
|
1282
|
-
"schema": {
|
|
1283
|
-
"additionalProperties": false,
|
|
1284
|
-
"properties": {
|
|
1285
|
-
"category": {
|
|
1286
|
-
"pattern": "^[a-z][a-z0-9_]{1,79}$",
|
|
1287
|
-
"type": "string"
|
|
1288
|
-
},
|
|
1289
|
-
"description": {
|
|
1290
|
-
"maxLength": 500,
|
|
1291
|
-
"minLength": 1,
|
|
1292
|
-
"type": "string"
|
|
1293
|
-
},
|
|
1294
|
-
"jurisdiction": {
|
|
1295
|
-
"maxLength": 80,
|
|
1296
|
-
"minLength": 2,
|
|
1297
|
-
"type": "string"
|
|
1298
|
-
},
|
|
1299
|
-
"reference": {
|
|
1300
|
-
"maxLength": 120,
|
|
1301
|
-
"minLength": 1,
|
|
1302
|
-
"type": "string"
|
|
1303
|
-
}
|
|
1304
|
-
},
|
|
1305
|
-
"required": [
|
|
1306
|
-
"category",
|
|
1307
|
-
"description",
|
|
1308
|
-
"jurisdiction"
|
|
1309
|
-
],
|
|
1310
|
-
"type": "object"
|
|
1311
|
-
},
|
|
1312
|
-
"title": "Policy risk",
|
|
1313
|
-
"version": 1
|
|
1314
|
-
},
|
|
1315
|
-
{
|
|
1316
|
-
"declaredValue": "required",
|
|
1317
|
-
"kind": "flight_itinerary",
|
|
1318
|
-
"schema": {
|
|
1319
|
-
"additionalProperties": false,
|
|
1320
|
-
"properties": {
|
|
1321
|
-
"cabin": {
|
|
1322
|
-
"enum": [
|
|
1323
|
-
"economy",
|
|
1324
|
-
"premium_economy",
|
|
1325
|
-
"business",
|
|
1326
|
-
"first"
|
|
1327
|
-
],
|
|
1328
|
-
"type": "string"
|
|
1329
|
-
},
|
|
1330
|
-
"carrierName": {
|
|
1331
|
-
"maxLength": 80,
|
|
1332
|
-
"minLength": 1,
|
|
1333
|
-
"type": "string"
|
|
1334
|
-
},
|
|
1335
|
-
"destination": {
|
|
1336
|
-
"pattern": "^[A-Z]{3}$",
|
|
1337
|
-
"type": "string"
|
|
1338
|
-
},
|
|
1339
|
-
"flightNumber": {
|
|
1340
|
-
"maxLength": 8,
|
|
1341
|
-
"minLength": 2,
|
|
1342
|
-
"type": "string"
|
|
1343
|
-
},
|
|
1344
|
-
"origin": {
|
|
1345
|
-
"pattern": "^[A-Z]{3}$",
|
|
1346
|
-
"type": "string"
|
|
1347
|
-
}
|
|
1348
|
-
},
|
|
1349
|
-
"required": [
|
|
1350
|
-
"carrierName",
|
|
1351
|
-
"flightNumber",
|
|
1352
|
-
"origin",
|
|
1353
|
-
"destination",
|
|
1354
|
-
"cabin"
|
|
1355
|
-
],
|
|
1356
|
-
"type": "object"
|
|
1357
|
-
},
|
|
1358
|
-
"title": "Flight itinerary",
|
|
1359
|
-
"version": 1
|
|
1360
|
-
},
|
|
1361
|
-
{
|
|
1362
|
-
"declaredValue": "required",
|
|
1363
|
-
"kind": "lodging_stay",
|
|
1364
|
-
"schema": {
|
|
1365
|
-
"additionalProperties": false,
|
|
1366
|
-
"properties": {
|
|
1367
|
-
"city": {
|
|
1368
|
-
"maxLength": 80,
|
|
1369
|
-
"minLength": 1,
|
|
1370
|
-
"type": "string"
|
|
1371
|
-
},
|
|
1372
|
-
"propertyName": {
|
|
1373
|
-
"maxLength": 120,
|
|
1374
|
-
"minLength": 1,
|
|
1375
|
-
"type": "string"
|
|
1376
|
-
},
|
|
1377
|
-
"roomType": {
|
|
1378
|
-
"maxLength": 60,
|
|
1379
|
-
"minLength": 1,
|
|
1380
|
-
"type": "string"
|
|
1381
|
-
}
|
|
1382
|
-
},
|
|
1383
|
-
"required": [
|
|
1384
|
-
"propertyName",
|
|
1385
|
-
"city",
|
|
1386
|
-
"roomType"
|
|
1387
|
-
],
|
|
1388
|
-
"type": "object"
|
|
1389
|
-
},
|
|
1390
|
-
"title": "Lodging stay",
|
|
1391
|
-
"version": 1
|
|
1392
|
-
},
|
|
1393
|
-
{
|
|
1394
|
-
"declaredValue": "required",
|
|
1395
|
-
"kind": "pet",
|
|
1396
|
-
"schema": {
|
|
1397
|
-
"additionalProperties": false,
|
|
1398
|
-
"properties": {
|
|
1399
|
-
"ageYears": {
|
|
1400
|
-
"maximum": 30,
|
|
1401
|
-
"minimum": 0,
|
|
1402
|
-
"type": "integer"
|
|
1403
|
-
},
|
|
1404
|
-
"breed": {
|
|
1405
|
-
"maxLength": 80,
|
|
1406
|
-
"minLength": 1,
|
|
1407
|
-
"type": "string"
|
|
1408
|
-
},
|
|
1409
|
-
"gender": {
|
|
1410
|
-
"enum": [
|
|
1411
|
-
"female",
|
|
1412
|
-
"male"
|
|
1413
|
-
],
|
|
1414
|
-
"type": "string"
|
|
1415
|
-
},
|
|
1416
|
-
"lastCheckupAt": {
|
|
1417
|
-
"format": "hyperscale-date",
|
|
1418
|
-
"type": "string"
|
|
1419
|
-
},
|
|
1420
|
-
"microchipNumber": {
|
|
1421
|
-
"maxLength": 40,
|
|
1422
|
-
"minLength": 1,
|
|
1423
|
-
"type": "string"
|
|
1424
|
-
},
|
|
1425
|
-
"name": {
|
|
1426
|
-
"maxLength": 80,
|
|
1427
|
-
"minLength": 1,
|
|
1428
|
-
"type": "string"
|
|
1429
|
-
},
|
|
1430
|
-
"neutered": {
|
|
1431
|
-
"type": "boolean"
|
|
1432
|
-
},
|
|
1433
|
-
"species": {
|
|
1434
|
-
"enum": [
|
|
1435
|
-
"cat",
|
|
1436
|
-
"dog"
|
|
1437
|
-
],
|
|
1438
|
-
"type": "string"
|
|
1439
|
-
}
|
|
1440
|
-
},
|
|
1441
|
-
"required": [
|
|
1442
|
-
"species",
|
|
1443
|
-
"breed",
|
|
1444
|
-
"ageYears",
|
|
1445
|
-
"gender"
|
|
1446
|
-
],
|
|
1447
|
-
"type": "object"
|
|
1448
|
-
},
|
|
1449
|
-
"title": "Pet",
|
|
1450
|
-
"version": 1
|
|
1451
|
-
},
|
|
1452
|
-
{
|
|
1453
|
-
"declaredValue": "required",
|
|
1454
|
-
"kind": "traveler_party",
|
|
1455
|
-
"schema": {
|
|
1456
|
-
"additionalProperties": false,
|
|
1457
|
-
"properties": {
|
|
1458
|
-
"destinationRegion": {
|
|
1459
|
-
"maxLength": 80,
|
|
1460
|
-
"minLength": 2,
|
|
1461
|
-
"type": "string"
|
|
1462
|
-
},
|
|
1463
|
-
"originCountry": {
|
|
1464
|
-
"pattern": "^[A-Z]{2}$",
|
|
1465
|
-
"type": "string"
|
|
1466
|
-
},
|
|
1467
|
-
"travelers": {
|
|
1468
|
-
"items": {
|
|
1469
|
-
"additionalProperties": false,
|
|
1470
|
-
"properties": {
|
|
1471
|
-
"role": {
|
|
1472
|
-
"enum": [
|
|
1473
|
-
"self",
|
|
1474
|
-
"spouse",
|
|
1475
|
-
"child"
|
|
1476
|
-
],
|
|
1477
|
-
"type": "string"
|
|
1478
|
-
},
|
|
1479
|
-
"yearOfBirth": {
|
|
1480
|
-
"maximum": 2030,
|
|
1481
|
-
"minimum": 1900,
|
|
1482
|
-
"type": "integer"
|
|
1483
|
-
}
|
|
1484
|
-
},
|
|
1485
|
-
"required": [
|
|
1486
|
-
"role",
|
|
1487
|
-
"yearOfBirth"
|
|
1488
|
-
],
|
|
1489
|
-
"type": "object"
|
|
1490
|
-
},
|
|
1491
|
-
"maxItems": 20,
|
|
1492
|
-
"minItems": 1,
|
|
1493
|
-
"type": "array"
|
|
1494
|
-
}
|
|
1495
|
-
},
|
|
1496
|
-
"required": [
|
|
1497
|
-
"travelers",
|
|
1498
|
-
"destinationRegion"
|
|
1499
|
-
],
|
|
1500
|
-
"type": "object"
|
|
1501
|
-
},
|
|
1502
|
-
"title": "Traveler party",
|
|
1503
|
-
"version": 1
|
|
1504
|
-
},
|
|
1505
|
-
{
|
|
1506
|
-
"declaredValue": "required",
|
|
1507
|
-
"kind": "employee_census",
|
|
1508
|
-
"schema": {
|
|
1509
|
-
"additionalProperties": false,
|
|
1510
|
-
"properties": {
|
|
1511
|
-
"dependentCount": {
|
|
1512
|
-
"maximum": 50000,
|
|
1513
|
-
"minimum": 0,
|
|
1514
|
-
"type": "integer"
|
|
1515
|
-
},
|
|
1516
|
-
"entityReference": {
|
|
1517
|
-
"maxLength": 120,
|
|
1518
|
-
"minLength": 1,
|
|
1519
|
-
"type": "string"
|
|
1520
|
-
},
|
|
1521
|
-
"insuranceClasses": {
|
|
1522
|
-
"items": {
|
|
1523
|
-
"maxLength": 60,
|
|
1524
|
-
"minLength": 1,
|
|
1525
|
-
"type": "string"
|
|
1526
|
-
},
|
|
1527
|
-
"maxItems": 12,
|
|
1528
|
-
"minItems": 1,
|
|
1529
|
-
"type": "array"
|
|
1530
|
-
},
|
|
1531
|
-
"primaryCount": {
|
|
1532
|
-
"maximum": 10000,
|
|
1533
|
-
"minimum": 1,
|
|
1534
|
-
"type": "integer"
|
|
1535
|
-
}
|
|
1536
|
-
},
|
|
1537
|
-
"required": [
|
|
1538
|
-
"entityReference",
|
|
1539
|
-
"primaryCount",
|
|
1540
|
-
"dependentCount"
|
|
1541
|
-
],
|
|
1542
|
-
"type": "object"
|
|
1543
|
-
},
|
|
1544
|
-
"title": "Employee census",
|
|
1545
|
-
"version": 1
|
|
1546
|
-
}
|
|
1547
|
-
],
|
|
1548
|
-
"title": "Protection",
|
|
1549
|
-
"udl": 1,
|
|
1550
|
-
"version": 1
|
|
1551
|
-
}
|