DEVELOPING

Declarar un cliente

POST /property-v1/customers

Es el primer paso de todo: sin ficha no se puede dar de alta una propiedad, ni pedir un enlace de conexión, ni publicar.

El clientRef dice de qué cliente es la ficha, igual que en el resto de la API: va en el header x-client-ref (recomendado), en la query o en el body.

Lo mínimo que funciona es el nombre:

curl -X POST https://property-api.mapaprop.com/property-v1/customers \
  -H "Authorization: Bearer $TOKEN" \
  -H "x-client-ref: cliente-42" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Inmobiliaria Modelo" }'

Y la ficha completa, con todo lo que se publica en el aviso:

{
  "name": "Inmobiliaria Modelo",
  "phone1": "2234567890",
  "mobile": "2235550000",
  "email": "contacto@inmobiliaria-modelo.test",
  "address": "Av. Colón 1234",
  "country": 1,
  "branch": {
    "email": "centro@inmobiliaria-modelo.test",
    "phone1": "2234567891",
    "name": "Sucursal Centro",
    "address": "San Martín 2500"
  }
}

Respuesta 201:

{
  "created": true,
  "customer": {
    "customerId": "MAPAPROP-PA-000002",
    "clientRef": "cliente-42",
    "createdAt": "2026-10-01T02:54:30.980Z",
    "updatedAt": "2026-10-01T02:54:30.980Z",
    "name": "Inmobiliaria Modelo",
    "phone1": "2234567890",
    "mobile": "2235550000",
    "email": "contacto@inmobiliaria-modelo.test",
    "address": "Av. Colón 1234",
    "country": 1,
    "branch": {
      "name": "Sucursal Centro",
      "phone1": "2234567891",
      "email": "centro@inmobiliaria-modelo.test",
      "address": "San Martín 2500"
    }
  }
}

Los campos

CampoTipo¿Obligatorio?
namestringsíEl nombre del cliente, como sale en el aviso
phone1stringnoEl teléfono de contacto
phone2stringnoUn segundo teléfono
mobilestringnoEl móvil (en MercadoLibre va como segundo teléfono)
emailstringnoEl email al que llegan las consultas
addressstringnoLa dirección
zipcodestringnoEl código postal
countrynumbernoEl país del cliente
branchobjectnoLa sucursal — ver abajo

name es el único obligatorio: sin nombre, el aviso no tiene de quién es. Los campos de texto admiten hasta 256 caracteres.

Los nombres de clave son los mismos que usa el objeto de la propiedad, así que el bloque que ya armabas sirve tal cual. Lo que cambió es a dónde lo mandás: acá una vez, en vez de en cada alta.

La sucursal es opcional

Si no mandás branch, la sucursal hereda los datos del cliente. No es una comodidad nuestra: es lo que hace Mapaprop cuando se crea una cuenta, y es la razón de que 96 de cada 100 inmobiliarias tengan una sola sucursal con los mismos datos.

CampoTipo
name phone1 phone2 mobile email address zipcodestring
zone0 zone1 zone2 zone3number — los códigos de zona

Repetir el POST es seguro

Un POST sobre un cliente que ya existe no emite otro id ni pisa los datos: devuelve la ficha que hay con created: false y status 200. Eso hace que un reintento por timeout sea seguro.

Para cambiar los datos está el PUT, que nunca toca el id.

Y reactiva un cliente dado de baja

Si el cliente estaba dado de baja, el mismo POST lo reactiva. Respuesta 200 con revived: true:

{
  "created": false,
  "revived": true,
  "customer": {
    "customerId": "MAPAPROP-PA-000002",
    "clientRef": "cliente-42",
    "name": "Inmobiliaria Modelo",
    "phone1": "2234567890",
    "revivedAt": "2026-10-02T11:05:41.882Z"
  }
}

Vuelve con el mismo customerId, así que sus avisos publicados siguen siendo suyos. Los datos que mandes en ese POST son los que quedan.

Códigos de respuesta

CódigoQué pasóQué hacer
201Se creó la ficha—
200Ya existía (created: false) o se reactivó (revived: true)—
400Falta name, country no es un entero positivo, branch no es un objeto, o un texto pasa de 256 caracteresEl campo viene en field
400Falta el clientRefMandá el header x-client-ref: sin él no sabemos de qué cliente es la ficha, y no lo adivinamos
401Token ausente o inválido—
403Tu token no tiene el scope property-api-createEscribinos para habilitarlo

Relacionado