{
  "type": "object",
  "properties": {
    "rows": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "owner_type": {
            "type": "string",
            "enum": [
              "prop",
              "character",
              "location",
              "location_part",
              "outlook"
            ]
          },
          "surface_form": {
            "type": "string",
            "minLength": 1
          },
          "mentions": {
            "type": "array",
            "minItems": 1,
            "items": {
              "type": "object",
              "properties": {
                "mention_quote": {
                  "type": "string",
                  "minLength": 1
                },
                "occurrence_index": {
                  "type": "integer",
                  "minimum": 1
                }
              },
              "required": [
                "mention_quote",
                "occurrence_index"
              ],
              "additionalProperties": false
            }
          },
          "evidence_quotes": {
            "type": "array",
            "maxItems": 4,
            "items": {
              "type": "string",
              "minLength": 1
            }
          },
          "hard_to_generate": {
            "type": "boolean"
          },
          "viewers_would_notice": {
            "type": "boolean"
          },
          "visual_brief": {
            "type": "string"
          },
          "search_terms_native": {
            "type": "array",
            "maxItems": 4,
            "items": {
              "type": "string",
              "minLength": 1
            }
          },
          "language_lock_native": {
            "type": "string"
          },
          "shot_appearance_ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "uniqueItems": true
          },
          "shot_binding_status": {
            "type": "string",
            "enum": [
              "bound_complete",
              "not_in_catalog_shots",
              "unresolved"
            ]
          },
          "coarse_type_label": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40
          },
          "host_context": {
            "type": [
              "object",
              "null"
            ],
            "description": "그 장소 부분이 어디에 달려 있는가. owner_type 이 location_part 인 행에만 적는다. 다른 갈래에서는 null.",
            "properties": {
              "state": {
                "type": "string",
                "enum": [
                  "bound_parent",
                  "explicit_context_only",
                  "unresolved"
                ],
                "description": "bound_parent = 그 장소 자체가 이 판독에서 독립된 행으로 이미 잡혔다. explicit_context_only = 원문이 그 장소를 말하지만 독립된 행으로는 안 잡혔다. unresolved = 어느 장소의 것인지 원문으로 못 정한다."
              },
              "parent_local_id": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "bound_parent 일 때만. 그 장소 행의 local_id 를 그대로 적는다. 다른 상태에서는 null."
              },
              "search_subject": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "explicit_context_only 일 때만. 그 장소를 **원문이 부르는 말 그대로** 적는다. 이 값은 그 장소 전체의 참고 사진을 찾는 질의가 되므로, 부분의 이름이 아니라 **장소의 이름**이어야 한다. 지어내지 말고 원문에 있는 말만 쓴다. 다른 상태에서는 null."
              },
              "evidence": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "explicit_context_only 일 때만. 그 장소를 말한 원문 구절을 **한 글자도 바꾸지 않고** 옮긴다. 없으면 그 상태를 쓰지 않는다. 다른 상태에서는 빈 배열."
              }
            },
            "required": [
              "state",
              "parent_local_id",
              "search_subject",
              "evidence"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "owner_type",
          "surface_form",
          "mentions",
          "evidence_quotes",
          "hard_to_generate",
          "viewers_would_notice",
          "visual_brief",
          "search_terms_native",
          "language_lock_native",
          "shot_appearance_ids",
          "shot_binding_status",
          "coarse_type_label",
          "host_context"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "rows"
  ],
  "additionalProperties": false
}
