cityparity · Schema

CompareRequest

Cost of LivingComparison ToolData VisualizationExpatriate ResourcesFinancial Planning

Properties

Name Type Description
source_city string City slug for the current city.
target_city string City slug for the destination city.
gross_salary number User's annual gross salary in the SOURCE city's local currency.
household object
living object
advanced object
score_weights object
View JSON Schema on GitHub

JSON Schema

cityparity-com-compare-request-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/cityparity-com/json-schema/cityparity-com-compare-request-schema.json",
  "title": "CompareRequest",
  "x-generated": "2026-11-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/_original/cityparity-com-api-openapi.json#/components/schemas/CompareRequest",
  "type": "object",
  "required": [
    "source_city",
    "target_city",
    "gross_salary"
  ],
  "properties": {
    "source_city": {
      "type": "string",
      "description": "City slug for the current city."
    },
    "target_city": {
      "type": "string",
      "description": "City slug for the destination city."
    },
    "gross_salary": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "User's annual gross salary in the SOURCE city's local currency."
    },
    "household": {
      "type": "object",
      "properties": {
        "has_partner": {
          "type": "boolean"
        },
        "partner_gross_salary": {
          "type": "number",
          "minimum": 0,
          "description": "In source-city currency. Required when has_partner=true."
        },
        "partner_works_in_source": {
          "type": "boolean",
          "description": "Required when has_partner=true; cityparity does not silently default this."
        },
        "partner_works_in_target": {
          "type": "boolean",
          "description": "Required when has_partner=true."
        },
        "kids_ages": {
          "type": "array",
          "items": {
            "type": "integer",
            "minimum": 0,
            "maximum": 25
          }
        }
      }
    },
    "living": {
      "type": "object",
      "properties": {
        "housing_mode": {
          "type": "string",
          "enum": [
            "rent",
            "own",
            "own_outright"
          ]
        },
        "bedrooms": {
          "type": "integer",
          "minimum": 0,
          "maximum": 5
        },
        "lifestyle": {
          "type": "string",
          "enum": [
            "frugal",
            "typical",
            "generous"
          ]
        }
      }
    },
    "advanced": {
      "type": "object",
      "properties": {
        "retirement_contrib_pct": {
          "type": "number",
          "minimum": 0,
          "maximum": 50
        },
        "age_bracket": {
          "type": "string",
          "enum": [
            "18-24",
            "25-34",
            "35-44",
            "45-54",
            "55-64"
          ]
        },
        "trips_home_per_year": {
          "type": "integer",
          "minimum": 0,
          "maximum": 12
        },
        "source_transit_choice": {
          "type": "string",
          "enum": [
            "car",
            "transit"
          ]
        },
        "target_transit_choice": {
          "type": "string",
          "enum": [
            "car",
            "transit"
          ]
        },
        "apply_inbound_regime": {
          "type": "boolean"
        }
      }
    },
    "score_weights": {
      "$ref": "#/$defs/ScoreWeights"
    }
  },
  "$defs": {
    "ScoreWeights": {
      "type": "object",
      "description": "Override composite-score weights. Defaults: financial 30, healthcare 20, vacation 15, childcare 15, safety_net 20.",
      "properties": {
        "financial": {
          "type": "number",
          "minimum": 0,
          "maximum": 100
        },
        "healthcare": {
          "type": "number",
          "minimum": 0,
          "maximum": 100
        },
        "vacation": {
          "type": "number",
          "minimum": 0,
          "maximum": 100
        },
        "childcare": {
          "type": "number",
          "minimum": 0,
          "maximum": 100
        },
        "safety_net": {
          "type": "number",
          "minimum": 0,
          "maximum": 100
        }
      }
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/cityparity-com-compare-request"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.