Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The "itemsPerPage" number might be incorrect for partial paginated results #154

Open
nick-behrens opened this issue Apr 6, 2023 · 1 comment

Comments

@nick-behrens
Copy link

nick-behrens commented Apr 6, 2023

Description

RFC7644 describes the itemsPerPage value like this:

itemsPerPage The number of resources returned in a list response page. REQUIRED when partial results are returned due to
pagination.

Currently, the itemsPerPage amount is set to params.Count, and when a partial page is retrieved the itemsPerPage doesn't equal the number of resources returned in a list response page.

Examples

GET http://localhost:8080/api/v1/scim/v2/Users
{
    "Resources": [
        {
            <Redacted, but a single resource>
        }
    ],
    "itemsPerPage": 100,
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "startIndex": 0,
    "totalResults": 1
}

I recognize that consumers of the API could do the math (totalResults - startIndex) to figure out how many items are in the current page, but if I'm reading the spec correctly, itemsPerPage should be the number of resources retrieved and not the Count parameter.

It looks like there is a split on this depending on the SCIM implementer. Okta, AWS, and Salesforce all seem to follow itemsPerPage equaling the number of resources but Azure keeps with what is implemented here, setting the itemsPerPage to the count parameter.

I'm more than happy to contribute a PR if we want to change the itemsPerPage to equal the number of resources in the page! I have a branch for that here.

@q-uint
Copy link
Collaborator

q-uint commented Mar 12, 2024

Hi @nick-behrens.

We always interpreted this as "The number of resources returned in a list response page.", not necessarily this list response page. An example of this can be found on page 74 of RFC7644 where the following example is given:

{
    "totalResults":2,
    "itemsPerPage":10,
    "startIndex":1,
    ... etc
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants