Search
K
[dev] 🇩🇪 Listings Management Germany

Immowelt listing imports API

1.0.7OAS 3.0

Introduction

The Immowelt listing imports API allows you to import listings into the Immowelt platform.
The API provides endpoints for creating, updating, and deleting listings, as well as managing media files associated to listings.
Use this API to integrate with the Immowelt platform and streamline the listing import process.

Authentication

This section covers the authentication and authorization mechanisms required to access the API.

To authorize requests, include the token in the Authorization header as follows:

Authorization: Bearer <your_token>

Available scopes

This section lists the OAuth 2.0 scopes that you might need to request to access this API, depending on the level of access you need. Many scopes overlap, so it’s best to use a scope that is as restrictive as possible.
The access token issued will only contain the requested scopes.

Scopes Description
clim:listings:* View and manage your listing across this API
clim:medias:* Manage your media data across this API
clim:listings:create Manage your POST listing endpoint (/listings) across this API
clim:listings:read Manage your GET listing endpoint (/listings, /listings/{externalListingId}) across this API
clim:listings:update Manage your PUT listing endpoint (/listings/{externalListingId}) across this API
clim:listings:delete Manage your DELETE listing endpoint (/listings/{externalListingId}) across this API
clim:medias:create Manage your POST media endpoint (/medias) across this API

ℹ️ Scopes are case sensitive

API overview

The Immowelt listing imports API is a RESTful API. The API allows you to interact with resources using verbs: POST, GET, PUT, DELETE.

  • To create a new resource : use the POST verb with the resource name

POST /listings

  • To query an existing resource : use the GET verb with the resource name and its unique identifier

GET /listings/{externalListingId}

  • To query a list of resources : use the GET verb with the resource name

GET /listings

  • To update an existing resource : use the PUT verb with the resource name and its unique identifier

PUT /listings/{externalListingId}

  • To delete an existing resource : use the DELETE verb with the resource name and its unique identifier

DELETE /listings/{externalListingId}

Naming convention

  • All the resources names are defined in plural. For instance: “GET /listings”.
  • The supported format is JSON.
  • The fields are defined in camelCase.
  • The boolean fields start by a “is” prefix.

Specification

The Immowelt listing imports API follows the OpenAPI specification.

API features offered

Feature Description
Listing data lifecycle management Create, update, delete, query listing data.
Media data lifecycle management Create and upload media data.

Business Rules

These specific rules apply to listing data at creation and update :

No. Rule Description Remarks
1 Text Length Validation For all fields with data type “Multi lingual text”, a maximum length validation is applied. If the size exceeds 3999 characters, a specific rejection will be triggered to the producer indicating the violation. Characters are more easily understood than bytes
2 Email Format Fields with email type will be rejected if they don’t follow a valid email format. This rule applies to contact information fields. Only available in contact
3 Phone Number Format Fields with phone number type will be rejected if they don’t follow a valid phone number format. Standard RegEx: /^+?\d{1,3}[- ]?\d{1,4}[- ]?\d{4,10}$/. The / delimiter must be accepted Only available in contact
4 Date Format Fields with date type will be rejected if they don’t follow the accepted format: string($date), e.g., “2019-02-15”. -
5 URL Format Fields with URL type will be rejected if they don’t follow a valid URL format. -
6 Estate Type Validation The estateType must match with estateSubType. Non-matching combinations will be rejected. -
7 Distribution Type Validation The distributionType must match with distributionSubType. Non-matching combinations will be rejected. To ease handling of complex sales transactions
8 Project Estate Type Validation For project classifieds, the projectEstateType must match with projectEstateSubType. Non-matching combinations will be rejected. May not be mandatory (API don’t support project at this moment)
9 Project Distribution Type Validation For project classifieds, the projectDistributionType must match with projectDistributionSubType. Non-matching combinations will be rejected. For project classifieds (API don’t support project at this moment)
10 Mandatory API Customer Fields For API customers, the following fields are mandatory: externalId, offererEstateId, offererMarketingKey, softwareName, externalCustomerId. For project classifieds, externalProjectId and offererEstateGroupId are also mandatory. For project classifieds (API don’t support project at this moment)
11 Update Restriction In update transactions, changing the classified estateType is not allowed. -
12 Square Meters Validation Square meter fields and space fields must be ≥0 and <99999999, with number data type. -
13 Count Fields Validation Number/count fields and parking lot fields must be ≥0 and <999999, with number data type. -
14 Price Fields Validation Price and amount fields must be ≥0 and <9999999999999, with number data type. -
15 Date Range Validation For new builds, availableFromDate and buildingStartDate must be after 1900/01/01. -
16 Percentage Values Percentage values must be between 0 and 100. -
17 Rent Transaction Amount Validation In rent transactions with CLASSIC/standard distributionSubType, either baseRent.amount OR totalRent.amount OR lease.amount must be greater than 0. -
18 New Build and Empty Rent Validation In rent transactions with NEW_BUILD_UNIT or EMPTY distributionSubType, either baseRent.amount OR totalRent.amount OR lease.amount must be greater than 0. -
19 Compulsory Auction Validation In COMPULSORY_AUCTION transactions, minimumBid and overbidSessionStartingPrice must be greater than 0. -
20 Brokerage Fee Validation (Buy/Rent) In BUY/RENT transactions, when hasFee is not false, the brokerage Fee amount or price note must not be empty and must be greater than 0. -
21 Text Content Validation In all create and update events, text entry fields will be rejected if they contain HTML, URLs, email addresses, or phone numbers. -

