---
updatedAt: 2026-04-27T16:09:54.000Z
agentTools:
  projectIndex: https://developer.deputy.com/llms.txt
---

# Approve Roster (Pay and Time)

Approve a Roster (async). Can specify overrides for pay returns.

# OpenAPI definition

```json
{
  "openapi": "3.0.0",
  "info": {
    "title": "Deputy V2 API",
    "version": "1.0",
    "description": "\n\nFiltered to publicly-authenticated routes only (APIAuthenticator). Scoped-OAuth routes and internal JWT routes are excluded — see the separate \"Deputy V2 Scoped API\" spec for scoped endpoints."
  },
  "servers": [
    {
      "url": "https://{subdomain}.{region}.deputy.com/api",
      "description": "Deputy tenant",
      "variables": {
        "subdomain": {
          "default": "your-subdomain",
          "description": "Your Deputy tenant subdomain"
        },
        "region": {
          "default": "deputy",
          "enum": [
            "au",
            "eu",
            "na",
            "deputy"
          ],
          "description": "Deputy region: au, eu, na, or deputy (AU default)"
        }
      }
    }
  ],
  "components": {
    "schemas": {
      "OperationLock": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string"
          },
          "ids": {
            "type": "object",
            "additionalProperties": {
              "type": "boolean"
            }
          }
        }
      },
      "TsaAsyncResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean"
          },
          "operationId": {
            "type": "string"
          },
          "locks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OperationLock"
            }
          }
        }
      },
      "TsaChildTimesheetRequest": {
        "type": "object",
        "properties": {
          "operationalUnitId": {
            "type": "integer",
            "format": "int32"
          },
          "startTime": {
            "type": "string",
            "format": "int64"
          },
          "endTime": {
            "type": "string",
            "format": "int64"
          }
        }
      },
      "TsaRosterPayApproveRequestBody": {
        "type": "object",
        "properties": {
          "setPayReturns": {
            "$ref": "#/components/schemas/TsaTimesheetPayReturnOverrideRequest",
            "description": "omit this value to fall back to pay calculation/forecast."
          },
          "setProperties": {
            "$ref": "#/components/schemas/TsaTimesheetPropertyRequest"
          },
          "setAnswers": {
            "$ref": "#/components/schemas/TsaTimesheetQuestionSubmitAnswersRequest"
          },
          "setChildTimesheets": {
            "$ref": "#/components/schemas/TsaTimesheetChildrenRequest"
          }
        }
      },
      "TsaTimesheetBreaksRequest": {
        "type": "object",
        "properties": {
          "breaks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/modelTimesheetBreak"
            },
            "description": "passing an empty array here will delete all breaks for the timesheet."
          },
          "totalDurationMealBreak": {
            "type": "integer",
            "format": "int32",
            "description": "total duration of meal break in minutes"
          }
        }
      },
      "TsaTimesheetChildrenRequest": {
        "type": "object",
        "properties": {
          "childTimesheets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TsaChildTimesheetRequest"
            }
          }
        }
      },
      "TsaTimesheetPayReturnOverrideRequest": {
        "type": "object",
        "properties": {
          "payReturnOverrides": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/modelPayReturnOverride"
            },
            "description": "passing an empty array here will cause an approval with no pay returns."
          }
        }
      },
      "TsaTimesheetPropertyRequest": {
        "type": "object",
        "properties": {
          "startTime": {
            "type": "string",
            "format": "int64",
            "description": "unix epoch timestamp, seconds"
          },
          "endTime": {
            "type": "string",
            "format": "int64",
            "description": "unix epoch timestamp, seconds"
          },
          "operationalUnitId": {
            "type": "integer",
            "format": "int32",
            "description": "operational unit (area) ID"
          },
          "setBreaks": {
            "$ref": "#/components/schemas/TsaTimesheetBreaksRequest"
          },
          "employeeId": {
            "type": "integer",
            "format": "int32"
          },
          "leaveRuleId": {
            "type": "integer",
            "format": "int32",
            "description": "leave rule (leave type) ID"
          },
          "employeeComment": {
            "type": "string",
            "description": "employee comment for the timesheet"
          }
        }
      },
      "TsaTimesheetQuestionAnswerSubmission": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "employeeAnswer": {
            "type": "string"
          }
        }
      },
      "TsaTimesheetQuestionSubmitAnswersRequest": {
        "type": "object",
        "properties": {
          "answers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TsaTimesheetQuestionAnswerSubmission"
            },
            "description": "omitted answers will be assumed null."
          }
        }
      },
      "modelPayReturnOverride": {
        "type": "object",
        "properties": {
          "payRuleId": {
            "type": "integer",
            "format": "int32"
          },
          "value": {
            "type": "number",
            "format": "float"
          }
        }
      },
      "modelTimesheetBreak": {
        "type": "object",
        "properties": {
          "duration": {
            "type": "integer",
            "format": "int32"
          },
          "startTimeOffset": {
            "type": "integer",
            "format": "int32"
          },
          "breakType": {
            "$ref": "#/components/schemas/tenanttsav2modelBreakType"
          }
        }
      },
      "tenanttsav2modelBreakType": {
        "type": "string",
        "enum": [
          "NO_TYPE",
          "MEAL_BREAK",
          "REST_BREAK"
        ],
        "default": "NO_TYPE"
      }
    },
    "securitySchemes": {
      "ApiToken": {
        "type": "apiKey",
        "in": "header",
        "name": "OAuth"
      }
    }
  },
  "paths": {
    "/tsa/v2/timesheets/{id}:approve-roster": {
      "post": {
        "summary": "Approve Roster (Pay and Time)",
        "description": "Approve a Roster (async). Can specify overrides for pay returns.",
        "operationId": "TsaV2Controller_approveRoster",
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TsaAsyncResponse"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "tags": [
          "Timesheet Approval"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TsaRosterPayApproveRequestBody"
              }
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "ApiToken": []
    }
  ]
}
```