casavi manager API (1.12.10)

Download OpenAPI specification:Download

casavi Connectivity Team: connectivity@casavi.de URL: https://casavi.de

⚠ API V2

Version 2 of our API is no longer in preview since 20/02/2023. While the current version 1 will remain, no further implementations will be made. Therefore, we recommend using API v2 in the future.

Introduction

casavi partner network / multiple persons adding puzzle pieces to the casavi logo

casavi stands for an open integration culture. Thanks to our powerful API casavi is your central platform for the complete digitalisation of your property management processes. No duplicate data administration thanks to a direct connection to accounting and ERP systems – and through our big partner network there is no limit to your possibilities when it comes to additional functionality.

Using this API you can connect to most of the functionality that casavi has to offer. All data is scoped to one customer account. Examples you can do with this API are:

  • import & update master data
  • import documents and track if they have been downloaded by customers
  • connect another workflow management system to the ticket system casavi uses.

This documentation is generated from a Open API 2.0 document. Before we get to all the endpoints we explain the authentication. In the following section we continue with the most often found use cases.

Updates

We are actively developing our API and extend it to cover new use cases. To stay up to date you can have a look at the Changelog.

Authentication

You need an API key & a secret (supplied by your casavi customer service). Then follow these steps to authenticate against this API:

  1. POST to /authenticate with application/json payload { key, secret }.
  2. You receive back a json with payload { token, expiresAt }.
  3. Use the token in the header field token of other requests.

token

Security Scheme Type API Key
Header parameter name: token

Common fields in this API description

IDs

When an endpoint in this API is receiving or returning an id this is not the casavi internal database id, but instead a customer supplied reference id. This id is also shown in the management view as "Referenz ID". It can be anything you want want, so a database id or - as we recommend - an identifier that is human relatable like the property number.

Dates

Dates/Times are always returned in ISO 8601 format (YYYY-MM-DDThh:mm:ss.sssZ). They are also returned in UTC.

Other

We also have a documentation for the Community API which describes the API the community app uses.

Authentication

casavi authentication

Get access token

key and secret can be obtained from your connectivity contact at casavi and give access to a whole casavi account.

Deprecation:

Before this method used three parameters: apiKey, email and password. This is deprecated, but still supported because we are mapping the parameters:

  • secret equals password
  • key equals apiKey and
  • email is just ignored.
Request Body schema: application/json

Data to authenticate into casavi

key
required
string

API key. Should not be empty

secret
required
string

API secret

Responses

Request samples

Content type
application/json
{
  • "key": "04523b90-9ee1-49f7-af31-b1f24efe84ad",
  • "secret": "ksdasji0-sf818-nfn81-ms9a-ams9d9a9as"
}

Response samples

Content type
application/json
{
  • "token": "a2cf47a9-3d2e-455e-a34b-7a79f11aa7f9",
  • "expiresAt": "1985-12-05T15:31:10.000Z"
}

Refresh access token

Refresh access token

Request Body schema: application/json

Data to authenticate into casavi

apiKey
required
string

API key. Should not be empty

token
required
string

Old access token

Responses

Request samples

Content type
application/json
{
  • "apiKey": "04523b90-9ee1-49f7-af31-b1f24efe84ad",
  • "token": "a2cf47a9-3d2e-455e-a34b-7a79f11aa7f9"
}

Response samples

Content type
application/json
{
  • "token": "a2cf47a9-3d2e-455e-a34b-7a79f11aa7f9",
  • "expiresAt": "1985-12-05T15:31:10.000Z"
}

Import

A main process needed to work with casavi is to get master data from the ERP or property management software into casavi regularly. For this we use an asynchronous process. Roughly the process is as follows:

Send your data according to the import model to the import endpoint. All the data in that request is automatically imported in the correct order, so that contacts and properties are created first, followed by units and finally documents. When supplying individual imports to the API this order has to be taken into account as well as no units for example can be imported if there is not yet the contact in casavi with a matching reference id.

The import works asynchronously and with a queue, meaning that not all imports are guaranteed to be imported at once. This endpoint will return a job ID that you can use to check the status of the job via jobs/{jobId}.

Import

The import endpoint takes in a master data object and asynchronously imports it into casavi.

Authorizations:
Request Body schema: application/json

Data to be imported into casavi

Array of objects (Contact)
Array of objects (PropertyImport)
Array of objects (Responsibility)

Responses

Request samples

Content type
application/json
{
  • "contacts": [
    ],
  • "properties": [
    ],
  • "responsibilities": [
    ]
}

Response samples

Content type
application/json
{
  • "jobId": "string"
}

Information about a job

Returns the status of a running import.

Authorizations:
path Parameters
jobId
required
string
Example: 58eca7a398af3a14a3af2efe

Id of the import (Returned when starting an import (POST /import))

Responses

Response samples

Content type
application/json
{
  • "id": "58eca7a398af3a14a3af2efe",
  • "results": {
    },
  • "progress": 0.65,
  • "completed": true,
  • "completedAt": "2017-04-11T09:53:42.891Z"
}

Properties

List and get individual properties

Get List of Properties

List of properties received from casavi

Authorizations:
query Parameters
page
integer <int32>

Page number

Responses

Response samples

Content type
application/json
{
  • "count": 1,
  • "page": 1,
  • "pageCount": 1,
  • "rows": [
    ]
}

Get property by Id

Get property by Id

Authorizations:
path Parameters
propertyId
required
string

ID of property to return

Responses

Response samples

Content type
application/json
{
  • "id": "P-00451",
  • "internalId": 41251,
  • "name": "Easy Living Apartments",
  • "note": "Test description",
  • "country": "Germany",
  • "city": "Munich",
  • "postalCode": 80331,
  • "number": 12345,
  • "addresses": [
    ],
  • "responsibilities": [
    ],
  • "customFields": {
    },
}

Get all units of a property

Authorizations:
path Parameters
propertyId
required
string

ID of property to return

query Parameters
page
integer

Zero based result page to return

includeInactiveContracts
boolean

Toggle to include inactive contracts in the response

Responses

Response samples

Content type
application/json
{
  • "rows": [
    ],
  • "pageCount": 0,
  • "page": 0
}

Units

Get unit by id

Get unit by Id

Authorizations:
path Parameters
unitId
required
string

ID of unit to return

Responses

Response samples

