openapi-directory
Version:
Building & bundling https://github.com/APIs-guru/openapi-directory for easy use from JS
1 lines • 46.2 kB
JSON
{"openapi":"3.0.0","info":{"description":"The SimplyRETS API is an exciting step towards making it easier for\ndevelopers and real estate agents to build something awesome with\nreal estate data!\n\nThe documentation below makes live requests to our API using the\ntrial data. To get set up with the API using live MLS data, you\nmust have RETS credentials from your MLS, which you can then use to\ncreate an app with SimplyRETS. For more information on that\nprocess, please see our [FAQ](https://simplyrets.com/faq), [Getting\nStarted](https://simplyrets.com/blog/getting-set-up.html) page, or\n[contact us](https://simplyrets.com/\\#home-contact).\n\nBelow you'll find the API endpoints, query parameters, response bodies,\nand other information about using the SimplyRETS API. You can run\nqueries by clicking the 'Try it Out' button at the bottom of each\nsection.\n\n### Authentication\nThe SimplyRETS API uses Basic Authentication. When you create an\napp, you'll get a set of API credentials to access your\nlistings. If you're trying out the test data, you can use\n`simplyrets:simplyrets` for connecting to the API.\n\n### Media Types\nThe SimplyRETS API uses the `Accept` header to allow clients to\ncontrol media types (content versions). We maintain backwards\ncompatibility with API clients by allowing them to specify a\ncontent version. We highly recommend setting and explicity media\ntype when your application reaches production. Both the structure\nand content of our API response bodies is subject to change so we\ncan add new features while respecting the stability of applications\nwhich have already been developed.\n\nTo always use the latest SimplyRETS content version, simply use\n`application/json` in your application `Accept` header.\n\nIf you want to pin your clients media type to a specific version,\nyou can use the vendor-specific SimplyRETS media type, e.g.\n`application/vnd.simplyrets-v0.1+json\"`\n\nTo view all valid content-types for making an `OPTIONS`, make a\nrequest to the SimplyRETS api root\n\n`curl -XOPTIONS -u simplyrets:simplyrets https://api.simplyrets.com/`\n\nThe default media types used in our API responses may change in the\nfuture. If you're building an application and care about the\nstability of the API, be sure to request a specific media type in the\nAccept header as shown in the examples below.\n\nThe wordpress plugin automatically sets the `Accept` header for the\ncompatible SimplyRETS media types.\n\n### Pagination\n\nTo paginate through listings, start your query with these\nparameters: 'limit=500&lastId=0'. The 'lastId' is the important\npart, you can use any limit up to 500. When you receive the\nresponse from the API with the results, check the 'Link' header for\nthe 'next' link. That link is pre-built to access the next 'page'\nof listings. Alternatively, you can use the last listing's 'mlsId'\nfrom the previous request and use that in the next query. For\nexample:\n\nFirst query:\n\ncurl -u username:password 'https://api.simplyrets.com/properties?limit=500&lastId=0'\n\nIf the 'mlsId' in the last listing of the results is '1234567', then the next query will be:\n\ncurl -u username:password 'https://api.simplyrets.com/properties?limit=500&lastId=1234567'\n\n...and so one until you have reached the final page of listings.\n\nThere a few pieces of useful information about each request stored\nin the HTTP Headers:\n\n- `X-Total-Count` shows you the total amount of listings that match\n your current query.\n- `Link` contains pre-built pagination links for accessing the next\n'page' of listings that match your query.\n\n### RETS Vendor Compliance\n\nMany RETS vendors have strict requirements for showing disclaimers\nwith specific information embedded. For example, in many areas it's\nrequired to show the timestamp of the time the listings were\nrefreshed inside a disclaimer or on a listing page.\n\nThe timestamp of the last listing refresh timestamp can be found in\none of two spots:\n\n- The `X-SimplyRETS-LastUpdate` header from `GET /properties` or `GET /properties/{mlsId}`\n\n- Calling the API root `/` or properties api endpoint `/properties`\n with an OPTIONS request\n\n - `OPTIONS /`\n\n This request will show the last update timestamp for all RETS\n vendors associated with your application. Look for the\n `updates` list in the JSON response.\n\n - `OPTIONS /properties`\n\n Using this request, look for the `lastUpdate` field in the JSON\n response.\n","title":"SimplyRETS","version":"1.0.0","x-origin":[{"format":"swagger","url":"https://docs.simplyrets.com/api/assets/resources.json","version":"2.0"}],"x-providerName":"simplyrets.com"},"paths":{"/openhouses":{"get":{"description":"This is the main endpoint for accessing openhouses.\n","parameters":[{"description":"Request listings by a specific property type. This\ndefaults to Residential, and you can only specify one type\nin a single query.\n","in":"query","name":"type","required":false,"explode":true,"schema":{"type":"string","enum":["residential","rental","multifamily","condominium","commercial","land","farm"]}},{"description":"Request openhouses for a specific `listingId`.\n","in":"query","name":"listingId","required":false,"schema":{"type":"string"}},{"description":"Filter the openhouses returned by a list of valid cities.\n\nThe `cities` query parameter is case-insensitive.\n\nThe list of `cities` provided by your RETS vendor can be\nseen by sending an `OPTIONS` request to the `/properties`\nendpoint:\n\n`curl -XOPTIONS -u simplyrets:simplyrets https://api.simplyrets.com/openhouses`\n","in":"query","name":"cities","required":false,"explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"description":"Filter the listings returned by brokerage with a Broker ID.\nYou can specific multiple broker parameters. Note, the Broker\nID is provided by your MLS.\n","in":"query","name":"brokers","required":false,"explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"description":"Filter the listings returned by an agent ID. Note, the\nAgent ID is provided by your MLS.\n","in":"query","name":"agent","required":false,"schema":{"type":"string"}},{"description":"Filter listings by a minimum price.\n","in":"query","name":"minprice","required":false,"schema":{"type":"integer"}},{"description":"Scheduled date and time of the open house showing","in":"query","name":"startdate","schema":{"type":"string","format":"date-time"}},{"description":"Increase the offset parameter by the limit to go to the\nnext \"page\" of listings. Also take a look at the Link HTTP\nHeader for pre-built pagination.\n\n*NOTE:* Use the `lastId` parameter for pagination.\n","in":"query","name":"offset","required":false,"schema":{"type":"integer"}},{"description":"Used as a cursor for pagination.\n","in":"query","name":"lastId","required":false,"schema":{"type":"integer"}},{"description":"Set the number of listings to return in the response.\nThis defaults to 20 listings, and can be a maximum of 500.\nTo paginate through to the next page of listings, take a\nlook at the `offset` parameter, or the Link in the HTTP\nHeader.\n","in":"query","name":"limit","required":false,"schema":{"type":"integer"}},{"description":"Sort the response by a specific field. Values starting\nwith a minus (-) denote descending order, while the others\nare ascending.\n","in":"query","name":"sort","required":false,"schema":{"type":"string","enum":["listprice","-listprice","listdate","-listdate","beds","-beds","baths","-baths"]}},{"description":"Include a extra fields which are not in the default\nresponse body\n- 'association' includes additional HOA data\n- 'agreement' information on the listing agreement\n- 'garageSpaces' additional garage data\n- 'maintenanceExpense' data on maintenance expenses\n- 'parking' additional parking data\n- 'pool' includes an additional pool description\n- 'taxAnnualAmount' include the annual tax amount\n- 'taxYear' include the tax year data\n- 'rooms' include parameter will include\n any additional rooms as a list.\n\nNote that your MLS must provide these fields in their RETS\ndata for them to be available in the API response.\n\nIn the future, fields which require an 'include' may become available\nby default.\n","in":"query","name":"include","required":false,"explode":true,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"Will send `Authenticated` if authentication is succesful,\notherwise it will send `Unauthorized`.\n","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/OpenHouse"},"type":"array"}},"application/vnd.simplyrets-v0.1+json":{"schema":{"items":{"$ref":"#/components/schemas/OpenHouse"},"type":"array"}}}},"400":{"description":"Will send `Bad Request`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}},"application/vnd.simplyrets-v0.1+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Will send `Authentication Required`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}},"application/vnd.simplyrets-v0.1+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Will send `Authorization Required`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}},"application/vnd.simplyrets-v0.1+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Will send `Too Many Requests`. Please see our Service\nLevel Agreement for more information on Request Rates and\nAcceptable Use.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}},"application/vnd.simplyrets-v0.1+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Will send `Internal Server Error`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}},"application/vnd.simplyrets-v0.1+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"basicAuth":[]}],"summary":"The SimplyRETS OpenHouses API"}},"/openhouses/{openHouseKey}":{"get":{"description":"Use this endpoint for accessing a single OpenHouse.\n","parameters":[{"description":"A unique OpenHouse identification key","in":"path","name":"openHouseKey","required":true,"schema":{"type":"integer","format":"int64","default":189018}},{"description":"Include a extra fields which are not in the default\nresponse body\n- 'association' includes additional HOA data\n- 'agreement' information on the listing agreement\n- 'garageSpaces' additional garage data\n- 'maintenanceExpense' data on maintenance expenses\n- 'parking' additional parking data\n- 'pool' includes an additional pool description\n- 'taxAnnualAmount' include the annual tax amount\n- 'taxYear' include the tax year data\n- 'rooms' include parameter will include\n any additional rooms as a list.\n\nNote that your MLS must provide these fields in their RETS\ndata for them to be available in the API response.\n\nIn the future, fields which require an 'include' may\nbecome available by default.\n","in":"query","name":"include","required":false,"explode":true,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"Will send `Authenticated` if authentication is succesful,\notherwise it will send `Unauthorized`\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenHouse"}},"application/vnd.simplyrets-v0.1+json":{"schema":{"$ref":"#/components/schemas/OpenHouse"}}}},"400":{"description":"Will send `Bad Request`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}},"application/vnd.simplyrets-v0.1+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Will send `Authentication Required`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}},"application/vnd.simplyrets-v0.1+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Will send `Authorization Required`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}},"application/vnd.simplyrets-v0.1+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Will send `Too Many Requests`. Please see our Service\nLevel Agreement for more information on Request Rates and\nAcceptable Use.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}},"application/vnd.simplyrets-v0.1+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Will send `Internal Server Error`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}},"application/vnd.simplyrets-v0.1+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"basicAuth":[]}],"summary":"Single OpenHouse Endpoint"}},"/properties":{"get":{"description":"This is the main endpoint for accessing your properties. View\nall of the available query parameters and make requests below!\nThe API uses Basic Authentication, which most HTTP libraries\nwill handle for you. To use the test data (which is what this\npages uses), you can use the api key `simplyrets` and secret\n`simplyrets`. Note that these test listings are not live MLS\nlistings but the data, query parameters, and response bodies\nwill all work the same.\n","parameters":[{"description":"A textual keyword search. This parameter will search the following\nfields, when available:\n - listingId (This does _not_ search the `mlsId` field in the SimplyRETS response body)\n - street number\n - street name\n - mls area (major)\n - city\n - subdivision name\n - postal code\n","in":"query","name":"q","required":false,"schema":{"type":"string"}},{"description":"Request listings by a specific status. This parameter\ndefaults to active and you can specify multiple statuses\nin a single query.\n\nListing statuses depend on your MLS's availability. Below is\na brief description of each status with possible synonyms which\nmay map to your MLS-specific statuses\n- *Active*: Active Listing which is still on the market\n- *ActiveUnderContract*: An offer has been accepted but the listing is still on market. Synonyms: Accepting Backup Offers, Backup Offer, Active With Accepted. Synonyms: Offer, Backup, Contingent\n- *Pending*: An offer has been accepted and the listing is no longer on market. Synonyms: Offer Accepted, Under Contract\n- *Hold*: The listing has been withdrawn from the market, but a contract\n still exists between the seller and the listing member. Synonyms: Hold, Hold Do Not Show, Temp Off Market\n- *Withdrawn*: The listing has been withdrawn from the market, but a contract\n still exists between the seller and the listing member. Synonyms: Hold, Hold Do Not Show, Temp Off Market\n- *Closed*: The purchase agreement has been fulfilled or the lease\n agreement has been executed. Synonyms: Sold, Leased, Rented, Closed Sale\n- *Expired*: The listing contract has expired\n- *Delete*: The listing contract was never valid or other reason for the contract to be nullified. Synonyms: Kill, Zap\n- *Incomplete*: The listing has not yet be completely entered and is not yet\n published in the MLS. Synonyms: Draft, Partially Complted\n- *ComingSoon*\n","in":"query","name":"status","required":false,"explode":true,"schema":{"type":"array","items":{"type":"string"},"enum":["Active","Pending","Closed","ActiveUnderContract","Hold","Withdrawn","Expired","Delete","Incomplete","ComingSoon"]}},{"description":"Request listings by a specific property type. This\ndefaults to Residential and Rental. You can specify\nmultiple property types in a single query.\n","in":"query","name":"type","required":false,"explode":true,"schema":{"type":"array","items":{"type":"string"},"enum":["residential","rental","multifamily","condominium","commercial","land","farm"]}},{"description":"Request listings by a specific property sub type.\n\n*NOTE* not all sub type filters are available for all vendors.\n","in":"query","name":"subtype","required":false,"explode":true,"schema":{"type":"array","items":{"type":"string"},"enum":["apartment","boatslip","singlefamilyresidence","deededparking","cabin","condominium","duplex","manufacturedhome","ownyourown","quadruplex","stockcooperative","townhouse","timeshare","triplex","manufacturedonland"]}},{"description":"Filter the listings returned by an agent ID. Note, the\nAgent ID is provided by your MLS.\n\nThe co-listing agent is not included in this query parameter.\n","in":"query","name":"agent","required":false,"schema":{"type":"string"}},{"description":"Filter the listings returned by brokerage with a Broker\nID. For some MLS areas, this is the ListOfficeId (Listing\nOffice ID). You can specific multiple broker\nparameters. Note, this query parameter is only available\nif a Broker ID is provided by your MLS.\n","in":"query","name":"brokers","required":false,"explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"description":"Filter listings by a minimum price.\n","in":"query","name":"minprice","required":false,"schema":{"type":"integer"}},{"description":"Filter listings by a maximum price\n","in":"query","name":"maxprice","required":false,"schema":{"type":"integer"}},{"description":"Filter listings by a minimum area size in Sq Ft.\n","in":"query","name":"minarea","required":false,"schema":{"type":"integer"}},{"description":"Filter listings by a maximum area size in Sq Ft.\n","in":"query","name":"maxarea","required":false,"schema":{"type":"integer"}},{"description":"Filter listings by a minimum number of bathrooms.\n","in":"query","name":"minbaths","required":false,"schema":{"type":"integer"}},{"description":"Filter listings by a maximum number of bathrooms.\n","in":"query","name":"maxbaths","required":false,"schema":{"type":"integer"}},{"description":"Filter listings by a minimum number of bedrooms.\n","in":"query","name":"minbeds","required":false,"schema":{"type":"integer"}},{"description":"Filter listings by a maximum number of bedrooms.\n","in":"query","name":"maxbeds","required":false,"schema":{"type":"integer"}},{"description":"Filter listings by a maximum number of days on market.\n_Note that your MLS must provide Days on Market data._\n","in":"query","name":"maxdom","required":false,"schema":{"type":"integer"}},{"description":"Filter listings by a setting a minimum year built.\n","in":"query","name":"minyear","required":false,"schema":{"type":"integer"}},{"description":"Set the number of listings to return in the response.\nThis defaults to 20 listings, and can be a maximum of 500.\nTo paginate through to the next page of listings, take a\nlook at the `offset` parameter, or the Link in the HTTP\nHeader.\n","in":"query","name":"limit","required":false,"schema":{"type":"integer"}},{"description":"Increase the offset parameter by the limit to go to the\nnext \"page\" of listings. Also take a look at the Link HTTP\nHeader for pre-built pagination.\n\n*NOTE:* Use the `lastId` field to paginate response\n\n*NOTE:* If you're offset is too high, you will receive an\n`HTTP 400 offset too high` error message.\n","in":"query","name":"offset","required":false,"schema":{"type":"integer"}},{"description":"Used as a cursor for pagination. When using `lastId`, the `sort` parameter\nwill not work.\n","in":"query","name":"lastId","required":false,"schema":{"type":"integer"}},{"description":"Used to specify the vendor (MLS) to search from. This\nparameter is required on multi-MLS apps, and you can only\nquery one vendor at a time. To get your vendor id's make\nan OPTIONS request to https://api.simplyrets.com.\n\n`curl -XOPTIONS https://api.simplyrets.com/properties`\n","in":"query","name":"vendor","required":false,"schema":{"type":"string"}},{"description":"Filter the listings returned by postal codes / zip\ncode. You can specify multiple.\n","in":"query","name":"postalCodes","required":false,"explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"description":"Filter the listings by specific interior features. You\ncan filter by multiple. For example, to filter trial listings\nby multiple features you can use,\nReturn listings that are within a set of latitude\nlongitude coordinates. For example,\n\n```\nWet Bar\nHigh Ceiling\n```\n\ne.g. `https://simplyrets.com/services?features=Wet%20Bar&features=High%20Ceiling`\n\nThe list of `features` provided by your RETS vendor can be\nseen by sending an `OPTIONS` request to the `/properties`\nendpoint:\n\n`curl -XOPTIONS -u simplyrets:simplyrets https://api.simplyrets.com/properties`\n","in":"query","name":"features","required":false,"explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"description":"Query water/waterfront listings only. Specify `true` to\nfilter waterfront listings.\n\nIf you specify `water=true`, all listings with any `waterfront` value\nwill be queried.\n\nIf you specify `water=false`, listings which are **NOT** waterfront\nlistings will be queried.\n\nIf you specify `water=LAKE+NAME` or another valid value contained in\nyour feed, that value will be searched\n","in":"query","name":"water","required":false,"schema":{"type":"string"}},{"description":"Filter the listings returned by specific neighborhoods and\nsubdivisions. You can specify multiple `neighborhoods` by\nusing the query parameter multiple times.\n\nThe `neighborhoods` query parameter is case-insensitive.\n\nThe list of `neighborhoods` provided by your RETS vendor can be\nseen by sending an `OPTIONS` request to the `/properties`\nendpoint:\n\n`curl -XOPTIONS -u simplyrets:simplyrets https://api.simplyrets.com/properties`\n","in":"query","name":"neighborhoods","required":false,"explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"description":"Filter the listings returned by specific cities. You can\nspecify multiple `cities` query parameters.\n\nThe `cities` query parameter is case-insensitive.\n\nThe list of `cities` provided by your RETS vendor can be\nseen by sending an `OPTIONS` request to the `/properties`\nendpoint:\n\n`curl -XOPTIONS -u simplyrets:simplyrets https://api.simplyrets.com/openhouses`\n","in":"query","name":"cities","required":false,"explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"description":"Filter the listings returned by specific counties. You can\nspecify multiple `counties` parameters.\n\nThe `counties` query parameter is case-insensitive.\n\nThe list of `counties` provided by your RETS vendor can be\nseen by sending an `OPTIONS` request to the `/properties`\nendpoint:\n\n`curl -XOPTIONS -u simplyrets:simplyrets https://api.simplyrets.com/openhouses`\n","in":"query","name":"counties","required":false,"explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"description":"Return listings that are within a set of latitude\nlongitude coordinates. For example;\n```\n29.723837,-95.69778\n29.938275,-95.69778\n29.938275,-95.32974\n29.723837,-95.32974\n```\nNote that some MLS's do not provide latitude and longitude\nfor their listings, which is required for this parameter\nto work. In these cases, SimplyRETS offers a [Geocoding\nAddon](https://simplyrets.com/services#geocoding).\n\nCheck out our\n[blog post](https://simplyrets.com/blog/interactive-map-search.html)\non using the `points` parameter to build a map-based app\nin javascript.\n","in":"query","name":"points","required":false,"explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"description":"Include a extra fields which are not in the default\nresponse body\n- 'association' includes additional HOA data\n- 'agreement' information on the listing agreement\n- 'garageSpaces' additional garage data\n- 'maintenanceExpense' data on maintenance expenses\n- 'parking' additional parking data\n- 'pool' includes an additional pool description\n- 'taxAnnualAmount' include the annual tax amount\n- 'taxYear' include the tax year data\n- 'rooms' include parameter will include\n any additional rooms as a list.\n\nNote that your MLS must provide these fields in their RETS\ndata for them to be available in the API response.\n\nIn the future, fields which require an 'include' may become available\nby default.\n","in":"query","name":"include","required":false,"explode":true,"schema":{"type":"array","items":{"type":"string"},"enum":["association","agreement","garageSpaces","maintenanceExpense","parking","pool","rooms","taxYear","taxAnnualAmount"]}},{"description":"Sort the response by a specific field. Values starting\nwith a minus (-) denote descending order, while the others\nare ascending.\n","in":"query","name":"sort","required":false,"schema":{"type":"string","enum":["listprice","-listprice","listdate","-listdate","beds","-beds","baths","-baths"]}},{"description":"When set to `false`, The `X-Total-Count` header will not\nbe returned\n\nCounting the listings can contribute to slower API calls\ndue to the extra queries that need to be run to get an\nexact count.\n\nDisabling count can increase query speeds.\n","in":"query","name":"count","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Will send `Authenticated` if authentication is succesful,\notherwise it will send `Unauthorized`.\n","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Listing"},"type":"array"}},"application/vnd.simplyrets-v0.1+json":{"schema":{"items":{"$ref":"#/components/schemas/Listing"},"type":"array"}}}},"400":{"description":"Will send `Bad Request`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}},"application/vnd.simplyrets-v0.1+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Will send `Authentication Required`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}},"application/vnd.simplyrets-v0.1+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Will send `Authorization Required`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}},"application/vnd.simplyrets-v0.1+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Will send `Too Many Requests`. Please see our Service\nLevel Agreement for more information on Request Rates and\nAcceptable Use.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}},"application/vnd.simplyrets-v0.1+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Will send `Internal Server Error`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}},"application/vnd.simplyrets-v0.1+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"basicAuth":[]}],"summary":"The SimplyRETS Listings API"}},"/properties/{mlsId}":{"get":{"description":"Use this endpoint for accessing a single listing. When you\nmake a search to the `/properties` endpoint, each listing in\nthe response will contain a unique `mlsId` field which should\nbe used to request that listing on this route.\n\nThe `mlsId` field is a unique identifier for a listing which\nis specific to the SimplyRETS API only. It is different from\nthe `listingId` field is the public number given to a listing\nby the MLS and is not used here.\n","parameters":[{"description":"The `mlsId` field is a unique identifier which is specific\nto the SimplyRETS API only. This field is different from\nthe `listingId` field (which is the public number given to\na listing by the MLS and is not used here).\n","in":"path","name":"mlsId","required":true,"schema":{"type":"integer","format":"int64","default":1005252}},{"description":"Include a extra fields which are not in the default\nresponse body\n- 'association' includes additional HOA data\n- 'agreement' information on the listing agreement\n- 'garageSpaces' additional garage data\n- 'maintenanceExpense' data on maintenance expenses\n- 'parking' additional parking data\n- 'pool' includes an additional pool description\n- 'rooms' include parameter will include\n any additional rooms as a list.\n\nNote that your MLS must provide these fields in their RETS\ndata for them to be available with valid data in the API\nresponse. If your MLS does not offer these fields, they will\ncontain 'null'.\n\nIn the future, fields which require an 'include' may become available\nby default.\n","in":"query","name":"include","required":false,"explode":true,"schema":{"type":"array","items":{"type":"string"},"enum":["association","agreement","garageSpaces","maintenanceExpense","parking","pool","rooms"]}}],"responses":{"200":{"description":"Will send `Authenticated` if authentication is succesful,\notherwise it will send `Unauthorized`\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Listing"}},"application/vnd.simplyrets-v0.1+json":{"schema":{"$ref":"#/components/schemas/Listing"}}}},"400":{"description":"Will send `Bad Request`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}},"application/vnd.simplyrets-v0.1+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Will send `Authentication Required`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}},"application/vnd.simplyrets-v0.1+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Will send `Authorization Required`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}},"application/vnd.simplyrets-v0.1+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Will send `Too Many Requests`. Please see our Service\nLevel Agreement for more information on Request Rates and\nAcceptable Use.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}},"application/vnd.simplyrets-v0.1+json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Will send `Internal Server Error`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}},"application/vnd.simplyrets-v0.1+json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"basicAuth":[]}],"summary":"Single Listing Endpoint"}}},"servers":[{"url":"https://api.simplyrets.com"}],"components":{"securitySchemes":{"basicAuth":{"description":"HTTP Basic Authentication. Works over `HTTPS` only","type":"http","scheme":"basic"}},"schemas":{"Agent":{"description":"SimplyRETS Agent Api","properties":{"contact":{"$ref":"#/components/schemas/ContactInformation"},"firstName":{"description":"Agent first name","type":"string"},"id":{"description":"Well known Agent MLS number or id.","type":"string"},"lastName":{"description":"Agent last name","type":"string"}},"type":"object"},"Association":{"description":"Home Owners Association","properties":{"amenities":{"description":"Any extra amenities granted by the HOA","type":"string"},"fee":{"description":"Association fee","type":"integer"},"name":{"description":"Name of the association","type":"string"}},"type":"object"},"Broker":{"description":"SimplyRETS Broker Api","properties":{"startdate":{"description":"Start Date","format":"date-time","type":"string"}},"type":"object"},"ContactInformation":{"description":"RETS MLS Contact Information","properties":{"cell":{"description":"Contact Information Cell Phone\n\n**Not available for all RETS vendors**\n","type":"string"},"email":{"description":"The email address of the `ContactInformation`\n\n**Not available for all RETS vendors**\n","type":"string"},"office":{"description":"Contact Information Office Phone Number\n\n**Not available for all RETS vendors**\n","type":"string"}},"type":"object"},"Error":{"description":"Error information","properties":{"error":{"description":"Error code. In general, we try to adhere to HTTP status code\nand use these error statuses for detailed reporting.\n","format":"int32","type":"integer"},"message":{"description":"Status message with an explanation of the error","type":"string"}},"type":"object"},"GeographicData":{"description":"RETS MLS Geographic Data","properties":{"county":{"description":"Listing county","type":"string"},"directions":{"description":"Directions to the property","type":"string"},"lat":{"description":"Listing latitude (if available)","format":"double","type":"number"},"lng":{"description":"Listing longitude (if available)","format":"double","type":"number"},"marketArea":{"description":"Listing GeoMarket area. May be the same as mlsArea","type":"string"}},"type":"object"},"Listing":{"description":"RETS MLS Listing Property","properties":{"address":{"$ref":"#/components/schemas/StreetAddress"},"agent":{"$ref":"#/components/schemas/Agent"},"association":{"$ref":"#/components/schemas/Association"},"coAgent":{"$ref":"#/components/schemas/Agent"},"disclaimer":{"description":"Data accuracy disclaimer. The value in the disclaimer may\nchange depending on your MLS vendors rules.\n","type":"string"},"geo":{"$ref":"#/components/schemas/GeographicData"},"leaseTerm":{"description":"Represents the length of the lease.","type":"string"},"leaseType":{"description":"Information about the status of the existing lease on the property.","type":"string"},"listDate":{"description":"Date and time the listing became Active","format":"date-time","type":"string"},"listPrice":{"description":"Price of the listing","format":"double","type":"number"},"listingId":{"description":"Data Dictionary v1.3 ListingId. The well known identifier\nfor the listing. The value is the id or number by the MLS as\na public identifier for the listing.\n\nThis identifier should not be confused with the `mlsId`, which is\nspecific to the SimplyRETS API.\n","type":"string"},"mls":{"$ref":"#/components/schemas/MlsInformation"},"mlsId":{"description":"A unique identifier for this listing specific to the\nSimplyRETS API. Thie identifier is specific to the\nSimplyRETS api and has no correlation with the MLS\nnumber. Use this id when making requests to the single\nlisting endpoint (eg, `/properties/{mlsId}`).\n\nApplications should not rely on specific `mlsId`s being\npresent. Instead, apps should dynamically use the `mlsId`\nafter using other more general query parameters. Many mls\nvendors require listings which are expired, terminated or\nsold to be purged, which will render calls to specific\n`mlsId`s to return nothing (or possibly a 404).\n","format":"int64","type":"integer"},"modified":{"description":"Date and time of the last modification","format":"date-time","type":"string"},"office":{"$ref":"#/components/schemas/Office"},"photos":{"description":"Photos of the property. Images are served over https and are\nsuitable for production use on secure websites\n","items":{"type":"string"},"type":"array"},"privateRemarks":{"description":"Agent only remarks","type":"string"},"property":{"$ref":"#/components/schemas/Property"},"remarks":{"description":"Description or remarks","type":"string"},"sales":{"$ref":"#/components/schemas/Sales"},"school":{"$ref":"#/components/schemas/School"},"showingInstructions":{"description":"Public instructions for showing the property.","type":"string"},"tax":{"$ref":"#/components/schemas/Tax"},"virtualTourUrl":{"description":"The URL for an unbranded virtual tour of the property.\n\n**Added on 2016/05/04 - Not available for all RETS vendors**\n","type":"string"}},"type":"object"},"MlsInformation":{"description":"RETS MLS Vendor Data","properties":{"area":{"description":"MLS Area major. The major marketing area name, as defined by the MLS or other non-governmental organization.","type":"string"},"areaMinor":{"description":"MLS Area minor. The minor/sub marketing area name, as defined by the MLS or other non-governmental organization.","type":"string"},"daysOnMarket":{"description":"Amount of days the property has been Active","format":"int64","type":"integer"},"originatingSystemName":{"description":"Alias for the listing office or brokerage\n\nThis field corresponds to the data-dictionary `OriginatingSystemName` field\n\nThe name of the originating record provider. Most commonly\nthe name of the MLS. The place where the listing is\noriginally input by the member. The legal name of the\ncompany. To be used for display.\n\nIf you're RETS provider aggregates feeds from multiple\nMLS's, this will be the name of the corresponding MLS.\n","type":"string"},"status":{"description":"Normalized MLS Status Code. Compliant with data dictionary\nv1.3 ListingStatus Listing statuses depend on your MLS's\navailability. Below is a brief description of each status\nwith possible synonyms which may map to your MLS-specific\nstatuses\n\n- Active: Active Listing which is still on the market\n- ActiveUnderContract: An offer has been accepted but the listing is still on market. Synonyms: Accepting Backup Offers, Backup Offer, Active With Accepted. Synonyms: Offer, Backup, Contingent\n- Pending: An offer has been accepted and the listing is no longer on market. Synonyms: Offer Accepted, Under Contract\n- Hold: The listing has been withdrawn from the market, but a contract\n still exists between the seller and the listing member. Synonyms: Hold, Hold Do Not Show, Temp Off Market\n- Withdrawn: The listing has been withdrawn from the market, but a contract\n still exists between the seller and the listing member. Synonyms: Hold, Hold Do Not Show, Temp Off Market\n- Closed: The purchase agreement has been fulfilled or the lease\n agreement has been executed. Synonyms: Sold, Leased, Rented, Closed Sale\n- Expired: The listing contract has expired\n- Delete: The listing contract was never valid or other reason for the contract to be nullified. Synonyms: Kill, Zap\n- Incomplete: The listing has not yet be completely entered and is not yet\n published in the MLS. Synonyms: Draft, Partially Complted\n- ComingSoon\n","enum":["Active","ActiveUnderContract (Backup-Offer)","Pending","Hold","Withdrawn","Closed","Expired","Delete","Incomplete","ComingSoon"],"type":"string"},"statusText":{"description":"Raw MLS status text. This `field` comes directly from your RETS data\nfield and is not normalized.\n","type":"string"}},"type":"object"},"Office":{"description":"RETS MLS Office","properties":{"brokerid":{"description":"Office or brokerage MLS identifier\n\n**Not available for all RETS vendors**\n","type":"string"},"contact":{"$ref":"#/components/schemas/ContactInformation"},"name":{"description":"Pimary office name","type":"string"},"servingName":{"description":"Primary office or brokerage name","type":"string"}},"type":"object"},"OpenHouse":{"description":"SimplyRETS Open House object","properties":{"description":{"description":"The remarks and/or description details for the open house","type":"string"},"endTime":{"description":"The ending date time for the open house","format":"date-time","type":"string"},"inputId":{"description":"The MLS number for the showing agent or agent which created the OpenHouse\nin the MLS database.\n"},"listing":{"$ref":"#/components/schemas/Listing"},"openHouseId":{"description":"The MLS number or id provided by the MLS\n","type":"string"},"openHouseKey":{"description":"A unique identifier for the open house which is specific to the\nSimplyRETS API\n","type":"string"},"refreshments":{"description":"Provided","type":"string"},"startTime":{"description":"Start Date for the open house","format":"date-time","type":"string"},"type":{"description":"The open house type. For example, Public or Private","type":"string"}},"type":"object"},"Parking":{"description":"RETS MLS School Data","properties":{"description":{"description":"Parking features description","type":"string"},"leased":{"type":"string"},"spaces":{"description":"Number of parking spaces","type":"integer"}},"type":"object"},"Property":{"description":"Rets MLS Listing Property","properties":{"accessibility":{"type":"string"},"additionalRooms":{"description":"Additional room information. This is a textual description\nof additional rooms for the listing.\n","type":"string"},"area":{"description":"Square footage of the building associated with a listing","format":"int64","type":"integer"},"areaSource":{"type":"string"},"bathsFull":{"description":"Number of full bathrooms","format":"int64","type":"integer"},"bathsHalf":{"description":"Number of half bathrooms","format":"int64","type":"integer"},"bathsThreeQuarter":{"description":"Number of 3/4 bathrooms","format":"int64","type":"integer"},"bedrooms":{"description":"Number of bedrooms","format":"int64","type":"integer"},"construction":{"description":"The materials that were used in the construction of the property.","type":"string"},"cooling":{"description":"A description of the cooling or air conditioning features of the property.","type":"string"},"exteriorFeatures":{"description":"Exterior Features for the listing\n","type":"string"},"fireplaces":{"description":"Number of fireplaces","format":"int64","type":"integer"},"flooring":{"description":"The type(s) of flooring found within the property.","type":"string"},"foundation":{"type":"string"},"garageSpaces":{"description":"Number of garage spaces","format":"float","type":"number"},"heating":{"description":"Heating description or short string","type":"string"},"interiorFeatures":{"description":"The properties interior features","type":"string"},"laundryFeatures":{"type":"string"},"lotDescription":{"type":"string"},"lotSize":{"description":"Lot size dimensions or square footage as a text. This\nfield is generally used to show the pretty formatted\nlot size.\n","type":"string"},"lotSizeAcres":{"description":"Lot size in acres\n\n**Added on 2016/05/04 - Not available for all RETS vendors**\n","format":"float","type":"number"},"lotSizeArea":{"description":"The total area of the lot. See `lotSizeUnits` for the units\nof measurement (Square Feet, Square Meters, Acres, etc.).\n\n**Added on 2016/05/04 - Not available for all RETS vendors**\n","format":"double","type":"number"},"lotSizeAreaUnits":{"description":"Unit of measurement for the lotSizeArea field. e.g. Square\nFeet, Square Meters, Acres, etc.\n\nIf this field is `null` the units is the default unit\nof measure specified by your RETS provider.\n\n**Added on 2016/05/04 - Not available for all RETS vendors**\n","type":"string"},"maintenanceExpense":{"description":"Yearly maintenance expense","format":"float","type":"number"},"occupantName":{"type":"string"},"occupantType":{"type":"string"},"ownerName":{"type":"string"},"parking":{"$ref":"#/components/schemas/Parking"},"poolFeatures":{"type":"string"},"roof":{"description":"Property roof description","type":"string"},"stories":{"description":"Number of stories or levels. Represented as a `double' to\naccount for half stories.\n","format":"float","type":"number"},"style":{"description":"Property style description or short string","type":"string"},"subType":{"description":"A normalized representation of the listings sub-type.\n","enum":["Apartment","BoatSlip","SingleFamilyResidence","DeededParking","Cabin","Condominium","Duplex","ManufacturedHome","Quadruplex","StockCooperative","Townhouse","Timeshare","Triplex","ManufacturedOnLand"],"type":"string"},"subTypeRaw":{"description":"The raw text representation of the property sub type.\n","type":"string"},"subdivision":{"description":"The subdivision or community name","type":"string"},"type":{"description":"Abbreviated property type. RES is Residential, CND is CondoOrTownhome,\nRNT is Rental, MLF is Multi-Family, CRE is Commercial, LND is Land,\nFRM is Farm. See the `propertySubType` field for more information.\n","enum":["RES","CND","RNT","MLF","CRE","LND","FRM"],"type":"string"},"view":{"description":"View details and description","type":"string"},"water":{"description":"The name, if known, of the body of water on which the\nproperty is located. (E.g., lake name, river name, ocean\nname, sea name, canal name). Otherwise, this field will\ncontain features of the waterfront on which the property is\nlocated.\n","type":"string"},"yearBuilt":{"description":"Year the property was built","format":"int64","type":"integer"}},"type":"object"},"Sales":{"description":"Sales Data","properties":{"agent":{"description":"RETS Sales data agent id","type":"string"},"closeDate":{"description":"RETS Sales data close date","format":"date-time","type":"string"},"closePrice":{"description":"RETS Sales data sold price","format":"int64","type":"integer"},"contractDate":{"description":"RETS Sales data contract date","format":"date-time","type":"string"},"office":{"description":"RETS Sales data selling office/brokerage id","type":"string"}},"type":"object"},"School":{"description":"RETS MLS School Data","properties":{"district":{"description":"School district name.","type":"string"},"elementarySchool":{"description":"Elementary school name.","type":"string"},"highSchool":{"description":"High school name","type":"string"},"middleSchool":{"description":"Middle or junior school name","type":"string"}},"type":"object"},"StreetAddress":{"description":"RETS MLS Street Address","properties":{"city":{"description":"City name","type":"string"},"country":{"description":"Street address country (United States or Canada)","type":"string"},"crossStreet":{"description":"Known cross street","type":"string"},"full":{"description":"Full pretty-printed address with suffix (if available)","type":"string"},"postalCode":{"description":"Street Address postal code","type":"string"},"state":{"description":"State or province. Maps to the data dictionary field `StateOrProvince`.","type":"string"},"streetName":{"description":"Name of the street","type":"string"},"streetNumber":{"description":"Street number","format":"int64","type":"integer"},"streetNumberText":{"description":"Textual representation of the street number. This field\nis usually redundant with what's in `streetNumber` but is\noccassionally usefuly for street number which are actually\nalpha-numerical. For example, \"N63453\" or \"34556B\".\n\n**Added on 2016/05/02**\n","type":"string"}},"type":"object"},"Tax":{"description":"RETS MLS Tax Data","properties":{"id":{"description":"Tax Parcel ID for the listing","type":"string"},"taxAnnualAmount":{"description":"Annual tax amount in USD","type":"string"},"taxYear":{"description":"Tax Year","format":"int64","type":"integer"}},"type":"object"}}}}