{"mock":"https://private-anon-79ae3f25b4-enodo.apiary-mock.com/","production":"https://api.enodoinc.com/","proxy":"https://private-anon-79ae3f25b4-enodo.apiary-proxy.com/"}
FORMAT: 1A HOST: https://api.enodoinc.com/ # Enodo API Enodo automates data collection and analysis to deliver meaningful insights to users, greatly accelerating our user's collective ability to understand and act upon market opportunities. ## Amenities [/resources/amenities] ### Parse Amenities API [POST] Identify and extract a list of amenities from a property website or text document using the Parse Amenities API. Enodo detects over 400 amenities and automatically groups by `neighborhood`, `building`, and `unit`. The output can be used as an endpoint for the Enodo Similar Properties API or connect to a third-party application. + Request (application/json) + Headers Authorization: Token <TOKEN_ID> + Body { "text": "Studio and one bedroom apartments feature stainless steel GE Energy Efficient appliances, wood cabinetry, hardwood floors, generous closets, contemporary lighting and electronic keyless entries" } + Response 200 (application/json) { "amenities": [ "unit__has_hardwood_floors", "building__has_non_key_secure_access", "unit__has_energy_star_certified_appliances", "unit__has_large_closets", "unit__has_stainless_steel_appliances" ] } ## Amenity Pricing [/analytics/amenities{?type}{?lat}{?lon}{?census_tract}] ### Amenity Pricing [GET] Quantify a rent premium and market frequency for all of Enodo's neighborhood, building and unit amenities. + Request (application/json) + Headers Authorization: Token <TOKEN_ID> + Parameters + type (string, optional) - Community or Unit amenities + Default: null + lat (int, optional) - Latitude + Default: null + lon (int, optional) - Longitude + Default: null + census_tract (string, optional) - 11 digits Census Tract code + Default: null + Response 200 (application/json) { "amenities": [ "unit__has_hardwood_floors", "building__has_non_key_secure_access", "unit__has_energy_star_certified_appliances", "unit__has_large_closets", "unit__has_stainless_steel_appliances" ] } ## Comparables [/analytics/similar_properties] ### Similar Properties API [POST] Input property information from a subject and populate a list of properties calculated to be similar to the subject. Properties include building-level information, present amenities and unit mix when available. The property similarity is calculated using 6 endpoints to create an overall similarity score. + Request (application/json) + Headers Authorization: Token <TOKEN_ID> + Body { "amenities": [ "18a242b2-11d8-414a-b901-53dccea2b33f", "2e071199-18c9-4d8d-afa7-be23640e21d1", "30c54b1c-a224-4f3b-a336-e5ba83b12b92" ], "feature_schemes": [ { "id": "c843ba6a-ffe9-4112-9df1-4cd5a38924ab", "name": "Base Package", "amenities": [ "11e9a373-bdb4-4823-ae9d-22746a22f5d8", "18ddf926-071b-4cd0-a344-73db4e4c2d8c", "1b524e1e-0596-4a5b-8d99-6cf6c33dcda0", "1d96215d-16ee-4674-a942-3085430dc0ec" ] }, { "id": "d79aacaa-23f7-4696-a7f8-d93736ebb89f", "name": "Base Package - Copy", "amenities": [ "11e9a373-bdb4-4823-ae9d-22746a22f5d8", "18ddf926-071b-4cd0-a344-73db4e4c2d8c", "1b524e1e-0596-4a5b-8d99-6cf6c33dcda0", "1d96215d-16ee-4674-a942-3085430dc0ec" ] } ], "unit_types": [ { "id": "77fe514c-e687-4f0d-8559-e5bff5c28d9a", "market_rent": 1950, "sqft": 830, "bed": 1, "bath": 1, "count": 5, "feature_scheme_id": "d79aacaa-23f7-4696-a7f8-d93736ebb89f", "floorplan": null, "number_vacant": null }, { "id": "f091d6ed-d91b-4d05-bd8c-8856b9066071", "market_rent": 1850, "sqft": 700, "bed": 1, "bath": 1, "count": 40, "feature_scheme_id": "c843ba6a-ffe9-4112-9df1-4cd5a38924ab", "floorplan": null, "number_vacant": null } ], "profile": { "census_tract": "17031280100", "street_address": "226 N Clinton St", "city": "Chicago", "state": "IL", "zip_code": "60661", "lat": 41.8862901, "lon": -87.6417042, "year_built": 1996, "number_units": 176, "year_renovated": 2014, "number_floors": 7, "is_multifamily": true, "property_type": "mid_rise" } } + Response 200 (application/json) ## Enodo Rent [/analytics/enodo_rent] ### Enodo Rent [POST] Determine an Enodo base rent, community amenities deviation, unit amenities deviation and year deviation for each unit in a subject property. + Request (application/json) + Headers Authorization: Token <TOKEN_ID> + Body { "amenities": [ "18a242b2-11d8-414a-b901-53dccea2b33f", "2e071199-18c9-4d8d-afa7-be23640e21d1", "30c54b1c-a224-4f3b-a336-e5ba83b12b92" ], "feature_schemes": [ { "id": "c843ba6a-ffe9-4112-9df1-4cd5a38924ab", "name": "Base Package", "amenities": [ "11e9a373-bdb4-4823-ae9d-22746a22f5d8", "18ddf926-071b-4cd0-a344-73db4e4c2d8c", "1b524e1e-0596-4a5b-8d99-6cf6c33dcda0", "1d96215d-16ee-4674-a942-3085430dc0ec" ] }, { "id": "d79aacaa-23f7-4696-a7f8-d93736ebb89f", "name": "Base Package - Copy", "amenities": [ "11e9a373-bdb4-4823-ae9d-22746a22f5d8", "18ddf926-071b-4cd0-a344-73db4e4c2d8c", "1b524e1e-0596-4a5b-8d99-6cf6c33dcda0", "1d96215d-16ee-4674-a942-3085430dc0ec" ] } ], "unit_types": [ { "id": "77fe514c-e687-4f0d-8559-e5bff5c28d9a", "market_rent": 1950, "sqft": 830, "bed": 1, "bath": 1, "count": 5, "feature_scheme_id": "d79aacaa-23f7-4696-a7f8-d93736ebb89f", "floorplan": null, "number_vacant": null }, { "id": "f091d6ed-d91b-4d05-bd8c-8856b9066071", "market_rent": 1850, "sqft": 700, "bed": 1, "bath": 1, "count": 40, "feature_scheme_id": "c843ba6a-ffe9-4112-9df1-4cd5a38924ab", "floorplan": null, "number_vacant": null } ], "profile": { "census_tract": "17031280100", "street_address": "226 N Clinton St", "city": "Chicago", "state": "IL", "zip_code": "60661", "lat": 41.8862901, "lon": -87.6417042, "year_built": 1996, "number_units": 176, "year_renovated": 2014, "number_floors": 7, "is_multifamily": true, "property_type": "mid_rise" } } + Response 200 (application/json) ## Operating Expense Prediction [/analytics/financials{?number_units}{?gpr}{?nrsf}{?property_type}{?year_built}{?state}{?census_tract}{?lat}{?lon}{?zip_code}{?occupancy}] ### Operating Expense Prediction [GET] + Request (application/json) + Headers Authorization: Token <TOKEN_ID> + Parameters + number_units (required, int, `181`) ... Number of Units + gpr (required, int, `5015928`) ... Gross Potential Rent + nrsf (required, int, `158885`) ... Net Rentable SF + property_type (required, string, `walkup`) ... Property Type + values: + `garden` + `walkup` + `mid_rise` + `high_rise` + year_built (required, int, `1996`) ... Year built + state (required, string, `IL`) ... State Code + lat (required, float, `41.9425824`) ... Latitude + lon (required, float, `-87.6410274`) ... Longitude + zip_code (required, string, `60657`) ... Zip Code + census_tract (required, string, `17031061902`) ... Census Tract + occupancy (required, int, `95`) ... % Occupancy + Response 200 (application/json) { "administrative":{ "percentage_per_total_opex":0.035, "value_per_unit":186, "value_per_nrsf":0.25, "standard_error":11179, "value":-42623, "category":"Administrative" }, "contract_services":{ "percentage_per_total_opex":0.0097, "value_per_unit":51, "value_per_nrsf":0.07, "standard_error":4067, "value":-11812, "category":"Contract Services" }, "repair_and_maintenance":{ "percentage_per_total_opex":0.1532, "value_per_unit":818, "value_per_nrsf":1.08, "standard_error":30238, "value":-186568, "category":"Repairs & Maintenance" }, "management_fees":{ "percentage_per_total_opex":0.0962, "value_per_unit":513, "value_per_nrsf":0.68, "standard_error":11021, "value":-117153, "category":"Management Fees" }, "utilities":{ "percentage_per_total_opex":0.0596, "value_per_unit":318, "value_per_nrsf":0.42, "standard_error":9023, "value":-72581, "category":"Utilities" }, "water_sewage":{ "percentage_per_total_opex":0.0861, "value_per_unit":459, "value_per_nrsf":0.61, "standard_error":10400, "value":-104853, "category":"Water & Sewage" }, "salaries_and_personnel":{ "percentage_per_total_opex":0.1679, "value_per_unit":896, "value_per_nrsf":1.18, "standard_error":26706, "value":-204470, "category":"Salaries & Personnel" }, "taxes":{ "percentage_per_total_opex":0.2996, "value_per_unit":1600, "value_per_nrsf":2.11, "standard_error":52511, "value":-364855, "category":"Property Taxes" }, "insurance":{ "percentage_per_total_opex":0.0452, "value_per_unit":241, "value_per_nrsf":0.32, "standard_error":7635, "value":-55045, "category":"Insurance" }, "marketing":{ "percentage_per_total_opex":0.0224, "value_per_unit":119, "value_per_nrsf":0.16, "standard_error":6125, "value":-27278, "category":"Marketing & Advertising" }, "reserves":{ "percentage_per_total_opex":0.025, "value_per_unit":133, "value_per_nrsf":0.18, "standard_error":1217, "value":-30445, "category":"Reserves" }, "vacancy_loss":{ "percentage_per_gpr":0.06555, "value_per_unit":844, "value_per_nrsf":1.11, "standard_error":18383, "value":-192502, "category":"Vacancy Loss" }, "concessions":{ "percentage_per_gpr":0.01633, "value_per_unit":210, "value_per_nrsf":0.28, "standard_error":8105, "value":-47956, "category":"Concessions" }, "collection_loss":{ "percentage_per_gpr":0.00724, "value_per_unit":93, "value_per_nrsf":0.12, "standard_error":2877, "value":-21261, "category":"Collection Loss" }, "other_income":{ "percentage_per_gpr":0.05296, "value_per_unit":682, "value_per_nrsf":0.9, "standard_error":15505, "value":155528, "category":"Other Income" }, "gross_potential_revenue":{ "value":2936724.0, "category":"Gross Potential Revenue" } } ## Market Shape [/analytics/market{?lat}{?lon}] ### Market Shape [GET] Compute the recommended market for a pair of coordinates. Return a geojson with some unit, building and demographic statistics for the corresponding shape(s). + Request (application/json) + Headers Authorization: Token <TOKEN_ID> + Parameters + lat (required, float, `41.9425824`) ... Latitude + lon (required, float, `-87.6410274`) ... Longitude + Response 200 (application/json) ## Market Stats [/public/agg\_properties\_by_polygon] ### Market Stats (using a radius) [POST] Determine the average rent per bed in a radius (miles) around a location. + Request (application/json) + Headers Authorization: Token <TOKEN_ID> + Body {"lon": -87.64102935791016 , "lat": 41.91147545749747, "radius": 1} + Response 200 (application/json) ### Market Stats (using a GeoJSON) [POST] Determine the average rent per bed in a user-defined GeoJSON. Tested on Polygon objects (http://geojson.org/). + Request (application/json) + Headers Authorization: Token <TOKEN_ID> + Body { "geojson":{ "type":"Feature", "properties":{ }, "geometry":{ "type":"Polygon", "coordinates":[ [ [ -87.65871047973633, 41.881320144894765 ], [ -87.6211166381836, 41.881320144894765 ], [ -87.6211166381836, 41.9085372185006 ], [ -87.65871047973633, 41.9085372185006 ], [ -87.65871047973633, 41.881320144894765 ] ] ] } } } + Response 200 (application/json) # Group Property How to create a complete property using this API? 1. Follow the example at `Property > Create Private Properties > Create` to create a private property. 2. Follow the example at `Unit Types > Create, Retrieve and Modify Unit Types > Create` to create units. Make sure to associate them with the id returned from the response of step 1. 3. Follow the example at `Feature Schemes > Retrieve and Create Feature Schemes > Create` to create a feature scheme to contain the unit amenities for this property. 4. Follow the example at `Property > Retrieve and Modify Properties > Update` and update the default_scheme of this property to the id in the response of step 3. 5. Follow the example at `Property Amenities > Retrieve and Create Property Amenities > Create` to add amenities to this property. 6. Follow the example at `Feature Schemes > Modify Feature Scheme > Update` to add amenities to the feature scheme associated with this property. After this, the property should be completed. If you have any further questions or are in need of further clarification, email me at `tim@enodoinc.com`. ## Create Private Properties [/properties] ### Create [POST] **property_type**: Can be [garden, walkup, mid_rise, high_rise] + Request (application/json) + Headers Authorization: Token <TOKEN_ID> + Body { "street_address": "111 W Wacker Dr", "city": "Chicago", "state": "IL", "zip_code": "60601", "lat": 41.8865153, "lon": -87.6314343, "year_built": 2014, "name": "OneEleven", "company_url": "https://www.oneelevenchicago.com/", "is_favorite": false, "cap_rate": 0.02, "year_renovated": null, "number_floors": 60, "is_multifamily": true, "property_type": "high_rise", "default_scheme": "ecfd4652-b116-4314-bca3-ce131119ec9b" } + Response 200 (application/json) + Body { "id": "bf16af0b-ce69-42a2-ad24-68e7538599a4", "public_id": "057fe94d-1306-38d9-8c7a-598ea1379a6d", "place_id": "057fe94d-1306-38d9-8c7a-598ea1379a6d", "census_tract": "17031839100", "street_address": "111 W Wacker Dr", "city": "Chicago", "state": "IL", "zip_code": "60601", "lat": 41.8865153, "lon": -87.6314343, "year_built": 2014, "number_units": null, "source": null, "name": "OneEleven", "company_url": "https://www.oneelevenchicago.com/", "parcel_id": null, "created_by": 269, "modified_on": null, "is_favorite": false, "cap_rate": 0.02, "datatree": null, "formatted_address": "111 W Wacker Dr, Chicago, IL 60601", "last_viewed": 1547495092, "year_renovated": null, "number_floors": 60, "is_multifamily": true, "property_type": "high_rise", "default_scheme": "ecfd4652-b116-4314-bca3-ce131119ec9b", "public_data": false, "deal_type": null } ## Retrieve and Modify Properties [/properties/{property_id}] ### Retrieve [GET] + Request + Headers Authorization: Token <TOKEN_ID> + Parameters + property_id (required, string, `bf16af0b-ce69-42a2-ad24-68e7538599a4`) ... ID of private property + Response 200 (application/json) + Body { "id": "bf16af0b-ce69-42a2-ad24-68e7538599a4", "public_id": "057fe94d-1306-38d9-8c7a-598ea1379a6d", "place_id": "057fe94d-1306-38d9-8c7a-598ea1379a6d", "census_tract": "17031839100", "street_address": "111 W Wacker Dr", "city": "Chicago", "state": "IL", "zip_code": "60601", "lat": 41.8865153, "lon": -87.6314343, "year_built": 2014, "number_units": null, "source": null, "name": "OneEleven", "company_url": "https://www.oneelevenchicago.com/", "parcel_id": null, "created_by": 269, "modified_on": null, "is_favorite": false, "cap_rate": 0.02, "datatree": null, "formatted_address": "111 W Wacker Dr, Chicago, IL 60601", "last_viewed": 1547495137, "year_renovated": null, "number_floors": 60, "is_multifamily": true, "property_type": "high_rise", "default_scheme": "ecfd4652-b116-4314-bca3-ce131119ec9b", "public_data": false, "deal_type": null } ### Update [PUT] + Request (application/json) + Headers Authorization: Token <TOKEN_ID> + Body { "name" : "New Name", "created_by": 269 } + Parameters + property_id (required, string, `bf16af0b-ce69-42a2-ad24-68e7538599a4`) ... ID of private property + Response 200 (application/json) + Body { "id": "bf16af0b-ce69-42a2-ad24-68e7538599a4", "public_id": "057fe94d-1306-38d9-8c7a-598ea1379a6d", "place_id": "057fe94d-1306-38d9-8c7a-598ea1379a6d", "census_tract": "17031839100", "street_address": "111 W Wacker Dr", "city": "Chicago", "state": "IL", "zip_code": "60601", "lat": 41.8865153, "lon": -87.6314343, "year_built": 2014, "number_units": null, "source": null, "name": "New Name", "company_url": "https://www.oneelevenchicago.com/", "parcel_id": null, "created_by": 269, "modified_on": 1547495170, "is_favorite": false, "cap_rate": 0.02, "datatree": null, "formatted_address": "111 W Wacker Dr, Chicago, IL 60601", "last_viewed": 1547495170, "year_renovated": null, "number_floors": 60, "is_multifamily": true, "property_type": "high_rise", "default_scheme": "ecfd4652-b116-4314-bca3-ce131119ec9b", "public_data": false, "deal_type": null } ### Delete [DELETE] + Request + Headers Authorization: Token <TOKEN_ID> + Parameters + property_id (required, string, `bf16af0b-ce69-42a2-ad24-68e7538599a4`) ... ID of private property + Response 200 (application/json) + Body { "id": "bf16af0b-ce69-42a2-ad24-68e7538599a4", "public_id": "057fe94d-1306-38d9-8c7a-598ea1379a6d", "place_id": "057fe94d-1306-38d9-8c7a-598ea1379a6d", "census_tract": "17031839100", "street_address": "111 W Wacker Dr", "city": "Chicago", "state": "IL", "zip_code": "60601", "lat": 41.8865153, "lon": -87.6314343, "year_built": 2014, "number_units": null, "source": null, "name": "New Name", "company_url": "https://www.oneelevenchicago.com/", "parcel_id": null, "created_by": 269, "modified_on": 1547495170, "is_favorite": false, "cap_rate": 0.02, "datatree": null, "formatted_address": "111 W Wacker Dr, Chicago, IL 60601", "last_viewed": 1547495170, "year_renovated": null, "number_floors": 60, "is_multifamily": true, "property_type": "high_rise", "default_scheme": "ecfd4652-b116-4314-bca3-ce131119ec9b", "public_data": false, "deal_type": null } # Group Unit Types ## Create, Retrieve and Modify Unit Types [/properties/{property_id}/unit_types] ### Create [POST] + Request (application/json) + Headers Authorization: Token <TOKEN_ID> + Body {"bed":1,"bath":1,"count":1,"feature_scheme_id":null,"floorplan":null,"in_place_rent":1111,"market_rent":1111,"sqft":1111,"number_vacant":null} + Parameters + property_id (required, string, `bf16af0b-ce69-42a2-ad24-68e7538599a4`) ... ID of private property + Response 200 (application/json) + Body { "id":"f49ee072-52de-4037-8d9f-6c20cbf654ae", "property_id":"bf16af0b-ce69-42a2-ad24-68e7538599a4", "market_rent":1111, "in_place_rent":null, "sqft":1111, "bed":1, "bath":1, "half_bath":null, "count":1, "frequency":null, "created_at":1547424000, "modified_on":1547496013, "created_on":1547496013, "feature_scheme_id":"ecfd4652-b116-4314-bca3-ce131119ec9b", "floorplan":null, "number_vacant":null, "renovated":null } ### Retrieve [GET] + Request + Headers Authorization: Token <TOKEN_ID> + Parameters + property_id (required, string, `bf16af0b-ce69-42a2-ad24-68e7538599a4`) ... ID of private property + Response 200 (application/json) + Body [ { "id": "d584210f-b0be-44f0-ad47-48c98ed6a8e1", "property_id": "bf16af0b-ce69-42a2-ad24-68e7538599a4", "market_rent": 1111, "in_place_rent": 1111, "sqft": 1111, "bed": 1, "bath": 1, "half_bath": null, "count": 1, "frequency": null, "created_at": 1547424000, "modified_on": 1547495980, "created_on": 1547495933, "feature_scheme_id": "ecfd4652-b116-4314-bca3-ce131119ec9b", "floorplan": null, "number_vacant": null, "renovated": null } ] ### Delete [DELETE] + Request + Headers Authorization: Token <TOKEN_ID> + Parameters + property_id (required, string, `bf16af0b-ce69-42a2-ad24-68e7538599a4`) ... ID of private property + Response 200 (application/json) + Body [] ### Update [PUT] + Request (application/json) + Headers Authorization: Token <TOKEN_ID> + Body [{ "id": "f971ed56-0d97-447c-8aea-a9b6a2f768fa", "property_id": "bf16af0b-ce69-42a2-ad24-68e7538599a4", "market_rent": 1111, "in_place_rent": 2222, "sqft": 1111, "bed": 1, "bath": 1, "half_bath": null, "count": 1, "frequency": null, "created_at": 1547424000, "modified_on": 1547496226, "created_on": 1547496226, "feature_scheme_id": "ecfd4652-b116-4314-bca3-ce131119ec9b", "floorplan": null, "number_vacant": null, "renovated": null }] + Parameters + property_id (required, string, `bf16af0b-ce69-42a2-ad24-68e7538599a4`) ... ID of private property + Response 200 (application/json) + Body [ { "id": "f971ed56-0d97-447c-8aea-a9b6a2f768fa", "property_id": "bf16af0b-ce69-42a2-ad24-68e7538599a4", "market_rent": 1111, "in_place_rent": 2222, "sqft": 1111, "bed": 1, "bath": 1, "half_bath": null, "count": 1, "frequency": null, "created_at": 1547424000, "modified_on": 1547496249, "created_on": 1547496226, "feature_scheme_id": "ecfd4652-b116-4314-bca3-ce131119ec9b", "floorplan": null, "number_vacant": null, "renovated": null } ] ## Modify Single Unit Type [/properties/{property_id}/unit_types/{unit_id}] ### Update [PUT] + Request (application/json) + Headers Authorization: Token <TOKEN_ID> + Body { "count": 10, "number_vacant": 4 } + Parameters + property_id (required, string, `bf16af0b-ce69-42a2-ad24-68e7538599a4`) ... ID of private property + unit_id (required, string, `f971ed56-0d97-447c-8aea-a9b6a2f768fa`) ... ID of a unit in the private property + Response 200 (application/json) + Body { "id": "f971ed56-0d97-447c-8aea-a9b6a2f768fa", "property_id": "bf16af0b-ce69-42a2-ad24-68e7538599a4", "market_rent": 1111, "in_place_rent": 2222, "sqft": 1111, "bed": 1, "bath": 1, "half_bath": null, "count": 10, "frequency": null, "created_at": 1547424000, "modified_on": 1547496487, "created_on": 1547496226, "feature_scheme_id": "ecfd4652-b116-4314-bca3-ce131119ec9b", "floorplan": null, "number_vacant": 4, "renovated": null } ### Delete [DELETE] + Request + Headers Authorization: Token <TOKEN_ID> + Parameters + property_id (required, string, `bf16af0b-ce69-42a2-ad24-68e7538599a4`) ... ID of private property + unit_id (required, string, `f971ed56-0d97-447c-8aea-a9b6a2f768fa`) ... ID of a unit in the private property + Response 200 (application/json) + Body { "id": "f971ed56-0d97-447c-8aea-a9b6a2f768fa", "property_id": "bf16af0b-ce69-42a2-ad24-68e7538599a4", "market_rent": 1111, "in_place_rent": 2222, "sqft": 1111, "bed": 1, "bath": 1, "half_bath": null, "count": 10, "frequency": null, "created_at": 1547424000, "modified_on": 1547496487, "created_on": 1547496226, "feature_scheme_id": "ecfd4652-b116-4314-bca3-ce131119ec9b", "floorplan": null, "number_vacant": 4, "renovated": null } # Group Property Amenities ## Retrieve and Create Property Amenities [/properties/{property_id}/amenities] ### Retrieve [GET] + Request + Headers Authorization: Token <TOKEN_ID> + Parameters + property_id (required, string, `bf16af0b-ce69-42a2-ad24-68e7538599a4`) ... ID of private property + Response 200 (application/json) + Body [ "4e0cf2c2-6113-4b5e-bcf4-349f4ab0782b", "80229a68-35b6-4784-83c2-68348b8d16a9", "9ca61337-7565-4494-ad6e-e5b1c5c54407", "c74a1e60-94a0-4e8c-95ae-4d4cf23fc4d3", "ea2a12e8-d1a8-4002-a2c1-a02e3f6d367b" ] ### Create [POST] + Request (application/json) + Headers Authorization: Token <TOKEN_ID> + Body [ "ea2a12e8-d1a8-4002-a2c1-a02e3f6d367b" ] + Parameters + property_id (required, string, `bf16af0b-ce69-42a2-ad24-68e7538599a4`) ... ID of private property + Response 200 (application/json) + Body [ "ea2a12e8-d1a8-4002-a2c1-a02e3f6d367b" ] ## Delete Property Amenity [/properties/{property_id}/amenities/{amenity_id}] ### Delete [DELETE] + Request + Headers Authorization: Token <TOKEN_ID> + Parameters + property_id (required, string, `bf16af0b-ce69-42a2-ad24-68e7538599a4`) ... ID of private property + amenity_id (required, string, `ea2a12e8-d1a8-4002-a2c1-a02e3f6d367b`) ... ID of an amenity + Response 200 (application/json) + Body "ea2a12e8-d1a8-4002-a2c1-a02e3f6d367b" # Group Feature Schemes ## Retrieve and Create Feature Schemes [/properties/{property_id}/feature_schemes] ### Retrieve [GET] + Request + Headers Authorization: Token <TOKEN_ID> + Parameters + property_id (required, string, `bf16af0b-ce69-42a2-ad24-68e7538599a4`) ... ID of private property + Response 200 (application/json) + Body [ { "id": "c136618c-2d5a-4b7c-b2ed-f49313309e0f", "name": "Base Package", "property_id": "bf16af0b-ce69-42a2-ad24-68e7538599a4", "created_on": 1547498525, "modified_on": null, "amenities": [] } ] ### Create [POST] + Request (application/json) + Headers Authorization: Token <TOKEN_ID> + Body { "name": "Base Package #2", "amenities": [] } + Parameters + property_id (required, string, `bf16af0b-ce69-42a2-ad24-68e7538599a4`) ... ID of private property + Response 200 (application/json) + Body { "id": "5fbfdef8-ab19-4174-9856-f88bdfadef97", "name": "Base Package #2", "property_id": "bf16af0b-ce69-42a2-ad24-68e7538599a4", "created_on": 1547498653, "modified_on": null, "amenities": [] } ## Modify Feature Scheme [/properties/{property_id}/feature_schemes/{feature_scheme_id}] ### Update [PUT] + Request (application/json) + Headers Authorization: Token <TOKEN_ID> + Body { "amenities": [ "c74a1e60-94a0-4e8c-95ae-4d4cf23fc4d3" ] } + Parameters + property_id (required, string, `bf16af0b-ce69-42a2-ad24-68e7538599a4`) ... ID of private property + feature_scheme_id (required, string, `ecfd4652-b116-4314-bca3-ce131119ec9b`) ... ID of a feature scheme + Response 200 (application/json) + Body { "id": "ecfd4652-b116-4314-bca3-ce131119ec9b", "name": "Base Package", "property_id": "bf16af0b-ce69-42a2-ad24-68e7538599a4", "created_on": 1547498653, "modified_on": 1547498907, "amenities": [ "c74a1e60-94a0-4e8c-95ae-4d4cf23fc4d3" ] } ### Delete [DELETE] + Request (application/json) + Headers Authorization: Token <TOKEN_ID> + Parameters + property_id (required, string, `bf16af0b-ce69-42a2-ad24-68e7538599a4`) ... ID of private property + feature_scheme_id (required, string, `ecfd4652-b116-4314-bca3-ce131119ec9b`) ... ID of a feature scheme + Response 200 (application/json) + Body { "id": "ecfd4652-b116-4314-bca3-ce131119ec9b", "name": "Base Package", "property_id": "215e20b4-8b0e-4f75-8ffe-e199a1f68af8", "created_on": 1547487022, "modified_on": 1547498467 } # Group Feature Scheme Amenities ## Retrieve Feature Scheme Amenities [/properties/{property_id}/feature_schemes/{feature_scheme_id}/amenities] ### Retrieve [GET] + Request (application/json) + Headers Authorization: Token <TOKEN_ID> + Parameters + property_id (required, string, `bf16af0b-ce69-42a2-ad24-68e7538599a4`) ... ID of private property + feature_scheme_id (required, string, `ecfd4652-b116-4314-bca3-ce131119ec9b`) ... ID of a feature scheme + Response 200 (application/json) + Body [ "1d96215d-16ee-4674-a942-3085430dc0ec", "69789f68-e45d-4df3-a263-5f547ba83f00", "69cfbd4a-779e-4497-943b-2ac136ebe67b", "aea647e4-90b1-486c-861f-cf52c2cf5031", "b8a5cd82-e0c9-4766-905c-5345f6248844" ] ## Delete Feature Scheme Amenities [/properties/{property_id}/feature_schemes/{feature_scheme_id}/amenities/{amenity_id}] ### Delete [DELETE] + Request (application/json) + Headers Authorization: Token <TOKEN_ID> + Parameters + property_id (required, string, `bf16af0b-ce69-42a2-ad24-68e7538599a4`) ... ID of private property + feature_scheme_id (required, string, `ecfd4652-b116-4314-bca3-ce131119ec9b`) ... ID of a feature scheme + amenity_id (required, string, `bc7c71d0-2c5f-41fd-9fdd-c8c239c46aa8`) ... ID of an amenity + Response 200 (application/json) + Body "bc7c71d0-2c5f-41fd-9fdd-c8c239c46aa8" # Group Comparables ## Retrieve and Create Comparables [/properties/{property_id}/comparables] ### Retrieve [GET] + Request + Headers Authorization: Token <TOKEN_ID> + Parameters + property_id (required, string, `bf16af0b-ce69-42a2-ad24-68e7538599a4`) ... ID of private property + Response 200 (application/json) + Body [ "10487660-7418-39ac-929b-deb6c2544f39" ] ### Create [POST] + Request (application/json) + Headers Authorization: Token <TOKEN_ID> + Body {"id":"10487660-7418-39ac-929b-deb6c2544f39"} + Parameters + property_id (required, string, `bf16af0b-ce69-42a2-ad24-68e7538599a4`) ... ID of private property + Response 200 (application/json) + Body "10487660-7418-39ac-929b-deb6c2544f39" ## Delete Comparable [/properties/{property_id}/comparables/{comparable_id}] ### Delete [DELETE] + Request (application/json) + Headers Authorization: Token <TOKEN_ID> + Parameters + property_id (required, string, `bf16af0b-ce69-42a2-ad24-68e7538599a4`) ... ID of private property + comparable_id (required, string, `10487660-7418-39ac-929b-deb6c2544f39`) ... ID of comparable property + Response 200 (application/json) + Body "10487660-7418-39ac-929b-deb6c2544f39" ## Retrieve and Create Excluded Comparables [/properties/{property_id}/comparables_excluded] ### Retrieve [GET] + Request + Headers Authorization: Token <TOKEN_ID> + Parameters + property_id (required, string, `bf16af0b-ce69-42a2-ad24-68e7538599a4`) ... ID of private property + Response 200 (application/json) + Body [ "10487660-7418-39ac-929b-deb6c2544f39" ] ### Create [POST] + Request (application/json) + Headers Authorization: Token <TOKEN_ID> + Body {"id":"10487660-7418-39ac-929b-deb6c2544f39"} + Parameters + property_id (required, string, `bf16af0b-ce69-42a2-ad24-68e7538599a4`) ... ID of private property + Response 200 (application/json) + Body "10487660-7418-39ac-929b-deb6c2544f39" ## Delete Excluded Comparables [/properties/{property_id}/comparables_excluded/{comparable_id}] ### Delete [DELETE] + Request (application/json) + Headers Authorization: Token <TOKEN_ID> + Parameters + property_id (required, string, `bf16af0b-ce69-42a2-ad24-68e7538599a4`) ... ID of private property + comparable_id (required, string, `10487660-7418-39ac-929b-deb6c2544f39`) ... ID of comparable property + Response 200 (application/json) + Body "10487660-7418-39ac-929b-deb6c2544f39"