Przejdź do treści

W jaki sposób podłączyć stronę WWW do voxCRM?

System voxCRM udostępnia publiczne API XML (z opcją JSON), dzięki któremu strona WWW może w pełni zautomatyzowany sposób pobierać aktualne dane o inwestycjach, dostępnych lokalach oraz historii zmian cen. Dane w pliku XML są automatycznie aktualizowane raz na godzinę — rekomendujemy buforowanie po stronie WWW.

💡 Zanim zaczniesz: Klucz API, zakres udostępnionych inwestycji oraz widoczność pól opcjonalnych konfiguruje administrator Twojej instancji voxCRM. Skontaktuj się z nim, aby otrzymać klucz oraz — jeśli potrzebujesz dodatkowych pól w XML — poprosić o ich włączenie.
⚠ Uwaga: Poniższa dokumentacja opisuje zakres pól możliwych do wystąpienia w XML. Część pól opcjonalnych może nie być dostępna w każdej instancji voxCRM — niektóre zostały wdrożone pod konkretne zastosowania branżowe (np. specjalistyczne typy nieruchomości). Jeśli potrzebujesz konkretnego pola, skontaktuj się z administratorem swojej instancji.
💡 Instancja demonstracyjna — do szybkich testów:
  • Adres: https://demo1.voxdeveloper.com
  • Testowy klucz API: ab33c2fb8240c8c7ca015d924713b5d234b7778e
  • Przykładowa inwestycja: investment_id = 15
Poniższe przykłady linków oraz kodów PHP używają tych danych — możesz je wywołać bez żadnych dodatkowych kroków.

Spis treści

  1. Endpoint — Lista inwestycji
  2. Endpoint — Lista lokali dla inwestycji
  3. Endpoint — Historia zmian cen
  4. Słowniki: statusy, typy lokali i kierunki świata
  5. Przykłady integracji
  6. Kontakt

1. Endpoint — Lista inwestycji

URL (XML — format domyślny):

GET https://demo1.voxdeveloper.com/webservice/investments-list/api_key/{API_KEY}

Przykład dla instancji demo (XML):
https://demo1.voxdeveloper.com/webservice/investments-list/api_key/ab33c2fb8240c8c7ca015d924713b5d234b7778e

Wersja JSON — ten sam endpoint zwraca dane w formacie JSON po dodaniu segmentu /json/1 w adresie:

GET https://demo1.voxdeveloper.com/webservice/investments-list/api_key/{API_KEY}/json/1

Przykład dla instancji demo (JSON):
https://demo1.voxdeveloper.com/webservice/investments-list/api_key/ab33c2fb8240c8c7ca015d924713b5d234b7778e/json/1

💡 XML czy JSON? Bez segmentu /json/1 endpoint zwraca XML (domyślnie). Z segmentem /json/1 — JSON. Oba warianty zawierają te same dane i pola, różnią się jedynie formatem.

Pola domyślne (zawsze zwracane)

Tag Opis Przykład
id ID inwestycji w CRM 123
name Nazwa inwestycji Testowa Inwestycja
voivodeship Województwo mazowieckie
address_district Dzielnica / powiat Śródmieście
address_street Ulica Al. Jerozolimskie
address_building_number Numer budynku 65
address_apartment_number Numer lokalu 1
postal_code Kod pocztowy 00-001
latitude Szerokość geograficzna 52.2297
longitude Długość geograficzna 21.0122
city Miasto Warszawa
transfer_ownership_date Data przeniesienia własności 2025-06-30
website_url Adres strony WWW inwestycji https://inwestycja.pl
monetary_benefits Inne korzyści finansowe (opisowo) 5% cashback
status Status inwestycji (tłumaczony) W sprzedaży

Pola opcjonalne (zależne od ustawień)

Te pola pojawią się w XML tylko gdy administrator włączył odpowiednią opcję. Jeśli chcesz wykorzystać któreś z nich, poproś administratora o włączenie.

