Erply report API

The report API from Erply — 4 operation(s) for report.

Operations 4

GET /api/v1/report/device Generates device reports
GET /api/v1/report/product Generates product reports
GET /api/v1/report/task Generates task reports
GET /api/v1/report/workorder Generates workorder reports

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/erply-report-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

erply-report-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: "\n\n## Overview\n\n\n\nThis application offers an API for managing assignments and tasks.\n\n\n\nGraphQL endpoint for the same API is [also available](/graph)\n\n\n\n<details><summary>Authentication</summary>\n\n\n\n> \n\n> Authenticate using your Erply credentials and get a sessionKey. This sessionKey and your Erply clientCode must be provided in the HTTP headers of every request. You do not have to authenticate against this API - valid Erply sessionKey-s from other sources are also acceptable. To authenticate using this API, use the `POST /api/v1/auth` endpoint.\n\n>\n\n</details>\n\n"
  title: assignments Assortment Report API
  contact: {}
  version: 2.36.5
tags:
- name: report
paths:
  /api/v1/report/device:
    get:
      security:
      - ErplyClientCode: []
      - ErplySession: []
      - ErplyJWT: []
      - AccessToken: []
      tags:
      - report
      summary: Generates device reports
      parameters:
      - description: What kind of grouping should be used when composing a report on the data matching the specified filters. Defaults to `total`
        name: group
        in: query
        schema:
          type: string
          enum:
          - total
          - brand
          - model
          - version
          - year
      - description: Search for devices with the specified brand
        name: deviceBrand
        in: query
        schema:
          type: string
      - description: Search for devices with the specified model
        name: deviceModel
        in: query
        schema:
          type: string
      - description: Search for devices with the specified version
        name: deviceVersion
        in: query
        schema:
          type: string
      - description: Search for devices with the specified year
        name: deviceYear
        in: query
        schema:
          type: string
      - description: Search for devices linked to the specified customer
        name: customerId
        in: query
        schema:
          type: integer
      - description: If total matching record count should be return in response header
        name: withTotalCount
        in: query
        schema:
          type: boolean
      - description: Result page size
        name: pageSize
        in: query
        schema:
          type: integer
      - description: Result page number
        name: pageNr
        in: query
        schema:
          type: integer
      - description: 'Sorting order. Supported values are: `brand`, `model`, `version`, `year`, `count`. It is possible to reverse the order by adding a `-` prefix to the sorting keyword. Defaults to ordering by `count` in descending order'
        name: sort
        in: query
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/model.DeviceReport'
        '401':
          description: Forbidden
        '500':
          description: Internal Server Error
  /api/v1/report/product:
    get:
      security:
      - ErplyClientCode: []
      - ErplySession: []
      - ErplyJWT: []
      - AccessToken: []
      tags:
      - report
      summary: Generates product reports
      parameters:
      - description: What kind of groupings should be used when composing a report on the data matching the specified filters. Possible values `total`, `group`, `product`. Defaults to `total`
        name: groups
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            enum:
            - total
            - group
            - product
            type: string
      - description: Search for workorders with specified state codes
        name: state
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      - description: Search for workorders with specified state codes
        name: transactionalState
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      - description: Search for workorders linked to devices with the specified brand
        name: deviceBrand
        in: query
        schema:
          type: string
      - description: Search for workorders linked to devices with the specified model
        name: deviceModel
        in: query
        schema:
          type: string
      - description: Search for workorders linked to devices with the specified year
        name: deviceYear
        in: query
        schema:
          type: string
      - description: Search for products under the specified parent group
        name: productParentGroupId
        in: query
        schema:
          type: integer
      - description: Search for results at the specified product group depth level
        name: productGroupLvl
        in: query
        schema:
          type: integer
      - description: ID of employees who created the workorder
        name: createdById
        in: query
        schema:
          type: integer
      - description: Search for workorders linked to the specified customer
        name: customerId
        in: query
        schema:
          type: integer
      - description: Search for workorders linked to customers from the specified customer group
        name: customerGroup
        in: query
        schema:
          type: integer
      - description: Workorder creation time range lower bound (yyyy-mm-ddThh:mm:ssZ)
        name: createdAtStart
        in: query
        schema:
          type: string
      - description: Workorder creation time range upper bound (yyyy-mm-ddThh:mm:ssZ)
        name: createdAtEnd
        in: query
        schema:
          type: string
      - description: Workorder confirmed time range lower bound (yyyy-mm-ddThh:mm:ssZ)
        name: confirmedAtStart
        in: query
        schema:
          type: string
      - description: Workorder confirmed time range upper bound (yyyy-mm-ddThh:mm:ssZ)
        name: confirmedAtEnd
        in: query
        schema:
          type: string
      - description: Device received time range lower bound (yyyy-mm-ddThh:mm:ssZ)
        name: receivedAtStart
        in: query
        schema:
          type: string
      - description: Device received time range upper bound (yyyy-mm-ddThh:mm:ssZ)
        name: receivedAtEnd
        in: query
        schema:
          type: string
      - description: Device returned time range lower bound (yyyy-mm-ddThh:mm:ssZ)
        name: returnedAtStart
        in: query
        schema:
          type: string
      - description: Device returned time range upper bound (yyyy-mm-ddThh:mm:ssZ)
        name: returnedAtEnd
        in: query
        schema:
          type: string
      - description: If total matching record count should be return in response header
        name: withTotalCount
        in: query
        schema:
          type: boolean
      - description: Result page size
        name: pageSize
        in: query
        schema:
          type: integer
      - description: Result page number
        name: pageNr
        in: query
        schema:
          type: integer
      - description: 'Sorting order. Supported values are: `level`, `groupId`, `groupName`, `productId`, `productName`, `netTotal`, `vatTotal`, `total`, `amount`. It is possible to reverse the order by adding a `-` prefix to the sorting keyword. Defaults to ordering by `total` in descending order'
        name: sort
        in: query
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/model.ProductReport'
        '401':
          description: Forbidden
        '500':
          description: Internal Server Error
  /api/v1/report/task:
    get:
      security:
      - ErplyClientCode: []
      - ErplySession: []
      - ErplyJWT: []
      - AccessToken: []
      tags:
      - report
      summary: Generates task reports
      parameters:
      - description: What kind of grouping should be used when composing a report on the data matching the specified filters. Defaults to `total`
        name: group
        in: query
        schema:
          type: string
          enum:
          - total
          - assignedToId
          - resourceId
          - state
      - description: ID of employee who is assigned to the task
        name: assignedToId
        in: query
        schema:
          type: integer
      - description: Search for tasks linked to the specified resource
        name: resourceId
        in: query
        schema:
          type: integer
      - description: Search for tasks with specified associated row state code
        name: state
        in: query
        schema:
          type: string
      - description: Task end time range lower bound (yyyy-mm-ddThh:mm:ssZ)
        name: endAtStart
        in: query
        schema:
          type: string
      - description: Task end time range upper bound (yyyy-mm-ddThh:mm:ssZ)
        name: endAtEnd
        in: query
        schema:
          type: string
      - description: If total matching record count should be return in response header
        name: withTotalCount
        in: query
        schema:
          type: boolean
      - description: Result page size
        name: pageSize
        in: query
        schema:
          type: integer
      - description: Result page number
        name: pageNr
        in: query
        schema:
          type: integer
      - description: 'Sorting order. Supported values are: `assignedTo`, `resource`, `state`, `rowCount`, `taskCount`, `avgPlanned`, `avgReal`, `sumPlanned`, `sumReal`. It is possible to reverse the order by adding a `-` prefix to the sorting keyword. Defaults to ordering by `sumReal` in descending order'
        name: sort
        in: query
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/model.TaskReport'
        '401':
          description: Forbidden
        '500':
          description: Internal Server Error
  /api/v1/report/workorder:
    get:
      security:
      - ErplyClientCode: []
      - ErplySession: []
      - ErplyJWT: []
      - AccessToken: []
      tags:
      - report
      summary: Generates workorder reports
      parameters:
      - description: What kind of groupings should be used when composing a report on the data matching the specified filters. Possible values `total`, `deviceBrand`, `deviceModel`, `deviceYear`. Defaults to `total`
        name: groups
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            enum:
            - total
            - deviceBrand
            - deviceModel
            - deviceYear
            type: string
      - description: Search for workorders with specified state codes
        name: state
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      - description: Search for workorders with specified state codes
        name: transactionalState
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
      - description: Search for workorders linked to devices with the specified brand
        name: deviceBrand
        in: query
        schema:
          type: string
      - description: Search for workorders linked to devices with the specified model
        name: deviceModel
        in: query
        schema:
          type: string
      - description: Search for workorders linked to devices with the specified year
        name: deviceYear
        in: query
        schema:
          type: string
      - description: ID of employees who created the workorder
        name: createdById
        in: query
        schema:
          type: integer
      - description: Search for workorders linked to the specified customer
        name: customerId
        in: query
        schema:
          type: integer
      - description: Search for workorders linked to customers from the specified customer group
        name: customerGroup
        in: query
        schema:
          type: integer
      - description: Workorder creation time range lower bound (yyyy-mm-ddThh:mm:ssZ)
        name: createdAtStart
        in: query
        schema:
          type: string
      - description: Workorder creation time range upper bound (yyyy-mm-ddThh:mm:ssZ)
        name: createdAtEnd
        in: query
        schema:
          type: string
      - description: Workorder confirmed time range lower bound (yyyy-mm-ddThh:mm:ssZ)
        name: confirmedAtStart
        in: query
        schema:
          type: string
      - description: Workorder confirmed time range upper bound (yyyy-mm-ddThh:mm:ssZ)
        name: confirmedAtEnd
        in: query
        schema:
          type: string
      - description: Device received time range lower bound (yyyy-mm-ddThh:mm:ssZ)
        name: receivedAtStart
        in: query
        schema:
          type: string
      - description: Device received time range upper bound (yyyy-mm-ddThh:mm:ssZ)
        name: receivedAtEnd
        in: query
        schema:
          type: string
      - description: Device returned time range lower bound (yyyy-mm-ddThh:mm:ssZ)
        name: returnedAtStart
        in: query
        schema:
          type: string
      - description: Device returned time range upper bound (yyyy-mm-ddThh:mm:ssZ)
        name: returnedAtEnd
        in: query
        schema:
          type: string
      - description: If total matching record count should be return in response header
        name: withTotalCount
        in: query
        schema:
          type: boolean
      - description: Result page size
        name: pageSize
        in: query
        schema:
          type: integer
      - description: Result page number
        name: pageNr
        in: query
        schema:
          type: integer
      - description: 'Sorting order. Supported values are: `linkedDevice`, `deviceBrand`, `deviceModel`, `deviceYear`, `deviceAvgYear`, `workorderCount`, `minTotal`, `avgTotal`, `maxTotal`, `netTotal`, `vatTotal`, `total`. Defaults to ordering by `workorderCount` in descending order'
        name: sort
        in: query
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/model.WorkorderReport'
        '401':
          description: Forbidden
        '500':
          description: Internal Server Error
