BigChange Timesheets API

The Timesheets API from BigChange — 2 operation(s) for timesheets.

Operations 4

GET /v1/resources/{resourceId}/timesheets Gets a list of timesheets that belong to the specified resource #
POST /v1/resources/{resourceId}/timesheets Create a timesheet activity for a resource #
GET /v1/resources/{resourceId}/timesheets/{timesheetId} Get a resource timesheet #
PATCH /v1/resources/{resourceId}/timesheets/{timesheetId} Update a resource timesheet #

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/bigchange:bigchange-timesheets-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

bigchange-timesheets-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: BigChange DX Timesheets API
  description: Developer Experience API
  version: '1.0'
servers:
- url: https://api.bigchange.com
security:
- bearer: []
tags:
- name: Timesheets
paths:
  /v1/resources/{resourceId}/timesheets:
    get:
      tags:
      - Timesheets
      summary: Gets a list of timesheets that belong to the specified resource
      description: Retrieve a paged list of timesheets for a resource (required scope resources:read)
      parameters:
      - name: Customer-Id
        in: header
        description: The customer identifier
        required: true
        schema:
          type: integer
          format: int64
      - name: resourceId
        in: path
        description: The unique identifier of the resource whose timesheets are being retrieved
        required: true
        schema:
          type: integer
          format: int64
      - name: startAtDate
        in: query
        description: Only return timesheets where `startedAt` is on or after this date
        schema:
          type: string
          format: date-time
      - name: endAtDate
        in: query
        description: Only return timesheets where `endedAt` is on or before this date
        schema:
          type: string
          format: date-time
      - name: status
        in: query
        description: Only return timesheets where `status` matches the value provided
        schema:
          $ref: '#/components/schemas/TimesheetStatus'
      - name: pageNumber
        in: query
        description: 'The page number being requested (minimum: 1, maximum: 2147483)'
        schema:
          maximum: 2147483
          minimum: 1
          type: integer
          format: int32
      - name: pageSize
        in: query
        description: 'The page size being requested (minimum: 1, maximum: 1000)'
        schema:
          maximum: 1000
          minimum: 1
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PagedResponseReadTimesheetModel'
        '400':
          description: Bad Request
          content:
            application/problem+json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/ProblemDetails'
                - $ref: '#/components/schemas/HttpValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/problem+json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/ProblemDetails'
                - $ref: '#/components/schemas/HttpValidationProblemDetails'
        '404':
          description: Not Found
          content:
            application/problem+json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/ProblemDetails'
                - $ref: '#/components/schemas/HttpValidationProblemDetails'
        '422':
          description: Unprocessable Content
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/ProblemDetails'
                - $ref: '#/components/schemas/HttpValidationProblemDetails'
      operationId: getV1ResourcesByResourceIdTimesheets
      x-operation-id-source: derived
    post:
      tags:
      - Timesheets
      summary: Create a timesheet activity for a resource
      description: Create a new timesheet activity for a resource. For StartWork events, a subsequent EndWork will set this record's end date. For EndWork events, the startedAt timestamp is applied as the end date of the most recent preceding StartWork record with no end date. (required scope resources:write)
      parameters:
      - name: Customer-Id
        in: header
        description: The customer identifier
        required: true
        schema:
          type: integer
          format: int64
      - name: resourceId
        in: path
        description: The ID of the resource
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        description: The timesheet activity to create
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTimesheetActivityModel'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostResponseInt64'
        '400':
          description: Bad Request
          content:
            application/problem+json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/ProblemDetails'
                - $ref: '#/components/schemas/HttpValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/problem+json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/ProblemDetails'
                - $ref: '#/components/schemas/HttpValidationProblemDetails'
        '404':
          description: Not Found
          content:
            application/problem+json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/ProblemDetails'
                - $ref: '#/components/schemas/HttpValidationProblemDetails'
        '422':
          description: Unprocessable Content
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/ProblemDetails'
                - $ref: '#/components/schemas/HttpValidationProblemDetails'
      operationId: postV1ResourcesByResourceIdTimesheets
      x-operation-id-source: derived
  /v1/resources/{resourceId}/timesheets/{timesheetId}:
    get:
      tags:
      - Timesheets
      summary: Get a resource timesheet
      description: Retrieve the details of a single timesheet for a resource (required scope resources:read)
      parameters:
      - name: Customer-Id
        in: header
        description: The customer identifier
        required: true
        schema:
          type: integer
          format: int64
      - name: resourceId
        in: path
        description: The unique identifier of the resource associated with the timesheet
        required: true
        schema:
          maximum: 9223372036854776000
          minimum: 1
          type: integer
          format: int64
      - name: timesheetId
        in: path
        description: The unique identifier of the timesheet
        required: true
        schema:
          maximum: 9223372036854776000
          minimum: 1
          type: integer
          format: int64
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReadTimesheetModel'
        '400':
          description: Bad Request
          content:
            application/problem+json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/ProblemDetails'
                - $ref: '#/components/schemas/HttpValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/problem+json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/ProblemDetails'
                - $ref: '#/components/schemas/HttpValidationProblemDetails'
        '404':
          description: Not Found
          content:
            application/problem+json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/ProblemDetails'
                - $ref: '#/components/schemas/HttpValidationProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/ProblemDetails'
                - $ref: '#/components/schemas/HttpValidationProblemDetails'
      operationId: getV1ResourcesByResourceIdTimesheetsByTimesheetId
      x-operation-id-source: derived
    patch:
      tags:
      - Timesheets
      summary: Update a resource timesheet
      description: Update the details of a single resource timesheet (required scope resources:write)
      parameters:
      - name: Customer-Id
        in: header
        description: The customer identifier
        required: true
        schema:
          type: integer
          format: int64
      - name: resourceId
        in: path
        description: The resource id
        required: true
        schema:
          type: integer
          format: int64
      - name: timesheetId
        in: path
        description: The timesheet id
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        description: Model used to update timesheet. At least one optional value must be provided
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateTimesheetModel'
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/problem+json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/ProblemDetails'
                - $ref: '#/components/schemas/HttpValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/problem+json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/ProblemDetails'
                - $ref: '#/components/schemas/HttpValidationProblemDetails'
        '404':
          description: Not Found
          content:
            application/problem+json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/ProblemDetails'
                - $ref: '#/components/schemas/HttpValidationProblemDetails'
        '422':
          description: Unprocessable Content
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/ProblemDetails'
                - $ref: '#/components/schemas/HttpValidationProblemDetails'
      operationId: patchV1ResourcesByResourceIdTimesheetsByTimesheetId
      x-operation-id-source: derived