Tag Opis Opcja do włączenia
investment_mini Miniaturka wizualizacji inwestycji Miniaturka wizualizacji inwestycji
investment_photo_{N} Galeria zdjęć inwestycji (N = 1, 2, 3…) Galeria wizualizacji inwestycji
investment_logo Logo inwestycji Logo inwestycji
informative_prospectus_link{N} Prospekty informacyjne (inwestycja) Prospekt informacyjny
stage_informative_prospectus_link{N} Prospekty informacyjne (etapy) — z atrybutem stageName Prospekt informacyjny
technical_standard_link{N} Standardy techniczne (inwestycja) Standard techniczny
stage_technical_standard_link{N} Standardy techniczne (etapy) — z atrybutem stageName Standard techniczny

Przykład XML

<?xml version="1.0"?>
<xml>
  <investment>
    <id>123</id>
    <name>Testowa Inwestycja</name>
    <voivodeship>mazowieckie</voivodeship>
    <address_district>Śródmieście</address_district>
    <address_street>Al. Jerozolimskie</address_street>
    <address_building_number>65</address_building_number>
    <address_apartment_number></address_apartment_number>
    <postal_code>00-001</postal_code>
    <latitude>52.2297</latitude>
    <longitude>21.0122</longitude>
    <city>Warszawa</city>
    <transfer_ownership_date>2025-06-30</transfer_ownership_date>
    <website_url>https://inwestycja.pl</website_url>
    <monetary_benefits>5% cashback</monetary_benefits>
    <status>W sprzedaży</status>
    <investment_logo>https://demo1.voxdeveloper.com/files/investments/logo.png</investment_logo>
  </investment>
</xml>

2. Endpoint — Lista lokali dla inwestycji

URL (XML — format domyślny):

GET https://demo1.voxdeveloper.com/webservice/realestatestatuslist/api_key/{API_KEY}/investment_id/{ID}

Przykład dla instancji demo, XML (inwestycja nr 15):
https://demo1.voxdeveloper.com/webservice/realestatestatuslist/api_key/ab33c2fb8240c8c7ca015d924713b5d234b7778e/investment_id/15

Wersja JSON — ten sam endpoint zwraca dane w formacie JSON po dodaniu segmentu /json/1 w adresie:

GET https://demo1.voxdeveloper.com/webservice/realestatestatuslist/api_key/{API_KEY}/json/1/investment_id/{ID}

Przykład dla instancji demo, JSON (inwestycja nr 15):
https://demo1.voxdeveloper.com/webservice/realestatestatuslist/api_key/ab33c2fb8240c8c7ca015d924713b5d234b7778e/json/1/investment_id/15

💡 XML czy JSON? Bez segmentu /json/1 endpoint zwraca XML (domyślnie). Z segmentem /json/1 — JSON. Oba warianty zawierają te same dane i pola, różnią się jedynie formatem odpowiedzi.

Filtrowanie wyników w URL

Endpoint realestatestatuslist wspiera dodatkowe, opcjonalne filtry przekazywane w adresie URL. Pozwalają one ograniczyć rozmiar zwracanego pliku XML — przydatne przy dużych inwestycjach, gdzie pełna lista lokali ładuje się wolno.

Parametr Opis Wartości
stage_id={ID} Filtruje lokale do konkretnego etapu inwestycji ID etapu
type_id={ID} Filtruje lokale po typie ID typu lub lista CSV (słownik), np. 1 lub 1,2
status_id={ID} Filtruje lokale po statusie ID statusu lub lista CSV (słownik), np. 1 lub 1,2

Zasady łączenia filtrów:

  • Jako pierwszy w adresie występuje investment_id lub stage_id.
  • Następnie, w dowolnej kolejności, można dodać type_id i/lub status_id.
  • Każdy z filtrów type_id i status_id przyjmuje pojedynczą wartość lub listę rozdzieloną przecinkami (CSV).

Przykłady poprawnych adresów:

