PHPackages                             homlity/sdk-simi - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. homlity/sdk-simi

ActiveLibrary

homlity/sdk-simi
================

Sdk del api de simi

v3.0.2(today)00PHP

Since May 2Pushed todayCompare

[ Source](https://github.com/homlity/sdk-simi)[ Packagist](https://packagist.org/packages/homlity/sdk-simi)[ RSS](/packages/homlity-sdk-simi/feed)WikiDiscussions master Synced today

READMEChangelogDependencies (1)Versions (16)Used By (0)

 [ ![Homlity para desarrolladores](https://camo.githubusercontent.com/a11a37d3dd557f1e7440d84149e4c436133679c7dec6feba282dba2594c52600/68747470733a2f2f686f6d6c6974792e636f6d2f77702d636f6e74656e742f75706c6f6164732f323032362f30382f446973656e6f2d73696e2d746974756c6f2d312d65313738373530373732393431392d31303234783333382e77656270) ](https://homlity.com/desarrolladores/)

SDK SIMI para PHP
=================

[](#sdk-simi-para-php)

 Cliente PHP oficial mantenido por [Homlity](https://homlity.com/) para consumir el API de **SIMI** (CRM inmobiliario) desde cualquier proyecto PHP, Laravel o WordPress.

 [🏠 homlity.com](https://homlity.com/) · [👩‍💻 Portal de desarrolladores](https://homlity.com/desarrolladores/) · [📦 GitHub](https://github.com/homlity/sdk-simi) · [📝 Changelog](CHANGELOG.md)

---

> 📘 **¿Prefieres leerlo como página web?** El repositorio incluye una versión navegable con el mismo contenido en [`docs/index.html`](docs/index.html) (autocontenida, lista para GitHub Pages). Los ejemplos ejecutables están en [`examples/`](examples/).

---

Tabla de contenido
------------------

[](#tabla-de-contenido)

1. [¿Qué es este SDK y para qué sirve?](#1-qu%C3%A9-es-este-sdk-y-para-qu%C3%A9-sirve)
2. [Requisitos](#2-requisitos)
3. [Instalación](#3-instalaci%C3%B3n)
4. [El token de SIMI](#4-el-token-de-simi)
5. [Primeros pasos (Quickstart)](#5-primeros-pasos-quickstart)
6. [Arquitectura del SDK](#6-arquitectura-del-sdk)
7. [Referencia del API (`ApiFachada`)](#7-referencia-del-api-apifachada)
8. [Filtros disponibles](#8-filtros-disponibles)
9. [Referencia de modelos](#9-referencia-de-modelos)
10. [Servicios de aplicación](#10-servicios-de-aplicaci%C3%B3n)
11. [Paginación](#11-paginaci%C3%B3n)
12. [Recetas y ejemplos completos](#12-recetas-y-ejemplos-completos)
13. [Integración con Laravel](#13-integraci%C3%B3n-con-laravel)
14. [Integración con WordPress](#14-integraci%C3%B3n-con-wordpress)
15. [Rendimiento y caché](#15-rendimiento-y-cach%C3%A9)
16. [Manejo de errores](#16-manejo-de-errores)
17. [Advertencias y comportamientos a tener en cuenta](#17-advertencias-y-comportamientos-a-tener-en-cuenta)
18. [Pruebas](#18-pruebas)
19. [Versionado y contribución](#19-versionado-y-contribuci%C3%B3n)
20. [Soporte](#20-soporte)
21. [Licencia](#21-licencia)

---

1. ¿Qué es este SDK y para qué sirve?
-------------------------------------

[](#1-qué-es-este-sdk-y-para-qué-sirve)

**SIMI** es un CRM inmobiliario usado por inmobiliarias y constructoras (principalmente en Colombia) para administrar su inventario de inmuebles, sus asesores y sus sedes. SIMI expone ese inventario mediante un API HTTP público por inmobiliaria, autenticado con un token.

Ese API devuelve JSON "crudo", con nombres de campos inconsistentes entre endpoints (`Codigo_Inmueble` vs `idInm`, `banios` vs `banos`, `Venta` vs `ValorVenta`, precios con símbolos y puntos mezclados dentro de strings, etc.). **Este SDK existe para que nunca tengas que tocar ese JSON.**

Con el SDK obtienes:

Sin SDKCon SDKConstruir URLs a mano tipo `.../filtroInmueble/ciudad/5/total/12``$api->getInmuebles(["ciudad" => 5, "total" => 12])``curl` + `json_decode` + validar `status` en cada llamadaObjetos `Response*` con `isSuccess()`Leer `$json["Inmuebles"][0]["Codigo_Inmueble"]``$inmueble->identificacion()`Limpiar `"$ 350.000.000"` con regex`$inmueble->valorVenta()` → `350.000.000`Descubrir qué filtros acepta el API a base de erroresFiltros validados: filtro inválido → excepción inmediataReimplementar paginación en cada proyecto`PaginadorInmueblePreview` + `PaginatorHTML`### Casos de uso típicos

[](#casos-de-uso-típicos)

- **Portales inmobiliarios**: listados con filtros, ficha de detalle, mapa, galería, video y fotos 360.
- **Landing pages / home**: carrusel de inmuebles destacados.
- **Buscadores**: selects encadenados departamento → ciudad → barrio, tipos de inmueble y gestiones.
- **Página "Nuestro equipo"**: listado paginado de asesores con foto, celular y correo.
- **Sincronizaciones / feeds**: exportar inventario hacia portales externos u otros sistemas.
- **Widgets y shortcodes** de WordPress alimentados con inventario real.

---

2. Requisitos
-------------

[](#2-requisitos)

RequisitoDetallePHP7.x u 8.x (el código es compatible desde PHP 7.1; usa tipado de retorno y `array_filter` con `ARRAY_FILTER_USE_BOTH`)`ext-curl`Obligatoria: toda petición HTTP se hace con cURL`ext-json`Obligatoria: parseo de las respuestas`ext-mbstring`ObligatoriaToken SIMIProvisto por SIMI/la inmobiliaria (ver §4)Salida a internetEl servidor debe poder alcanzar `simi-api.com` y `api.simicrm.app`---

3. Instalación
--------------

[](#3-instalación)

### Vía Composer (recomendado)

[](#vía-composer-recomendado)

```
composer require homlity/sdk-simi
```

> El nombre del paquete en `composer.json` es **`homlity/sdk-simi`** y el repositorio es **[github.com/homlity/sdk-simi](https://github.com/homlity/sdk-simi)**.

### Migración desde `codwelt/sdk-simi`

[](#migración-desde-codweltsdk-simi)

El paquete se publicaba antes bajo el vendor `codwelt`. **El vendor y el namespace ahora son `homlity`**, y ese es un cambio incompatible hacia atrás: todo el código que use el SDK debe actualizar sus importaciones.

```
-composer require codwelt/sdk-simi
+composer require homlity/sdk-simi
```

```
-use Codwelt\SIMI\SDK\Domain\Providers\ApiServiceProvider;
-use Codwelt\SIMI\SDK\InfraStructure\API\ApiFachada;
+use Homlity\SIMI\SDK\Domain\Providers\ApiServiceProvider;
+use Homlity\SIMI\SDK\InfraStructure\API\ApiFachada;
```

Un solo comando actualiza todas las referencias de tu proyecto:

```
grep -rl 'Codwelt\\SIMI\\SDK' app/ config/ resources/ \
  | xargs sed -i '' 's/Codwelt\\SIMI\\SDK/Homlity\\SIMI\\SDK/g'   # macOS
```

```
grep -rl 'Codwelt\\SIMI\\SDK' app/ config/ resources/ \
  | xargs sed -i 's/Codwelt\\SIMI\\SDK/Homlity\\SIMI\\SDK/g'      # Linux
```

Después ejecuta `composer dump-autoload`. Ninguna clase, método ni firma cambió: **solo el namespace**.

> **Nota sobre versiones.** Cambiar el namespace rompe la compatibilidad, así que corresponde una versión mayor: **`v3.0.0`**. Publica ese tag antes de usar la restricción `^3.0`; mientras no exista, apunta a `dev-master`.

### Vía repositorio VCS

[](#vía-repositorio-vcs)

Si el paquete no está disponible en tu Packagist (por ejemplo, si trabajas contra un fork, una rama de desarrollo o un Packagist privado), agrégalo como repositorio VCS en el `composer.json` de tu proyecto:

```
{
  "repositories": [
    {
      "type": "vcs",
      "url": "https://github.com/homlity/sdk-simi.git"
    }
  ],
  "require": {
    "homlity/sdk-simi": "^3.0"
  }
}
```

```
composer update homlity/sdk-simi
```

Para fijar una versión exacta usa cualquiera de los tags publicados (`v2.5.7`, `v2.5.6`, …):

```
"homlity/sdk-simi": "v2.5.7"
```

### Autoload

[](#autoload)

El paquete usa PSR-4:

```
Homlity\SIMI\SDK\  →  src/

```

Basta con incluir el autoloader de Composer:

```
require __DIR__ . '/vendor/autoload.php';
```

---

4. El token de SIMI
-------------------

[](#4-el-token-de-simi)

Todas las peticiones se autentican con un único token que entrega SIMI a cada inmobiliaria.

### Formato

[](#formato)

El SDK valida el token contra esta expresión regular antes de permitir cualquier llamada:

```
/^([A-Za-z0-9]{40,50})-([0-9]+)$/

```

Es decir: **entre 40 y 50 caracteres alfanuméricos**, un **guion**, y un **número** (el identificador de la inmobiliaria/sede). Ejemplo con forma válida:

```
a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0-503

```

Si el token no cumple el formato, `setTokenProvider()` lanza:

```
Exception: El token es invalido

```

### Cómo se envía

[](#cómo-se-envía)

DestinoMecanismo`http://simi-api.com/ApiSimiweb/response/`HTTP **Basic Auth**, con usuario vacío y el token como contraseña (`CURLOPT_USERPWD = ":$token"`)`https://api.simicrm.app/crm/` (solo `getEstadoInmueble`)Cabeceras `token: ` y `Accept: application/vnd.apisimi.v3+json`### Nunca lo publiques

[](#nunca-lo-publiques)

El token da acceso completo al inventario de la inmobiliaria. **No lo escribas en el código fuente ni lo subas al repositorio.** Cárgalo desde variables de entorno; para eso existe la interfaz `TokenServiceProviderRespository` (ver §5).

---

5. Primeros pasos (Quickstart)
------------------------------

[](#5-primeros-pasos-quickstart)

### Paso 1 — Implementa tu proveedor de token

[](#paso-1--implementa-tu-proveedor-de-token)

El SDK nunca recibe el token "a mano": recibe un objeto que sabe de dónde sacarlo. Así puedes leerlo de `.env`, de la base de datos, de un secreto de tu infraestructura o de la configuración multi-sitio.

```
