{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"5c4c14a4-0ff1-4731-b14f-999aede52bdd","name":"*.direct.api.revirt365.com","description":"##### 1\\. Purpose\n\nThis document specifies how to use the API service for ACB365 Direct.\n\nDirect is a \"headless\" API-first offering of the ReVirt 365 product, focused on making Exchange365 backup as simple as possible.\n\n##### 2\\. Getting started\n\nTo use the API service, you need to obtain an app key and app secret directly from any.cloud via e-mail - reach out to us on [support@anycloud.dk](https://mailto:support@anycloud.dk). You need the key to exchange it for a Bearer Token, which in turn is used to authorize all API calls.\n\n##### 3\\. Using Postman\n\nThis documentation document is written using Postman. If you aren't already familiar with Postman, we recommend getting familiar, as it offers a rich API exploration experience.\n\nWe will quickly run you through a few key features:\n\n\\* In the \"documenter\" view for reading documentation, which you are most likely reading right now, you can select which programming-language you prefer for the examples with the menu above:\n\n<img src=\"https://cdn.revirt365.com/anycloud/img/postman/languages.png\">\n\n\\* once you have api key and feel ready to interactively explore the API, you can import the documentation as a Postman Collection using the button in the upper right corner:\n\n<img src=\"https://cdn.revirt365.com/anycloud/img/postman/run.png\">\n\nTo get started quickly, we recommend running postman from the browser. Once you have postman open with this api documentation imported as a collection, you will need insert your api key into the collection variables like this:\n\n<img src=\"https://cdn.revirt365.com/anycloud/img/postman/insertapikey.png\">\n\nNote that there are two systems available. The demo system, where you can test out calls, and the live system, which is the real production environment. If you want to interact with the demo system, you will have to set ProtocolHostAndPort to target the demo environment, as the image above also shows.\n\nYou are now ready to run the API documentation interactively.\n\n##### 4\\. A word about null\n\nAny property that is optional can either be left out completely or set to the null-value, if that's easier - it may be in static-typing languages. The API will interpret a missing property and a nulled property the same way.\n\n##### 5\\. RPC integration-style\n\nThe API is set up in an RPC task-oriented fashion, rather than the usual CRUD fashion.  \nWe want to focus on providing endpoints that do exactly what is needed when it is needed instead of simply letting you manage your data records on our services. (the CRUD way)\n\n**5.1 Duplicate endpoints**  \nThis means that some endpoints will seem to do the same thing, and indeed even actually DO the same thing here and now. But that might change as the system changes.  \nHaving separate endpoints for doing the same thing in two different contexts allows us to change the underlying action with minimal effect on your systems if such changes are required.\n\nE.g., if /manage/azure/CreateAzureAppRegistrationCertificate_v1 were to be deprecated in favor of _v2 with a different HTTP body, for reasons that only have to do with changing the certificate (not updating it), it wouldn’t affect the part of your system which instead uses /api/direct_v1/onboard/CreateAzureAppRegistrationCertificate_v1 for updating existing tenants' certificates.\n\n##### **6\\. Continuation Pagination token**\n\nSome endpoints will have a continuation pagination token field called \"getNextPageToken\" for cursor-based pagination. In the request body, the first page can be fetched by providing an empty string, and subsequent pages can be fetched by providing the returned \"getNextPageToken\" value. The last page will provide a null \"getNextPageToken\" to make sure that erronious queries with this value won't lead to an infinite loop (as it would if null was used to get the first page, or if empty string was returned on the last page)","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"7656257","team":965297,"collectionId":"5c4c14a4-0ff1-4731-b14f-999aede52bdd","publishedId":"VUxLy9mB","public":true,"publicUrl":"https://documentation.direct.api.revirt365.com","privateUrl":"https://go.postman.co/documentation/7656257-5c4c14a4-0ff1-4731-b14f-999aede52bdd","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"EF5B25"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"light","themes":[{"name":"dark","logo":"https://content.pstmn.io/19845d2f-8e68-4f74-9baa-30266f304d9f/QUNfQ2xvdWRfTG9nb180MDBwaXhfc3F1YXJlX3RyaW1tZWQucG5n","colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"FF6C37"}},{"name":"light","logo":"https://content.pstmn.io/f8fd96ba-3381-4914-b58e-a16ef7f808d2/QUNfQ2xvdWRfTG9nb180MDBwaXhfc3F1YXJlX3RyaW1tZWQucG5n","colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"EF5B25"}}]}},"version":"8.10.1","publishDate":"2023-11-20T07:47:28.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":"https://content.pstmn.io/f8fd96ba-3381-4914-b58e-a16ef7f808d2/QUNfQ2xvdWRfTG9nb180MDBwaXhfc3F1YXJlX3RyaW1tZWQucG5n","logoDark":"https://content.pstmn.io/19845d2f-8e68-4f74-9baa-30266f304d9f/QUNfQ2xvdWRfTG9nb180MDBwaXhfc3F1YXJlX3RyaW1tZWQucG5n"}},"statusCode":200},"environments":[],"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/bd58af50a540544c5546f62a5131db380980ac11b431415e6ade8fdee7a28729","favicon":"https://res.cloudinary.com/postman/image/upload/v1698666551/team/pupug6mfytw9m3vcvzux.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"}],"canonicalUrl":"https://documentation.direct.api.revirt365.com/view/metadata/VUxLy9mB"}