Some of the resources in the maesn API support filtering, ordering and/or pagination.

Pagination

Pagination is done through the query parameters limit and page. The limit parameter specifies the number of resources to return per page, while the page parameter specifies the page number to return. The page parameter starts at 1. The limit parameter can be the following values: 5, 10, 20, 50, 100

Example code snippet
    const response = await axios.get(url, {
        params: {
            "limit": limit,
            "page": page
        },
        headers: {
            'X-API-KEY': apiKey,
            'X-ACCOUNT-KEY': accountKey
        }
    });

Filtering

Filtering of API responses is done through query parameters. The parameters supported by the respective endpoint is documented in the API reference.

As an example, when fetching invoices you can filter on invoices modified since a given date and time by supplying the parameter lastModified. Thus, as an example, passinglastModified=2021-03-30T20:44:18 to GET /invoices would return all invoices modified 30th March 2021 at 20:44:18 or later.

Example code snippet
    const response = await axios.get(url, {
        params: {
            "lastModified": lastModified
        },
        headers: {
            'X-API-KEY': apiKey,
            'X-ACCOUNT-KEY': accountKey
        }
    });

The query parameter ‘status’ is currently in beta-testing and is available for invoices for Xentral and Sage Active.

Example code snippet
    const response = await axios.get(url, {
        params: {
            "status": status
        },
        headers: {
            'X-API-KEY': apiKey,
            'X-ACCOUNT-KEY': accountKey
        }
    });

Sage Active specific filters

In case of Sage Active there is a filter called ‘paymentStatus’ for invoices to filter based on the payment status. This is useful since Sage Active, unlike many other systems, does not feature ‘paid’ or ‘partially paid’ statuses as part of the regular invoice status.

Example code snippet
    const response = await axios.get(url, {
        params: {
            "paymentStatus": paymentStatus
        },
        headers: {
            'X-API-KEY': apiKey,
            'X-ACCOUNT-KEY': accountKey
        }
    });

Lexware Office specific filters

In case of Lexware Office there is a filter called ‘name’ and one called ‘email’ for contacts to filter based on the name and email of the contact respectively.

Example code snippet
    const response = await axios.get(url, {
        params: {
            "name": name,
            "email": email
        },
        headers: {
            'X-API-KEY': apiKey,
            'X-ACCOUNT-KEY': accountKey
        }
    });

Ordering

Response ordering of API responses is done through query parameters. Currently only the GET /invoices endpoint supports ordering by the orderField and orderDir parameters. The orderField parameter specifies the field to order by, while the orderDir parameter specifies the direction of the ordering. The orderField parameter currently only works for Xentral and only for the following fields: invoiceDate. The orderDir parameter can be either asc or desc.

Example code snippet
    const response = await axios.get(url, {
        params: {
            "orderField": orderField,
            "orderDir": orderDir
        },
        headers: {
            'X-API-KEY': apiKey,
            'X-ACCOUNT-KEY': accountKey
        }
    });