{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"e4d9aeac-a1e6-41d8-9fbe-9498fc18eb72","name":"Ruum OData v4","description":"Our OData v4 API is part of the [enterprise features of SAP Ruum](ttps://www.ruumapp.com/work-management).\n\n\n# Authentication\nCurrently Ruum supports both `Basic` and `OAuth2` authentication protocols.\n\n* In order to authenticate using `Basic` authentication, you will need an integration account, which can be created by an Enterprise Admin on the [Ruum Admin App](https://admin.ruumapp.com/).\n* To authenticate using `OAuth2`, email [ruum@sap.com](mailto:ruum@sap.com?subject=Request%20oAuth%20Configuration%20for%20Ruum&body=Hello%2C%0A%0ACould%20you%20please%20assist%20me%20with%20the%20OAuth%20configuration%20for%20the%20Ruum%20APIs%3F%20See%20details%20below%3A%0A%0A%20-%20Requestor%20Name%3A%20%0A%20-%20Company%20Name%3A%20%0A%20-%20Redirect%20URL%3A%20%0A%20-%20Contact%20Details%20(Person%20who%20will%20receive%20the%20details%20about%20the%20configuration)%0A%20%20%20-%20First%20Name%3A%20%0A%20%20%20-%20Last%20Name%3A%20%0A%20%20%20-%20Email%3A%20%0A%20%20%20-%20Role%3A%20%0A) and provide the following information:\n\t- Requestor Name\n\t- Company Name\n\t- Redirect URL\n\t- Contact Details (Person who will receive the details about the configuration)\n\t\t- First Name\n\t\t- Last Name\n\t\t- Email\n\t\t- Role\n\t\t\nPlease use as subject: 'Request OAuth Configuration for Ruum'\n\n\n\n# Request Rate Limitations\nTo protect our infrastructure against abuse and to guarantee stability of our services, our APIs have a rate limitation, also known as throttling. \nOur throttling policy will block users that send more than 10 requests per second to our server. This means that on the 11th request on the same second the client application will see an error with status code `429 - Too Many Requests`, and with a header `Retry-After: <time in seconds>`. Clients are expected to wait for the time described on the `Retry-After` header and only send requests after the specified waiting period, else they will keep being blocked from performing further actions.\nThis implementation of throttling is conformant with the following HTTP Specifications:\n* [429 - Too Many Requests](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429)\n* [Retry-After](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After)\n\n# Pagination\nAll our APIs are paginated according to the OData V4.0 specification, meaning that:\n\n* Entity Sets - E.g.: `/Projects`,`/ProjectGroups`, `...`\n* Navigation Properties - E.g.: `/Projects(id)/tasks`, `/Tasks(id)/assignees`, ...\n* and Expanded properties - E.g.: `/Projects?$expand=tasks`, `/Tasks(id)?$expand=assignees`, ...\n\nIn order to navigate on the pages, you can use the URL query parameters:\n\n* `$top=<number>`: The total number of items to be displayed on a page. \n\t* Default is `20`\n\t* Maximum is `1000`\n\n* `$skip=<number>`: The number of entities to be skipped.\n\nIn the response body of your `GET` requests you will always find the total count of entities based on your query. See property `@odata.count` on the example below:\n\n```\nGET .../v1/OData/Ruum.svc/Projects\n\n{\n    \"@odata.context\": \"https://api.ruumapp.com/v1/OData/Ruum.svc/$metadata#Projects\",\n    \"@odata.count\": 1629,\n    \"@odata.nextLink\": \"https://api.ruumapp.com/v1/OData/Ruum.svc/Projects?$top=20&$skip=20\",\n    \"value\": [...]\n}\n\n```\n\n...With a `$filter` applied:\n\n```\nGET .../v1/OData/Ruum.svc/Projects?$filter=name eq 'MyTestFilter'\n\n{\n    \"@odata.context\": \"https://api.ruumapp.com/v1/OData/Ruum.svc/$metadata#Projects\",\n    \"@odata.count\": 2,\n    \"value\": [...]\n}\n\n```\n\n# Ruum.svc vs Reporting.svc\nOur API offers two main services and each one is optimized on a different use case, see below and understand which one would suit better for your use cases:\n\n* *Ruum.svc*:\nThis service is intended to be more generic and more complex in terms of relationships and data formatting. The main purpose of this service is to allow deep integrations and to allow data extraction programatically by crafting more complex OData queries. Usually this is required for bi-directional synchronization of entities, or for deep binding of Ruum entities with external entities. \n\n* *Reporting.svc*:\nThis service is fine tuned for Analytical purposes. The data is presented on a flat way and it also exposes internal \"containment like\" entities as EntitySets so that analytic tools can load them and join them more easily. Also, in most places, instead of the relationship keys, only the values are presented so that is easier to build reports.\n\n# OData Conformance Level\nCurrently our OData APIs comply with the [Minimal Conformance Level](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_OData40MinimalConformanceLevel) of the OData 4.0 specification.\n\n\n# Support\n\nFor further questions and issues related to our APIs, please email [ruum@sap.com](ruum@sap.com)\n\n[Terms of Use](https://uploads-ssl.webflow.com/5c3790779fb97b61b52b9a7c/5c76a0a9245b510228c5c290_Ruum-Terms-of-Use-Fe-28-2018.pdf)\n\n[Privacy](https://www.ruumapp.com/privacy-policy)\n\n[Imprint](https://www.ruumapp.com/imprint)\n","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"11849427","team":1139393,"collectionId":"e4d9aeac-a1e6-41d8-9fbe-9498fc18eb72","publishedId":"T17Gg87Q","public":true,"publicUrl":"https://documenter-api.postman.tech/view/11849427/T17Gg87Q","privateUrl":"https://go.postman.co/documentation/11849427-e4d9aeac-a1e6-41d8-9fbe-9498fc18eb72","customColor":{"top-bar":"313C46","right-sidebar":"313C46","highlight":"0B6ED1"},"documentationLayout":"classic-double-column","customisation":null,"version":"8.10.1","publishDate":"2020-07-06T11:20:59.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{},"logos":{}},"statusCode":200},"environments":[{"name":"Public API (Shared)","id":"44d9b2b1-b71a-41eb-bd32-782035d48e35","owner":"11849427","values":[{"key":"api","value":"https://api.ruumapp.com","enabled":true},{"key":"user","value":"<do not enter here>","enabled":true},{"key":"password","value":"<do not enter here>","enabled":true},{"key":"projectId","value":"<do not enter here>","enabled":true},{"key":"participantEmail","value":"<do not enter here>","enabled":true},{"key":"enterpriseId","value":"<do not enter here>","enabled":true},{"key":"projectGroupId","value":"<do not enter here>","enabled":true},{"key":"taskId","value":"<do not enter here>","enabled":true},{"key":"workspaceId","value":"<do not enter here>","enabled":true},{"key":"externalObjectType","value":"<do not enter here>","enabled":true},{"key":"externalObjectId","value":"<do not enter here>","enabled":true},{"key":"sectionId","value":"<do not enter here>","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/555967d2a85ccab2c9d65939a3f03ebc4f9d054bef27c00c5acae64eb2d7618b","favicon":""},"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":"Public API (Shared)","value":"11849427-44d9b2b1-b71a-41eb-bd32-782035d48e35"}],"canonicalUrl":"https://documenter.gw.postman.com/view/metadata/T17Gg87Q"}