پروجیکٹس اور لے آؤٹس کے لیے XML فیڈ

1. Feed Purpose

XML feed رئیل اسٹیٹ پروجیکٹس اور عام layouts سے متعلق منظم ڈیٹا منتقل کرتا ہے۔ اس کا مقصد یہ ہے کہ وصول کرنے والا سسٹم خودکار طور پر project cards بنائے اور اپڈیٹ کرے، prices، statuses، galleries، amenities، payment terms، EOI، اور developers کی marketing promo materials دکھا سکے۔

یہ feed layouts کو aggregated form میں منتقل کرتا ہے: ایک layout record ایک typical layout اور اس قسم کی available units کی تعداد کو بیان کرتا ہے۔ یہ مخصوص apartments، offices، یا lots کی فہرست نہیں ہے۔

  • realty-feed: پورے XML feed کا root container۔ Main ID: —
  • offers: ایک project یا complex۔ Main ID: complex-id
  • layouts: project کے اندر ایک typical layout۔ Main ID: id
  • payment_plans: project کا ایک payment option۔ Main ID: id
  • eoi_item: ایک EOI condition۔ Main ID: —
  • stock: developer کی marketing campaign، news item، یا promotional message۔ Main ID: —

1.1 What Is an XML Feed

XML feed ایک structured file ہے جس میں real estate projects اور typical layouts کا data شامل ہوتا ہے۔ اس میں descriptions، photos، prices، addresses، statuses، specifications، amenities، اور دیگر data شامل ہوتا ہے جو properties کو agency website یا catalog میں دکھانے کے لیے درکار ہوتا ہے۔

سادہ الفاظ میں، XML feed real estate سے متعلق ایک data stream ہے جسے receiving system باقاعدگی سے download کرتا ہے، پڑھتا ہے، اور property cards کو خودکار طور پر update کرنے کے لیے استعمال کرتا ہے۔

Alnair data فراہم کرتا ہے۔ Website development، catalog development، CRM integration، اور import logic client یا client کی technical team سنبھالتی ہے۔

1.2 What The Agency Needs

XML feed استعمال کرنے کے لیے agency کو اپنی technical infrastructure چاہیے جو باقاعدگی سے XML download کر سکے، اس کی structure کو parse کر سکے، اور اپنے system میں data update کر سکے۔

  • Website or property catalog: وہ جگہ جہاں feed سے projects اور layouts دکھائے جائیں گے۔
  • Technical team or developer: XML downloading، parsing، اور import کی setup۔
  • XML parser: XML structure کو پڑھنا اور internal data model میں convert کرنا۔
  • Import module: projects اور layouts create، update، اور deactivate کرنا۔
  • Task scheduler: باقاعدہ schedule پر import چلانا، مثلاً cron یا scheduler کے ذریعے۔
  • Error logging: unknown enum values، empty fields، اور loading errors کی monitoring۔

1.3 How The Agency Uses The XML Feed

عام workflow کچھ یوں ہوتا ہے:

  1. Agency system personal web link سے XML download کرتا ہے۔
  2. XML کو diagnostics اور reprocessing کے لیے raw snapshot کے طور پر محفوظ کیا جاتا ہے۔
  3. Parser realty-feed، offers، layouts structure اور nested blocks پڑھتا ہے۔
  4. Import module نئے projects اور layouts بناتا ہے یا موجودہ کو update کرتا ہے۔
  5. جو objects نئے feed سے غائب ہو جائیں انہیں inactive mark کیا جاتا ہے۔
  6. Agency website پر updated project cards، prices، galleries، اور statuses دکھائے جاتے ہیں۔

Main integration capabilities:

  • Automatic updates: projects اور layouts بغیر manual input کے update ہوتے ہیں۔
  • Property page creation: feed data project اور layout cards کے لیے استعمال ہوتا ہے۔
  • Up-to-date prices and statuses: website کو schedule کے مطابق XML updates ملتے ہیں۔
  • Filters and search: district، price، property type، room count، اور area fields filtering کے لیے استعمال ہو سکتے ہیں۔
  • Media galleries: project photos، themed galleries، اور layout images interface میں دکھائی جا سکتی ہیں۔

