{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"d006560e-d8af-42a1-813b-47f7d1140967","name":"Resivo API Documentation","description":"This Postman collection provides a set of endpoints that can be used to setup full access control of installations.\n\n## Base URL\n\nAll endpoints use the `resivoBaseUrl` environment variable. When you download/run this collection with an environment, this is already set for you.\n\nresivo environments:\n\n- PRODUCTION: [https://api.resivo.io](https://api.resivo.io)\n    \n\n## Authentication\n\nThis collection leverages environment variables to simplify the management of API bearer tokens.\n\nIn order to make sure that you have a valid token, see endpoints and instructions in the `Authentication` folder.\n\n## About resivo\n\nTo be able to start with resivo you need a basic setup. How resivo works and what you need for your setup can be found here: [About resivo.](https://resivo.dormakaba.com/)\n\n# API Versions\n\nThe resivo API is versioned through through a prefix in the URL of the endpoints, e.g. `.../v8/users/login`. For details regarding API versions and potentially breaking changes, view the [Changelog](https://api.resivo.io/changelog).\n\nThe versions below are currently supported. Older versions will be phased out eventually by their \"end of life\" date.\n\n| **Version Number** | **Release date** | **End of Life** |\n| --- | --- | --- |\n| v9 | coming soon |  |\n| v8 | 2025/12/15 | tbd |\n| v7 | 2025/10/02 | tbd |\n| v6 | 2025/04/27 | tbd |\n| v5 | 2024/10/06 | tbd |\n| v4 | 2024/07/03 | 2025/04/30 |\n\n# Glossary\n\nIn dormakaba we use a certain language when it comes to keys and locks.\n\n| Term | Description |\n| --- | --- |\n| Access Manager | [Fact sheet](https://www.dormakaba.com/at-de/angebot/produkte/systemloesungen-zutritt-und-zeit/zutrittsleser-peripherie/dormakaba-zutrittsmanager-92-32-fuer-exivo--ka_500206) |\n| Admin Portal | Single page application created and hosted by dormakaba digital |\n| Apartment | An apartment is usually assigned to a site and basically reflects a physical apartment |\n| Blacklist | Counterpart of a whitelist that contains CIDs that are not authorized to open a given component. Not needed for whitelisted keys (we can just remove those from the whitelist), but for dynamic digital keys, to make sure they cannot open a door anymore. |\n| CID | Typically the (hex) number of a physical medium, which can be found e.g on a badge or a keyfob. Can also be the number of a static digital key (also called static credential). |\n| Commissioning | This is the process to configure a component. For example when a new digital cylinder is bought it has no configurations on it thus you cannot open it. With the commissioning we will write e.g time settings, whitelist entries on the digital cylinder in order to open. |\n| Components | Components are installed at the door and have a unique physical Id which is not changeable. A component can be an Access Manager or a Digital Cylinder |\n| Connected components | General expression for components that can be remotely accessed for automated configuration and whitelist changes (also called online components and wireless components) |\n| Contract | Every tenant which wants to rent an apartment and gets registered in resivo with e.g Name and email address is a contract. A contract always belongs to an apartment and consists of a tenant and doors as well as an authorization set (keys). |\n| Credentials | Overarching term for both physical media (keys) and digital keys |\n| Device | Same as component or hardware or door. There are differences between online / offline devices, physical and digital devices (IoT) devices. |\n| Digital device | Also called IoT Device or digital component. These are the devices which represent the physical devices in the cloud. |\n| Digital key | A digital key is sent to either the resivo home app or the dormakaba mobile access app in order to open the door. Digital keys are mainly used in the resivo home app but also for the guest access in the Admin Portal. There is a difference between static keys (or static credentials) and dynamic keys (or dynamic credentials) |\n| Door | Usually this is the physical door including the physical lock. |\n| Dynamic credentials | A more advanced version of a digital key that acts not only as an identifier (like a physical medium key), but can also contain various restrictions to express when the key is valid (e.g. time ranges). |\n| Also, dynamic keys must not be whitelisted, so no interaction with the authorized component(s) is necessary. |  |\n| Dynamic key | See Dynamic credentials |\n| Gateway | [Fact sheet Gateway](https://www.dormakaba.com/ch-de/angebot/produkte/zutritt-und-zeit/zutrittsleser-peripherie/dormakaba-wireless-gateway-90-42--ka_500007) |\n| Hardware | Synonymous with component, device. Can be a Gateway, Access Manager, Extender, Registration Unit, Digital Cylinder, C-Lever and so on. |\n| Home app | The mobile app which is created and maintain by dormakaba digital. The mobile app is used for the tenants to manage their apartment. Like opening the apartment door or sending digital keys. |\n| IoT Device | See also connected devices. This Device can be remotely accessed for automated configuration and whitelist changes (online / wireless components). |\n| Key file | File which contains all the metadata for the mobile apps |\n| LIAM | Legic IAM (Identify and Access Management), responsible for the digital key deployments. |\n| NFC | Near field communication (can only be used on Android) |\n| Offline device | Synonymous with offline components, doors, hardware. Offline means this device is not connected with the cloud and thus all configurations are done manually (through an mobile app) |\n| Offline components | Synonymous with offline devices, doors, hardware. Offline means this component is not connected with the cloud and thus all configurations are done manually (through an mobile app) |\n| Online components | Synonymous with online devices, doors, hardware, connected devices and IoT Devices. This component can be remotely accessed for automated configuration and whitelist changes (online / wireless components). |\n| Online devices | Synonymous with online components, doors, hardware, connected devices and IoT Devices. This device can be remotely accessed for automated configuration and whitelist changes (online / wireless components). |\n| PeCo | Peripherie Controller. A Gateway and an Access Manager do possess a PeCo in order to communicate with the IoT Stack of resivo. |\n| Peripheral ID | Is a value we set on the component, with the digital key has one VCP file with a key |\n| Created on the backend, whenever a component is setup |  |\n| Physical key | Same as physical media. Can be for example a badge, key fob etc. Can be configured with time profiles ans used to access doors. |\n| Physical media | Same as physical key. Can be for example a badge, key fob etc. Can be configured with time profiles ans used to access doors. |\n| REM | Persona called Real estate manager which represents all user who are using the Admin Portal and will do typical work around a real estate. |\n| REM app | Same as Admin Portal. |\n| Setup card | Is a physical media which is used to connect the physical components to the IoT Stack and thus with resivo. |\n| Site | In resivo a site is usually a building with apartments. |\n| Site Badge | This is a physical key which has access to all the devices which are in the scope \"rem\". |\n| Site door | Also called infrastructure door. These are usually online devices which are in the scope \"rem\". |\n| Site Owner | In the resivo context this is for example a real estate company which owns different sites. |\n| Standalone components | Also called offline components. These are used for tenant doors and have no connection to the cloud. Commissioning and configurations must always take place via a mobile application. |\n| Static credential | A simple digital key value (cid) that can be whitelisted on a component just like a physical keys cid. Static credentials are mainly used for the access manager since this device cannot handle dynamic credentials. |\n| Static key | Same as static credential. |\n| Tenant | Persona in the resivo context which rents an apartment from a real estate management company. |\n| Utility app | Mobile application which is created and maintained by dormakaba digital. It complements the Admin Portal and is responsible for the Commissioning. |\n| VCP | File which get written to the component (one VCP file per site which we write to the component). |\n| Whitelist | A list on a component, that contains the CIDs of authorized credentials (physical or static digital keys). Whitelisted credentials can be used to open a door. |\n| Wireless components | With this terms we explicitly mean digital cylinders or c-levers. They support dynamic credentials and can be used online or offline. |","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":true,"owner":"17266599","team":342379,"collectionId":"d006560e-d8af-42a1-813b-47f7d1140967","publishedId":"U16dQnwp","public":true,"publicUrl":"https://api-documentation.resivo.io","privateUrl":"https://go.postman.co/documentation/17266599-d006560e-d8af-42a1-813b-47f7d1140967","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"003594"},"documentationLayout":"classic-single-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"light","themes":[{"name":"dark","logo":null,"colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"FF6C37"}},{"name":"light","logo":null,"colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"003594"}}]}},"version":"8.10.1","publishDate":"2026-02-11T10:36:15.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":null,"logoDark":null}},"statusCode":200},"environments":[{"name":"Production","id":"805d7ec2-1c4c-4de3-b8ad-7bb5f867b4f9","owner":"17266599","values":[{"key":"resivoBaseUrl","value":"https://api.resivo.io","type":"default","enabled":true},{"key":"m2mClientId","value":"TODO: M2M client ID","type":"default","enabled":true},{"key":"m2mClientSecret","value":"TODO: M2M client secret","type":"default","enabled":true},{"key":"m2mUserId","value":"","type":"any","enabled":true},{"key":"m2mLabel","value":"M2M Admin","type":"default","enabled":true},{"key":"resivoApiToken","value":"null","type":"any","enabled":true},{"key":"resivoApiRefreshToken","value":"","type":"any","enabled":true},{"key":"email","value":"","type":"any","enabled":true},{"key":"password","value":"","type":"default","enabled":true},{"key":"rmoId","value":"","type":"any","enabled":true},{"key":"rmoPartnerId","value":"","type":"any","enabled":true},{"key":"siteOwnerId","value":"","type":"default","enabled":true},{"key":"siteId","value":"","type":"default","enabled":true},{"key":"userId","value":"","type":"default","enabled":true},{"key":"mediumId","value":"","type":"default","enabled":true},{"key":"personId","value":"","type":"default","enabled":true},{"key":"accessGroupId","value":"","type":"default","enabled":true},{"key":"accessZoneId","value":"","type":"default","enabled":true},{"key":"prvBaseURI","value":"https://api.prv.porthos.services/v0","type":"default","enabled":true},{"key":"prvM2MClientId","value":"","type":"default","enabled":true},{"key":"prvM2MClientSecret","value":"","type":"default","enabled":true},{"key":"prvM2MToken","value":"","type":"default","enabled":true},{"key":"prvOrgId","value":"","type":"default","enabled":true},{"key":"porthosSystemId","value":"resivo","type":"default","enabled":true}],"published":true}],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/458e76b428169a82121bfb7c9580cf39681be9170ba1e3356e5c36895b46fc51","favicon":"https://resivo.io/favicon.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"},{"label":"Production","value":"17266599-805d7ec2-1c4c-4de3-b8ad-7bb5f867b4f9"}],"canonicalUrl":"https://api-documentation.resivo.io/view/metadata/U16dQnwp"}