Download OpenAPI specification:Download
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.
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:
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.
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.
You need an API key & a secret (supplied by your casavi customer service). Then follow these steps to authenticate against this API:
/authenticate
with application/json payload { key, secret }
.{ token, expiresAt }
.token
in the header field token
of other requests.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/Times are always returned in ISO 8601 format (YYYY-MM-DDThh:mm:ss.sssZ). They are also returned in UTC.
We also have a documentation for the Community API which describes the API the community app uses.
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
andemail
is just ignored.Data to authenticate into casavi
key required | string API key. Should not be empty |
secret required | string API secret |
{- "key": "04523b90-9ee1-49f7-af31-b1f24efe84ad",
- "secret": "ksdasji0-sf818-nfn81-ms9a-ams9d9a9as"
}
{- "token": "a2cf47a9-3d2e-455e-a34b-7a79f11aa7f9",
- "expiresAt": "1985-12-05T15:31:10.000Z"
}
Refresh access token
Data to authenticate into casavi
apiKey required | string API key. Should not be empty |
token required | string Old access token |
{- "apiKey": "04523b90-9ee1-49f7-af31-b1f24efe84ad",
- "token": "a2cf47a9-3d2e-455e-a34b-7a79f11aa7f9"
}
{- "token": "a2cf47a9-3d2e-455e-a34b-7a79f11aa7f9",
- "expiresAt": "1985-12-05T15:31:10.000Z"
}
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}
.
The import endpoint takes in a master data object and asynchronously imports it into casavi.
Data to be imported into casavi
Array of objects (Contact) | |
Array of objects (PropertyImport) | |
Array of objects (Responsibility) |
{- "contacts": [
- {
- "id": "C-0000312",
- "title": "Doctor",
- "salutation": "Family",
- "firstName": "Joe",
- "lastName": "Smith",
- "companyName": "ACME Industries",
- "companyRole": "Director",
- "email": "joe.smith@acme.com",
- "telephone": "+49 (0) 89 132",
- "mobile": "+49 (0) 89 132",
- "fax": "+49 (0) 89 132",
- "street": "Example street 7",
- "postalCode": "80331",
- "city": "Munich",
- "country": "Germany",
- "note": "Prefers to be contacted by email, telephone only in working hours.",
- "preferredWayOfContact": "LETTER",
- "customFields": {
- "Email2": "someemail@domain.tld",
- "Anschrift": "Max Mustermann und Maria Musterfrau"
},
}
], - "properties": [
- {
- "id": "P-00451",
- "name": "Easy Living Apartments",
- "note": "Test description",
- "country": "Germany",
- "city": "Munich",
- "postalCode": 80331,
- "addresses": [
- {
- "street": "Main street 7",
- "units": [
- {
- "id": "P-00451-0001",
- "number": "0001",
- "propertyMscNumber": "15",
- "name": "Unit 49812-1312-1",
- "note": "Description for a unit",
- "contracts": [
- {
- "id": "P-00451-0001-01",
- "contacts": [
- "C-0000312"
], - "type": "renter",
- "startDate": "2017-04-11T09:53:42.891Z",
- "endDate": "2019-04-11T09:53:42.891Z"
}
], - "customFields": {
- "Email2": "someemail@domain.tld",
- "Anschrift": "Max Mustermann und Maria Musterfrau"
}
}
]
}
], - "customFields": {
- "Email2": "someemail@domain.tld",
- "Anschrift": "Max Mustermann und Maria Musterfrau"
}, - "number": 12345
}
], - "responsibilities": [
- {
- "name": "Property Management",
- "contactId": "C-0000312",
- "propertyId": "P-00451",
- "email": "contactme@acme.com",
- "telephone": "+49 89 12312312313",
- "showOnDashboard": true,
- "showInCommunity": true,
- "delete": false
}
]
}
{- "jobId": "string"
}
Returns the status of a running import.
jobId required | string Example: 58eca7a398af3a14a3af2efe Id of the import (Returned when starting an import (POST /import)) |
{- "id": "58eca7a398af3a14a3af2efe",
- "results": {
- "contacts": {
- "created": 21,
- "updated": 214,
- "deleted": 0,
- "failed": [
- {
- "entity": { },
- "errors": [
- {
- "model": "Contact",
- "field": "id",
- "reason": "not_found"
}
]
}
]
}, - "properties": {
- "created": 21,
- "updated": 214,
- "deleted": 0,
- "failed": [
- {
- "entity": { },
- "errors": [
- {
- "model": "Contact",
- "field": "id",
- "reason": "not_found"
}
]
}
]
}, - "units": {
- "created": 21,
- "updated": 214,
- "deleted": 0,
- "failed": [
- {
- "entity": { },
- "errors": [
- {
- "model": "Contact",
- "field": "id",
- "reason": "not_found"
}
]
}
]
}, - "documents": {
- "created": 21,
- "updated": 214,
- "deleted": 0,
- "failed": [
- {
- "entity": { },
- "errors": [
- {
- "model": "Contact",
- "field": "id",
- "reason": "not_found"
}
]
}
]
}, - "responsibilities": {
- "created": 21,
- "updated": 214,
- "deleted": 0,
- "failed": [
- {
- "entity": { },
- "errors": [
- {
- "model": "Contact",
- "field": "id",
- "reason": "not_found"
}
]
}
]
}
}, - "progress": 0.65,
- "completed": true,
- "completedAt": "2017-04-11T09:53:42.891Z"
}
List of properties received from casavi
page | integer <int32> Page number |
{- "count": 1,
- "page": 1,
- "pageCount": 1,
- "rows": [
- {
- "id": "P-00451",
- "internalId": 41251,
- "name": "Easy Living Apartments",
- "note": "Test description",
- "country": "Germany",
- "city": "Munich",
- "postalCode": 80331,
- "number": 12345,
- "addresses": [
- {
- "street": "Main street 14"
}
], - "responsibilities": [
- {
- "contactId": "C412",
- "contactName": "Max Mustermann",
- "contactInternalId": 553,
- "roleName": "Hausverwaltung",
- "roleType": "internal",
- "email": "maxmustermann@hausverwaltung.de",
- "telephone": "123 23123-0"
}
], - "customFields": {
- "Email2": "someemail@domain.tld",
- "Anschrift": "Max Mustermann und Maria Musterfrau"
},
}
]
}
Get property by Id
propertyId required | string ID of property to return |
{- "id": "P-00451",
- "internalId": 41251,
- "name": "Easy Living Apartments",
- "note": "Test description",
- "country": "Germany",
- "city": "Munich",
- "postalCode": 80331,
- "number": 12345,
- "addresses": [
- {
- "street": "Main street 14"
}
], - "responsibilities": [
- {
- "contactId": "C412",
- "contactName": "Max Mustermann",
- "contactInternalId": 553,
- "roleName": "Hausverwaltung",
- "roleType": "internal",
- "email": "maxmustermann@hausverwaltung.de",
- "telephone": "123 23123-0"
}
], - "customFields": {
- "Email2": "someemail@domain.tld",
- "Anschrift": "Max Mustermann und Maria Musterfrau"
},
}
propertyId required | string ID of property to return |
page | integer Zero based result page to return |
includeInactiveContracts | boolean Toggle to include inactive contracts in the response |
{- "rows": [
- {
- "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": [
- {
- "id": "P-00451-0001-01",
- "contacts": [
- "C-0000312"
], - "type": "renter",
- "startDate": "2017-04-11T09:53:42.891Z",
- "endDate": "2019-04-11T09:53:42.891Z"
}
], - "customFields": {
- "Email2": "someemail@domain.tld",
- "Anschrift": "Max Mustermann und Maria Musterfrau"
}
}
], - "pageCount": 0,
- "page": 0
}
{- "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": [
- {
- "id": "P-00451-0001-01",
- "contacts": [
- "C-0000312"
], - "type": "renter",
- "startDate": "2017-04-11T09:53:42.891Z",
- "endDate": "2019-04-11T09:53:42.891Z"
}
], - "customFields": {
- "Email2": "someemail@domain.tld",
- "Anschrift": "Max Mustermann und Maria Musterfrau"
}
}
List of contacts received from casavi
page | integer <int32> Page number |
[- {
- "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",
- "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": {
- "Email2": "someemail@domain.tld",
- "Anschrift": "Max Mustermann und Maria Musterfrau"
},
}
]
Get contact by Id
contactId required | string ID of contact to return |
{- "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",
- "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": {
- "Email2": "someemail@domain.tld",
- "Anschrift": "Max Mustermann und Maria Musterfrau"
},
}
Array of objects (Contact) | |
Array of objects (PropertyImport) | |
Array of objects (Responsibility) |
{- "contacts": [
- {
- "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",
- "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": {
- "Email2": "someemail@domain.tld",
- "Anschrift": "Max Mustermann und Maria Musterfrau"
},
}
], - "properties": [
- {
- "id": "P-00451",
- "name": "Easy Living Apartments",
- "note": "Test description",
- "country": "Germany",
- "city": "Munich",
- "postalCode": 80331,
- "addresses": [
- {
- "street": "Main street 7",
- "units": [
- {
- "id": "P-00451-0001",
- "number": "0001",
- "propertyMscNumber": "15",
- "name": "Unit 49812-1312-1",
- "note": "Description for a unit",
- "contracts": [
- {
- "id": "P-00451-0001-01",
- "contacts": [
- "C-0000312"
], - "type": "renter",
- "startDate": "2017-04-11T09:53:42.891Z",
- "endDate": "2019-04-11T09:53:42.891Z"
}
], - "customFields": {
- "Email2": "someemail@domain.tld",
- "Anschrift": "Max Mustermann und Maria Musterfrau"
}
}
]
}
], - "customFields": {
- "Email2": "someemail@domain.tld",
- "Anschrift": "Max Mustermann und Maria Musterfrau"
}, - "number": 12345
}
], - "responsibilities": [
- {
- "name": "Property Management",
- "contactId": "C-0000312",
- "propertyId": "P-00451",
- "email": "contactme@acme.com",
- "telephone": "+49 89 12312312313",
- "showOnDashboard": true,
- "showInCommunity": true,
- "delete": false
}
]
}
This returns a list of max 25 tickets, use the query parameter page to request the next 25.
page | integer <int32> Page number |
date | string Example: Certain date after which those tickets are received in ISO 8601 format |
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 |
[- {
- "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": [
- "C-0000312",
- "C-0000450"
], - "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": [
- 512,
- 321
], - "attachmentDetails": [
- {
- "id": 123,
- "name": "example.pdf",
- "title": "An example file",
- "type": "application/pdf",
- "size": 4523,
}
],
}
]
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). |
{- "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": [
- "C-0000312",
- "C-0000450"
], - "assignedToId": "M-000113",
- "comment": "We started working on your issue and will update you with the progress.",
- "suppressRatingRequest": true,
- "attachments": [
- 512,
- 321
]
}
{- "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": [
- "C-0000312",
- "C-0000450"
], - "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": [
- 512,
- 321
], - "attachmentDetails": [
- {
- "id": 123,
- "name": "example.pdf",
- "title": "An example file",
- "type": "application/pdf",
- "size": 4523,
}
], - "comments": [
- {
- "id": "C-0000231",
- "text": "Test ticket comment",
- "authorId": "E-000481",
- "authorName": "John Doe",
- "createdAt": "2016-08-05T00:00:00.000Z",
- "attachments": [
- 512,
- 321
], - "attachmentDetails": [
- {
- "id": 123,
- "name": "example.pdf",
- "title": "An example file",
- "type": "application/pdf",
- "size": 4523,
}
]
}
], - "tasks": [
- {
- "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,",
- "attachments": [ ],
- "attachmentLinks": [ ],
- "attachmentDetails": [ ]
}
], - "customFields": {
- "Issue": "Lost key",
- "Description": "Please send a Locksmith!"
}
}
ticketId required | string Example: c8a375b3-d92f-43c2-b836-a5ac315c9c97 ID of ticket to return |
{- "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": [
- "C-0000312",
- "C-0000450"
], - "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": [
- 512,
- 321
], - "attachmentDetails": [
- {
- "id": 123,
- "name": "example.pdf",
- "title": "An example file",
- "type": "application/pdf",
- "size": 4523,
}
], - "comments": [
- {
- "id": "C-0000231",
- "text": "Test ticket comment",
- "authorId": "E-000481",
- "authorName": "John Doe",
- "createdAt": "2016-08-05T00:00:00.000Z",
- "attachments": [
- 512,
- 321
], - "attachmentDetails": [
- {
- "id": 123,
- "name": "example.pdf",
- "title": "An example file",
- "type": "application/pdf",
- "size": 4523,
}
]
}
], - "tasks": [
- {
- "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,",
- "attachments": [ ],
- "attachmentLinks": [ ],
- "attachmentDetails": [ ]
}
], - "customFields": {
- "Issue": "Lost key",
- "Description": "Please send a Locksmith!"
}
}
ticketId required | string Example: c8a375b3-d92f-43c2-b836-a5ac315c9c97 ID of ticket to return |
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. |
{- "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": [
- "C-0000312",
- "C-0000450"
], - "assignedToId": "M-000113",
- "comment": "We started working on your issue and will update you with the progress.",
- "suppressRatingRequest": true
}
{- "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": [
- "C-0000312",
- "C-0000450"
], - "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": [
- 512,
- 321
], - "attachmentDetails": [
- {
- "id": 123,
- "name": "example.pdf",
- "title": "An example file",
- "type": "application/pdf",
- "size": 4523,
}
], - "comments": [
- {
- "id": "C-0000231",
- "text": "Test ticket comment",
- "authorId": "E-000481",
- "authorName": "John Doe",
- "createdAt": "2016-08-05T00:00:00.000Z",
- "attachments": [
- 512,
- 321
], - "attachmentDetails": [
- {
- "id": 123,
- "name": "example.pdf",
- "title": "An example file",
- "type": "application/pdf",
- "size": 4523,
}
]
}
], - "tasks": [
- {
- "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,",
- "attachments": [ ],
- "attachmentLinks": [ ],
- "attachmentDetails": [ ]
}
], - "customFields": {
- "Issue": "Lost key",
- "Description": "Please send a Locksmith!"
}
}
Add new ticket survey
ticketId required | string Example: c8a375b3-d92f-43c2-b836-a5ac315c9c97 Id of ticket |
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) |
{- "id": 1,
- "assignedToId": 6,
- "title": "Test survey",
- "text": "Some description to clarify what this question is about.",
- "choices": [
- {
- "value": 1,
- "label": "Answer 1"
}
]
}
Get ticket activities
ticketId required | string Example: c8a375b3-d92f-43c2-b836-a5ac315c9c97 ID of ticket to return |
page | integer <int32> Page number |
{- "id": 20131,
- "title": "Test ticket activity"
}
ticketId required | string Example: c8a375b3-d92f-43c2-b836-a5ac315c9c97 Id of ticket |
page | integer <int32> Page number |
{- "id": "C-0000231",
- "text": "Test ticket comment",
- "authorId": "E-000481",
- "authorName": "John Doe",
- "createdAt": "2016-08-05T00:00:00.000Z",
- "attachments": [
- 512,
- 321
], - "attachmentDetails": [
- {
- "id": 123,
- "name": "example.pdf",
- "title": "An example file",
- "type": "application/pdf",
- "size": 4523,
}
]
}
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.
ticketId required | string Example: c8a375b3-d92f-43c2-b836-a5ac315c9c97 Id of ticket |
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) |
{- "id": "C-0000231",
- "text": "Test ticket comment",
- "isInternal": false,
- "authorId": "E-000481",
- "authorEmail": "manager1@propertymanagement.com",
- "fallbackToAccount": false,
- "attachments": [
- 512,
- 321
]
}
{- "id": "C-0000231",
- "text": "Test ticket comment",
- "authorId": "E-000481",
- "authorName": "John Doe",
- "createdAt": "2016-08-05T00:00:00.000Z",
- "attachments": [
- 512,
- 321
], - "attachmentDetails": [
- {
- "id": 123,
- "name": "example.pdf",
- "title": "An example file",
- "type": "application/pdf",
- "size": 4523,
}
]
}
Update ticket comment
ticketId required | string Example: c8a375b3-d92f-43c2-b836-a5ac315c9c97 Id of ticket |
commentId required | string Id of comment |
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 |
{- "id": "C-0000231",
- "text": "Test ticket comment",
- "isInternal": false
}
{- "id": "C-0000231",
- "text": "Test ticket comment",
- "authorId": "E-000481",
- "authorName": "John Doe",
- "createdAt": "2016-08-05T00:00:00.000Z",
- "attachments": [
- 512,
- 321
], - "attachmentDetails": [
- {
- "id": 123,
- "name": "example.pdf",
- "title": "An example file",
- "type": "application/pdf",
- "size": 4523,
}
]
}
ticketId required | string Example: c8a375b3-d92f-43c2-b836-a5ac315c9c97 Id of ticket |
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 | 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). |
{- "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": [
- 512,
- 321
]
}
{- "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": [
- 512,
- 321
], - "attachmentDetails": [
- {
- "id": 123,
- "name": "example.pdf",
- "title": "An example file",
- "type": "application/pdf",
- "size": 4523,
}
]
}
ticketId required | string Example: c8a375b3-d92f-43c2-b836-a5ac315c9c97 Id of ticket |
taskId required | string Example: 1-80848 Id of task |
{- "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": [
- 512,
- 321
], - "attachmentDetails": [
- {
- "id": 123,
- "name": "example.pdf",
- "title": "An example file",
- "type": "application/pdf",
- "size": 4523,
}
], - "comments": [
- {
- "id": "C-0000231",
- "text": "Test ticket comment",
- "authorId": "E-000481",
- "authorName": "Joe Smith",
- "createdAt": "2016-08-05T00:00:00.000Z",
- "attachments": [ ],
- "attachmentLinks": [ ],
- "attachmentDetails": [ ]
}
]
}
ticketId required | string Example: c8a375b3-d92f-43c2-b836-a5ac315c9c97 Id of ticket |
taskId required | string Id of task |
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 | 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). |
{- "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": [
- 512,
- 321
]
}
{- "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": [
- 512,
- 321
], - "attachmentDetails": [
- {
- "id": 123,
- "name": "example.pdf",
- "title": "An example file",
- "type": "application/pdf",
- "size": 4523,
}
], - "comments": [
- {
- "id": "C-0000231",
- "text": "Test ticket comment",
- "authorId": "E-000481",
- "authorName": "Joe Smith",
- "createdAt": "2016-08-05T00:00:00.000Z",
- "attachments": [ ],
- "attachmentLinks": [ ],
- "attachmentDetails": [ ]
}
]
}
Upload files to later use them as attachments for tickets and ticket comments. Maximum request size is 10 MB.
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 |
Binary data of the file (max 10 MB)
{- "id": 345
}
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": [
- "C-0000312",
- "C-0000450"
], - "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": [
- 512,
- 321
], - "attachmentDetails": [
- {
- "id": 123,
- "name": "example.pdf",
- "title": "An example file",
- "type": "application/pdf",
- "size": 4523,
}
],
}
Using web hooks or (REST hooks) it is possible to listen to events in casavi and react in your application.
Webhook Trigger Policy:
Webhooks are currently triggered only once for each event. In case of delivery failure, the webhook will not be resent. Please ensure that your endpoint is capable of handling the request upon receipt.
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.
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. |
{- "eventName": "contact_created",
}
{- "id": 11
}
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": {
- "contractId": "A-0024",
- "tenantId": 1,
- "contactId": 200,
- "propertyId": "P-00451",
- "unitId": "P-00451-0001",
- "startAt": "2020-09-01T00:00:00.000Z",
- "endAt": "2022-10-01T00:00:00.000Z"
}
}
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
}
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
}
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
}
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"
}
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 | 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"
}
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 | 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) Please note that it is important to select the correct sharedWith type. Especially when a document is shared in a unit or property, then the role includes also future owners and renters. If the document should only be visible for the current owner or renter, then `sharedWith: 'contact'` should be used. | |
delete | boolean Set to true to delete any existing document. If delete is set to true then only the id is required. |
{- "id": "5512-4353",
- "title": "Musterstraße 3 - Whg 5 - Abrechnung 2021",
- "name": "Musterstraße_3-Whg_5-Abrechnung_2021.pdf",
- "type": [
- "RootDocumentType",
- "ParentDocumentType1",
- "ParentDocumentType2",
- "DocumentType"
], - "publishedAt": "2017-04-11T09:53:42.891Z",
- "contentType": "application/pdf",
- "content": "U3dhZ2dlciByb2Nrcw==",
- "resource": "this_custom_dms",
- "sharedWith": [
- {
- "with": "property",
- "propertyId": "P-00451",
- "roles": [
- "owner",
- "renter",
- "custom:Board"
]
}
], - "delete": true
}
{- "jobId": "string"
}
documentId required | string id of the document to retrieve |
{- "id": "5512-4353",
- "internalId": 4215213,
- "title": "Musterstraße 3 - Whg 5 - Abrechnung 2021",
- "publishedAt": "2017-04-11T09:53:42.891Z",
- "resource": "someDMS",
- "sharedWith": [
- {
- "with": "property",
- "propertyId": "P-00451",
- "roles": [
- "owner",
- "renter",
- "custom:Board"
]
}
], - "downloadCount": 201,
- "firstDownloadAt": "2017-04-15T00:00:00.000Z"
}
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. |
{- "id": "5512-4353",
- "title": "Aufzug Reperatur",
- "text": "Lorem Ipsum dolor sit amet",
- "authorId": "person412",
- "propertyId": "property-412",
- "allowComments": false,
- "isImportant": false,
- "showOnInfoboard": false
}
{- "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"
}
{- "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"
}
postId required | string ID of the post |
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. |
{- "id": "5512-4353",
- "title": "Aufzug Reperatur",
- "text": "Lorem Ipsum dolor sit amet",
- "authorId": "person412",
- "propertyId": "property-412",
- "allowComments": false,
- "isImportant": false,
- "showOnInfoboard": false
}
{- "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"
}
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 |
{- "id": "appointment-177",
- "title": "Elevator repair",
- "text": "Lorem Ipsum dolor sit amet",
- "location": "3rd floor",
- "authorId": "person412",
- "allDay": true,
- "showOnInfoboard": true,
- "propertyIds": [
- "property-412",
- "property-400",
- "property-19"
], - "roles": [
- "renter",
- "owner",
- "resident"
], - "notifyRecipients": true,
- "dateStart": "2017-03-05T11:00:00.000Z",
- "dateEnd": "2017-03-05T14:00:00.000Z"
}
{- "id": "appointment-177",
- "title": "Elevator repair",
- "text": "Lorem Ipsum dolor sit amet",
- "location": "3rd floor",
- "allDay": true,
- "showOnInfoboard": true,
- "propertyIds": [
- "property-412",
- "property-400",
- "property-19"
], - "roles": [
- "Tenant",
- "Owner",
- "Resident"
], - "dateStart": "2017-03-05T11:00:00.000Z",
- "dateEnd": "2017-03-05T11:00:00.000Z"
}
List of staff members in casavi
page | integer <int32> Page number |
[- {
- "id": "C-0000312",
- "internalId": 41251,
- "firstName": "Joe",
- "lastName": "Smith",
- "email": "joe.smith@acme.com",
- "role": "MANAGER"
}
]
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. |
string Email where the staff member can be contacted | |
role required | string Enum: "MANAGER" "ADMIN" "EDITOR" Role of the staff member in tenant |
{- "id": "C-0000312",
- "firstName": "Joe",
- "lastName": "Smith",
- "email": "joe.smith@acme.com",
- "role": "MANAGER"
}
{- "id": "C-0000312",
- "internalId": 41251,
- "firstName": "Joe",
- "lastName": "Smith",
- "email": "joe.smith@acme.com",
- "role": "MANAGER"
}
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 |
{- "id": "20131",
- "name": "Water",
- "unit": "qm",
- "notes": "Test type"
}
resourceId required | string ID of consumption resource to return |
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 |
{- "id": "20131",
- "name": "Water",
- "unit": "qm",
- "notes": "Test type"
}
{- "id": "20131",
- "name": "Water",
- "unit": "qm",
- "notes": "Test type"
}
unitId required | string ID of unit |
page | integer <int32> Page number |
[- {
- "id": "1232441",
- "number": "Q2312",
- "notes": "Test type",
- "propertyId": "P-00451",
- "unitId": "P-00451-0001",
- "resourceId": "20131"
}
]
unitId required | string ID of unit to return |
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 |
{- "id": "1232441",
- "number": "Q2312",
- "notes": "Test type",
- "propertyId": "P-00451",
- "unitId": "P-00451-0001",
- "resourceId": "20131"
}
communityId required | string ID of community |
page | integer <int32> Page number |
[- {
- "id": "1232441",
- "number": "Q2312",
- "notes": "Test type",
- "propertyId": "P-00451",
- "unitId": "P-00451-0001",
- "resourceId": "20131"
}
]
communityId required | string ID of community to return |
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 |
{- "id": "1232441",
- "number": "Q2312",
- "notes": "Test type",
- "propertyId": "P-00451",
- "unitId": "P-00451-0001",
- "resourceId": "20131"
}
[- {
- "id": "1232441",
- "number": "Q2312",
- "notes": "Test type",
- "propertyId": "P-00451",
- "unitId": "P-00451-0001",
- "resourceId": "20131"
}
]
meterId required | string ID of consumption meter to return |
{- "id": "1232441",
- "number": "Q2312",
- "notes": "Test type",
- "propertyId": "P-00451",
- "unitId": "P-00451-0001",
- "resourceId": "20131"
}
meterId required | string ID of consumption meter to return |
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 |
{- "id": "1232441",
- "number": "Q2312",
- "notes": "Test type",
- "propertyId": "P-00451",
- "unitId": "P-00451-0001",
- "resourceId": "20131"
}
{- "id": "1232441",
- "number": "Q2312",
- "notes": "Test type",
- "propertyId": "P-00451",
- "unitId": "P-00451-0001",
- "resourceId": "20131"
}
meterId required | string ID of meter |
page | integer <int32> Page number |
[- {
- "id": 20131,
- "value": 65465.43,
- "date": "2015-09-08T00:00:00.000Z",
- "notes": "Test type",
- "meterId": "1232441"
}
]
This list is paged, so you will always see maximum of 25 items. Control the displayed offset with page
page | integer <int32> Page number |
[- {
- "id": 20131,
- "value": 65465.43,
- "date": "2015-09-08T00:00:00.000Z",
- "notes": "Test type",
- "meterId": "1232441"
}
]
Consumption measurements to be imported into casavi
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 |
[- {
- "id": 20131,
- "value": 65465.43,
- "date": "2015-09-08T00:00:00.000Z",
- "notes": "Test type",
- "meterId": "1232441"
}
]
measurementId required | integer <int32> ID of consumption measurement to return. This is our internal id |
{- "id": 20131,
- "value": 65465.43,
- "date": "2015-09-08T00:00:00.000Z",
- "notes": "Test type",
- "meterId": "1232441"
}
Update new consumption measurement
measurementId required | integer <int32> ID of consumption measurement to return. This is our internal id |
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 |
{- "id": 20131,
- "value": 65465.43,
- "date": "2015-09-08T00:00:00.000Z",
- "notes": "Test type",
- "meterId": "1232441"
}
{- "id": "1232441",
- "number": "Q2312",
- "notes": "Test type",
- "propertyId": "P-00451",
- "unitId": "P-00451-0001",
- "resourceId": "20131"
}
includeInactiveContracts
to include inactive contracts when getting units of a specific property /properties/{propertyId}/unitsLocation
header with the url to delete the webhook subscription to enablePower Automate
./v1/docs/manager
, with the release of api v2. All other routes remain the same as before.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.propertyMscNumber
on unit to support units belonging to a property/community to have different propertyMscNumber than the property mscNumberarea
, floor
, rooms
, mscNumber
, and purpose
.votingShare
if the Hybrid Digital Owner Assembly module has been activated.document_downloaded
REST hook not being triggered when a document is downloadedpropertyId
and contactId
to REST hook document_downloaded
payloadattachment
array with reference to file ids/tickets/{ticketId}/task
to
/tickets/{ticketId}/tasks
to be in sync with other endpoints that are
plural as well.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.completed
property is deprecated and replaced with status
field that can better reflect the differnt states."roles": ["owner", "custom:Beirat"]
number
("Objektnummer") that can
be imported and requested via API