2. General XML Structure

<realty-feed>
  <generation-date>2026-06-17T12:06:39+04:00</generation-date>
  <offers>...</offers>
  <offers>...</offers>
</realty-feed>

  • realty-feed: object. Root feed block.
  • generation-date: datetime. XML generation date and time. Used to check data freshness.
  • offers: object[]. Projects یا complexes کی فہرست۔ ہر offers block میں project data اور اس کے layouts شامل ہوتے ہیں۔

2.1 Feed Access and Download Limits

Feed client کو personal web link کے ذریعے فراہم کیا جاتا ہے۔ یہ link client کے لیے unique ہوتا ہے اور receiving system اسے XML خودکار طور پر download کرنے کے لیے استعمال کرتا ہے۔

Personal link Alnair account میں administrator کے لیے دستیاب ہوتا ہے۔ Administrator یہ link client کی technical team کو import setup کے لیے دے سکتا ہے۔

  • Access type: personal web link. Client کے لیے individual XML feed URL۔
  • Where to get the link: Alnair account. Link client administrator کے لیے دستیاب ہے۔
  • Feed update frequency: every 4 hours. XML data Alnair side پر ہر 4 hours بعد update ہوتا ہے۔
  • Minimum download interval: no more than once per hour. Receiving system feed کو hour میں ایک بار سے زیادہ access نہ کرے۔
  • Limit exceeded: access blocking. اگر requests بہت زیادہ ہوں تو feed access عارضی طور پر block ہو سکتا ہے۔

Recommended integration logic: cron یا scheduler کے ذریعے scheduled downloading set کریں، آخری received XML محفوظ کریں، اور ہر website page load پر feed request نہ کریں۔ بہترین طریقہ یہ ہے کہ feed کو hour میں ایک بار سے زیادہ download نہ کیا جائے، جبکہ یہ بھی مدِنظر رکھا جائے کہ نیا data تقریباً ہر 4 hours بعد آتا ہے۔

3. Project: <offers>

offers feed کی بنیادی entity ہے۔ اس میں project description، developer، location، construction اور sales status، prices، media، amenities، payment plans، EOI، marketing promotions، اور typical layouts شامل ہوتے ہیں۔

<offers>
  <complex-id>5646</complex-id>
  <type>project</type>
  <logo>https://...</logo>
  <photo>https://...</photo>
  <title>...</title>
  <description>...</description>
  <price_on_request>1</price_on_request>
  <status>...</status>
  <construction_start_at>2025-01-01T00:00:00+04:00</construction_start_at>
  <construction_progress>15</construction_progress>
  <planned_completion_at>2027-12-31T00:00:00+04:00</planned_completion_at>
  <predicted_completion_at>2027-12-31T00:00:00+04:00</predicted_completion_at>
  <amenities>...</amenities>
  <developer>...</developer>
  <city>Dubai</city>
  <address>...</address>
  <latitude>25.000000</latitude>
  <longitude>55.000000</longitude>
  <districts>...</districts>
  <album>...</album>
  <albums>...</albums>
  <constructions_count>1</constructions_count>
  <for_sale_count>10</for_sale_count>
  <price>...</price>
  <br_prices>...</br_prices>
  <updated_at>2026-06-17T10:53:20+04:00</updated_at>
  <is_sold_out>0</is_sold_out>
  <payment_plans>...</payment_plans>
  <sales_status>...</sales_status>
  <stocks>...</stocks>
  <eoi>...</eoi>
  <service_charge>...</service_charge>
  <assignment>...</assignment>
  <is_limited_publication>0</is_limited_publication>
  <layouts>...</layouts>