# Tylko mieszkania (typ 1) w inwestycji 15
.../realestatestatuslist/api_key/{API_KEY}/investment_id/15/type_id/1
# Mieszkania i garaże (typy 1 i 2)
.../realestatestatuslist/api_key/{API_KEY}/investment_id/15/type_id/1,2
# Tylko lokale dostępne (status 1)
.../realestatestatuslist/api_key/{API_KEY}/investment_id/15/status_id/1
# Mieszkania dostępne i z rezerwacją ustną (typ 1, statusy 1 i 2)
.../realestatestatuslist/api_key/{API_KEY}/investment_id/15/type_id/1/status_id/1,2
# Filtrowanie po etapie zamiast inwestycji
.../realestatestatuslist/api_key/{API_KEY}/stage_id/15/type_id/1,2/status_id/1
💡 Wskazówka: Wartości type_id i status_id odpowiadają identyfikatorom ze słowników statusów i typów lokali w dalszej części dokumentacji.
💡 Drugi endpoint XML. Obok realestatestatuslist w systemie dostępny jest również /webservice/realestate-list-xml — alternatywny endpoint z nieco innym zestawem pól. Endpoint ten obsługuje filtrowanie wyłącznie po investment_id (filtry type_id oraz status_id dostępne są tylko w realestatestatuslist). W razie potrzeby warto skontaktować się z działem wsparcia, aby dobrać odpowiedni endpoint do integracji.

Pola domyślne (zawsze zwracane)

