changedOutput schema / (root)
Previous value: -nullNew value: +{
+ "additionalProperties": false,
+ "properties": {
+ "data": {
+ "additionalProperties": false,
+ "properties": {
+ "assumptions": {
+ "items": {
+ "maxLength": 500,
+ "type": "string"
+ },
+ "maxItems": 50,
+ "type": "array"
+ },
+ "durable": {
+ "type": "boolean"
+ },
+ "expires_at": {
+ "format": "date-time",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "freshness_disclosure": {
+ "additionalProperties": false,
+ "properties": {
+ "by_rooftop": {
+ "additionalProperties": {
+ "additionalProperties": false,
+ "properties": {
+ "last_ingest_at": {
+ "format": "date-time",
+ "maxLength": 40,
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "status": {
+ "enum": [
+ "fresh",
+ "stale",
+ "no_data"
+ ]
+ }
+ },
+ "required": [
+ "status",
+ "last_ingest_at"
+ ],
+ "type": "object"
+ },
+ "maxProperties": 500,
+ "type": "object"
+ },
+ "generated_at": {
+ "format": "date-time",
+ "type": "string"
+ },
+ "inventory_last_seen_at": {
+ "format": "date-time",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "generated_at",
+ "inventory_last_seen_at",
+ "by_rooftop"
+ ],
+ "type": "object"
+ },
+ "pricing": {
+ "additionalProperties": false,
+ "dependentRequired": {
+ "excluded": [
+ "pricing_coverage",
+ "pricing_disclosure"
+ ],
+ "pricing_coverage": [
+ "excluded",
+ "pricing_disclosure"
+ ],
+ "pricing_disclosure": [
+ "pricing_coverage",
+ "excluded"
+ ]
+ },
+ "properties": {
+ "base_price": {
+ "description": "Exact decimal amount with two places (never a JSON float).",
+ "pattern": "^-?[0-9]+\\.[0-9]{2}$",
+ "type": "string"
+ },
+ "currency": {
+ "const": "USD"
+ },
+ "excluded": {
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "code": {
+ "enum": [
+ "sales_tax",
+ "title",
+ "registration"
+ ]
+ },
+ "label": {
+ "maxLength": 40,
+ "type": "string"
+ },
+ "reason": {
+ "const": "varies_by_location"
+ }
+ },
+ "required": [
+ "code",
+ "label",
+ "reason"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "fees_total": {
+ "description": "Exact decimal amount with two places (never a JSON float).",
+ "pattern": "^-?[0-9]+\\.[0-9]{2}$",
+ "type": "string"
+ },
+ "line_items": {
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "amount": {
+ "description": "Exact decimal amount with two places (never a JSON float).",
+ "pattern": "^-?[0-9]+\\.[0-9]{2}$",
+ "type": "string"
+ },
+ "basis": {
+ "enum": [
+ "firm",
+ "estimated"
+ ]
+ },
+ "category": {
+ "maxLength": 40,
+ "type": "string"
+ },
+ "code": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "fee_type": {
+ "enum": [
+ "flat",
+ "percent"
+ ]
+ },
+ "included_in_price": {
+ "type": "boolean"
+ },
+ "label": {
+ "maxLength": 200,
+ "type": "string"
+ },
+ "taxable": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "code",
+ "label",
+ "category",
+ "fee_type",
+ "amount",
+ "taxable"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "otd_total": {
+ "description": "Exact decimal amount with two places (never a JSON float).",
+ "pattern": "^-?[0-9]+\\.[0-9]{2}$",
+ "type": "string"
+ },
+ "pricing_coverage": {
+ "enum": [
+ "otd_estimate",
+ "partial_estimate"
+ ]
+ },
+ "pricing_disclosure": {
+ "maxLength": 500,
+ "type": "string"
+ },
+ "tax_total": {
+ "description": "Exact decimal amount with two places (never a JSON float).",
+ "pattern": "^-?[0-9]+\\.[0-9]{2}$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "base_price",
+ "fees_total",
+ "tax_total",
+ "otd_total",
+ "currency",
+ "line_items"
+ ],
+ "type": "object"
+ },
+ "quote_id": {
+ "oneOf": [
+ {
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "thread_id": {
+ "oneOf": [
+ {
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "unit": {
+ "additionalProperties": false,
+ "properties": {
+ "condition": {
+ "enum": [
+ "new",
+ "used"
+ ]
+ },
+ "identity": {
+ "maxLength": 30,
+ "minLength": 5,
+ "type": "string"
+ },
+ "make": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "model": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "model_year": {
+ "maximum": 2100,
+ "minimum": 1950,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "identity",
+ "condition",
+ "model_year",
+ "make",
+ "model"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "durable",
+ "thread_id",
+ "quote_id",
+ "expires_at",
+ "unit",
+ "pricing",
+ "assumptions",
+ "freshness_disclosure"
+ ],
+ "type": "object"
+ },
+ "error": {
+ "additionalProperties": false,
+ "description": "Unknown and foreign thread ids are deliberately indistinguishable: both return invalid_params with message \"unknown thread_id\" (anti-enumeration).",
+ "properties": {
+ "auth_help_url": {
+ "description": "Present only when no credential was supplied for a capability that requires one. Points to human documentation for obtaining a key. Absent for invalid, pending, or disabled credentials, which are deliberately indistinguishable.",
+ "format": "uri",
+ "maxLength": 500,
+ "type": "string"
+ },
+ "code": {
+ "enum": [
+ "rooftop_not_found",
+ "rooftop_inactive",
+ "unit_not_found",
+ "invalid_params",
+ "rate_limited",
+ "upstream_unavailable",
+ "capability_unavailable",
+ "identity_required",
+ "quota_exceeded",
+ "unit_held",
+ "quote_expired",
+ "rooftop_paused",
+ "handoff_duplicate",
+ "idempotency_conflict",
+ "price_unavailable",
+ "snapshot_expired",
+ "artifact_too_large",
+ "cursor_invalid",
+ "cursor_expired",
+ "ambiguous_identity",
+ "unsupported_in_country"
+ ]
+ },
+ "message": {
+ "maxLength": 500,
+ "type": "string"
+ },
+ "retry_after_seconds": {
+ "minimum": 0,
+ "type": "integer"
+ },
+ "retryable": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "code",
+ "message",
+ "retryable"
+ ],
+ "type": "object"
+ },
+ "freshness": {
+ "additionalProperties": false,
+ "properties": {
+ "by_rooftop": {
+ "additionalProperties": {
+ "additionalProperties": false,
+ "properties": {
+ "last_ingest_at": {
+ "format": "date-time",
+ "maxLength": 40,
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "status": {
+ "enum": [
+ "fresh",
+ "stale",
+ "no_data"
+ ]
+ }
+ },
+ "required": [
+ "status",
+ "last_ingest_at"
+ ],
+ "type": "object"
+ },
+ "maxProperties": 500,
+ "type": "object"
+ }
+ },
+ "required": [
+ "by_rooftop"
+ ],
+ "type": "object"
+ }
+ },
+ "type": "object"
+}