</offers>

  • complex-id: integer. Alnair میں unique project ID۔ upsert کے لیے external project ID کے طور پر استعمال کریں۔
  • type: enum. Top-level entity type: project or compound. Raw value محفوظ کریں اور top-level project کے طور پر import کریں۔
  • logo: url. Project logo. Branding میں دکھائیں، cover کے طور پر استعمال نہ کریں۔
  • photo: url. Project کی main image / cover۔ cover image اور hero image کے طور پر استعمال کریں۔
  • title: localized object. en/ru/ar میں project name۔ interface language کے مطابق دکھائیں۔
  • description: localized HTML. en/ru/ar میں project description۔ محفوظ طریقے سے render کریں؛ HTML CDATA کے اندر ہے۔
  • price_on_request: 0/1. Price hiding flag۔ اگر 1 ہو تو “Price on request” دکھائیں۔
  • status: object. Construction status۔ sales_status سے خلط ملط نہ کریں۔
  • construction_start_at: datetime. Construction start date۔ اگر filled ہو تو دکھائیں۔
  • construction_progress: decimal. Construction completion percentage۔ فیصد کے طور پر دکھائیں۔
  • planned_completion_at: datetime. Planned project completion date۔ handover date کے طور پر استعمال کریں۔
  • predicted_completion_at: datetime. Predicted completion date۔ updated completion date کے طور پر استعمال ہو سکتی ہے۔
  • amenities: object. Project amenities اور features۔ key کے مطابق map کریں۔
  • developer: object. Project developer۔ name اور logo محفوظ کریں۔
  • city / address: string. Project city اور address۔ location data میں استعمال کریں۔
  • latitude / longitude: decimal. Coordinates۔ map کے لیے استعمال کریں۔
  • districts: object. Project districts۔ filters اور project card کے لیے استعمال کریں۔
  • album: object. Main uncategorized project gallery۔ general gallery کے طور پر دکھائیں۔
  • albums: object. Themed project galleries۔ title کے مطابق group کریں۔
  • for_sale_count: integer. Project میں available units کی تعداد۔ availability کے طور پر دکھائی جا سکتی ہے۔
  • price: object. General project price range۔ اگر price_on_request=1 ہو تو hide کریں۔
  • br_prices: object[]. Bedroom count یا category کے لحاظ سے prices۔ filters اور listings کے لیے استعمال کریں۔
  • updated_at: datetime. Project update date۔ synchronization کے لیے استعمال کریں۔
  • is_sold_out: 0/1. Sold-out flag۔ sales_status کے ساتھ استعمال کریں۔
  • payment_plans: object[]. Developer کے payment options۔ payment options کے طور پر دکھائیں۔
  • sales_status: localized object. Project sales status۔ sales stage متعین کرتا ہے۔
  • stocks: object. Developer کی marketing campaigns اور promotional messages۔ promo blocks کے طور پر دکھائیں۔
  • eoi: object. Expression of Interest۔ صرف Presale (EOI) کے لیے دکھائیں۔
  • service_charge: object. Service charge۔ اگر value filled ہو تو دکھائیں۔
  • assignment: decimal. Assignment condition۔ خالی ہو تو مطلب specified نہیں۔
  • is_limited_publication: 0/1. Publication restriction۔ اگر 1 ہو تو permission کے بغیر publicly publish نہ کریں۔
  • layouts: object[]. Project کے typical layouts۔ child entities کے طور پر import کریں۔

4. Localized Fields

Localized fields کی structure ایک جیسی ہوتی ہے: tag کے اندر English، Russian، اور Arabic values دی جاتی ہیں۔

<title>
  <en>Project Name</en>
  <ru>Название проекта</ru>
  <ar>اسم المشروع</ar>
</title>

  • en: English value. Recommended fallback.
  • ru: Russian value.
  • ar: Arabic value.

Fallback rule:

  1. اگر interface language filled ہو تو اسے استعمال کریں۔
  2. اگر مطلوبہ language خالی ہو تو en استعمال کریں۔
  3. اگر en خالی ہو تو ru استعمال کریں۔
  4. اگر ru خالی ہو تو ar استعمال کریں۔
  5. اگر تمام values خالی ہوں تو field ظاہر نہ کریں۔

5. Statuses

5.1 Construction Status: <status>

Construction status project کی physical حالت دکھاتا ہے۔ یہ sales availability نہیں بتاتا۔

<status>
  <key>development_stage_progress</key>
  <en>In Progress</en>
  <ru>Строится</ru>
  <ar>قيد الإنشاء</ar>
</status>

  • Scheduled: project منصوبہ بند ہے۔
  • In Progress: construction جاری ہے۔
  • Ready: project مکمل ہو چکا ہے۔
  • Stopped: construction روک دی گئی ہے۔

