> ## Documentation Index
> Fetch the complete documentation index at: https://developer.findity.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Report counters for organization (tab badges)

> Returns per-status report counts for the organization's Reports screen tab badges.
Optionally filtered by counterStatuses and by a report dateCreated range (fromDate/toDate), which is applied to every counter.
fromDate and toDate are parsed as UTC timestamps (yyyy-MM-ddTHH:mm:ssZ); a value that cannot be parsed is ignored and the counters are returned unfiltered.




## OpenAPI

````yaml /openapi/findity-admin-api.json get /organizations/{organizationId}/reports/counters
openapi: 3.1.0
info:
  title: Findity Admin API
  description: Findity Admin API
  version: 1.0.0
servers:
  - url: https://stage-api.findity.com/api/v1/admin
  - url: https://api.findity.com/api/v1/admin
security:
  - bearerAuth: []
paths:
  /organizations/{organizationId}/reports/counters:
    get:
      tags:
        - Expense Reports
      summary: Report counters for organization (tab badges)
      description: >
        Returns per-status report counts for the organization's Reports screen
        tab badges.

        Optionally filtered by counterStatuses and by a report dateCreated range
        (fromDate/toDate), which is applied to every counter.

        fromDate and toDate are parsed as UTC timestamps (yyyy-MM-ddTHH:mm:ssZ);
        a value that cannot be parsed is ignored and the counters are returned
        unfiltered.
      operationId: getOrganizationReportCounters
      parameters:
        - $ref: '#/components/parameters/organizationIdOrExternalIdInPath'
        - $ref: '#/components/parameters/counterStatuses'
        - $ref: '#/components/parameters/fromDate'
        - $ref: '#/components/parameters/toDate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportCounters'
        '400':
          description: >-
            Bad request — a counterStatuses value outside the supported enum was
            supplied.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Error'
              examples:
                Invalid parameter:
                  value:
                    result: error
                    code: INVALID_PARAMETER
                    description: 'Invalid counterStatuses value: ''APPROVL_REPORTS'''
        '403':
          description: Forbidden — the caller lacks the getReportCounters permission.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/403Error'
              examples:
                Forbidden:
                  value:
                    result: error
                    description: Not allowed
        '404':
          description: Not found — no organization exists for the supplied id.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/404Error'
              examples:
                Organization not found:
                  value:
                    result: error
                    code: ORGANIZATION_NOT_FOUND
                    description: Organization not found
components:
  parameters:
    organizationIdOrExternalIdInPath:
      in: path
      name: organizationId
      required: true
      description: >-
        Unique identifier of the organization. String in UUID without dashes
        (32-character hex string) if access is done via values from Findity
        system otherwise, id of external system can be used
      schema:
        type: string
      examples:
        Findity unique id:
          value: 05b8daba9ba14a49846fe77883248cf0
        External system unique id:
          value: a31a7372-3397-3924-ffcd-b7b4795e42eb
    counterStatuses:
      name: counterStatuses
      in: query
      description: >
        Optional filter limiting which counters are returned. When omitted, all
        counters are returned.

        Accepts either a comma separated list
        (`counterStatuses=APPROVAL_REPORTS,REVIEW_REPORTS`) or a repeated
        parameter

        (`counterStatuses=APPROVAL_REPORTS&counterStatuses=REVIEW_REPORTS`). A
        value outside this enum is rejected with 400.


        These filter values are not symmetrical with the `status` field of the
        returned counters, and deliberately so:

        they are the values of the existing ReportCounterType enum, which the
        legacy report counters endpoint has always

        accepted and which other clients already send. Renaming them would be a
        breaking change for those clients, so the

        v1 endpoint takes the same values. Drop the `_REPORTS` suffix to get the
        `status` you will receive, for example

        `APPROVAL_REPORTS` returns `"status": "APPROVAL"` and
        `TRANSFER_TO_RECIPIENT_REPORTS` returns

        `"status": "TRANSFER_TO_RECIPIENT"`. The two derived counters,
        `FTG_REPORTS` and `REPORTS_EXPORTS`, are the

        exception and are returned under exactly the name you asked for.


        The `NORMAL` and `ON_HOLD` counters have no filter value of their own,
        for the same backward compatibility reason.

        They are part of the default set and are therefore only returned when
        the parameter is omitted entirely.
      required: false
      explode: true
      schema:
        type: array
        items:
          type: string
          enum:
            - APPROVAL_REPORTS
            - REVIEW_REPORTS
            - READY_TO_SEND_REPORTS
            - ERROR_REPORTS
            - SENT_REPORTS
            - PAID_REPORTS
            - INCOMPLETE_REPORTS
            - FTG_REPORTS
            - TRANSFER_REPORTS
            - TRANSFER_TO_RECIPIENT_REPORTS
            - REPORTS_EXPORTS
      example: APPROVAL_REPORTS
    fromDate:
      in: query
      name: fromDate
      required: false
      description: Used for filtering
      schema:
        type: string
        format: date
      example: '2020-01-20'
    toDate:
      in: query
      name: toDate
      required: false
      description: Used for filtering
      schema:
        type: string
        format: date
      example: '2018-01-23'
  schemas:
    ReportCounters:
      type: object
      properties:
        counts:
          type: array
          items:
            type: object
            properties:
              status:
                type: string
                description: >-
                  The report lifecycle status the counter refers to (e.g.
                  APPROVAL, REVIEW, READY_TO_SEND, ERROR, TRANSFER,
                  TRANSFER_TO_RECIPIENT, SENT, PAID, NORMAL, ON_HOLD) or a
                  derived counter key (INCOMPLETE, FTG_REPORTS,
                  REPORTS_EXPORTS).
              count:
                type: integer
                description: Number of reports for this status.
              earliestDate:
                type: string
                format: date-time
                nullable: true
                description: >-
                  Earliest relevant date for this status
                  (sent/lastUpdated/paid/dueDate depending on the counter), or
                  null.
              latestDate:
                type: string
                format: date-time
                nullable: true
                description: Latest relevant date for this status, or null.
              recipientCounters:
                type: array
                description: >-
                  Returned for the READY_TO_SEND counter only. Empty unless the
                  organization has more than one recipient and there is at least
                  one report ready to send.
                items:
                  type: object
                  properties:
                    recipientId:
                      type: string
                      description: >-
                        Id of the recipient the pending reports are currently
                        addressed to.
                    counter:
                      type: integer
                      description: >-
                        Number of READY_TO_SEND reports whose current (first
                        pending) step targets this recipient.
      example:
        counts:
          - status: APPROVAL
            count: 2
            earliestDate: '2024-02-10T08:15:00Z'
            latestDate: '2024-02-12T09:00:00Z'
          - status: READY_TO_SEND
            count: 3
            earliestDate: null
            latestDate: null
            recipientCounters:
              - recipientId: recipient-001
                counter: 2
              - recipientId: recipient-002
                counter: 1
          - status: PAID
            count: 5
            earliestDate: '2024-01-15T10:30:00Z'
            latestDate: '2024-02-01T12:00:00Z'
    400Error:
      type: object
      properties:
        result:
          type: string
        code:
          type: string
        description:
          type: string
    403Error:
      type: object
      properties:
        result:
          type: string
        description:
          type: string
      example:
        result: error
        description: Not allowed
    404Error:
      type: object
      properties:
        result:
          type: string
        code:
          type: string
        description:
          type: string
      example:
        result: error
        code: ORGANIZATION_NOT_FOUND
        description: 'Failed to get organization for id: {orgId}'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````