NOTE: The Sandbox environment listings will be automatically deleted after 90 days since the last write/update. The Sandbox environment listings will not be visible on the website, as of now.

Versioning strategy

The Immowelt listing imports API is constantly being worked on to add features, improvements and bugfixes. This means that you should expect changes to be introduced and documented. Whenever we make a significant change to an endpoint, we will increase the version number used in the path of the resource being requested. The current API version is v1 so all the API request must be performed with this version number in the endpoints.

Example:

POST /v1/listings

The API version number being incremented for major versions releases. The minor versions are released without having to increment this API version number enabling API consumers to benefit from non-breaking and backward-compatible changes and fixes seamlessly.

Backward-compatible changes

We consider the following cases as backward-compatible changes (minor releases):

  • Adding new optional parameters
  • Adding new endpoints
  • Adding new fields to existing API responses
  • Changing the order of fields in existing API responses

Supported HTTP status codes

  • 2xx for successful operations
  • 3xx for redirections
  • 4xx for client errors
  • 5xx for server errors

Errors

The Immowelt listing imports API follow’s the error response format proposed in RFC 7807 also known as Problem Details for HTTP APIs. As with our normal API responses, your client must be prepared to gracefully handle additional members of the response.
However, some error cases need to be accompanied by a human readable documentation. Especially regarding any errors that might be encountered during the API format validation steps (400 Bad Request) in order to give sufficient information needed by API consumers to fix the parameters and/or the request body. This 400 Bad Request is detailed in the section below.

Validation Error

In addition to the information proposed in RFC 7807, we support “errors” and “errorSource” fields to convey the fine-grained details of the API format validation problems.

Field Type Description
errors Array This is an a array of objects composed by name and reason attributes.
The name object attribute indicates the field name of the request body causing the error.
The reason attribute describes the reason of the error.

Example: [{"name": "/data/estateSubTypes/trading", "reason": "must be equal to one of the allowed values: STORE, SHOWROOM_SPACE, SHOPPING_CENTRE, KIOSK, SALES_AREA."}]
errorSource String Can be one of the following values: body, requestParameter, headers, contentType in order to locate the source of the problem.

Example

{
  "type": "{{API_DOC_URL}}#section/Errors/Validation-Error",
  "title": "Bad request",
  "detail": "Your request has not been validated",
  "instance": "00-652039077ca790cc11d3a80cc29dbeb9-ca5243f0e6c43195-00",
  "errors": [
    {
      "name": "/space",
      "reason": "must NOT have additional properties: space."
    }
  ],
  "errorSource": "body",
  "status": 400
}
API Base URL
  • Server 1:https://api.aviv-group.com/import-listings/v1

    Production

  • Server 2:https://api.aviv-group.com/sandbox/import-listings/v1

    Sandbox

Security
bearerAuth (http)

JWT Bearer authentication token

Listing

CRUD operations about listings.

Create a new listing

This endpoint allows you to create a new classified to be published on Immowelts portals. Depending on the parameters sent along with the body payload, the classified can be created but not published. This endpoint returns synchronously a response informing if the body payload format is valid or not. In the case of a valid format, the endpoint will return a 202 Accepted HTTP status code with URL links to related resources. In the case of invalid format, the endpoint will return a 400 Invalid format HTTP status code with the details of the rejection’s reasons

post

Body

application/json; charset=utf-8

apiRequest

Request wrapper for Data

* Additional properties are NOT allowed.
dataobjectrequired
* Additional properties are NOT allowed.
Show Child Parameters
metadataobjectrequired

metadatas associated to listing in Aviv system

* Additional properties are NOT allowed.
Show Child Parameters
mediaarray[object]
* Additional properties are NOT allowed.
Show Child Parameters
contactobject
* Additional properties are NOT allowed.
Show Child Parameters

Response

application/json; charset=utf-8

Created

requestIdstring

The unique identifier for this create request

Example:0196106c-409b-7fg4-a317-db7393a36b77

listingIdstring

The Immowelt ID for the listing

Example:a1b2c3d4-e5f6-4789-b0a1-c2d3e4f5a6b7

externalListingIdstring

Your own offererEstateId that was used when creating the listing

Example:offererEstateId123

warningsarray
Show Child Parameters
post/listings

Body

{ "data": { "estateType": "HOUSE", "distributionType": "BUY", "location": { "postalcode": "22455", "city": "Hamburg", "street": "Hauptstrasse", "houseNumber": "10", "country": "DEU", "geometry": { "type": "Point", "coordinates": [ 13.405, 52.52 ] } }, "prices": {} }, "metadata": { "source": { "offererMarketingKey": "HH-AH61a-WE15a-1", "offererEstateId": "c1b1160a-2502-4dff-8037-3888c9845981" } } }
 
application/json; charset=utf-8