5.2 Sales Status: <sales_status>

Sales status project کے commercial stage کو دکھاتا ہے: announcement، presale، launch، active sales، یا sold out۔

  • Preliminary Info: project کی ابتدائی معلومات۔
  • Announcement: project کا اعلان ہو چکا ہے۔
  • Presale (EOI): EOI collection جاری ہے۔
  • Launch: sales launch۔
  • On Sale: project خرید کے لیے دستیاب ہے۔
  • Sold Out: project فروخت ہو چکا ہے۔
  • Pending: status اپڈیٹ کا منتظر ہے۔

6. Developer and Location

یہ blocks developer brand اور project کی geographical location دکھانے کے لیے ضروری ہیں۔

<developer>
  <title>
    <en>Developer Name</en>
    <ru>Developer Name</ru>
    <ar>Developer Name</ar>
  </title>
  <logo>https://...</logo>
</developer>
<city>Dubai</city>
<address>Project Address, Dubai</address>
<latitude>25.01809076</latitude>
<longitude>55.13354525</longitude>
<districts>
  <district>Jumeirah Village Triangle (JVT)</district>
</districts>

  • developer.title: localized object. Developer name.
  • developer.logo: url. Developer logo.
  • city: string. City.
  • address: string. Address.
  • latitude / longitude: decimal. Map کے لیے coordinates۔
  • districts.district: string[]. Project districts.

7. Prices

7.1 Project Price: <price>

Project-level price project میں available offers کے لیے general price range دکھاتا ہے۔

<price>
  <min>815462</min>
  <max>2089780</max>
  <min_usd>222009</min_usd>
  <max_usd>568942</max_usd>
  <currency>AED</currency>
</price>

  • min: decimal. Minimum price.
  • max: decimal. Maximum price.
  • min_usd: decimal. USD میں minimum price.
  • max_usd: decimal. USD میں maximum price.
  • currency: enum. Main currency, usually AED.

اگر price_on_request = 1 ہو تو exact prices public طور پر ظاہر نہیں کیے جاتے، چاہے price filled ہو۔

7.2 Prices by Category: <br_prices>

br_prices prices اور areas کو bedroom count یا property type کے لحاظ سے group کرتا ہے۔ یہ filters اور short project cards کے لیے مفید ہے۔

<br_prices>
  <key>1</key>
  <count>7</count>
  <min_price>1070564</min_price>
  <max_price>1289674</max_price>
  <min_price_m2>17204</min_price_m2>
  <max_price_m2>18483</max_price_m2>
  <currency>AED</currency>
  <min_area><m2>57.92</m2><ft2>623.45</ft2></min_area>
  <max_area><m2>74.17</m2><ft2>798.36</ft2></max_area>
</br_prices>

  • studio: studios.
  • 1-6: bedrooms کی تعداد۔
  • villa: villas.
  • townhouse: townhouses.
  • n: not applicable / non-residential category / other.

8. Media

Feed میں media کئی types میں تقسیم ہوتا ہے۔ انہیں ایک gallery میں اس طرح merge نہیں کرنا چاہیے کہ ان کا مقصد متاثر ہو: ایک image project cover ہو سکتی ہے، دوسری logo، تیسری promotion image، اور چوتھی floor plan۔

  • logo: offers.logo. Project logo. Project branding میں دکھائیں؛ cover کے طور پر استعمال نہ کریں۔
  • photo: offers.photo. Main project image / cover۔ card میں cover image اور project page پر hero image کے طور پر استعمال کریں۔
  • album.image: offers.album.image. Main uncategorized project gallery۔ general project gallery میں دکھائیں۔
  • albums.album.images.image: offers.albums.album.images.image. Themed project gallery۔ albums.album.title کے مطابق group کریں۔
  • developer.logo: offers.developer.logo. Developer logo. Developer block میں دکھائیں۔
  • stocks.stock.logo: offers.stocks.stock.logo. Marketing campaign image. Promotion block کے اندر دکھائیں۔
  • layouts.album.image: offers.layouts.album.image. کسی خاص typical layout کی gallery۔ layout level پر دکھائیں۔
  • levels_photos.level_photo.image: offers.layouts.levels_photos.level_photo.image. Level کے لحاظ سے layout image۔ floor plan کے طور پر استعمال کریں۔

