addedInput schema / properties / external_evidence
Added value: +{
+ "items": {
+ "$id": "external-evidence/v0/rev6",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "additionalProperties": false,
+ "description": "Closed JSON Schema for one item of the optional top-level external_evidence collection. additionalProperties:false is enforced recursively; required fields are explicit; reference and inline modes are discriminated with oneOf (now actually enforced by conformant Draft-07 validators). rev4 hardening: every uint256 semantics field accepts either a JSON number in 0..9007199254740991 or a canonical decimal-string for larger values (Alejandro 10th-reply targeted correction, completing the 9th-reply integer item); rev3 items are retained: inline_payload closed with a strict profile-specific schema (Insight OracleSafetyCheck v2, 26 fields, required, exact types, additionalProperties:false), signed schemaVersion=2 and evaluationScope=SOURCE_ASSET_ONLY pinned by const. subject_only and order_insensitive binding modes are reserved and NOT accepted on the wire in v0. rev5: the wire shape is unchanged. The bundled self-check validator now evaluates const and enum before any type-specific return, so it agrees with a conformant Draft-07 validator on the pinned schemaVersion=2 and evaluationScope=SOURCE_ASSET_ONLY.",
+ "properties": {
+ "assertion": {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "description": "semantics pinned locally per provider profile",
+ "enum": [
+ "assessment",
+ "observation"
+ ],
+ "type": "string"
+ },
+ "observations": {
+ "additionalProperties": false,
+ "description": "optional on the wire; if present it must equal the signed projection field by field (compared with structural/JCS equality, not order-sensitive JSON.stringify)",
+ "properties": {
+ "coverage_status": {
+ "type": "string"
+ },
+ "cross_provider_agreement_bps": {
+ "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
+ "oneOf": [
+ {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "description": "canonical decimal-string: only for values > 9007199254740991",
+ "pattern": "^(0|[1-9][0-9]*)$",
+ "type": "string"
+ }
+ ]
+ },
+ "cross_provider_deviation_bps": {
+ "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
+ "oneOf": [
+ {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "description": "canonical decimal-string: only for values > 9007199254740991",
+ "pattern": "^(0|[1-9][0-9]*)$",
+ "type": "string"
+ }
+ ]
+ },
+ "independence_status": {
+ "type": "string"
+ },
+ "max_data_age_seconds": {
+ "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
+ "oneOf": [
+ {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "description": "canonical decimal-string: only for values > 9007199254740991",
+ "pattern": "^(0|[1-9][0-9]*)$",
+ "type": "string"
+ }
+ ]
+ },
+ "participant_count": {
+ "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
+ "oneOf": [
+ {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "description": "canonical decimal-string: only for values > 9007199254740991",
+ "pattern": "^(0|[1-9][0-9]*)$",
+ "type": "string"
+ }
+ ]
+ },
+ "required_participant_count": {
+ "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
+ "oneOf": [
+ {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "description": "canonical decimal-string: only for values > 9007199254740991",
+ "pattern": "^(0|[1-9][0-9]*)$",
+ "type": "string"
+ }
+ ]
+ }
+ },
+ "required": [
+ "coverage_status",
+ "participant_count",
+ "required_participant_count",
+ "cross_provider_deviation_bps",
+ "cross_provider_agreement_bps",
+ "independence_status",
+ "max_data_age_seconds"
+ ],
+ "type": "object"
+ },
+ "verdict": {
+ "description": "provider-native verdict, must equal the signed verdict",
+ "type": "string"
+ },
+ "verdict_space": {
+ "description": "the scale namespace, pinned locally per provider profile",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "verdict",
+ "verdict_space"
+ ],
+ "type": "object"
+ },
+ "binding": {
+ "additionalProperties": false,
+ "properties": {
+ "action_commitment": {
+ "additionalProperties": false,
+ "properties": {
+ "commitment": {
+ "description": "must equal the signed requestHash",
+ "pattern": "^0x[0-9a-f]{64}$",
+ "type": "string"
+ },
+ "committed_fields": {
+ "description": "the field list is pinned locally per provider profile",
+ "items": {
+ "type": "string"
+ },
+ "minItems": 1,
+ "type": "array",
+ "uniqueItems": true
+ },
+ "scheme": {
+ "description": "pinned locally per provider profile (insight.canonical-pre-trade-request/v1)",
+ "type": "string"
+ },
+ "type": {
+ "description": "pinned locally per provider profile (eip712)",
+ "type": "string"
+ }
+ },
+ "required": [
+ "scheme",
+ "type",
+ "commitment",
+ "committed_fields"
+ ],
+ "type": "object"
+ },
+ "binding_mode": {
+ "description": "the only supported v0 binding mode. subject_only and order_insensitive are reserved and rejected on the wire.",
+ "enum": [
+ "exact_action"
+ ],
+ "type": "string"
+ },
+ "scope": {
+ "description": "v0 supports action scope only; subject scope is reserved with subject_only",
+ "enum": [
+ "action"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "scope",
+ "binding_mode",
+ "action_commitment"
+ ],
+ "type": "object"
+ },
+ "evidence_id": {
+ "description": "provider canonical digest as claimed by the caller; InterAI recomputes it from the verified signed assertion and a mismatch is NOT_ALLOWED.",
+ "pattern": "^0x[0-9a-f]{64}$",
+ "type": "string"
+ },
+ "provider": {
+ "additionalProperties": false,
+ "properties": {
+ "assertion_version": {
+ "description": "must equal the locally configured profile version",
+ "type": "string"
+ },
+ "key_id": {
+ "description": "must equal the locally pinned key id",
+ "type": "string"
+ },
+ "namespace": {
+ "description": "resolved against the local provider adapter / trust registry",
+ "type": "string"
+ }
+ },
+ "required": [
+ "namespace",
+ "assertion_version",
+ "key_id"
+ ],
+ "type": "object"
+ },
+ "validity": {
+ "additionalProperties": false,
+ "properties": {
+ "evaluated_at": {
+ "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED. must equal signed checkedAt",
+ "oneOf": [
+ {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "description": "canonical decimal-string: only for values > 9007199254740991",
+ "pattern": "^(0|[1-9][0-9]*)$",
+ "type": "string"
+ }
+ ]
+ },
+ "valid_until": {
+ "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED. must equal signed validUntil; expiry is enforced on the signed payload, never this projection",
+ "oneOf": [
+ {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "description": "canonical decimal-string: only for values > 9007199254740991",
+ "pattern": "^(0|[1-9][0-9]*)$",
+ "type": "string"
+ }
+ ]
+ }
+ },
+ "required": [
+ "evaluated_at",
+ "valid_until"
+ ],
+ "type": "object"
+ },
+ "verification": {
+ "oneOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "attestation_ref": {
+ "description": "resolved through the locally configured adapter / allowlisted origin; a URL in evidence never triggers arbitrary fetching",
+ "type": "string"
+ },
+ "mode": {
+ "const": "reference"
+ }
+ },
+ "required": [
+ "mode",
+ "attestation_ref"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "inline_payload": {
+ "additionalProperties": false,
+ "description": "profile-specific closed schema for the Insight OracleSafetyCheck v2 (26-field) inline payload: required, exact types, additionalProperties:false, schemaVersion=2 and evaluationScope=SOURCE_ASSET_ONLY pinned by const. A future provider profile pins its own inline schema.",
+ "properties": {
+ "action": {
+ "type": "string"
+ },
+ "checkedAt": {
+ "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
+ "oneOf": [
+ {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "description": "canonical decimal-string: only for values > 9007199254740991",
+ "pattern": "^(0|[1-9][0-9]*)$",
+ "type": "string"
+ }
+ ]
+ },
+ "consensusPrice": {
+ "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
+ "oneOf": [
+ {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "description": "canonical decimal-string: only for values > 9007199254740991",
+ "pattern": "^(0|[1-9][0-9]*)$",
+ "type": "string"
+ }
+ ]
+ },
+ "coverageStatus": {
+ "type": "string"
+ },
+ "crossProviderAgreementBps": {
+ "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
+ "oneOf": [
+ {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "description": "canonical decimal-string: only for values > 9007199254740991",
+ "pattern": "^(0|[1-9][0-9]*)$",
+ "type": "string"
+ }
+ ]
+ },
+ "destinationAssetId": {
+ "type": "string"
+ },
+ "evaluatedAssetIdsHash": {
+ "pattern": "^0x[0-9a-f]{64}$",
+ "type": "string"
+ },
+ "evaluationScope": {
+ "const": "SOURCE_ASSET_ONLY",
+ "description": "pinned (Alejandro 9th reply): InterAI must not widen the signed evaluationScope claim",
+ "type": "string"
+ },
+ "independenceStatus": {
+ "type": "string"
+ },
+ "manipulationRiskBps": {
+ "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
+ "oneOf": [
+ {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "description": "canonical decimal-string: only for values > 9007199254740991",
+ "pattern": "^(0|[1-9][0-9]*)$",
+ "type": "string"
+ }
+ ]
+ },
+ "maxDataAgeSeconds": {
+ "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
+ "oneOf": [
+ {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "description": "canonical decimal-string: only for values > 9007199254740991",
+ "pattern": "^(0|[1-9][0-9]*)$",
+ "type": "string"
+ }
+ ]
+ },
+ "maxDeviationBps": {
+ "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
+ "oneOf": [
+ {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "description": "canonical decimal-string: only for values > 9007199254740991",
+ "pattern": "^(0|[1-9][0-9]*)$",
+ "type": "string"
+ }
+ ]
+ },
+ "maxStablecoinDepegBps": {
+ "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
+ "oneOf": [
+ {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "description": "canonical decimal-string: only for values > 9007199254740991",
+ "pattern": "^(0|[1-9][0-9]*)$",
+ "type": "string"
+ }
+ ]
+ },
+ "participantCount": {
+ "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
+ "oneOf": [
+ {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "description": "canonical decimal-string: only for values > 9007199254740991",
+ "pattern": "^(0|[1-9][0-9]*)$",
+ "type": "string"
+ }
+ ]
+ },
+ "providerObservationsHash": {
+ "pattern": "^0x[0-9a-f]{64}$",
+ "type": "string"
+ },
+ "reasonCodesHash": {
+ "pattern": "^0x[0-9a-f]{64}$",
+ "type": "string"
+ },
+ "recommendedMaxPositionUsd": {
+ "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
+ "oneOf": [
+ {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "description": "canonical decimal-string: only for values > 9007199254740991",
+ "pattern": "^(0|[1-9][0-9]*)$",
+ "type": "string"
+ }
+ ]
+ },
+ "requestHash": {
+ "pattern": "^0x[0-9a-f]{64}$",
+ "type": "string"
+ },
+ "requiredParticipantCount": {
+ "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
+ "oneOf": [
+ {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "description": "canonical decimal-string: only for values > 9007199254740991",
+ "pattern": "^(0|[1-9][0-9]*)$",
+ "type": "string"
+ }
+ ]
+ },
+ "schemaVersion": {
+ "const": 2,
+ "description": "pinned (Alejandro 9th reply): only schemaVersion=2 is accepted",
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "sourceAssetId": {
+ "type": "string"
+ },
+ "sourceGroupCount": {
+ "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
+ "oneOf": [
+ {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "description": "canonical decimal-string: only for values > 9007199254740991",
+ "pattern": "^(0|[1-9][0-9]*)$",
+ "type": "string"
+ }
+ ]
+ },
+ "subjectChainId": {
+ "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
+ "oneOf": [
+ {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "description": "canonical decimal-string: only for values > 9007199254740991",
+ "pattern": "^(0|[1-9][0-9]*)$",
+ "type": "string"
+ }
+ ]
+ },
+ "tradeAmountUsd": {
+ "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
+ "oneOf": [
+ {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "description": "canonical decimal-string: only for values > 9007199254740991",
+ "pattern": "^(0|[1-9][0-9]*)$",
+ "type": "string"
+ }
+ ]
+ },
+ "validUntil": {
+ "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
+ "oneOf": [
+ {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "description": "canonical decimal-string: only for values > 9007199254740991",
+ "pattern": "^(0|[1-9][0-9]*)$",
+ "type": "string"
+ }
+ ]
+ },
+ "verdict": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "verdict",
+ "sourceAssetId",
+ "destinationAssetId",
+ "subjectChainId",
+ "action",
+ "tradeAmountUsd",
+ "consensusPrice",
+ "maxDeviationBps",
+ "manipulationRiskBps",
+ "participantCount",
+ "requiredParticipantCount",
+ "coverageStatus",
+ "independenceStatus",
+ "sourceGroupCount",
+ "crossProviderAgreementBps",
+ "maxStablecoinDepegBps",
+ "maxDataAgeSeconds",
+ "recommendedMaxPositionUsd",
+ "reasonCodesHash",
+ "requestHash",
+ "evaluationScope",
+ "evaluatedAssetIdsHash",
+ "providerObservationsHash",
+ "validUntil",
+ "checkedAt",
+ "schemaVersion"
+ ],
+ "type": "object"
+ },
+ "inline_signature": {
+ "description": "provider signature over the typed payload",
+ "type": "string"
+ },
+ "mode": {
+ "const": "inline"
+ }
+ },
+ "required": [
+ "mode",
+ "inline_payload",
+ "inline_signature"
+ ],
+ "type": "object"
+ }
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "evidence_id",
+ "provider",
+ "assertion",
+ "validity",
+ "binding",
+ "verification"
+ ],
+ "title": "external-evidence/v0 (rev6) wire item",
+ "type": "object"
+ },
+ "type": "array"
+}