changedOutput schema / (root)
Previous value: -nullNew value: +{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "additionalProperties": false,
+ "properties": {
+ "all_inclusive": {
+ "type": "string"
+ },
+ "all_tiers_for_context": {
+ "additionalProperties": false,
+ "description": "Rate bands across all three market tiers for context.",
+ "properties": {
+ "hub": {
+ "additionalProperties": false,
+ "description": "All-inclusive hourly rate band (worker pay + payroll taxes + workers comp + liability).",
+ "properties": {
+ "high": {
+ "description": "Upper end of the hourly rate range.",
+ "type": "number"
+ },
+ "low": {
+ "description": "Lower end of the hourly rate range.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "low",
+ "high"
+ ],
+ "type": "object"
+ },
+ "mid": {
+ "additionalProperties": false,
+ "description": "All-inclusive hourly rate band (worker pay + payroll taxes + workers comp + liability).",
+ "properties": {
+ "high": {
+ "description": "Upper end of the hourly rate range.",
+ "type": "number"
+ },
+ "low": {
+ "description": "Lower end of the hourly rate range.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "low",
+ "high"
+ ],
+ "type": "object"
+ },
+ "small": {
+ "additionalProperties": false,
+ "description": "All-inclusive hourly rate band (worker pay + payroll taxes + workers comp + liability).",
+ "properties": {
+ "high": {
+ "description": "Upper end of the hourly rate range.",
+ "type": "number"
+ },
+ "low": {
+ "description": "Lower end of the hourly rate range.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "low",
+ "high"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "small",
+ "mid",
+ "hub"
+ ],
+ "type": "object"
+ },
+ "available_roles": {
+ "description": "The valid role catalog, returned when the role didn't match.",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "slug": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "slug",
+ "name"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "city": {
+ "type": "string"
+ },
+ "city_found": {
+ "const": false,
+ "description": "Present (false) only when the city didn't match.",
+ "type": "boolean"
+ },
+ "city_tier": {
+ "description": "Market tier: hub = 25 major metros, mid = 128 secondary markets, small = 192 tertiary markets.",
+ "enum": [
+ "hub",
+ "mid",
+ "small"
+ ],
+ "type": "string"
+ },
+ "currency": {
+ "enum": [
+ "USD",
+ "CAD"
+ ],
+ "type": "string"
+ },
+ "error": {
+ "type": "string"
+ },
+ "fallback_pricing": {
+ "additionalProperties": false,
+ "description": "All-tier pricing shown when the city didn't match.",
+ "properties": {
+ "hub": {
+ "additionalProperties": false,
+ "description": "All-inclusive hourly rate band (worker pay + payroll taxes + workers comp + liability).",
+ "properties": {
+ "high": {
+ "description": "Upper end of the hourly rate range.",
+ "type": "number"
+ },
+ "low": {
+ "description": "Lower end of the hourly rate range.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "low",
+ "high"
+ ],
+ "type": "object"
+ },
+ "mid": {
+ "additionalProperties": false,
+ "description": "All-inclusive hourly rate band (worker pay + payroll taxes + workers comp + liability).",
+ "properties": {
+ "high": {
+ "description": "Upper end of the hourly rate range.",
+ "type": "number"
+ },
+ "low": {
+ "description": "Lower end of the hourly rate range.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "low",
+ "high"
+ ],
+ "type": "object"
+ },
+ "small": {
+ "additionalProperties": false,
+ "description": "All-inclusive hourly rate band (worker pay + payroll taxes + workers comp + liability).",
+ "properties": {
+ "high": {
+ "description": "Upper end of the hourly rate range.",
+ "type": "number"
+ },
+ "low": {
+ "description": "Lower end of the hourly rate range.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "low",
+ "high"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "small",
+ "mid",
+ "hub"
+ ],
+ "type": "object"
+ },
+ "hourly_range_high": {
+ "type": "number"
+ },
+ "hourly_range_low": {
+ "type": "number"
+ },
+ "note": {
+ "type": "string"
+ },
+ "pricing_notes": {
+ "type": "string"
+ },
+ "requested": {
+ "description": "Echo of the unmatched input.",
+ "type": "string"
+ },
+ "role": {
+ "type": "string"
+ },
+ "role_found": {
+ "const": false,
+ "description": "Present (false) only when the role didn't match.",
+ "type": "boolean"
+ },
+ "role_note": {
+ "description": "Caveat about the resolved role (e.g. 'security' maps to unarmed Crowd Control, not licensed security).",
+ "type": "string"
+ },
+ "role_slug": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ },
+ "suggestion": {
+ "additionalProperties": false,
+ "description": "Closest known city/role for a miss. Confirm with the user before using it; do not auto-apply.",
+ "properties": {
+ "kind": {
+ "enum": [
+ "city",
+ "role"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "slug": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "slug",
+ "name"
+ ],
+ "type": "object"
+ },
+ "tier_definition": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+}