components:
  schemas:
    ReadTimesheetModel:
      type: object
      properties:
        id:
          type: integer
          description: The unique identifier associated with the timesheet
          format: int64
          example: 12345
        startedAt:
          type: string
          description: The date and time the resource clocked in
          format: date-time
        endedAt:
          type:
          - string
          - 'null'
          description: The date and time the resource clocked out. Null if the resource has not yet clocked out
          format: date-time
        status:
          $ref: '#/components/schemas/TimesheetStatus'
        totalHours:
          type: number
          description: The total number of hours worked. Zero if the resource has not yet clocked out
          format: double
          example: 7.5
        createdAt:
          type: string
          description: ''
          format: date-time
        updatedAt:
          type: string
          description: The date and time the timesheet was last updated
          format: date-time
      additionalProperties: false
      description: Model for reading a timesheet
    ValidationProblemDetails:
      type: object
      properties:
        errors:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
        type:
          type:
          - string
          - 'null'
          description: A URI reference [RFC3986] that identifies the problem type
          example: https://example.com/probs/out-of-credit
        title:
          type:
          - string
          - 'null'
          description: A short, human-readable summary of the problem type
          example: You do not have enough credit
        status:
          type:
          - integer
          - 'null'
          description: The HTTP status code([RFC7231], Section 6) generated by the origin server for this occurrence of the problem
          format: int32
          example: 403
        detail:
          type:
          - string
          - 'null'
          description: A human-readable explanation specific to this occurrence of the problem
          example: Your current balance is 30, but that costs 50
        instance:
          type:
          - string
          - 'null'
          description: A URI reference that identifies the specific occurrence of the problem
          example: /account/12345/msgs/abc
      additionalProperties: {}
    TimesheetStatus:
      enum:
      - unsigned
      - signed
      - queried
      - rejected
      - approved
      - paid
      type: string
      description: 'The status of a resource timesheet.<p>Possible values:</p><ul><li><b>unsigned</b>: The timesheet has not yet been signed by the resource.</li><li><b>signed</b>: The timesheet has been signed by the resource.</li><li><b>queried</b>: The timesheet has been queried and requires review.</li><li><b>rejected</b>: The timesheet has been rejected.</li><li><b>approved</b>: The timesheet has been approved.</li><li><b>paid</b>: The timesheet has been paid.</li></ul>'
      example: unsigned
    ProblemDetails:
      type: object
      properties:
        type:
          type:
          - string
          - 'null'
          description: A URI reference [RFC3986] that identifies the problem type
          example: https://example.com/probs/out-of-credit
        title:
          type:
          - string
          - 'null'
          description: A short, human-readable summary of the problem type
          example: You do not have enough credit
        status:
          type:
          - integer
          - 'null'
          description: The HTTP status code([RFC7231], Section 6) generated by the origin server for this occurrence of the problem
          format: int32
          example: 403
        detail:
          type:
          - string
          - 'null'
          description: A human-readable explanation specific to this occurrence of the problem
          example: Your current balance is 30, but that costs 50
        instance:
          type:
          - string
          - 'null'
          description: A URI reference that identifies the specific occurrence of the problem
          example: /account/12345/msgs/abc
      additionalProperties: {}
    PagedResponseReadTimesheetModel:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/ReadTimesheetModel'
          description: The items returned for the requested page
        pageNumber:
          type: integer
          description: The page number of the response where 1 is the first page
          format: int32
          example: 2
        pageSize:
          type: integer
          description: The number of items requested for the current page
          format: int32
          example: 100
        pageItemCount:
          type: integer
          description: The number of items returned in the current page
          format: int32
          readOnly: true
          example: 55
      additionalProperties: false
      description: A paged collection of items
    TimesheetEventType:
      enum:
      - startWork
      - endWork
      type: string
      description: 'The type of timesheet event being recorded<p>Possible values:</p><ul><li><b>startWork</b>: Start of a work period. When a subsequent EndWork event is recorded, its</li><li><b>endWork</b>: End of a work period. When recorded, the</li></ul>'
      example: startWork
    PostResponseInt64:
      type: object
      properties:
        id:
          type: integer
          description: Identifier of the newly created record
          format: int64
      additionalProperties: false
      description: Represents a response for a POST request, containing the ID of the newly created record
    WriteDateTime:
      type: string
      additionalProperties: false
      description: Represents a DateTime value from a write endpoint that accepts a raw string,<br/>deferring parsing so that invalid values can be reported via FluentValidation<br/>rather than a model-binding error
      format: date-time
    HttpValidationProblemDetails:
      type: object
      allOf:
      - $ref: '#/components/schemas/ProblemDetails'
      properties:
        errors:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
      additionalProperties: {}
    CreateTimesheetActivityModel:
      type: object
      properties:
        eventType:
          $ref: '#/components/schemas/TimesheetEventType'
        startedAt:
          $ref: '#/components/schemas/WriteDateTime'
        endedAt:
          $ref: '#/components/schemas/WriteDateTime'
      additionalProperties: false
      description: Represents the data required to create a new timesheet activity for a resource
    UpdateTimesheetModel:
      type: object
      properties:
        startedAt:
          type: string
          description: 'The updated clock-in timestamp<br/><br/>Optional: Omit to retain current value'
          format: date-time
          example: '2024-06-01T08:00:00.0000000+00:00'
          x-optional: Omit to retain current value
        endedAt:
          type:
          - string
          - 'null'
          description: 'The updated clock-out timestamp<br/><br/>Optional: Omit to retain current value or provide null to unset'
          format: date-time
          example: '2024-06-01T16:30:00.0000000+00:00'
          x-optional: Omit to retain current value or provide null to unset
        status:
          $ref: '#/components/schemas/TimesheetStatus'
      additionalProperties: false
      description: Model used to update a resource timesheet. At least one optional field must be provided
  securitySchemes:
    bearer:
      type: http
      description: Enter the access token only.
      scheme: bearer
      bearerFormat: JWT