<photo>https://...</photo>
<album>
  <image>https://...</image>
</album>
<albums>
  <album>
    <title><en>Infrastructure</en><ru>Инфраструктура</ru><ar>...</ar></title>
    <images>
      <image>https://...</image>
    </images>
  </album>
</albums>

  • Project presentation: project presentation images۔
  • Construction progress: construction progress photos۔
  • Finishing examples: finishing examples۔
  • Infrastructure: project infrastructure۔
  • View: views and surroundings۔

ہر project میں ہر category کا موجود ہونا ضروری نہیں۔ اگر category title خالی ہو تو images کو uncategorized import کیا جا سکتا ہے یا general gallery میں رکھا جا سکتا ہے۔

موجودہ structure میں history/story کا کوئی الگ XML tag نہیں ہے۔ News، promotional messages، اور project marketing materials stocks کے ذریعے منتقل ہوتے ہیں۔ Construction history کے لیے اگر albums میں موجود ہو تو Construction progress category استعمال کی جا سکتی ہے۔

9. Amenities

amenities project amenities اور features بیان کرتا ہے۔ Integration کے لیے key استعمال کرنا بہتر ہے، جبکہ localized values display کے لیے استعمال ہوں۔

<amenities>
  <amenity>
    <key>project_facilities_gym</key>
    <en>Gym</en>
    <ru>Тренажёрный зал</ru>
    <ar>صالة رياضية</ar>
  </amenity>
</amenities>

  • amenities: object. Amenities container.
  • amenity: object. One amenity.
  • key: enum. Technical key.
  • en / ru / ar: string. تین زبانوں میں amenity name۔

Key projecet_hotel_license میں typo موجود ہے، لیکن اسے Hotel License کے طور پر map کرنا ضروری ہے۔ Alias support کرنا اور import کو نہ توڑنا بہتر ہے۔

10. Marketing Promotions: <stocks>

stocks developers کی marketing campaigns، news، اور promotional messages ہوتے ہیں۔ ان میں special prices، discounts، launch terms، EOI announcements، temporary payment offers، اور advertising materials شامل ہو سکتے ہیں۔ یہ block inventory stock نہیں ہے اور unit availability متعین نہیں کرتا۔

<stocks>
  <stock>
    <title>...</title>
    <description>...</description>
    <start_at>2025-06-26T00:00:00+04:00</start_at>
    <end_at/>
    <logo>https://...</logo>
  </stock>
</stocks>

  • stocks: object. Marketing messages container.
  • stock: object. ایک campaign، news item، یا promotional announcement۔
  • title: localized object. Promotion title.
  • description: localized HTML. Promotion description.
  • start_at: datetime. Start date.
  • end_at: datetime. End date; خالی ہو سکتی ہے۔
  • logo: url. Promotion image.

Property availability کے لیے stocks نہیں بلکہ for_sale_count، layouts.sale_units_count، اور sales_status استعمال کریں۔

11. EOI

EOI کا مطلب Expression of Interest ہے۔ یہ block Presale (EOI) status والے projects کے لیے ابتدائی interest یا deposit terms بیان کرتا ہے۔

<eoi>
  <is_eoi_return>0</is_eoi_return>
  <eoi_items>
    <eoi_item>
      <price>100000</price>
      <percent/>
      <description>
        <en>EOI amount for 2 Bedrooms</en>
        <ru>Сумма EOI для 2-комнатных</ru>
        <ar>...</ar>
      </description>
    </eoi_item>
  </eoi_items>
</eoi>

  • is_eoi_return: 0/1/empty. 0 = non-refundable، 1 = refundable، empty = not specified.
  • eoi_items: object. EOI terms container.
  • eoi_item: object. ایک EOI condition۔
  • price: decimal. Fixed EOI amount.
  • percent: decimal. EOI percentage، اگر استعمال ہو۔
  • description: localized object. Condition description.
  • sales_status.en = Presale (EOI) and eoi_items is filled: EOI دکھائیں۔
  • Any other sales_status: EOI چھپائیں۔

