{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/journeyed-org/json-schema/journeyed-org-answers-index-schema.json",
  "title": "AnswersIndex",
  "description": "Index of every published question (/answers.json). disclosure is present only when the publisher has a parent company; bestOf, guides and walking when the build has such pages.",
  "x-generated": "2026-11-13",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/journeyed-org-openapi.json#/components/schemas/AnswersIndex",
  "type": "object",
  "required": [
    "schemaVersion",
    "name",
    "description",
    "asOf",
    "count",
    "formulaVersions",
    "citation",
    "docs",
    "markets",
    "questions"
  ],
  "additionalProperties": false,
  "properties": {
    "schemaVersion": {
      "type": "integer",
      "const": 1
    },
    "name": {
      "type": "string"
    },
    "disclosure": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "asOf": {
      "type": "string",
      "format": "date"
    },
    "count": {
      "type": "integer"
    },
    "formulaVersions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "citation": {
      "type": "object",
      "description": "How to cite a page of this site.",
      "required": [
        "name",
        "url",
        "format",
        "sources",
        "scores"
      ],
      "additionalProperties": false,
      "properties": {
        "name": {
          "type": "string"
        },
        "url": {
          "type": "string"
        },
        "format": {
          "type": "string"
        },
        "sources": {
          "type": "string"
        },
        "scores": {
          "type": "string"
        }
      }
    },
    "docs": {
      "type": "object",
      "required": [
        "llms",
        "llmsFull",
        "openapi",
        "methodology",
        "agents"
      ],
      "additionalProperties": false,
      "properties": {
        "llms": {
          "type": "string",
          "format": "uri"
        },
        "llmsFull": {
          "type": "string",
          "format": "uri"
        },
        "openapi": {
          "type": "string",
          "format": "uri"
        },
        "methodology": {
          "type": "string",
          "format": "uri"
        },
        "agents": {
          "type": [
            "string",
            "null"
          ],
          "format": "uri"
        },
        "hotelAnswers": {
          "type": "string",
          "format": "uri"
        },
        "mcp": {
          "type": "string",
          "format": "uri"
        }
      }
    },
    "markets": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "hubUrl",
          "anchorsUrl",
          "placesUrl"
        ],
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string"
          },
          "hubUrl": {
            "type": "string",
            "format": "uri"
          },
          "anchorsUrl": {
            "type": "string",
            "format": "uri"
          },
          "placesUrl": {
            "type": "string",
            "format": "uri"
          }
        }
      }
    },
    "questions": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/AnswersEntry"
      }
    },
    "bestOf": {
      "type": "array",
      "items": {
        "type": "object",
        "description": "A best-of page (\"Best hotels near <place>\"): its two-sentence answer and top three by the published best-of formula.",
        "required": [
          "title",
          "url",
          "jsonUrl",
          "markdownUrl",
          "market",
          "kind",
          "anchor",
          "anchorUrl",
          "answer",
          "asOf",
          "formulaVersion",
          "considered",
          "eligible",
          "top",
          "alternates"
        ],
        "additionalProperties": false,
        "properties": {
          "title": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "jsonUrl": {
            "type": "string",
            "format": "uri"
          },
          "markdownUrl": {
            "type": "string",
            "format": "uri"
          },
          "market": {
            "type": "string"
          },
          "kind": {
            "enum": [
              "anchor",
              "need"
            ]
          },
          "anchor": {
            "type": [
              "string",
              "null"
            ]
          },
          "anchorUrl": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          },
          "answer": {
            "type": "string"
          },
          "asOf": {
            "type": "string",
            "format": "date"
          },
          "formulaVersion": {
            "type": "string"
          },
          "considered": {
            "type": "integer"
          },
          "eligible": {
            "type": "integer"
          },
          "top": {
            "type": "array",
            "maxItems": 3,
            "items": {
              "type": "object",
              "required": [
                "rank",
                "placeId",
                "name",
                "url",
                "jsonUrl",
                "points",
                "score",
                "distanceMi"
              ],
              "additionalProperties": false,
              "properties": {
                "rank": {
                  "type": "integer"
                },
                "placeId": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "url": {
                  "type": "string",
                  "format": "uri"
                },
                "jsonUrl": {
                  "type": "string",
                  "format": "uri"
                },
                "points": {
                  "type": "number"
                },
                "score": {
                  "type": "number"
                },
                "distanceMi": {
                  "type": [
                    "number",
                    "null"
                  ]
                }
              }
            }
          },
          "alternates": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 8
          }
        }
      }
    },
    "guides": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "title",
          "kind",
          "url",
          "jsonUrl",
          "markdownUrl",
          "dateModified",
          "questions"
        ],
        "additionalProperties": false,
        "properties": {
          "title": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "jsonUrl": {
            "type": "string",
            "format": "uri"
          },
          "markdownUrl": {
            "type": "string",
            "format": "uri"
          },
          "dateModified": {
            "type": "string",
            "format": "date"
          },
          "questions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      }
    },
    "walking": {
      "type": "array",
      "items": {
        "type": "object",
        "description": "A walking page (\"Hotels within walking distance of <place>\"): its two-sentence answer, how many hotels are within 10, 20 and 30 minutes on foot and the three shortest walks. walkMin is an estimate along OpenStreetMap paths (map data of mapDataOn).",
        "required": [
          "title",
          "url",
          "jsonUrl",
          "markdownUrl",
          "market",
          "anchor",
          "anchorUrl",
          "answer",
          "asOf",
          "mapDataOn",
          "total",
          "within",
          "top",
          "alternates"
        ],
        "additionalProperties": false,
        "properties": {
          "title": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "jsonUrl": {
            "type": "string",
            "format": "uri"
          },
          "markdownUrl": {
            "type": "string",
            "format": "uri"
          },
          "market": {
            "type": "string"
          },
          "anchor": {
            "type": "string"
          },
          "anchorUrl": {
            "type": "string",
            "format": "uri"
          },
          "answer": {
            "type": "string"
          },
          "asOf": {
            "type": "string",
            "format": "date"
          },
          "mapDataOn": {
            "type": "string",
            "format": "date"
          },
          "total": {
            "type": "integer"
          },
          "within": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "minutes",
                "hotels"
              ],
              "additionalProperties": false,
              "properties": {
                "minutes": {
                  "type": "integer"
                },
                "hotels": {
                  "type": "integer"
                }
              }
            }
          },
          "top": {
            "type": "array",
            "maxItems": 3,
            "items": {
              "type": "object",
              "required": [
                "rank",
                "placeId",
                "name",
                "url",
                "jsonUrl",
                "walkMin",
                "walkMi",
                "distanceMi"
              ],
              "additionalProperties": false,
              "properties": {
                "rank": {
                  "type": "integer"
                },
                "placeId": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "url": {
                  "type": "string",
                  "format": "uri"
                },
                "jsonUrl": {
                  "type": "string",
                  "format": "uri"
                },
                "walkMin": {
                  "type": "integer"
                },
                "walkMi": {
                  "type": "number"
                },
                "distanceMi": {
                  "type": "number"
                }
              }
            }
          },
          "alternates": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 8
          }
        }
      }
    }
  },
  "$defs": {
    "AnswersEntry": {
      "type": "object",
      "required": [
        "question",
        "url",
        "jsonUrl",
        "markdownUrl",
        "market",
        "anchor",
        "anchorUrl",
        "need",
        "answer",
        "asOf",
        "formulaVersion",
        "rankedTotal",
        "top",
        "alternates"
      ],
      "additionalProperties": false,
      "properties": {
        "question": {
          "type": "string"
        },
        "url": {
          "type": "string",
          "format": "uri"
        },
        "jsonUrl": {
          "type": "string",
          "format": "uri"
        },
        "markdownUrl": {
          "type": "string",
          "format": "uri"
        },
        "market": {
          "type": "string"
        },
        "anchor": {
          "type": "string"
        },
        "anchorUrl": {
          "type": "string",
          "format": "uri"
        },
        "need": {
          "type": "string"
        },
        "answer": {
          "type": "string"
        },
        "asOf": {
          "type": "string",
          "format": "date"
        },
        "formulaVersion": {
          "type": "string"
        },
        "rankedTotal": {
          "type": "integer"
        },
        "top": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/AnswersTopPlace"
          },
          "maxItems": 3
        },
        "alternates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "maxItems": 12,
          "description": "Other ways travelers ask this question, for matching a request to it."
        }
      }
    },
    "AnswersTopPlace": {
      "type": "object",
      "required": [
        "rank",
        "placeId",
        "name",
        "url",
        "jsonUrl",
        "fit",
        "score",
        "distanceMi"
      ],
      "additionalProperties": false,
      "properties": {
        "rank": {
          "type": "integer"
        },
        "placeId": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "url": {
          "type": "string",
          "format": "uri"
        },
        "jsonUrl": {
          "type": "string",
          "format": "uri"
        },
        "fit": {
          "type": "number"
        },
        "score": {
          "type": "number"
        },
        "distanceMi": {
          "type": "number"
        }
      }
    }
  }
}