Content type
application/json
{
  • "internalId": 41251,
  • "area": "50.2",
  • "floor": "3rd",
  • "rooms": "2",
  • "mscNumber": "15",
  • "address": "Main street 5",
  • "purpose": "PARKING",
  • "votingShare": 5.5,
  • "id": "P-00451-0001",
  • "number": "0001",
  • "propertyMscNumber": "15",
  • "name": "Unit 49812-1312-1",
  • "note": "Description for a unit",
  • "contracts": [
    ],
  • "customFields": {
    }
}

Contacts

List and get individual contacts

Get List of Contacts

List of contacts received from casavi

Authorizations:
query Parameters
page
integer <int32>

Page number

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get contact by Id

Get contact by Id

Authorizations:
path Parameters
contactId
required
string

ID of contact to return

Responses

Response samples

Content type
application/json
{
  • "id": "C-0000312",
  • "internalId": 41251,
  • "title": "Doctor",
  • "salutation": "Family",
  • "firstName": "Joe",
  • "lastName": "Smith",
  • "company": "ACME Industries",
  • "companyRole": "Director",
  • "email": "joe.smith@acme.com",
  • "telephone": "+49 (0) 89 132",
  • "mobile": "+49 (0) 89 132",
  • "fax": "+49 (0) 89 132",
  • "website": "https://casavi.de",
  • "street": "Example street 7",
  • "postalCode": "80331",
  • "city": "Munich",
  • "country": "Germany",
  • "note": "Prefers to be contacted by email, telephone only in working hours.",
  • "isRegistered": true,
  • "preferredWayOfContact": "LETTER",
  • "customFields": {
    },
}

The import model

Array of objects (Contact)
Array of objects (PropertyImport)
Array of objects (Responsibility)
{
  • "contacts": [
    ],
  • "properties": [
    ],
  • "responsibilities": [
    ]
}

Tickets

Read/write tickets, change status and post comments

Get list of Tickets

This returns a list of max 25 tickets, use the query parameter page to request the next 25.

Authorizations:
query Parameters
page
integer <int32>

Page number

date
string

Certain date after which those tickets are received

propertyId
string
Example: propertyId=P-00451

id of a property to filter the list of tickets by

unitId
string
Example: unitId=00415-004

id of a unit to filter the list of tickets by

status
Array of strings
Items Enum: "OPEN" "CLOSED" "INPROGRESS" "POSTPONED"
Example: status=OPEN&status=INPROGRESS&status=POSTPONED

Filter by status

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create a new ticket

Authorizations:
Request Body schema: application/json

Ticket data to be imported into casavi

id
required
string

External ID of the ticket. Should be unique.

number
integer

Consecutive ticket number

title
required
string

Ticket title. Should not be empty

description
string

Ticket description

type
string

Ticket type

propertyId
required
string

External ID of the property

unitId
string

External ID of the unit

status
string

Ticket status. Available options: 'PENDING', 'OPEN', 'CLOSED', 'INPROGRESS', 'POSTPONED'

statusText
string

Custom ticket status label. If set, the customers will see this text instead of a translation for what's provided in the attribute status.

contactId
string

External ID of the contact that created the ticket

sharedWithContacts
Array of strings

IDs of contacts the ticket should be shared with

assignedToId
string

Manager reference ID that is assigned to the ticket

comment
string

Can be used as a shorthand when changing the status via PUT method

suppressRatingRequest
boolean

When closing a ticket and the feature is active, a request to rate the process will be sent out. One can suppress this with this flag set to true.

attachments
Array of integers

IDs of files that should be attached to the ticket. Files need to be uploaded to /files beforehand (returns an id).

Responses

Request samples

Content type
application/json
{
  • "id": "20131",
  • "number": 414,
  • "title": "Test ticket",
  • "description": "Test description",
  • "type": "Test type",
  • "propertyId": "P-00451",
  • "unitId": "P-00451-0001",
  • "status": "OPEN",
  • "statusText": "Rejected",
  • "contactId": "C-0000312",
  • "sharedWithContacts": [
    ],
  • "assignedToId": "M-000113",
  • "comment": "We started working on your issue and will update you with the progress.",
  • "suppressRatingRequest": true,
  • "attachments": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "20131",
  • "internalId": 41251,
  • "number": "414",
  • "title": "Test ticket",
  • "description": "Test description",
  • "type": "Test type",
  • "typeGroup": "Billable",
  • "propertyId": "P-00451",
  • "unitId": "P-00451-0001",
  • "status": "OPEN",
  • "statusText": "Rejected",
  • "contactId": "C-0000312",
  • "contactName": "John Doe",
  • "contactTelephone": "+345353632",
  • "contactEmail": "john@casavi.de",
  • "sharedWithContacts": [
    ],
  • "sharedWithProperty": false,
  • "assignedToId": "M-000113",
  • "assignedToName": "Miriam Manager",
  • "createdAt": "2015-08-07T14:54:57.000Z",
  • "lastModified": "2015-08-19T12:43:30.000Z",
  • "closedAt": "2015-09-08T15:14:53.000Z",
  • "reportedAt": "2015-08-07T14:54:57.000Z",
  • "attachments": [
    ],
  • "attachmentDetails": [],
  • "comments": [],
  • "tasks": [
    ],
  • "customFields": {
    }
}

Get a ticket by ID

Authorizations:
path Parameters
ticketId
required
string
Example: c8a375b3-d92f-43c2-b836-a5ac315c9c97

ID of ticket to return

Responses

Response samples

Content type
application/json
{
  • "id": "20131",
  • "internalId": 41251,
  • "number": "414",
  • "title": "Test ticket",
  • "description": "Test description",
  • "type": "Test type",
  • "typeGroup": "Billable",
  • "propertyId": "P-00451",
  • "unitId": "P-00451-0001",
  • "status": "OPEN",
  • "statusText": "Rejected",
  • "contactId": "C-0000312",
  • "contactName": "John Doe",
  • "contactTelephone": "+345353632",
  • "contactEmail": "john@casavi.de",
  • "sharedWithContacts": [
    ],
  • "sharedWithProperty": false,
  • "assignedToId": "M-000113",
  • "assignedToName": "Miriam Manager",
  • "createdAt": "2015-08-07T14:54:57.000Z",
  • "lastModified": "2015-08-19T12:43:30.000Z",
  • "closedAt": "2015-09-08T15:14:53.000Z",
  • "reportedAt": "2015-08-07T14:54:57.000Z",
  • "attachments": [
    ],
  • "attachmentDetails": [],
  • "comments": [],
  • "tasks": [
    ],
  • "customFields": {
    }
}

Update an existing ticket

Authorizations:
path Parameters
ticketId
required
string
Example: c8a375b3-d92f-43c2-b836-a5ac315c9c97

ID of ticket to return

Request Body schema: application/json

