# Get global timesheet report

## OpenAPI Specification

```yaml
openapi: 3.0.1
info:
  title: ''
  description: ''
  version: 1.0.0
paths:
  /v1/time-track/reports/global:
    get:
      summary: Get global timesheet report
      deprecated: false
      description: >-
        Fetches a paginated global timesheet report grouped by PROJECT or
        MEMBER. Returns hierarchical data: when grouped by PROJECT -> members ->
        tasks; when grouped by MEMBER -> projects -> tasks. Includes
        billable/non-billable time, total time, and billable cost for each
        level.


        Authorization: Requires Project Admin role. Returns 403 Forbidden if the
        user is not an admin of any project.
      operationId: getGlobalTimesheetReport
      tags:
        - Task Timer
        - Task Timer
      parameters:
        - name: groupBy
          in: query
          description: Group results by PROJECT or MEMBER
          required: false
          schema:
            type: string
            enum:
              - PROJECT
              - MEMBER
            default: MEMBER
        - name: startDate
          in: query
          description: 'Start date filter (ISO format: yyyy-MM-dd)'
          required: true
          schema:
            type: string
            format: date
            examples:
              - '2025-01-01'
        - name: endDate
          in: query
          description: 'End date filter (ISO format: yyyy-MM-dd)'
          required: true
          schema:
            type: string
            format: date
            examples:
              - '2025-12-31'
        - name: page
          in: query
          description: Page number (zero-based)
          required: false
          schema:
            type: integer
            default: 0
        - name: size
          in: query
          description: Page size
          required: false
          schema:
            type: integer
            default: 20
        - name: searchCriteria
          in: query
          description: >-
            JSON filter criteria for filtering by member, project, space, or
            customer. Example:
            {"filters":[{"field":"member","condition":"IS","value":[1,2]}],"operator":"AND"}
          required: false
          schema:
            type: string
        - name: X-Org-Id
          in: header
          description: Organization ID (in header)
          required: true
          example: 0
          schema:
            type: integer
            examples:
              - 1
      responses:
        '200':
          description: Global timesheet report fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TimesheetReportResponse'
          headers: {}
          x-apidog-name: OK
      security:
        - oauth21: []
      x-apidog-folder: Task Timer
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/974159/apis/api-31159742-run
components:
  schemas:
    TimesheetReportResponse:
      type: object
      properties:
        items:
          type: array
          description: >-
            List of timesheet report items grouped by the specified groupBy
            parameter
          items:
            type: object
            properties: {}
            x-apidog-orders: []
            x-apidog-ignore-properties: []
        totalCount:
          type: integer
          description: Total number of distinct groups (projects or members)
          format: int64
          examples:
            - 25
        page:
          type: integer
          description: Current page number (zero-based)
          format: int32
          examples:
            - 0
        size:
          type: integer
          description: Page size
          format: int32
          examples:
            - 20
        totalPages:
          type: integer
          description: Total number of pages
          format: int32
          examples:
            - 2
        hasNext:
          type: boolean
          description: Whether there is a next page
          examples:
            - true
        hasPrevious:
          type: boolean
          description: Whether there is a previous page
          examples:
            - false
      description: Paginated timesheet report response
      x-apidog-orders:
        - items
        - totalCount
        - page
        - size
        - totalPages
        - hasNext
        - hasPrevious
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
  securitySchemes:
    oauth21:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: '{{auth-url}}/realms/astravue/protocol/openid-connect/auth'
          tokenUrl: '{{auth-url}}/realms/astravue/protocol/openid-connect/token'
          refreshUrl: ''
          scopes: {}
          x-apidog:
            addTokenTo: header
            useTokenType: access_token
            queryParamKey: access_token
            headerPrefix: Bearer
            redirectUri: https://app.apidog.com/oauth2-browser-callback.html
            clientId: '{{client-id}}'
            clientSecret: ''
            codeVerifier: ''
            challengeAlgorithm: S256
            clientAuthentication: header
            useTokenConfigAsRefreshTokenConfig: true
            authRequestParams: []
            tokenRequestParams: []
servers:
  - url: https://api.astravue.com
    description: Astravue's Production
security:
  - oauth21: []

```
