Skip to main content

Paginate results

Some of our APIs (e.g. the LIST methods) return a set of resources instead of a single one. This means that the returned response could be potentially huge, involving a high number of complex resources, making the response difficult to manage and send to your application. For this reason, we paginate the results to make sure responses are easier to handle.

In general, asking for a list of resources will result in a paginated response; this means that the resources will be divided into multiple pages, each of those containing a subset of the entire result.

Please note that Pagination is strictly related to the Sorting functionality: contiguous pages will always contain contiguous elements 11with respect to the ordering rules defined through the sort parameter.

The pagination parameters are the following, and must be passed in query string:

Request parameterDescription
pageThe page number you want to retrieve.
per_pageThe number of items per page.

The response to a paginated request will contain additional information to help you navigate through the list:

Response parmeterDescription
current_pageCurrent page number.
last_pageLast page number of the list.
per_pageNumber of items per page.
fromNumber of the first item of the current page.
toNumber of the last item of the current page.
totalTotal number of items.
pathCurrent endpoint.
first_page_urlLink to get the first page of the list.
last_page_urlLink to get the last page of the list.
prev_page_urlLink to get the previous page of the list.
next_page_urlLink to get the next page of the list.

Here you can find an example of a request:

curl --request GET \
--url 'https://api-v2.fattureincloud.it/c/company_id/received_documents?page=2&per_page=5&type=expense' \
--header 'Accept: application/json'
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN'
// this code uses RestSharp Client: https://restsharp.dev
// you can install it with the following command:
// dotnet add package RestSharp

using System;
using RestSharp;

namespace restclient
{
class Program
{
static void Main(string[] args)
{
// for this example we define the token as a string, but you should have obtained it in the previous steps
// the token is valid for the "received_documents:r" scope needed to perform this operation
var token = "YOUR_ACCESS_TOKEN";

// these parameters are usually retrieved through our APIs or stored in a DB
var companyId = 17;

var query = System.Web.HttpUtility.ParseQueryString(string.Empty);
query.Add("page", "2");
query.Add("per_page", "5");
query.Add("type", "expense");

var url = "https://api-v2.fattureincloud.it/c/" + companyId + "/received_documents" + "?" + query;

var client = new RestClient(url);
var request = new RestRequest(Method.GET);

request.AddHeader("authorization", "Bearer " + token);
IRestResponse response = client.Execute(request);
Console.Write(response.Content.ToString());
}
}
}
It's easier with our SDKs!

The SDK methods include the pagination parameters as function arguments, taking care of building the query string for you!

The example request will retrieve the second page of the expenses list, with a page size of 5 items. An example result could be the following:

{
"data": [
{
"id": 251,
"type": "expense",
"description": "Catene auto",
"amount_net": 68.03,
"amount_vat": 14.97,
"is_marked": false,
"entity": {
"id": 109,
"name": "Catene e catenacci S.r.l."
},
"date": "2013-12-23",
"next_due_date": "2013-12-23",
"amount_gross": 83
},
{
"id": 104328,
"type": "expense",
"description": "Ricarica Telefonica",
"amount_net": 20,
"amount_vat": 0,
"is_marked": false,
"entity": {
"id": 35,
"name": "Maracaibo Mobile S.p.a."
},
"date": "2014-08-01",
"next_due_date": "1970-01-01",
"amount_gross": 20
},
{
"id": 134828,
"type": "expense",
"description": "Soggiorno di lavoro",
"amount_net": 592,
"amount_vat": 0,
"is_marked": false,
"entity": {
"id": -1,
"name": "Hotel Paradiso"
},
"date": "2014-10-29",
"next_due_date": "2014-10-29",
"amount_gross": 592
},
{
"id": 134830,
"type": "expense",
"description": "SmartPhone Y",
"amount_net": 130,
"amount_vat": 0,
"is_marked": false,
"entity": {
"id": 14542,
"name": "Pear Inc."
},
"date": "2014-04-16",
"next_due_date": "1970-01-01",
"amount_gross": 130
},
{
"id": 134832,
"type": "expense",
"description": "BestBook Pro 2020",
"amount_net": 430,
"amount_vat": 0,
"is_marked": false,
"entity": {
"id": 14542,
"name": "Pear Inc."
},
"date": "2014-05-29",
"next_due_date": "2014-05-29",
"amount_gross": 430
}
],
"current_page": 2,
"last_page": 67,
"per_page": "5",
"from": 6,
"to": 10,
"total": 335,
"path": "https://api-v2.fattureincloud.it/received_documents",
"first_page_url": "https://api-v2.fattureincloud.it/received_documents?per_page=5&type=expense&fieldset=basic&page=1",
"last_page_url": "https://api-v2.fattureincloud.it/received_documents?per_page=5&type=expense&fieldset=basic&page=67",
"next_page_url": "https://api-v2.fattureincloud.it/received_documents?per_page=5&type=expense&fieldset=basic&page=3",
"prev_page_url": "https://api-v2.fattureincloud.it/received_documents?per_page=5&type=expense&fieldset=basic&page=1",
}

📚  Additional Resources