Ticket data to be updated

id
required
string

External ID of the ticket. Should be unique.

number
integer

Consecutive ticket number

title
required
string

Ticket title. Should not be empty

description
string

Ticket description

type
string

Ticket type

propertyId
required
string

External ID of the property

unitId
string

External ID of the unit

status
string

Ticket status. Available options: 'PENDING', 'OPEN', 'CLOSED', 'INPROGRESS', 'POSTPONED'

statusText
string

Custom ticket status label. If set, the customers will see this text instead of a translation for what's provided in the attribute status.

contactId
string

External ID of the contact that created the ticket

sharedWithContacts
Array of strings

IDs of contacts the ticket should be shared with

assignedToId
string

Manager reference ID that is assigned to the ticket

comment
string

Can be used as a shorthand when changing the status via PUT method

suppressRatingRequest
boolean

When closing a ticket and the feature is active, a request to rate the process will be sent out. One can suppress this with this flag set to true.

Responses

Request samples

Content type
application/json
{
  • "id": "20131",
  • "number": 414,
  • "title": "Test ticket",
  • "description": "Test description",
  • "type": "Test type",
  • "propertyId": "P-00451",
  • "unitId": "P-00451-0001",
  • "status": "OPEN",
  • "statusText": "Rejected",
  • "contactId": "C-0000312",
  • "sharedWithContacts": [
    ],
  • "assignedToId": "M-000113",
  • "comment": "We started working on your issue and will update you with the progress.",
  • "suppressRatingRequest": true
}

Response samples

Content type
application/json
{
  • "id": "20131",
  • "internalId": 41251,
  • "number": "414",
  • "title": "Test ticket",
  • "description": "Test description",
  • "type": "Test type",
  • "typeGroup": "Billable",
  • "propertyId": "P-00451",
  • "unitId": "P-00451-0001",
  • "status": "OPEN",
  • "statusText": "Rejected",
  • "contactId": "C-0000312",
  • "contactName": "John Doe",
  • "contactTelephone": "+345353632",
  • "contactEmail": "john@casavi.de",
  • "sharedWithContacts": [
    ],
  • "sharedWithProperty": false,
  • "assignedToId": "M-000113",
  • "assignedToName": "Miriam Manager",
  • "createdAt": "2015-08-07T14:54:57.000Z",
  • "lastModified": "2015-08-19T12:43:30.000Z",
  • "closedAt": "2015-09-08T15:14:53.000Z",
  • "reportedAt": "2015-08-07T14:54:57.000Z",
  • "attachments": [
    ],
  • "attachmentDetails": [],
  • "comments": [],
  • "tasks": [
    ],
  • "customFields": {
    }
}

Delete a ticket

Authorizations:
path Parameters
ticketId
required
string
Example: c8a375b3-d92f-43c2-b836-a5ac315c9c97

ID of ticket to return

Responses

Create ticket survey

Add new ticket survey

Authorizations:
path Parameters
ticketId
required
string
Example: c8a375b3-d92f-43c2-b836-a5ac315c9c97

Id of ticket

Request Body schema: application/json

Surveys data to be imported into casavi

id
required
integer

Identifier of the ticket survey. Should be unique

assignedToId
integer

Survey assigned contact

title
required
string

Survey title. Should not be empty

text
string

Survey text to be shown additionally

Array of objects (Choice)

Responses

Request samples

Content type
application/json
{
  • "id": 1,
  • "assignedToId": 6,
  • "title": "Test survey",
  • "text": "Some description to clarify what this question is about.",
  • "choices": [
    ]
}

Get ticket activities Deprecated

Get ticket activities

Authorizations:
path Parameters
ticketId
required
string
Example: c8a375b3-d92f-43c2-b836-a5ac315c9c97

ID of ticket to return

query Parameters
page
integer <int32>

Page number

Responses

Response samples

Content type
application/json
{
  • "id": 20131,
  • "title": "Test ticket activity"
}

Ticket comments

Read/write tickets, change status and post comments

Get comments of a ticket

Authorizations:
path Parameters
ticketId
required
string
Example: c8a375b3-d92f-43c2-b836-a5ac315c9c97

Id of ticket

query Parameters
page
integer <int32>

Page number

Responses

Response samples

Content type
application/json
{}

Comment ticket

Comment on a ticket. Text is required and parsed as markdown upon display. If neither authorId nor authorEmail is specified the account name will be used instead.

Authorizations:
path Parameters
ticketId
required
string
Example: c8a375b3-d92f-43c2-b836-a5ac315c9c97

Id of ticket

Request Body schema: application/json

Comment data to be imported into casavi

id
string

ID of the ticket comment. Should be unique. If none is provided, a UUID will be generated automatically

text
required
string

Ticket comment text. Should not be empty

isInternal
boolean
Default: false

Reflect if comment is internal

authorId
string

External ID of the manager that created this comment.

authorEmail
string

Email of the contact

fallbackToAccount
boolean

If author is not found via email address or id, don't throw but instead use the account name as the authors name

attachments
Array of integers

IDs of files that should be attached to the comment. Files need to be uploaded to /files beforehand (returns an id)

Responses

Request samples

Content type
application/json
{
  • "id": "C-0000231",
  • "text": "Test ticket comment",
  • "isInternal": false,
  • "authorId": "E-000481",
  • "authorEmail": "manager1@propertymanagement.com",
  • "fallbackToAccount": false,
  • "attachments": [
    ]
}

Response samples

Content type
application/json
{}

Update ticket comment

Update ticket comment

Authorizations:
path Parameters
ticketId
required
string
Example: c8a375b3-d92f-43c2-b836-a5ac315c9c97

Id of ticket

commentId
required
string

Id of comment

Request Body schema: application/json

Comments data to be imported into casavi

id
string

ID of the ticket comment. Should be unique. If none is provided, a UUID will be generated automatically

text
string

Ticket comment text. Should not be empty

isInternal
boolean

Reflect if comment is internal

Responses

Request samples

Content type
application/json
{
  • "id": "C-0000231",
  • "text": "Test ticket comment",
  • "isInternal": false
}

Response samples

Content type
application/json
{}

Tasks

Create order / task

Authorizations:
path Parameters
ticketId
required
string
Example: c8a375b3-d92f-43c2-b836-a5ac315c9c97

Id of ticket

Request Body schema: application/json

Tasks data to be imported into casavi

id
required
string

Internal ID of the task/order. Should be unique in ticket. Also called internal order number and visible in the UI

title
required
string

Task/Order title. Should not be empty

description
string

Task description

completed
boolean
Deprecated

