Batch update timesheets

Add MCP server to your AI tool

Allow AI tools and LLMs to interact with the API documentation portal through MCP.

MCP server URL

https://restapi.wyzio.com/mcp

Standard setup for AI tools providing an mcp.json file

mcp.json
{
  "Wyzio MCP server": {
    "url": "https://restapi.wyzio.com/mcp"
  }
}

Close
POST /api-v1/timesheet/batch

Updates multiple timesheets. Returns 200 on success, or 400 if any entry fails validation.

Headers

  • WEAL-TOKEN Required

    API token (can be retrieved from account settings)

  • TARGET-ORGANIZATION-ID

    ID of organization, for which the operation must be performed

application/json

Body Required

  • id integer Required

    Timesheet ID. Must reference an existing entity

  • date string Required

    Date (format dd/MM/yyyy)

  • status string

    Timesheet status

    Values are UNSUBMITTED, SUBMITTED, REJECTED, APPROVED, or BILLED.

  • description string

    Description of the work performed

  • time string Required

    Time spent, as a string with exactly two decimal places

  • isBillable boolean

    Whether this time entry is billable

  • departmentId integer

    Department ID. Send null to clear

  • officeId integer

    Office ID. Send null to clear

Responses

  • 200 application/json

    OK

    Hide response attribute Show response attribute object
    • items array[object]
      Hide items attributes Show items attributes object
      • errorCode object
        Hide errorCode attributes Show errorCode attributes object
        • errorCode string

          Values are NO_ERROR, NOT_IMPLEMENTED_YET, CONTACT_NOT_FOUND, FIELD_REQUIRED, VALIDATION_ERROR, DUPLICATION_ERROR, UNIQUE_CONSTRAINT_VIOLATION, WRONG_PASSWORD_FORMAT, WRONG_PASSWORD, ACTION_DENIED, NOT_FOUND, EXPECTED_ONE_FILE, UNIQUE_VIOLATION, CONTENT_EMPTY, INVALID_TYPE, CONVERSION_ERROR, FILE_PARSE_EXCEPTION, or IN_USE.

        • errorDetailValues array[object]
          Hide errorDetailValues attributes Show errorDetailValues attributes object
          • errorCode string
          • fieldName string
          • data string
          • isSevere boolean
      • freshData

        Refreshed domain data

      • freshRow

        Refreshed table row data

      • possibleWorkflows array[object]
        Hide possibleWorkflows attributes Show possibleWorkflows attributes object
        • id integer(int64)
        • name string
      • error boolean
      • severeError boolean
  • 400

    400 Bad Request

  • 401

    401 Unauthorized

  • 403

    403 Access Denied

  • 404

    404 Not Found

  • 500

    500 Internal Server Error

POST /api-v1/timesheet/batch
curl \
 --request POST 'https://wyzio.app/api-v1/timesheet/batch' \
 --header "Content-Type: application/json" \
 --data '[{"id":12345678,"date":"01/06/2026","status":"SUBMITTED","description":"Frontend development","time":8.0,"isBillable":true,"departmentId":12345678,"officeId":12345678}]'
Request examples
# Headers

# Payload
[
  {
    "id": 12345678,
    "date": "01/06/2026",
    "status": "SUBMITTED",
    "description": "Frontend development",
    "time": 8.0,
    "isBillable": true,
    "departmentId": 12345678,
    "officeId": 12345678
  }
]
Response examples (200)
{
  "items": [
    {
      "errorCode": {
        "errorCode": "NO_ERROR",
        "errorDetailValues": [
          {
            "errorCode": "string",
            "fieldName": "string",
            "data": "string",
            "isSevere": true
          }
        ]
      },
      "possibleWorkflows": [
        {
          "id": 42,
          "name": "string"
        }
      ],
      "error": true,
      "severeError": true
    }
  ]
}