12. Service Charge and Assignment

<service_charge>
  <value>172.22</value>
  <unit>sq. m</unit>
  <currency>AED</currency>
</service_charge>
<assignment>40.00</assignment>

  • service_charge.value: service charge amount. اگر خالی ہو تو block نہ دکھائیں۔
  • service_charge.unit: calculation unit، عموماً sq. m. خالی بھی ہو سکتی ہے۔
  • service_charge.currency: currency، عموماً AED. خالی بھی ہو سکتی ہے۔
  • assignment: وہ percentage جس کے بعد assignment ممکن ہے۔ Empty = معلومات specified نہیں، restriction نہیں۔

13. Payment Plans: <payment_plans>

payment_plans developer کی طرف سے property کے payment options بیان کرتا ہے۔ ایک project میں multiple payment plans ہو سکتے ہیں۔ ہر plan payment کو stages میں تقسیم کرتا ہے: booking، construction، handover، اور post-handover۔ Fees اور additional charges الگ منتقل ہوتے ہیں، اس لیے total percent 100% سے زیادہ بھی ہو سکتا ہے۔ مثال کے طور پر 104% کا مطلب property price کا 100% + 4% DLD fee ہو سکتا ہے۔

  • Basic: id، title، currency۔ Plan identifier، title، اور currency۔ title آزاد متن ہے، enum نہیں۔
  • Booking: on_booking_percent، on_booking_fix، on_booking_payments_count، on_booking_fees۔ Booking stage پر payments اور fees۔
  • Construction: on_construction_percent، on_construction_fix، on_construction_payments_count، on_construction_fees۔ Construction کے دوران payments۔
  • Handover: on_handover_percent، on_handover_fix، on_handover_payments_count، on_handover_fees۔ Property handover پر payments۔
  • Post-handover: post_handover_percent، post_handover_fix، on_post_handover_payments_count، on_post_handover_fees۔ Handover کے بعد payments۔
  • ROI: roi_percent، roi_fix، roi_payments_count، roi_fees۔ ROI یا guaranteed income schemes کے fields۔
  • Additional fees: additional، additional_percent، additional_fix، additional_fix_m2۔ اضافی payments، مثلاً DLD Fee۔
  • Periods: period_after_handover، period_after_roi۔ Recurring payments کی frequency۔
  • Totals: price_total، fees_included_total۔ Plan کی total amounts اور included fees۔

14. Layouts: <layouts>

layouts project کے اندر ایک typical layout بیان کرتا ہے۔ یہ aggregated unit type ہے، کوئی specific apartment یا office نہیں۔

  • id: integer. Unique layout ID۔ external layout ID کے طور پر استعمال کریں۔
  • title: localized object. Layout name۔ interface language کے مطابق دکھائیں۔
  • project_id: integer. Parent project ID۔ offers.complex-id کے ساتھ link کریں۔
  • building_name: localized object. Building name۔ اگر خالی ہو تو نہ دکھائیں۔
  • price_on_request: 0/1. Price hiding flag۔ اگر 1 ہو تو price نہ دکھائیں۔
  • area_min / area_max: object. Area range۔ m2 اور ft2۔
  • area_balcony_min / area_balcony_max: object. Balcony area range۔ خالی ہو سکتی ہے۔
  • type: localized object. Property type۔ Unit type reference دیکھیں۔
  • sale_units_count: integer. اس type کی available units کی تعداد۔ یہ lots کی فہرست نہیں ہے۔
  • album: object. Layout gallery۔ layout level پر دکھائیں۔
  • levels_photos: object. Level کے لحاظ سے images۔ floor plans کے طور پر استعمال کریں۔
  • floors_count: integer. Levels کی تعداد۔ 1، 2، 3، وغیرہ۔
  • rooms_count: localized object. Room count۔ Rooms count reference دیکھیں۔
  • price: object. Layout price range۔ اگر price_on_request=1 ہو تو hide کریں۔
  • is_limited_publication: 0/1. Publication restriction۔ اگر 1 ہو تو publicly hide کریں۔

