Skip to main content
The Property interface defines the complete structure for real estate listings in the Adosa platform. It integrates with the EGO Real Estate CRM system.

Type Definition

export interface Property {
  id: string;
  egoId: number;
  title: string;
  location: string;
  status: "DESTACADO" | "";
  type: "Apartamento" | "Casa" | "Terreno" | "Parcela" | "Local Comercial" | "Ático";
  bedrooms: number;
  bathrooms: number;
  size: number;
  land_size: number;
  price?: string;
  filterLocation?: string;
  image: string;

  // Detailed Fields (CRM Mapping)
  price_long?: number;
  garage?: boolean;
  pool?: boolean;
  built_m2?: number;
  plot_m2?: number;
  description?: string;
  description_en?: string;
  description_full?: string;
  description_full_en?: string;
  province?: string;
  province_en?: string;
  municipality?: string;
  municipality_en?: string;
  neighborhood?: string;
  neighborhood_en?: string;
  conservation_status?: string;
  conservation_status_en?: string;
  energy_rating?: "A" | "B" | "C" | "D" | "E" | "F" | "G";
  ibi?: number;
  community_fees?: number;
  reference?: string;
  floor_plans?: string[];
  coords?: [number, number];
  images?: string[];
}

Core Fields

These fields are required for every property listing.
id
string
required
Internal ID or CRM Reference (human-readable identifier)
egoId
number
required
Mandatory numeric ID for CRM linking (RID). This is the primary identifier used by the EGO Real Estate CRM system.
title
string
required
Property listing title
location
string
required
Location description like “Marbella” or “Costa del Sol”
status
'DESTACADO' | ''
required
Property status. Use "DESTACADO" for featured properties or empty string for regular listings.
type
string
required
Property type. One of:
  • "Apartamento" - Apartment
  • "Casa" - House
  • "Terreno" - Land
  • "Parcela" - Plot
  • "Local Comercial" - Commercial property
  • "Ático" - Penthouse
bedrooms
number
required
Number of bedrooms
bathrooms
number
required
Number of bathrooms
size
number
required
Property size in square meters (m²)
land_size
number
required
Land/plot size in square meters (m²)
image
string
required
Image URL for grid preview display

Optional Display Fields

price
string
Formatted price string for display (e.g., “€450,000”)
filterLocation
string
Used for grouping multiple localities into a single filter option in the property grid

Detailed CRM Fields

These optional fields are mapped from the EGO Real Estate CRM system.
price_long
number
Numeric price value for calculations and sorting
garage
boolean
Whether the property includes a garage
pool
boolean
Whether the property includes a swimming pool
built_m2
number
Built area in square meters
plot_m2
number
Plot area in square meters

Multilingual Fields

Description and location fields support both Spanish (default) and English translations.
description
string
Short introduction in Spanish
description_en
string
Short introduction in English
description_full
string
Full narrative description in Spanish
description_full_en
string
Full narrative description in English
province
string
Province name in Spanish
province_en
string
Province name in English
municipality
string
Municipality name in Spanish
municipality_en
string
Municipality name in English
neighborhood
string
Neighborhood name in Spanish
neighborhood_en
string
Neighborhood name in English
conservation_status
string
Conservation/condition status in Spanish
conservation_status_en
string
Conservation/condition status in English

Additional Details

energy_rating
string
Energy efficiency rating. One of: "A", "B", "C", "D", "E", "F", "G"
ibi
number
Annual IBI (property tax) in euros
community_fees
number
Monthly community fees in euros
reference
string
Property reference code

Media & Location

floor_plans
string[]
Array of floor plan image URLs
coords
[number, number]
GPS coordinates as [latitude, longitude] tuple for map display
images
string[]
Array of gallery image URLs for the property detail page

ID Fields Explained

The Property interface uses two different ID fields:

id vs egoId

  • id: Human-readable identifier, can be a string like "property-123" or a CRM reference. Used for internal routing and display.
  • egoId: Mandatory numeric identifier (RID) required by the EGO Real Estate CRM system for linking and synchronization. This is the authoritative ID for CRM operations.

Example Property Object

const exampleProperty: Property = {
  id: "villa-marbella-001",
  egoId: 12345,
  title: "Luxury Villa in Marbella",
  location: "Marbella",
  status: "DESTACADO",
  type: "Casa",
  bedrooms: 4,
  bathrooms: 3,
  size: 250,
  land_size: 800,
  price: "€1,200,000",
  filterLocation: "Costa del Sol",
  image: "/images/properties/villa-001.jpg",
  
  // Detailed fields
  price_long: 1200000,
  garage: true,
  pool: true,
  built_m2: 250,
  plot_m2: 800,
  description: "Villa de lujo con vistas al mar",
  description_en: "Luxury villa with sea views",
  province: "Málaga",
  province_en: "Malaga",
  municipality: "Marbella",
  municipality_en: "Marbella",
  energy_rating: "B",
  ibi: 1500,
  community_fees: 200,
  reference: "VLM-001",
  coords: [36.5097, -4.8822],
  images: [
    "/images/properties/villa-001-1.jpg",
    "/images/properties/villa-001-2.jpg",
    "/images/properties/villa-001-3.jpg"
  ]
};

Source Location

src/data/properties.ts:1-41

Build docs developers (and LLMs) love