Symptom
Q3 2019 API-11774: $expand Limit for OData API Call
Environment
SuccessFactors OData API
Resolution
Q3 2019 Release Note: API-11774
We have set a 300,000 size limit for $expand operations in OData API. If the expanding size of your query exceeds the limit, an error will occur and you will have to tune your query to decrease the data volume. This limit is intended to prevent excessive resource consumption and ensure better availability and performance for all customers. If you wish to increase the size limit, please contact SAP Cloud Support
Q1. If $expand is being used in ODATA URI, total number of records returned for starting entity for expanded node should not cross 300,000?
Ans. Starting entity record count must not exceed 300,000, otherwise will get error message:
("COE0052", "Expand limit of 300000 records was exceeded. Please decrease the number of records to expand or use filters to narrow down the result.")
Q2. How pagination and session re-use would impact this and what would be the expected behavior?
Ans. Pagination and session re-use won’t affect the $expand limitation.
Example 1:
API Request:
GET https://apisalesdemo4.successfactors.com:443/odata/v2/User?$filter=userId%20eq%20%20'dsingh9'&customPageSize=1&$expand=salutationNav/picklistLabels&paging=snapshot&$format=json&$select=userId,addressLine1,addressLine2,country,email,username,salutationNav
API Response:
- In above case, SalutationNav and picklistLabels are being expanded.
- First check would be for all the salutationNav node present in the response payload. Count should not exceed the limit.
- If count is within the limit of 300000, it would check the count of picklistLabels node present in the response payload i.e. of count of salutationNav/picklistLabels
- In above example, total count of expanded entities are 2.
Example 2:
API Request:
https://apisalesdemo4.successfactors.com:443/odata/v2/User?$filter=userId%20in%20%20'dsingh9','dsingh6'&customPageSize=2&$expand=salutationNav/picklistLabels,userIdOfEmployeeTimeNav/approvalStatusNav&paging=snapshot&$format=json&$select=userId,addressLine1,addressLine2,country,email,username,salutationNav,userIdOfEmployeeTimeNav
- $expand contains salutationNav/picklistLabels,userIdOfEmployeeTimeNav/approvalStatusNav
- Step1: Count of salutationNav node
- Step2: Count of PicklistLabels
- Limit of 300000 should not exceed for Step1 and Step2 individually.
- Now, perform same step for userIdOfEmployeeTimeNav/approvalStatusNav
Note: Limit should not exceed for individual $expand node.
Keywords
COE0052, $Expand , KBA , LOD-SF-INT-ODATA , OData API Framework , LOD-SF-INT , Integrations , How To