15. Enum Value References

  • Project type: project, compound.
  • Sales status: Preliminary Info, Announcement, Presale (EOI), Launch, On Sale, Sold Out, Pending.
  • Construction status: Scheduled, Ready, Stopped, In Progress.
  • Unit type: Apartment, Villa, Townhouse, Duplex, Triplex, Penthouse, Retail, Office, Suite.
  • Rooms count: Studio, 1 BR, 2 BR, 3 BR, 4 BR, 5 BR, 6 BR, 7 BR, 8 BR, NA.
  • BR price key: studio, 1, 2, 3, 4, 5, 6, villa, townhouse, n.
  • Gallery category: Project presentation, Construction progress, Finishing examples, Infrastructure, View.
  • Currency: AED.
  • Service charge unit: sq. m.
  • Boolean flags: 0, 1; کچھ fields کے لیے empty بھی اجازت ہے۔

اگر feed میں کوئی ایسی value ہو جو reference list میں شامل نہ ہو، تو import fail نہیں ہونا چاہیے۔ Value کو raw value کے طور پر محفوظ کیا جائے، unknown کے طور پر map کیا جائے، اور review کے لیے log کیا جائے۔

16. Empty Values

خالی value کا مطلب “not specified” ہے، 0 نہیں۔ Empty tags اس طرح ہو سکتے ہیں: <field/> یا <field></field>۔

  • assignment: assignment condition specified نہیں ہے۔
  • service_charge.value: service charge specified نہیں ہے۔
  • eoi.is_eoi_return: EOI refundability specified نہیں ہے۔
  • area_balcony_min.m2: balcony area specified نہیں ہے۔
  • description.en: description موجود نہیں ہے۔

17. Display Rules

  • Price hidden: price_on_request = 1. “Price on request” دکھائیں۔
  • Price visible: price_on_request = 0. price min/max دکھائیں۔
  • EOI: sales_status.en = Presale (EOI) اور EOI filled ہو۔ EOI دکھائیں۔
  • EOI not relevant: sales_status.en != Presale (EOI). EOI چھپائیں۔
  • Sold out: is_sold_out = 1 یا sales_status.en = Sold Out. “Sold out” دکھائیں یا listing سے hide کریں۔
  • Limited publication: is_limited_publication = 1. Publicly publish نہ کریں۔
  • Assignment empty: assignment empty. Assignment block نہ دکھائیں۔
  • Service charge empty: service_charge.value empty. Service charge نہ دکھائیں۔

18. Import Rules

  • Project: complex-id سے search کریں؛ مل جائے تو update کریں، نہ ملے تو create کریں۔
  • Layout: layouts.id سے search کریں؛ project_id کے ذریعے project سے link کریں۔
  • Deletion: اگر کوئی object نئے feed سے غائب ہو جائے تو فوراً delete کرنے کے بجائے inactive mark کریں۔
  • Unknown enum: raw value محفوظ کریں، unknown کے طور پر map کریں، اور log کریں۔
  • Empty values: explicit field-specific rule کے بغیر 0 میں convert نہ کریں۔

Project field → Source

  • external_project_id: complex-id.
  • raw_offer_type: type.
  • title_*: title.
  • description_*: description.
  • developer_name: developer.title.
  • developer_logo_url: developer.logo.
  • city/address/coordinates: city, address, latitude, longitude.
  • districts: districts.district.
  • construction_status: status.en.
  • sales_status: sales_status.en.
  • price_min / price_max: price.
  • price_on_request: price_on_request.
  • galleries: photo, album, albums.
  • payment_plans: payment_plans.
  • eoi: eoi.
  • stocks: stocks.
  • source_updated_at: updated_at.

Layout field → Source

  • external_layout_id: layouts.id.
  • external_project_id: layouts.project_id.
  • title_*: layouts.title.
  • building_name_*: building_name.
  • unit_type: type.en.
  • rooms_count: rooms_count.en.
  • sale_units_count: sale_units_count.
  • area_min / area_max: area_min, area_max.
  • balcony_min / balcony_max: area_balcony_min, area_balcony_max.
  • floors_count: floors_count.
  • price_min / price_max: price.
  • layout_gallery: album.
  • levels_photos: levels_photos.
  • is_limited_publication: is_limited_publication.