components:
  schemas:
    model.TaskReport:
      type: object
      properties:
        assignedToId:
          description: User ID who is assigned to the task
          type: integer
          example: 2
        avgPlannedDuration:
          description: Average planned duration
          type: integer
          example: 100
        avgRealDuration:
          description: Average real duration as specified by user (with fallback to default duration)
          type: integer
          example: 100
        resourceId:
          description: ID of the resource linked to the task
          type: integer
          example: 1
        rowCount:
          description: Number of rows
          type: integer
          example: 5
        state:
          description: State of the row linked to the task
          type: string
          example: planned
        sumPlannedDuration:
          description: Total planned duration
          type: integer
          example: 100
        sumRealDuration:
          description: Total real duration as defined by user (with fallback to default duration)
          type: integer
          example: 100
        taskCount:
          description: Number of tasks
          type: integer
          example: 5
    model.DeviceReport:
      type: object
      properties:
        brand:
          description: Device brand
          type: string
          example: ford
        deviceCount:
          description: Number of devices matching the specified criteria
          type: integer
          example: 5
        model:
          description: Device model
          type: string
          example: transit
        version:
          description: Device version
          type: string
          example: cargo van
        year:
          description: Device year
          type: string
          example: '2022'
    model.WorkorderReport:
      type: object
      properties:
        avgTotal:
          description: Average Total of workorders
          type: number
          example: 100
        avgYear:
          description: Average year of associated devices
          type: integer
          example: 2010
        brand:
          description: Device brand
          type: string
          example: ford
        linkedDevice:
          description: If values correspond to workorders with an associated device
          type: boolean
          example: true
        maxTotal:
          description: Highest Total of workorders
          type: number
          example: 1000
        minTotal:
          description: Lowest Total of workorders
          type: number
          example: 10
        model:
          description: Device model
          type: string
          example: transit
        netTotal:
          description: Sum of Net Total of workorders
          type: number
          example: 80
        total:
          description: Grand total of workorders
          type: number
          example: 100
        vatTotal:
          description: Sum of VAT Total of workorders
          type: number
          example: 20
        workorderCount:
          description: Number of workorders
          type: integer
          example: 4
        year:
          description: Device year
          type: string
          example: '2022'
    model.ProductReport:
      type: object
      properties:
        amount:
          description: Total amount of products over the matching rows
          type: number
          example: 1
        groupId:
          description: ID of the product group. If nil, the specific product group can vary
          type: integer
          example: 28
        groupName:
          description: Group name
          type: string
        level:
          description: Result level. Ranges from 0 to 100. 0 being grand total values and 100 being specific product values. Levels 1-99 indicate product group hierarchy depth
          type: integer
          example: 1
        netTotal:
          description: Net total of all matching rows
          type: number
          example: 80
        parentGroupId:
          description: ID of the parent group of this product group in case of product group hierarchies
          type: integer
          example: 27
        parentGroupName:
          description: Parent group name
          type: string
        productId:
          description: ID of the product. If nil, the specific product can vary
          type: integer
          example: 62
        productName:
          description: Product name
          type: string
        total:
          description: Total of all matching rows
          type: number
          example: 100
        vatTotal:
          description: VAT total of all matching rows
          type: number
          example: 20
  securitySchemes:
    AccessToken:
      type: apiKey
      name: accessToken
      in: header
    ErplyClientCode:
      type: apiKey
      name: clientCode
      in: header
    ErplyJWT:
      type: apiKey
      name: jwt
      in: header
    ErplySession:
      type: apiKey
      name: sessionKey
      in: header
    RequestKey:
      type: apiKey
      name: requestKey
      in: header