If task completed or not. This has been replaced by status as there are more possibilities.

status
string
Enum: "OPEN" "ACCEPTED" "COMPLETED" "DECLINED"

The current status for this task

assignedToId
string

External ID of the contact the task is assigned to

createdById
string

External ID of the contact the task is created by

attachments
Array of integers

IDs of files that should be attached to the ticket task. Files need to be uploaded to /files beforehand (returns an id).

Responses

Request samples

Content type
application/json
{
  • "id": "T-000987",
  • "title": "Please fix broken water pipe in Musterstraße 33",
  • "description": "Hello,\\n\\nplease repair the broken water pipe. It has been leaking since a few days.\\n The address is Musterstraße 33, please contact us for an appointment.",
  • "completed": false,
  • "status": "OPEN",
  • "assignedToId": "E-000481",
  • "createdById": "E-000482",
  • "attachments": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "T-000987",
  • "title": "Please fix broken water pipe in Musterstraße 33",
  • "description": "Hello,\\n\\nplease repair the broken water pipe. It has been leaking since a few days.\\n The address is Musterstraße 33, please contact us for an appointment.",
  • "completed": false,
  • "status": "OPEN",
  • "createdAt": "2016-08-05T23:30:00Z,",
  • "acceptedAt": "2016-08-05T23:30:00Z,",
  • "declinedAt": "2016-08-05T23:30:00Z,",
  • "completedAt": "2016-08-05T23:30:00Z,",
  • "assignedToId": "E-000481",
  • "createdById": "E-000482",
  • "attachments": [
    ],
  • "attachmentDetails": []
}

Get a task by ID

Authorizations:
path Parameters
ticketId
required
string
Example: c8a375b3-d92f-43c2-b836-a5ac315c9c97

Id of ticket

taskId
required
string
Example: 1-80848

Id of task

Responses

Response samples

Content type
application/json
{
  • "id": "T-000987",
  • "title": "Please fix broken water pipe in Musterstraße 33",
  • "description": "Hello,\\n\\nplease repair the broken water pipe. It has been leaking since a few days.\\n The address is Musterstraße 33, please contact us for an appointment.",
  • "completed": false,
  • "status": "OPEN",
  • "createdAt": "2016-08-05T23:30:00Z,",
  • "acceptedAt": "2016-08-05T23:30:00Z,",
  • "declinedAt": "2016-08-05T23:30:00Z,",
  • "completedAt": "2016-08-05T23:30:00Z,",
  • "assignedToId": "E-000481",
  • "createdById": "E-000482",
  • "attachments": [
    ],
  • "attachmentDetails": [],
  • "comments": [
    ]
}

Update ticket task

Authorizations:
path Parameters
ticketId
required
string
Example: c8a375b3-d92f-43c2-b836-a5ac315c9c97

Id of ticket

taskId
required
string

Id of task

Request Body schema: application/json

Tasks data to be imported into casavi

id
required
string

Internal ID of the task/order. Should be unique in ticket. Also called internal order number and visible in the UI

title
required
string

Task/Order title. Should not be empty

description
string

Task description

completed
boolean
Deprecated

If task completed or not. This has been replaced by status as there are more possibilities.

status
string
Enum: "OPEN" "ACCEPTED" "COMPLETED" "DECLINED"

The current status for this task

assignedToId
string

External ID of the contact the task is assigned to

createdById
string

External ID of the contact the task is created by

attachments
Array of integers

IDs of files that should be attached to the ticket task. Files need to be uploaded to /files beforehand (returns an id).

Responses

Request samples

Content type
application/json
{
  • "id": "T-000987",
  • "title": "Please fix broken water pipe in Musterstraße 33",
  • "description": "Hello,\\n\\nplease repair the broken water pipe. It has been leaking since a few days.\\n The address is Musterstraße 33, please contact us for an appointment.",
  • "completed": false,
  • "status": "OPEN",
  • "assignedToId": "E-000481",
  • "createdById": "E-000482",
  • "attachments": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "T-000987",
  • "title": "Please fix broken water pipe in Musterstraße 33",
  • "description": "Hello,\\n\\nplease repair the broken water pipe. It has been leaking since a few days.\\n The address is Musterstraße 33, please contact us for an appointment.",
  • "completed": false,
  • "status": "OPEN",
  • "createdAt": "2016-08-05T23:30:00Z,",
  • "acceptedAt": "2016-08-05T23:30:00Z,",
  • "declinedAt": "2016-08-05T23:30:00Z,",
  • "completedAt": "2016-08-05T23:30:00Z,",
  • "assignedToId": "E-000481",
  • "createdById": "E-000482",
  • "attachments": [
    ],
  • "attachmentDetails": [],
  • "comments": [
    ]
}

Delete ticket task

Authorizations:
path Parameters
ticketId
required
string
Example: c8a375b3-d92f-43c2-b836-a5ac315c9c97

Id of ticket

taskId
required
string

Id of task

Responses

Files

Upload files for use in tickets & ticket comments

File upload

Upload files to later use them as attachments for tickets and ticket comments. Maximum request size is 10 MB.

Authorizations:
header Parameters
X-Filename
required
string
Example: my-wonderful-flat.jpg

Name of the file to be displayed after download

Content-Type
required
string
Example: image/jpeg

MIME type of the file

