{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"17be3395-7ae1-460b-b854-f9699812f3ec","name":"Nexkey External Api Documentation","description":"If interested in obtaining an API key please email [support@nexkey.com](https://mailto:support@nexkey.com).\n\nAlso note: we do have an [iOS Client SDK](https://cocoapods.org/pods/NexkeyCore) to facilitate native iOS integrations.\n\nWe encourage one to click \"Run in Postman\" which imports this collection to your local Postman app. Upon obtaining API credentials one should update the envirnoment variables locally. However, if one would like to start integrating right away, no api credentials are necessary! Just hit the mock url and example responses will be returned.\n\nProduction url: [https://api.nexkey.com](https://api.nexkey.com)  \n  \nStaging url: [https://staging.api.nexkey.com](https://staging.api.nexkey.com)  \n  \nMock server url: [https://4f84aa6e-8f4d-4bd9-af70-c6e3aa3710fc.mock.pstmn.io](https://4f84aa6e-8f4d-4bd9-af70-c6e3aa3710fc.mock.pstmn.io)\n\nFeedback and comments are welcome! Feel free to email them to [support@nexkey.com](https://mailto:support@nexkey.com).\n\n# How to Use\n\n## Authentication\n\n  \nOnly one of the following headers is to be sent in a request. Sending either an **API Secret** or a **User Session Token** will result in different responses and behavior.  \n  \n  \n  \n\n- **Nexkey-Api-Secret** - Submit an API Secret and use the \"virtual\" user's session token in the background (bypassing retrieval and storage of any session token).\n- **Nexkey-Session-Token** - Submit a **user's session token** to restrict permission to only the items administered by the session user. Logging and Push Notifications will show that user as the initiator of any logged actions.\n\n## Integration Strategies\n\nThere is a spectrum of integration strategies. Below I will explain the two extremes: tightly and loosely coupled.\n\n**Tightly coupled** _your app works along side ours_\n\nWith the high touch implementation Nexkey would still manage the users as real users in our system and their actions can be programmatically invoked as these users, via their authenticated session tokens. This means the flow would dictate the use of /signIn with the user's own credentials and subsequent request can be auth'd with **your api key** and **their session token**, thus all actions appear to be coming from a real Nexkey user.\n\n_Pros_: Nexkey manages users so the users and their audit log show up in our mobile apps and web portal. This allows for administrators to still use and manage access via the Nexkey web or mobile applications. The Nexkey web and mobile apps include robust key scheduling and peripheral functionality including: notification enrollments & messaging.  \n  \n_Cons_: All users must be registered with Nexkey, meaning must go through our initial sign up process\n\n**Loosely coupled** _your app manages users internally, we just do the access control_\n\nWith this implementation approach the only endpoint you will hit is /performUnlock. You authenticate solely via **your api key** and **your api secret** thus your audit log is homogeneous from Nexkey's perspective. You handle all user key management properties, user creation, and user authentication.\n\n_Pros_: Easy to plug and play with Nexkey system if you already have an existing user management app. No need to have users create Nexkey accounts.  \n  \n_Cons_: Unable to use Nexkey's robust key scheduling features or peripheral functionality. Unable for Nexkey to manage a detailed access audit log _unless additional user information is shared via /performUnlock._","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":true,"owner":"7559730","team":373730,"collectionId":"17be3395-7ae1-460b-b854-f9699812f3ec","publishedId":"SVfKwVsd","public":true,"publicUrl":"https://documentation.api.nexkey.com","privateUrl":"https://go.postman.co/documentation/7559730-17be3395-7ae1-460b-b854-f9699812f3ec","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"AA45F9"},"documentationLayout":"classic-double-column","version":"8.10.1","publishDate":"2020-03-31T16:52:50.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{},"logos":{}},"statusCode":200},"environments":[{"name":"Nexkey External Api","id":"9e1531d1-ff8f-46a1-91b1-004806b9c873","owner":"7559730","values":[{"key":"url","value":"https://4f84aa6e-8f4d-4bd9-af70-c6e3aa3710fc.mock.pstmn.io","enabled":true},{"key":"Nexkey-Api-Key","value":"[must_obtain_from_Nexkey]","enabled":true},{"key":"Nexkey-Api-Secret","value":"[must_obtain_from_Nexkey]","enabled":true},{"key":"Nexkey-Session-Token","value":"[must_obtain_from_Nexkey]","enabled":true},{"key":"Nexkey-Api-Version","value":"5.0.0","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/9e33224cafe1d36fed416745774eaac487fde831447531da415bdcd09f024e4a","favicon":"https://res.cloudinary.com/postman/image/upload/v1566421346/team/ojx446rt8ctqyhq70uxc.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":"Nexkey External Api","value":"7559730-9e1531d1-ff8f-46a1-91b1-004806b9c873"}],"canonicalUrl":"https://documentation.api.nexkey.com/view/metadata/SVfKwVsd"}