{"fields": [
    {
      "key": "reference",
      "label": "Referência",
      "type": "String",
      "validation": {"required": true},
      "categories": ["identificacao"],
      "origin": "hb:property"
    },
    {
      "key": "updated_at",
      "label": "Última atualização",
      "type": "String",
      "format": "datetime",
      "categories": ["sistema"],
      "origin": "hb:property"
    },
    {
      "key": "title",
      "label": "Título",
      "type": "String",
      "validation": {
        "required": true,
        "maxLength": 200
      },
      "categories": ["identificacao"],
      "origin": "hb:property"
    },
    {
      "key": "description",
      "label": "Descrição",
      "type": "String",
      "validation": {"required": true},
      "db": {"type": "text",
        "index": "fulltext"
      },
      "categories": ["identificacao"],
      "origin": "hb:property"
    },
    {
      "key": "seo_slug",
      "label": "Slug SEO",
      "type": "String",
      "categories": ["seo"],
      "origin": "hb:property"
    },
    {
      "key": "seo_title",
      "label": "Título SEO",
      "type": "String",
      "validation": {"maxLength": 60},
      "categories": ["seo"],
      "origin": "hb:property"
    },
    {
      "key": "seo_description",
      "label": "Descrição SEO",
      "type": "String",
      "validation": {"maxLength": 160},
      "categories": ["seo"],
      "origin": "hb:property"
    },
    {
      "key": "seo_keywords",
      "label": "Palavras-chave SEO",
      "type": "String",
      "validation": {"maxLength": 200},
      "categories": ["seo"],
      "origin": "hb:property"
    },
    {
      "key": "main_image",
      "label": "Imagem principal",
      "type": "Json",
      "categories": ["media"],
      "origin": "hb:property"
    },
    {
      "key": "images",
      "label": "Imagens",
      "type": "Json[]",
      "validation": {"required": true},
      "categories": ["media"],
      "origin": "hb:property"
    },
    {
      "key": "videos",
      "label": "Vídeos",
      "type": "Json[]",
      "validation": {"required": true},
      "categories": ["media"],
      "origin": "hb:property"
    },
    {
      "key": "virtual_tours",
      "label": "Tours virtuais",
      "type": "Json[]",
      "validation": {"required": true},
      "categories": ["media"],
      "origin": "hb:property"
    },
    {
      "key": "documents",
      "label": "Documentos",
      "type": "Json[]",
      "validation": {"required": true},
      "categories": ["media"],
      "origin": "hb:property"
    },
    {
      "key": "currency",
      "label": "Moeda",
      "type": "String",
      "db": {"default": "BRL"},
      "categories": ["sistema"],
      "origin": "hb:property"
    },
    {
      "key": "unit_area",
      "label": "Unidade de área",
      "type": "String",
      "db": {"default": "m2"},
      "categories": ["sistema"],
      "origin": "hb:property"
    },
    {
      "key": "unit_distance",
      "label": "Unidade de distância",
      "enum": {
        "meters": "Metros",
        "km": "Quilômetros"
      },
      "type": "String",
      "db": {"default": "meters"
      },
      "categories": ["sistema"],
      "origin": "hb:property"
    },
    {
      "key": "map_show_proximity",
      "label": "Exibir aproximado no mapa",
      "type": "Boolean",
      "db": {"default": "false"},
      "categories": ["sistema"],
      "origin": "hb:property"
    },
    {
      "key": "operacao",
      "label": "Operação",
      "enum": {
        "venda": "Venda",
        "locacao": "Locação",
        "temporada": "Temporada"
      },
      "type": "String[]",
      "categories": ["comercial"],
      "origin": "hb:property"
    },
    {
      "key": "valor_venda",
      "label": "Valor de venda",
      "type": "Number",
      "format": "currency",
      "unit": "BRL",
      "validation": {"precision": 2},
      "conditions": ["operacao:venda"],
      "categories": ["valores","principais"],
      "origin": "hb:property"
    },
    {
      "key": "valor_locacao",
      "label": "Valor de locação",
      "type": "Number",
      "format": "currency",
      "unit": "BRL",
      "validation": {"precision": 2},
      "conditions": ["operacao:locacao"],
      "categories": ["valores","principais"],
      "origin": "hb:property"
    },
    {
      "key": "valor_diaria",
      "label": "Valor da diária",
      "type": "Number",
      "format": "currency",
      "unit": "BRL",
      "validation": {"precision": 2},
      "conditions": ["operacao:temporada"],
      "categories": ["valores"],
      "origin": "hb:property"
    },
    {
      "key": "valor_condominio",
      "label": "Valor do condomínio",
      "type": "Number",
      "format": "currency",
      "unit": "BRL",
      "validation": {"precision": 2},
      "categories": ["valores"],
      "origin": "hb:property"
    },
    {
      "key": "valor_iptu",
      "label": "Valor do IPTU",
      "type": "Number",
      "format": "currency",
      "unit": "BRL",
      "validation": {"precision": 2},
      "categories": ["valores"],
      "origin": "hb:property"
    },
    {
      "key": "area_total",
      "label": "Área total",
      "type": "Number",
      "format": "area",
      "unit": "m2",
      "validation": {"min": 0},
      "categories": ["estrutura","principais"],
      "origin": "hb:property"
    },
    {
      "key": "area_privativa",
      "label": "Área privativa",
      "type": "Number",
      "format": "area",
      "unit": "m2",
      "validation": {"min": 0},
      "categories": ["estrutura"],
      "origin": "hb:property"
    },
    {
      "key": "area_util",
      "label": "Área útil",
      "type": "Number",
      "format": "area",
      "unit": "m2",
      "validation": {"min": 0},
      "categories": ["estrutura"],
      "origin": "hb:property"
    },
    {
      "key": "dormitorios",
      "label": "Dormitórios",
      "type": "Number",
      "format": "count",
      "validation": {"min": 0},
      "categories": ["dependencias","principais"],
      "origin": "hb:property"
    },
    {
      "key": "suites",
      "label": "Suítes",
      "type": "Number",
      "format": "count",
      "validation": {"min": 0},
      "categories": ["dependencias"],
      "origin": "hb:property"
    },
    {
      "key": "banheiros",
      "label": "Banheiros",
      "type": "Number",
      "format": "count",
      "validation": {"min": 0},
      "categories": ["dependencias","principais"],
      "origin": "hb:property"
    },
    {
      "key": "vagas_garagem",
      "label": "Vagas de garagem",
      "type": "Number",
      "format": "count",
      "validation": {"min": 0},
      "categories": ["dependencias","principais"],
      "origin": "hb:property"
    },
    {
      "key": "finalidade",
      "label": "Finalidade",
      "type": "String",
      "categories": ["estrutura"],
      "origin": "hb:property"
    },
    {
      "key": "tipo",
      "label": "Tipo do imóvel",
      "type": "String",
      "categories": ["estrutura"],
      "origin": "hb:property"
    },
    {
      "key": "subtipo",
      "label": "Sub-tipo do imóvel",
      "type": "String",
      "parent": "tipo",
      "categories": ["estrutura"],
      "origin": "hb:property"
    },
    {
      "key": "endereco_cep",
      "label": "CEP",
      "type": "String",
      "validation": {"maxLength": 9},
      "mask": "cep",
      "categories": ["localizacao"],
      "origin": "hb:property"
    },
    {
      "key": "endereco_estado",
      "label": "Estado",
      "type": "String",
      "categories": ["localizacao"],
      "origin": "hb:property"
    },
    {
      "key": "endereco_cidade",
      "label": "Cidade",
      "type": "String",
      "parent": "endereco_estado",
      "categories": ["localizacao"],
      "origin": "hb:property"
    },
    {
      "key": "endereco_bairro",
      "label": "Bairro",
      "type": "String",
      "parent": "endereco_cidade",
      "categories": ["localizacao"],
      "origin": "hb:property"
    },
    {
      "key": "endereco_logradouro",
      "label": "Logradouro",
      "type": "String",
      "categories": ["localizacao"],
      "origin": "hb:property"
    },
    {
      "key": "endereco_numero",
      "label": "Número",
      "type": "String",
      "categories": ["localizacao"],
      "origin": "hb:property"
    },
    {
      "key": "endereco_complemento",
      "label": "Complemento",
      "type": "String",
      "categories": ["localizacao"],
      "origin": "hb:property"
    },
    {
      "key": "endereco_referencia",
      "label": "Referência",
      "type": "String",
      "categories": ["localizacao"],
      "origin": "hb:property"
    },
    {
      "key": "endereco_zona",
      "label": "Zona",
      "type": "String",
      "categories": ["localizacao"],
      "origin": "hb:property"
    },
    {
      "key": "latitude",
      "label": "Latitude",
      "type": "Number",
      "validation": {"min": -90, "max": 90, "precision": 8},
      "db": {"type": "decimal(10,8)", "index": "geo"},
      "categories": ["localizacao"],
      "origin": "hb:property"
    },
    {
      "key": "longitude",
      "label": "Longitude",
      "type": "Number",
      "validation": {"min": -180, "max": 180, "precision": 8},
      "db": {"type": "decimal(11,8)", "index": "geo"},
      "categories": ["localizacao"],
      "origin": "hb:property"
    },
    {
      "key": "mobiliado",
      "label": "Mobiliado",
      "type": "Boolean",
      "categories": ["caracteristicas"],
      "origin": "hb:property"
    },
    {
      "key": "caracteristicas",
      "label": "Características",
      "type": "String[]",
      "categories": ["caracteristicas"],
      "origin": "hb:property"
    },
    {
      "key": "destaque",
      "label": "Imóvel em destaque",
      "type": "Boolean",
      "categories": ["comercial"],
      "origin": "hb:property"
    },
    {
      "key": "corretor_key",
      "label": "ID do corretor",
      "type": "String",
      "categories": ["corretor"],
      "origin": "hb:property"
    },
    {
      "key": "corretor_nome",
      "label": "Nome do corretor",
      "type": "String",
      "categories": ["corretor"],
      "origin": "hb:property"
    },
    {
      "key": "condominio_key",
      "label": "ID do condomínio",
      "type": "String",
      "categories": ["condominio"],
      "origin": "hb:property"
    },
    {
      "key": "condominio_nome",
      "label": "Nome do condomínio",
      "type": "String",
      "categories": ["condominio"],
      "origin": "hb:property"
    },
    {
      "key": "tags",
      "label": "Tags do Imóvel",
      "type": "String[]",
      "categories": ["identificacao"],
      "origin": "hb:property"
    },
    {
      "key": "numero_pessoas",
      "label": "Número de pessoas",
      "type": "Number",
      "format": "count",
      "validation": {"min": 0},
      "categories": ["caracteristicas"],
      "origin": "hb:property"
    }
  ]
}