Request Body schema: */*

Binary data of the file (max 10 MB)

string <binary>

Responses

Response samples

Content type
application/json
{
  • "id": 345
}

The ticket model

id
required
string

External ID of the ticket. Should be unique.

internalId
integer

Our internal database id

number
string

Consecutive ticket number

title
required
string

Ticket title. Should not be empty

description
string

Ticket description

type
string

Ticket type

typeGroup
string Nullable

Category for this ticket type

propertyId
string

External ID of the property

unitId
string

External ID of the unit

status
string
Enum: "OPEN" "CLOSED" "INPROGRESS" "PENDING" "POSTPONED"

Ticket status.

statusText
string

Custom ticket status label. If set, the customers will see this text instead of a translation for what's provided in the attribute status.

contactId
string

External ID of the contact that created the ticket

contactName
string

Contact name

contactTelephone
string

Contact telephone

contactEmail
string

Contact email

sharedWithContacts
Array of strings

IDs of contacts the ticket should be shared with

sharedWithProperty
boolean

Determines if ticket is shared with the property referenced by propertyId

assignedToId
string

Manager reference ID that is assigned to the ticket

assignedToName
string

The managers name that is assigned to the ticket

createdAt
string

Date and time when ticket was created, ISO 8601

lastModified
string

Date and time when ticket was last updated, ISO 8601

closedAt
string

Date and time when ticket was closed, ISO 8601

reportedAt
string

Date and time when ticket was reported, ISO 8601. Returns "Invalid Date" if the date is invalid.

attachments
Array of integers

IDs of files that should be attached to the ticket. Files need to be uploaded to /files beforehand (returns an id).

attachmentLinks
Array of strings

DEPRECATED! Temporary links to attachments

Array of objects (AttachmentDetail)

Information about the attachments of the ticket

appLink
string

A link to the ticket in the casavi web app

{
  • "id": "20131",
  • "internalId": 41251,
  • "number": "414",
  • "title": "Test ticket",
  • "description": "Test description",
  • "type": "Test type",
  • "typeGroup": "Billable",
  • "propertyId": "P-00451",
  • "unitId": "P-00451-0001",
  • "status": "OPEN",
  • "statusText": "Rejected",
  • "contactId": "C-0000312",
  • "contactName": "John Doe",
  • "contactTelephone": "+345353632",
  • "contactEmail": "john@casavi.de",
  • "sharedWithContacts": [
    ],
  • "sharedWithProperty": false,
  • "assignedToId": "M-000113",
  • "assignedToName": "Miriam Manager",
  • "createdAt": "2015-08-07T14:54:57.000Z",
  • "lastModified": "2015-08-19T12:43:30.000Z",
  • "closedAt": "2015-09-08T15:14:53.000Z",
  • "reportedAt": "2015-08-07T14:54:57.000Z",
  • "attachments": [
    ],
  • "attachmentDetails": [],
}

REST Hooks

Using web hooks or (REST hooks) it is possible to listen to events in casavi and react in your application.

Create a new webhook subscription

Create a new webhook subscription to receive updates for a specific event. You can find the structure of the event you will receive here. By default, only HTTPS endpoints are accepted for webhook subscribers. Besides, we also support Basic Auth to keep your endpoint secure. This feature is optional. However, we highly recommend you should use it to protect your customers' information in a secure manner. The response includes a Location header with the url to delete the webhook subscription.

Authorizations:
Request Body schema: application/json

Webhook data for subscription.

eventName
required
string
Enum: "contact_created" "contact_updated" "contact_archived" "document_downloaded" "contract_enddate_updated"

Type of event that will trigger the webhook call.

hookUrl
required
string

The endpoint URL that will be called from our side.

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "id": 11
}

Delete webhook subscription by hook id

Authorizations:
path Parameters
hookId
required
integer
Example: 11

id of webhook to delete

Responses

REST hook event model

This is currently in development.

Currently we just pass payload to your hookUrl. Here you will find the structure that we plan to send to that URL in the future. With this new structure we can supply more metadata.

In addition, if Basic Auth (i.e. https://username:password@domain.tld/) is found in your hookUrl we sent those credentials as basic auth (Authorization header with Basic followed by a space and a base64-encoded string of username:password) to your endpoint.

eventId
string

A random ID generated per event. This can be used de-duplication in your application.

eventName
string

The trigger type is repeated here to be used on the recipient side

eventTimestamp
string <date>

Timestamp when the event was created in the backend.

tenantId
integer

The casavi internal database id for the account

payload
object

The actual payload of the event. This is different per event, please look the relevant data up

{
  • "eventId": "8f87e477-7cfd-4470-bca3-c11f0a44a22b",
  • "eventName": "contract_enddate_updated",
  • "eventTimestamp": "2017-04-11T09:53:42.891Z",
  • "tenantId": 3215,
  • "payload": {
    }
}

Payload of contact_created

id
string

Reference ID of the contact that can be used to get more information via the API.

internalId
integer

Internal ID of the contact that is the unique identification in casavi.

isRegistered
boolean

Identify if the contact has registered in casavi successfully.

{
  • "id": "C-31076",
  • "internalId": 995398,
  • "isRegistered": false
}

Payload of contact_updated

id
string

Reference ID of the contact that can be used to get more information via the API.

internalId
integer

Internal ID of the contact that is the unique identification in casavi.

isRegistered
boolean

Identify if the contact has registered in casavi successfully.

{
  • "id": "C-31076",
  • "internalId": 995398,
  • "isRegistered": false
}

Payload of contact_archived

id
string

Reference ID of the contact that can be used to get more information via the API.

internalId
integer

Internal ID of the contact that is the unique identification in casavi.

isRegistered
boolean

Identify if the contact has registered in casavi successfully.

{
  • "id": "C-31076",
  • "internalId": 995398,
  • "isRegistered": false
}

Payload of contract_enddate_updated

contractId
string

Contract number is given in the contract.

tenantId
string

Internal ID of customer that is unique indentification in casavi.

contactId
string

Reference ID of the contact that is connected to the contract. This is limited to the first contact of the contract. It can be used to get more information via the API.

propertyId
string

Reference ID of the property that the contract is part of. It can be used to get more information via the API.

unitId
string

Reference ID of the unit that the contract includes. It can be used to get more information via the API.

startAt
string <date>

The new start date of the contract.

endAt
string <date>

The new end date of the contract.

{
  • "contractId": "A-0024",
  • "tenantId": 1,
  • "contactId": "C-31076",
  • "propertyId": "P-00451",
  • "unitId": "P-00451-0001",
  • "startAt": "2020-09-01T00:00:00.000Z",
  • "endAt": "2022-10-01T00:00:00.000Z"
}

Payload of document_downloaded

id
string

Reference ID of the document. Can be used to access the document via the API.

internalId
integer

Internal ID of the document that is the unique indentification in casavi.

title
string

Title of the document.

downloadCount
string

Number of times the document has been accessed or downloaded. This is not specific to the contact (see contactId) but the overral downloads for this document.

contactId
string

Reference ID of the contact that downloaded the document.

propertyId
string

Reference ID of the property in which the contact downloaded the document. As one document can be shared in multiple properties this can vary between downloads of the same document.

documentType
string

Type of the document that was downloaded.

{
  • "id": "67d936f0-3571-42c4-a840-2d06617ec142",
  • "internalId": 5235,
  • "title": "Musterstraße 3 - Whg 5 - Abrechnung 2021",
  • "downloadCount": 2,
  • "contactId": "C-31076",
  • "propertyId": "P-00451",
  • "documentType": "Abrechnungen 2021"
}

Documents

Retrieve metadata about documents

Upload a new document or change an existing one.

Authorizations:
Request Body schema: application/json

Each document to be imported needs at least an id, title and either content (store the document in our file system) or location and resource (keep the document in the original storage system and only store the metadata in casavi). If the same document (as identified by the id) is imported again, then existing documents are updated.

Documents can be deleted when supplied with delete: true. Then only an id is needed.

id
required
string
title
string
name
string
type
Array of strings
publishedAt
string <date>

Date of the document - will default to the import date

contentType
string

MIME type of the file.

content
string <byte>

Base64 encoded file contents

location
string

Location where to find the document. Might be a full URI or just an ID. This is to be used in conjunction with resource - specifying which storage provider should be used. This depends on the storage provider implementation.

resource
string

Specifies the storage provider. This has to be one of the supported ones.

Array of SharedWithProperty (object) or SharedWithUnit (object) or SharedWithContact (object) or SharedWithContract (object)
delete
boolean

Set to true to delete any existing document. If delete is set to true then only the id is required.

Responses

Request samples

Content type
application/json
{
  • "id": "5512-4353",
  • "title": "Musterstraße 3 - Whg 5 - Abrechnung 2021",
  • "name": "Musterstraße_3-Whg_5-Abrechnung_2021.pdf",
  • "type": [
    ],
  • "publishedAt": "2017-04-11T09:53:42.891Z",
  • "contentType": "application/pdf",
  • "content": "U3dhZ2dlciByb2Nrcw==",
  • "resource": "this_custom_dms",
  • "sharedWith": [
    ],
  • "delete": true
}

Response samples

Content type
application/json
{
  • "jobId": "string"
}

Get information about a document

Authorizations:
path Parameters
documentId
required
string

id of the document to retrieve

Responses

Response samples

Content type
application/json
{
  • "id": "5512-4353",
  • "internalId": 4215213,
  • "title": "Musterstraße 3 - Whg 5 - Abrechnung 2021",
  • "publishedAt": "2017-04-11T09:53:42.891Z",
  • "resource": "someDMS",
  • "sharedWith": [
    ],
  • "downloadCount": 201,
  • "firstDownloadAt": "2017-04-15T00:00:00.000Z"
}

Posts

Create content

Publish a new post in the customer portal

Authorizations:
Request Body schema: application/json

Post to be published

id
string

Unique external ID of the post. If none is provided, a UUID will be generated automatically

title
required
string

Title of the post

text
required
string

Main body text of the post

authorId
required
string

Reference ID of the author

propertyId
required
string

Reference ID of the property where the post is shared.

allowComments
boolean
Default: true

Determines if comments are allowed for this post.

isImportant
boolean
Default: false

If you select this option, not only casavi users but also unregistered contacts whose email addresses you have entered will be notified by email.

showOnInfoboard
boolean
Default: false

Determines if the post should be shown on connected MyBoards if any.

Responses

Request samples

Content type
application/json
{
  • "id": "5512-4353",
  • "title": "Aufzug Reperatur",
  • "text": "Lorem Ipsum dolor sit amet",
  • "authorId": "person412",
  • "propertyId": "property-412",
  • "allowComments": false,
  • "isImportant": false,
  • "showOnInfoboard": false
}

Response samples

Content type
application/json
{
  • "id": "5512-4353",
  • "internalId": 591823,
  • "title": "Aufzug Reperatur",
  • "text": "Lorem Ipsum dolor sit amet",
  • "authorId": "person412",
  • "propertyId": "property-412",
  • "allowComments": false,
  • "isImportant": false,
  • "showOnInfoboard": false,
  • "createdAt": "2017-04-11T09:53:42.891Z"
}

Retrieve a post

Authorizations:
path Parameters
postId
required
string

ID of the post

Responses

Response samples

Content type
application/json
{
  • "id": "5512-4353",
  • "internalId": 591823,
  • "title": "Aufzug Reperatur",
  • "text": "Lorem Ipsum dolor sit amet",
  • "authorId": "person412",
  • "propertyId": "property-412",
  • "allowComments": false,
  • "isImportant": false,
  • "showOnInfoboard": false,
  • "createdAt": "2017-04-11T09:53:42.891Z"
}

Update a post

Authorizations:
path Parameters
postId
required
string

ID of the post

Request Body schema: application/json

Post to be updated

id
string

Unique external ID of the post. If none is provided, a UUID will be generated automatically

title
required
string

Title of the post

text
required
string

Main body text of the post

authorId
required
string

Reference ID of the author

propertyId
required
string

Reference ID of the property where the post is shared.

allowComments
boolean
Default: true

Determines if comments are allowed for this post.

isImportant
boolean
Default: false

If you select this option, not only casavi users but also unregistered contacts whose email addresses you have entered will be notified by email.

showOnInfoboard
boolean
Default: false

Determines if the post should be shown on connected MyBoards if any.

Responses

Request samples

Content type
application/json
{
  • "id": "5512-4353",
  • "title": "Aufzug Reperatur",
  • "text": "Lorem Ipsum dolor sit amet",
  • "authorId": "person412",
  • "propertyId": "property-412",
  • "allowComments": false,
  • "isImportant": false,
  • "showOnInfoboard": false
}

Response samples

Content type
application/json
{
  • "id": "5512-4353",
  • "internalId": 591823,
  • "title": "Aufzug Reperatur",
  • "text": "Lorem Ipsum dolor sit amet",
  • "authorId": "person412",
  • "propertyId": "property-412",
  • "allowComments": false,
  • "isImportant": false,
  • "showOnInfoboard": false,
  • "createdAt": "2017-04-11T09:53:42.891Z"
}

Delete a post

Authorizations:
path Parameters
postId
required
string

ID of the post

Responses

Appointments

Create appointments

Create a new appointment

Authorizations:
Request Body schema: application/json

Appointment to be created

id
string

A unique identifier for the appointment. If none is provided, a UUID will be generated automatically

title
required
string

The title of the appointment

text
string

The body text of the appointment

location
string

Where the appointment takes place

authorId
string

Id of the user who creates the appointment

allDay
boolean
Default: false

Determines if the appointment lasts all day

showOnInfoboard
boolean
Default: false

Determines if shown on info board

propertyIds
required
Array of strings non-empty

Reference IDs of the properties where the appointment is shared.

roles
Array of strings
Items Enum: "renter" "owner" "resident"

List of roles who will receive the appointment

notifyRecipients
boolean
Default: false

Notify all casavi users of appointment by message

dateStart
required
string <date-time>

Date and time appointment begins

dateEnd
string <date-time>

Date and time appointment ends

Responses

Request samples

Content type
application/json
{
  • "id": "appointment-177",
  • "title": "Elevator repair",
  • "text": "Lorem Ipsum dolor sit amet",
  • "location": "3rd floor",
  • "authorId": "person412",
  • "allDay": true,
  • "showOnInfoboard": true,
  • "propertyIds": [
    ],
  • "roles": [
    ],
  • "notifyRecipients": true,
  • "dateStart": "2017-03-05T11:00:00.000Z",
  • "dateEnd": "2017-03-05T14:00:00.000Z"
}

Response samples

Content type
application/json
{
  • "id": "appointment-177",
  • "title": "Elevator repair",
  • "text": "Lorem Ipsum dolor sit amet",
  • "location": "3rd floor",
  • "allDay": true,
  • "showOnInfoboard": true,
  • "propertyIds": [
    ],
  • "roles": [
    ],
  • "dateStart": "2017-03-05T11:00:00.000Z",
  • "dateEnd": "2017-03-05T11:00:00.000Z"
}

Staff

List and get staff members

Get List of staff members

List of staff members in casavi

Authorizations:
query Parameters
page
integer <int32>

Page number

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create a new staff member

Authorizations:
Request Body schema: application/json

Staff member data for create

id
required
string

External ID of the staff member. Should be unique, so further imports can update the staff member

firstName
required
string

First name of the staff member.

lastName
required
string

Last name of the staff member.

email
string

Email where the staff member can be contacted

role
required
string
Enum: "MANAGER" "ADMIN" "EDITOR"

Role of the staff member in tenant

Responses

Request samples

Content type
application/json
{
  • "id": "C-0000312",
  • "firstName": "Joe",
  • "lastName": "Smith",
  • "email": "joe.smith@acme.com",
  • "role": "MANAGER"
}

Response samples

Content type
application/json
{
  • "id": "C-0000312",
  • "internalId": 41251,
  • "firstName": "Joe",
  • "lastName": "Smith",
  • "email": "joe.smith@acme.com",
  • "role": "MANAGER"
}

Get staff members by ID

Authorizations:
path Parameters
contactId
required
string

ID of contact to return

Responses

Response samples

Content type
application/json
{
  • "id": "C-0000312",
  • "internalId": 41251,
  • "firstName": "Joe",
  • "lastName": "Smith",
  • "email": "joe.smith@acme.com",
  • "role": "MANAGER"
}

Consumptions

Access to casavi consumption data

Get List of Consumption Resources

Authorizations:
query Parameters
page
integer <int32>

Page number

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create Consumption Resource

Authorizations:
Request Body schema: application/json

Consumption resource data to be imported into casavi

id
required
string

External identifier of the consumption resource. Should be unique.

name
required
string

Consumption resource name. Should not be empty

unit
required
string

Consumption resource measure unit. Should not be empty

notes
string

Consumption resource notes

Responses

Request samples

Content type
application/json
{
  • "id": "20131",
  • "name": "Water",
  • "unit": "qm",
  • "notes": "Test type"
}

Get consumption resource by Id

Authorizations:
path Parameters
resourceId
required
string

ID of consumption resource to return

Responses

Response samples

Content type
application/json
{
  • "id": "20131",
  • "name": "Water",
  • "unit": "qm",
  • "notes": "Test type"
}

Update consumption resource

Authorizations:
path Parameters
resourceId
required
string

ID of consumption resource to return

Request Body schema: application/json

Consumption resource data to be updated

id
required
string

External identifier of the consumption resource. Should be unique.

name
required
string

Consumption resource name. Should not be empty

unit
required
string

Consumption resource measure unit. Should not be empty

notes
string

Consumption resource notes

Responses

Request samples

Content type
application/json
{
  • "id": "20131",
  • "name": "Water",
  • "unit": "qm",
  • "notes": "Test type"
}

Response samples

Content type
application/json
{
  • "id": "20131",
  • "name": "Water",
  • "unit": "qm",
  • "notes": "Test type"
}

Deletes a consumption resource

Authorizations:
path Parameters
resourceId
required
string

ID of consumption resource to return

Responses

Get List of Meters by unit

Authorizations:
path Parameters
unitId
required
string

ID of unit

query Parameters
page
integer <int32>

Page number

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create Meter for unit

Authorizations:
path Parameters
unitId
required
string

ID of unit to return

Request Body schema: application/json

Meter data to be imported into casavi

id
required
string

External (database) identifier of the consumption meter. Should be unique. This is chosen by you

number
string

Meter number - this is displayed to the end user. Should equal the actual hardware meters number.

notes
string

Meter notes

propertyId
string

External ID of the property.

unitId
string

External ID of the unit.

resourceId
required
string

Consumption resource identifier

Responses

Request samples

Content type
application/json
{
  • "id": "1232441",
  • "number": "Q2312",
  • "notes": "Test type",
  • "propertyId": "P-00451",
  • "unitId": "P-00451-0001",
  • "resourceId": "20131"
}

Get List of Meters by community

Authorizations:
path Parameters
communityId
required
string

ID of community

query Parameters
page
integer <int32>

Page number

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create Meter for community

Authorizations:
path Parameters
communityId
required
string

ID of community to return

Request Body schema: application/json

Meter data to be imported into casavi

id
required
string

External (database) identifier of the consumption meter. Should be unique. This is chosen by you

number
string

Meter number - this is displayed to the end user. Should equal the actual hardware meters number.

notes
string

Meter notes

propertyId
string

External ID of the property.

unitId
string

External ID of the unit.

resourceId
required
string

Consumption resource identifier

Responses

Request samples

Content type
application/json
{
  • "id": "1232441",
  • "number": "Q2312",
  • "notes": "Test type",
  • "propertyId": "P-00451",
  • "unitId": "P-00451-0001",
  • "resourceId": "20131"
}

Get List of Meters

Authorizations:
query Parameters
page
integer <int32>

Page number

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get consumption meter by Id

Authorizations:
path Parameters
meterId
required
string

ID of consumption meter to return

Responses

Response samples

Content type
application/json
{
  • "id": "1232441",
  • "number": "Q2312",
  • "notes": "Test type",
  • "propertyId": "P-00451",
  • "unitId": "P-00451-0001",
  • "resourceId": "20131"
}

Update consumption meter

Authorizations:
path Parameters
meterId
required
string

ID of consumption meter to return

Request Body schema: application/json

Meter to be updated

id
required
string

External (database) identifier of the consumption meter. Should be unique. This is chosen by you

number
string

Meter number - this is displayed to the end user. Should equal the actual hardware meters number.

notes
string

Meter notes

propertyId
string

External ID of the property.

unitId
string

External ID of the unit.

resourceId
required
string

Consumption resource identifier

Responses

Request samples

Content type
application/json
{
  • "id": "1232441",
  • "number": "Q2312",
  • "notes": "Test type",
  • "propertyId": "P-00451",
  • "unitId": "P-00451-0001",
  • "resourceId": "20131"
}

Response samples

Content type
application/json
{
  • "id": "1232441",
  • "number": "Q2312",
  • "notes": "Test type",
  • "propertyId": "P-00451",
  • "unitId": "P-00451-0001",
  • "resourceId": "20131"
}

Deletes a consumption meter

Authorizations:
path Parameters
meterId
required
string

ID of consumption meter to return

Responses

Get List of Consumption Measurements by meter

Authorizations:
path Parameters
meterId
required
string

ID of meter

query Parameters
page
integer <int32>

Page number

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get List of Consumption Measurements

This list is paged, so you will always see maximum of 25 items. Control the displayed offset with page

Authorizations:
query Parameters
page
integer <int32>

Page number

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create bulk Consumption Measurements

Authorizations:
Request Body schema: application/json

Consumption measurements to be imported into casavi

Array ()
id
integer

Identifier of the measurement. Should be unique. This is our internal id, so only in response

value
required
number

Measurement value. Should not be empty

date
required
string <date>

Measurement date in ISO 8601 format

notes
string

Measurement notes

meterId
required
string

Measurement consumption meter

Responses

Request samples

Content type
application/json
[
  • {
    }
]

Get consumption measurement by Id

Authorizations:
path Parameters
measurementId
required
integer <int32>

ID of consumption measurement to return. This is our internal id

Responses

Response samples

Content type
application/json
{
  • "id": 20131,
  • "value": 65465.43,
  • "date": "2015-09-08T00:00:00.000Z",
  • "notes": "Test type",
  • "meterId": "1232441"
}

Update consumption measurement

Update new consumption measurement

Authorizations:
path Parameters
measurementId
required
integer <int32>

ID of consumption measurement to return. This is our internal id

Request Body schema: application/json

Consumption measurement to be updated

id
integer

Identifier of the measurement. Should be unique. This is our internal id, so only in response

value
required
number

Measurement value. Should not be empty

date
required
string <date>

Measurement date in ISO 8601 format

notes
string

Measurement notes

meterId
required
string

Measurement consumption meter

Responses

Request samples

Content type
application/json
{
  • "id": 20131,
  • "value": 65465.43,
  • "date": "2015-09-08T00:00:00.000Z",
  • "notes": "Test type",
  • "meterId": "1232441"
}

Response samples

Content type
application/json
{
  • "id": "1232441",
  • "number": "Q2312",
  • "notes": "Test type",
  • "propertyId": "P-00451",
  • "unitId": "P-00451-0001",
  • "resourceId": "20131"
}

Deletes a consumption measurement

Authorizations:
path Parameters
measurementId
required
integer <int32>

ID of consumption measurement to return. This is our internal id

Responses

Changelog

1.12.10 2024-04-12

Changed

  • Add a query parameter called includeInactiveContracts to include inactive contracts when getting units of a specific property /properties/{propertyId}/units

1.12.9 2024-04-03

Changed

  • Creating a new webhook subscription will return a response includes a Location header with the url to delete the webhook subscription to enablePower Automate.

1.12.2 2024-01-24

Features

  • Add new attribute called appLink to Contact, Property, Unit and Ticket models to provide a link to casavi web app for the entities.

1.12.0 2023-05-12

Changed

  • The documentation has moved to /v1/docs/manager, with the release of api v2. All other routes remain the same as before.

1.11.5 2023-04-20

Changed

  • Updating ticket attachments is not possible using the tickets PUT endpoint. The documentation has been corrected. To add an attachment to a ticket, use the Ticket Comment API to explicitly create a new comment. The provided attachment(s) will be connected to the ticket via this comment.
  • The ticket reportedAt field may contain an invalid date. In this case the string Invalid Date is returned. The documentation has been updated to make this more transparent.

1.11.4 2022-09-21

Bugfixes

  • Fixed an issue where some tokens were still valid after the key and secret that generated them was deactivated.

1.11.3 - 2022-09-08

Features

  • The propertyMscNumber on unit to support units belonging to a property/community to have different propertyMscNumber than the property mscNumber

1.11.2 - 2022-03-16

Features

  • Add new property address to the unit entity.

1.11.1 - 2022-02-28

Bugfixes

  • Fixes file upload issue.

1.11.0 - 2021-12-01

Features

  • The unit model response payload has been updated to include the following standard fields: area, floor, rooms, mscNumber, and purpose.
  • The unit model response payload now contains votingShare if the Hybrid Digital Owner Assembly module has been activated.

1.10.0 - 2021-05-07

Bugfixes

  • Fixes document_downloaded REST hook not being triggered when a document is downloaded
  • Restores previous pagination behaviour for GET properties endpoint

Features

  • Added new properties propertyId and contactId to REST hook document_downloaded payload

1.9.0 - 2021-05-05

Features

  • Getting a ticket by Id now returns custom fields for the ticket
  • Ticket tasks now include attachment data
  • Tickets response schema now includes attachment array with reference to file ids

1.8.0 - 2021-04-22

Features

  • Added API endpoint for retrieving posts, updating and deleting them

Bugfixes

  • Fixed the endpoint for creating posts always returning an error

1.7.0 - 2021-04-21

Features

  • Task/Order endpoints are moved from /tickets/{ticketId}/task to /tickets/{ticketId}/tasks to be in sync with other endpoints that are plural as well.
  • Changed endpoint for tasks/orders, so that the taskId is renamed to id to be in line with the other endpoints. Also updated the description for orders with new fields that can now be used.
  • Task/Order completed property is deprecated and replaced with status field that can better reflect the differnt states.

Bugfixes

  • Updated a lot of the documentation to reflect the actual current API

1.6.0 - 2021-03-13

Features

  • Appointments can now be created via API

1.5.1 - 2021-03-04

Bugfixes

  • Contracts with archived contacts are not returned anymore

1.5.0 - 2021-03-02

Features

  • Deprecated GET /tickets/{ticketId}/task
  • Added comments to response of GET /tickets/{ticketId}/tasks/{taskId}

1.4.0 - 2021-02-01

Features

  • GET /properties now returns custom fields, like the other endpoints

1.3.0 - 2021-01-14

Features

  • Imporing documents now allows for sharing these with custom roles, i.e. "roles": ["owner", "custom:Beirat"]

1.2.0 - 2020-12-01

Features

  • Properties have a new attribute number ("Objektnummer") that can be imported and requested via API

1.1.1 - 2020-09-24

Start of the changelog