Tag Opis Format / wartości
id ID lokalu w CRM liczba
investment_id ID inwestycji liczba
investment_name Nazwa inwestycji tekst
investment_status Status inwestycji (tłumaczony) tekst
investment_stage Nazwa etapu inwestycji tekst
building Nazwa budynku tekst
name Pełna nazwa lokalu (budynek + numer) tekst, np. A - M1
local_number Numer lokalu tekst, np. M1
status_id ID statusu lokalu 1–11 (słownik)
status_name Nazwa statusu (tłumaczona) tekst
area Powierzchnia całkowita liczba (m²)
area_usable Powierzchnia użytkowa liczba (m²)
rooms Liczba pokoi liczba
floor Piętro liczba lub tekst (np. 3A)
completion_date Data pozwolenia na użytkowanie data lub tekst (np. „Available immediately")
ask_for_price Pytaj o cenę 0 lub 1
city Miasto tekst
date_modified Data ostatniej zmiany YYYY-MM-DD HH:MM:SS
type_id ID typu lokalu 1–31 (słownik)
type Nazwa typu (tłumaczona) tekst
staircase Nazwa klatki tekst
promotion Lokal w promocji 0 lub 1
direction Kierunek świata (strony świata lokalu) lista CSV (słownik)
two_levels Lokal dwupoziomowy 0 lub 1
dont_send_to_www Ukryty na WWW 0 lub 1
sold_status Status sprzedaży liczba
dont_export_realestate_to_xml_table Wyłączony z eksportu XML (tabela) 0 lub 1
virtual_walk Link do spaceru wirtualnego URL
view360 Link do widoku 360° URL

Pola cenowe (warunkowe)

Zwracane dla lokali dostępnych (statusy 1, 2). Jeśli chcesz pokazywać ceny także dla lokali zarezerwowanych lub sprzedanych — skontaktuj się z administratorem, który może włączyć opcję „Dodaj ceny do xml kiedy status jest niedostępny". Pełne wyłączenie cen w XML (np. na życzenie dewelopera) również leży po stronie administratora.

Tag Opis Format / wartości
price Cena brutto liczba (PLN)
pricemkw Cena za m² brutto liczba (PLN/m²)
price_net Cena netto liczba (PLN)
pricemkw_net Cena za m² netto liczba (PLN/m²)
promotion_price Cena promocyjna brutto liczba (PLN)
promotion_price_net Cena promocyjna netto liczba (PLN)
promotion_date_from Data startu promocji data (YYYY-MM-DD)
promotion_date_to Data końca promocji data (YYYY-MM-DD)

Pola opcjonalne

Te pola są widoczne w XML tylko gdy administrator włączył je w konfiguracji systemu. Pogrupowane tematycznie — jeśli potrzebujesz konkretnego pola, poproś administratora o jego włączenie.

Dodatkowe ceny:

Tag Opis Format / wartości
minimal_price_gross Najniższa cena brutto z ostatnich 30 dni liczba (PLN)
minimal_price_net Najniższa cena netto z ostatnich 30 dni liczba (PLN)
promotion_price_mkw / promotion_price_mkw_net Cena promocyjna za m² brutto / netto liczba (PLN/m²)
promotion_price_mkw_usable / promotion_price_mkw_usable_net Cena promocyjna za m² użytkowy brutto / netto liczba (PLN/m²)
pricemkw_usable / pricemkw_net_usable Cena za m² powierzchni użytkowej brutto / netto liczba (PLN/m²)
price_marketing / pricemkw_marketing Cena marketingowa i za m² liczba (PLN) / (PLN/m²)
parking_place_price Cena miejsca parkingowego liczba (PLN)
total_gross_price / total_net_price Cena łączna (lokal + przynależności) brutto / netto liczba (PLN)
promotion_desc Opis promocji tekst
last_price_change Data ostatniej zmiany ceny data (YYYY-MM-DD)
price_change_history Link do XML-a z historią cen lokalu URL
price_change_history_json Jw. w formacie JSON (jeśli administrator włączył opcję „Pokaż historię zmian cen również w formacie JSON") URL

Wynajem:

Tag Opis Format / wartości
rent_percentage_amount Udział procentowy w czynszu liczba (%)
base_rent / base_rent_net Czynsz bazowy brutto / netto liczba (PLN)
available_for_sale Dostępne do sprzedaży 0 lub 1
available_for_rent Dostępne do wynajmu 0 lub 1

Powierzchnie i miary:

Tag Opis Format / wartości
balkon Powierzchnia balkonu liczba (m²)
balcony_count Liczba balkonów liczba
taras Powierzchnia tarasu liczba (m²)
ogrod Powierzchnia ogrodu liczba (m²)
loggia Powierzchnia loggii liczba (m²)
antresole_area Powierzchnia antresoli liczba (m²)
area_attic Powierzchnia strychu liczba (m²)
area_marketing Powierzchnia marketingowa liczba (m²)
plot_area Powierzchnia działki liczba (m²)
room_height Wysokość pomieszczenia liczba (m)
sales_area Powierzchnia sprzedażowa liczba (m²)

Identyfikatory i nazewnictwo:

Tag Opis Format / wartości
administrative_number Numer administracyjny lokalu tekst
zeropadded_name Numer lokalu z zerami wiodącymi tekst
www_id Identyfikator na portalu WWW tekst

Cechy i wyposażenie:

Tag Opis Format / wartości
description Opis lokalu tekst
features Cechy lokalu (lista) lista tekstów (CSV)
recommended Lokal rekomendowany 0 lub 1
ready_to_move Gotowe do odbioru 0 lub 1
turnkey_condition Wykończenie pod klucz 0 lub 1
finish_and_equipment Wykończenie i wyposażenie 0 lub 1
finish_and_equipment_premium Wykończenie premium 0 lub 1
fireplace Kominek 0 lub 1
air_conditioner Klimatyzacja 0 lub 1
corner_apartment Lokal narożny 0 lub 1
home_office Nadający się pod biuro 0 lub 1
pantry Spiżarnia / schowek gospodarczy 0 lub 1
photovoltaics Fotowoltaika 0 lub 1
recuperation Rekuperacja 0 lub 1
underfloor_heating Ogrzewanie podłogowe 0 lub 1
duplex Lokal typu duplex 0 lub 1
kitchen Rodzaj kuchni tekst
wardrobe Garderoba / szafa 0 lub 1
cubby Miejsce na gospodarstwo 0 lub 1
building_type Typ budynku (tłumaczony) tekst
district Dzielnica / osiedle tekst

Parkingi, piwnice, rowerownie:

Tag Opis Format / wartości
number_of_mandatory_parking_spaces Obowiązkowa liczba miejsc parkingowych liczba
number_of_mandatory_cellars Obowiązkowa liczba piwnic liczba
number_of_mandatory_bicycle_boxes Obowiązkowa liczba boksów rowerowych liczba

Energetyka:

Tag Opis Format / wartości
energy_class Klasa energetyczna tekst (np. A+, B, C)
annual_demand_indicator_for_usable_energy Roczne zapotrzebowanie — energia użytkowa liczba (kWh/m²/rok)
annual_demand_indicator_for_final_energy Roczne zapotrzebowanie — energia końcowa liczba (kWh/m²/rok)
annual_demand_indicator_for_non_renewable_primary_energy Roczne zapotrzebowanie — energia pierwotna nieodnawialna liczba (kWh/m²/rok)
share_of_renewable_energy_sources Udział OZE liczba (%)
unit_amount_of_co2_emission Emisja CO₂ na m² liczba (kg CO₂/m²/rok)

Daty i statusy dodatkowe:

Tag Opis Format / wartości
date_pnu Data pozwolenia na użytkowanie (etap) data (YYYY-MM-DD)
inspection_date Data odbioru data (YYYY-MM-DD)
realestate_promotion_available Dostępność promocji 0 lub 1
investment_other_cash_benefits Inne korzyści finansowe inwestycji tekst
total_finally_net_value Finalna wartość netto lokalu liczba (PLN)

Pliki:

Tag Opis Format / wartości
photo_link{N} Zdjęcia lokalu (N = 1, 2, 3…) URL
card_link / card_link_extension / card_link_file_extension Karta lokalu (PDF) + wersje z rozszerzeniem URL / tekst / tekst
plan_link / plan_link_extension / plan_link_tn Plan lokalu + rozszerzenie + miniatura URL / tekst / URL
plan3d_link Plan 3D URL
plan_thumbnail_link / plan_thumbnail_link_extension Miniatura planu URL / tekst
plan_preview / plan_preview_extension Podgląd planu URL / tekst
document_link / documents_link_extension Inne dokumenty lokalu URL / tekst
housing_estate_plan{N} Plany osiedla URL
video_link Film o lokalu URL

Struktury zagnieżdżone

Pojawiają się jako osobne elementy wewnątrz <realestate>.

<contiguity_list> — przynależności. Każdy <contiguity> zawiera:

Tag Opis Format / wartości
contiguity_id ID przynależnego lokalu liczba
contiguity_name Nazwa tekst
contiguity_type Typ (tłumaczony) tekst
contiguity_multilingual_description Opis wielojęzyczny tekst
contiguity_price / contiguity_price_net Cena brutto / netto liczba (PLN)
contiguity_pricemkw / contiguity_pricemkw_net Cena za m² brutto / netto liczba (PLN/m²)
contiguity_area / contiguity_area_usable Powierzchnia / użytkowa liczba (m²)
contiguity_last_price_change Data ostatniej zmiany ceny data (YYYY-MM-DD)
contiguity_price_change_history / _json Linki do historii zmian cen URL
contiguity_available_for_sale / _for_rent Flagi dostępności 0 lub 1

<storey_list> — rozbicie powierzchni na kondygnacje / strefy dodatkowe. Lista kondygnacji i stref lokalu, które nie są głównymi pomieszczeniami (np. antresole, strychy, poddasza). Sekcja pojawia się po włączeniu opcji „Powierzchnia apartamentu" (wspólnej dla <storey_list> i <room_list>). Każdy <storey> zawiera:

Tag Opis Format / wartości
storey_name Nazwa kondygnacji / strefy tekst
storey_area Powierzchnia liczba (m²)
storey_height Wysokość liczba (m)
storey_area_usable Powierzchnia użytkowa liczba (m²)
storey_area_under_the_walls_and_stairs Powierzchnia pod ścianami i schodami liczba (m²)

<room_list> — rozbicie powierzchni na pomieszczenia główne. Lista pomieszczeń głównych lokalu (np. pokoje, kuchnia, łazienka). Sekcja pojawia się po włączeniu opcji „Powierzchnia apartamentu" (wspólnej z <storey_list>). Każdy <room> zawiera:

Tag Opis Format / wartości
room_name Nazwa pomieszczenia (np. „Pokój dzienny", „Kuchnia") tekst
room_area Powierzchnia liczba (m²)

<flags_list> — atuty / wyróżniki lokalu. Lista cech wyróżniających lokal (np. „Balkon", „Narożne okno", „Widok na park"). Sekcja pojawia się po włączeniu opcji „Zalety". Każdy <flag> zawiera:

Tag Opis Format / wartości
flag_name Nazwa atutu tekst

Przykład XML

<?xml version="1.0"?>
<xml>
  <realestate>
    <id>2041</id>
    <investment_id>15</investment_id>
    <investment_name>Testowa Inwestycja</investment_name>
    <investment_status>W sprzedaży</investment_status>
    <investment_stage>Etap I</investment_stage>
    <building>A</building>
    <name>A - M1</name>
    <local_number>M1</local_number>
    <status_id>1</status_id>
    <status_name>Dostępne</status_name>
    <area>45.50</area>
    <area_usable>38.20</area_usable>
    <rooms>2</rooms>
    <floor>3</floor>
    <completion_date>2025-06-15</completion_date>
    <ask_for_price>0</ask_for_price>
    <city>Warszawa</city>
    <price>490000.00</price>
    <pricemkw>10769.23</pricemkw>
    <price_net>453703.70</price_net>
    <pricemkw_net>9970.96</pricemkw_net>
    <date_modified>2025-05-26 17:00:00</date_modified>
    <type_id>1</type_id>
    <type>Mieszkanie</type>
    <balkon>8.50</balkon>
    <plan_link>https://demo1.voxdeveloper.com/files/realestate/plan.pdf</plan_link>
    <card_link>https://demo1.voxdeveloper.com/files/realestate/card.pdf</card_link>
    <contiguity_list>
      <contiguity>
        <contiguity_name>MP-12</contiguity_name>
        <contiguity_type>Miejsce postojowe</contiguity_type>
        <contiguity_price>25000.00</contiguity_price>
        <contiguity_area>12.00</contiguity_area>
      </contiguity>
    </contiguity_list>
  </realestate>
</xml>

3. Endpoint — Historia zmian cen

Link do pliku XML historii cen każdego lokalu znajdziesz w polu price_change_history poprzedniego endpointu. Przykład ścieżki:

https://demo1.voxdeveloper.com/files/price_changes/{hash1}/{hash2}.xml

Plik jest generowany automatycznie po każdej zmianie cen — nie wymaga autoryzacji poza znajomością URL-a. Dla wygody dostępna jest również wersja JSON (jeśli administrator ją włączył).

Pola zawsze zwracane

Tag Opis Format / wartości
id ID lokalu liczba
investment_id ID inwestycji liczba
investment_name Nazwa inwestycji tekst
investment_stage Nazwa etapu tekst
building Budynek tekst
name Pełna nazwa lokalu tekst
local_number Numer lokalu tekst
type_id / type Typ lokalu liczba / tekst
price / price_net Aktualna cena brutto / netto liczba (PLN)
pricemkw / pricemkw_net Aktualna cena za m² brutto / netto liczba (PLN/m²)

Pola opcjonalne (włączane przez administratora)

Tag Opis Format / wartości
pricemkw_usable / pricemkw_usable_net Cena za m² użytkowy brutto / netto liczba (PLN/m²)

Struktura <price_history>

Zawiera listę <price_change>. Każdy zawiera:

Tag Opis Format / wartości
date_modified Data i godzina zmiany YYYY-MM-DD HH:MM
type Rodzaj zmiany (tłumaczony), np. „Cena katalogowa", „Cena promocyjna" tekst
<before> Stan przed zmianą — price, price_net, pricemkw, pricemkw_net (+ opcjonalnie warianty _usable) grupa pól
<after> Stan po zmianie — te same pola grupa pól

Przykład XML

<?xml version="1.0"?>
<xml>
  <realestate>
    <id>2041</id>
    <investment_id>15</investment_id>
    <investment_name>Testowa Inwestycja</investment_name>
    <investment_stage>Etap I</investment_stage>
    <building>A</building>
    <name>A - M1</name>
    <local_number>M1</local_number>
    <type_id>1</type_id>
    <type>Mieszkanie</type>
    <price>490000.00</price>
    <price_net>453703.70</price_net>
    <pricemkw>10769.23</pricemkw>
    <pricemkw_net>9970.96</pricemkw_net>
    <price_history>
      <price_change>
        <date_modified>2025-05-26 17:00</date_modified>
        <type>Cena katalogowa</type>
        <before>
          <price>500000.00</price>
          <price_net>462962.96</price_net>
          <pricemkw>10989.01</pricemkw>
          <pricemkw_net>10175.01</pricemkw_net>
        </before>
        <after>
          <price>490000.00</price>
          <price_net>453703.70</price_net>
          <pricemkw>10769.23</pricemkw>
          <pricemkw_net>9970.96</pricemkw_net>
        </after>
      </price_change>
    </price_history>
  </realestate>
</xml>

4. Słowniki: statusy, typy lokali i kierunki świata

Statusy lokali

ID Status
1 Dostępne
2 Rezerwacja ustna
3 Umowa rezerwacyjna
4 Sprzedane
5 Umowa przedwstępna
6 Umowa deweloperska
7 Akt notarialny
8 Odbiór
9 Wstrzymany
10 Rezerwacja podtrzymana
11 Umowa najmu

Typy lokali

ID Typ
1 Mieszkanie
2 Garaż
3 Miejsce postojowe
4 Komórka lokatorska
5 Miejsce postojowe zadaszone
6 Piwnica
7 Boks rowerowy
8 Lokal komercyjny
9 Lokal biurowy
10 Schowek
11 Miejsce postojowe naziemne
12 Miejsce postojowe podziemne
13 Miejsce postojowe ze schowkiem
14 Miejsce postojowe zależne podwójne
15 Miejsce postojowe na jednoślad
16 Dom
17 Udział
18 Hala na platformie
19 Standard wykończenia
20 Condohotel
21 Apartament
22 Udział w nieruchomości wodnej
23 Miejsce cumownicze
24 Działka
25 Osiedle mieszkaniowe
26 Miejsce postojowe dla osób z niepełnosprawnością
27 Taras dachowy
28 Schowek na jednoślad
29 Sauna
30 Ogród
31 Loggia

Kierunki świata (pole direction)

Pole direction w XML opisuje strony świata, na które wychodzi lokal. Może zawierać jedną lub kilka wartości rozdzielonych przecinkami (dla lokali narożnych / przechodnich).

Format wartości zależy od ustawienia w panelu voxCRM — opcji „Wyświetl alternatywną listę stron świata (skrócone polskie nazwy i posortowane według zegara)":

Ustawienie Format w XML Przykład
Opcja wyłączona (domyślnie) Surowe kody literowe N / S / E / W <direction>NE,NS,SW</direction>
Opcja włączona Skrócone nazwy polskie rozdzielone przecinkami <direction>Pn., Wsch., Pd., Zach.</direction>
⚠ Uwaga dla developera strony WWW: Zanim zaczniesz parsować pole direction, ustal z administratorem voxCRM po stronie klienta, który wariant jest włączony — i trzymaj się jednego. Mieszanie formatów (raz kody, raz polskie skróty) w tym samym pliku XML nie wystąpi, ale zmiana ustawienia w panelu zmienia format w kolejnym wygenerowaniu XML.

Pełna lista dostępnych kodów (wariant domyślny — opcja wyłączona)

Kod Znaczenie Proponowany skrót polski
N Północ Pn.
S Południe Pd.
E Wschód Wsch.
W Zachód Zach.
NE Północny-Wschód Pn., Wsch.
EN Wschodni-Północ Pn., Wsch.
NW Północny-Zachód Pn., Zach.
WN Zachodni-Północ Pn., Zach.
SE Południowy-Wschód Pd., Wsch.
ES Wschodni-Południe Pd., Wsch.
SW Południowy-Zachód Pd., Zach.
WS Zachodni-Południe Pd., Zach.
NS Północ-Południe Pn., Pd.
SN Południe-Północ Pn., Pd.
EW Wschód-Zachód Wsch., Zach.
WE Zachód-Wschód Wsch., Zach.
NSE Północ, Południe, Wschód Pn., Wsch., Pd.
NES Północ, Wschód, Południe Pn., Wsch., Pd.
NSW Północ, Południe, Zachód Pn., Pd., Zach.
NWS Północ, Zachód, Południe Pn., Pd., Zach.
SWN Południe, Zachód, Północ Pn., Pd., Zach.
NEW Północ, Wschód, Zachód Pn., Wsch., Zach.
NWE Północ, Zachód, Wschód Pn., Wsch., Zach.
EWN Wschód, Zachód, Północ Pn., Wsch., Zach.
SWE Południe, Zachód, Wschód Pd., Wsch., Zach.
ESW Wschód, Południe, Zachód Pd., Wsch., Zach.
NSEW Wszystkie cztery strony Pn., Wsch., Pd., Zach.
💡 Wskazówka (wariant domyślny): Te same strony świata bywają reprezentowane kilkoma różnymi kodami (np. NE i EN oznaczają to samo). Przy parsowaniu surowych kodów warto rozpoznawać wartość po zestawie liter, a nie po dokładnym ciągu — tak, aby mapowanie działało niezależnie od kolejności znaków w kodzie. W wariancie z włączoną alternatywną listą problem nie występuje: XML zwraca gotowe skróty polskie z kolumny „Proponowany skrót polski".

5. Przykłady integracji

PHP — pobranie statusu lokalu

<?php
// Dla środowiska produkcyjnego podmień klucz API i ID inwestycji na własne.
function getRealEstateInfo(int $id): ?array {
    $url = 'https://demo1.voxdeveloper.com/webservice/realestatestatuslist'
         . '/api_key/ab33c2fb8240c8c7ca015d924713b5d234b7778e/investment_id/15';
    $xml = simplexml_load_file($url);
    if ($xml === false) {
        return null;
    }
    foreach ($xml->realestate as $realestate) {
        if ((int) $realestate->id === $id) {
            return [
                'id'          => (string) $realestate->id,
                'status_id'   => (int)    $realestate->status_id,
                'status_name' => (string) $realestate->status_name,
                'price'       => (float)  $realestate->price,
                'area'        => (float)  $realestate->area,
            ];
        }
    }
    return null;
}
$info = getRealEstateInfo(2041);
if ($info !== null) {
    echo "Lokal #{$info['id']} — {$info['status_name']} — {$info['price']} PLN";
}

WordPress — shortcode z buforowaniem

<?php
/* Plugin Name: voxCRM Real Estate Table */
function voxcrm_realestate_table() {
    if (false === ($output = get_transient('voxcrm_realestate_table'))) {
        // Dla środowiska produkcyjnego podmień klucz API i ID inwestycji na własne.
        $url = 'https://demo1.voxdeveloper.com/webservice/realestatestatuslist'
             . '/api_key/ab33c2fb8240c8c7ca015d924713b5d234b7778e/investment_id/15';
        $xml = simplexml_load_file($url);
        if ($xml === false) {
            return '<p>Brak danych.</p>';
        }
        $output = '<table><thead><tr>'
                . '<th>Lokal</th><th>Metraż</th><th>Status</th><th>Cena</th>'
                . '</tr></thead><tbody>';
        foreach ($xml->realestate as $r) {
            $output .= sprintf(
                '<tr><td>%s</td><td>%s m²</td><td>%s</td><td>%s PLN</td></tr>',
                esc_html((string) $r->name),
                esc_html((string) $r->area),
                esc_html((string) $r->status_name),
                esc_html((string) $r->price)
            );
        }
        $output .= '</tbody></table>';
        set_transient('voxcrm_realestate_table', $output, HOUR_IN_SECONDS);
    }
    return $output;
}
add_shortcode('voxcrm_realestate_table', 'voxcrm_realestate_table');

Powiązane materiały


6. Kontakt

W razie pytań lub problemów z integracją prosimy o kontakt z działem wsparcia technicznego:

W sprawach związanych z kluczem API, zakresem udostępnionych inwestycji oraz widocznością pól opcjonalnych — skontaktuj się z administratorem Twojej instancji voxCRM.