object Supported-Benefit
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "readOnly": true,
      "description": "The name of the benefit."
    },
    "pretax": {
      "type": "boolean",
      "readOnly": true,
      "description": "Whether the benefit is deducted before tax calculations, thus reducing one’s taxable income"
    },
    "imputed": {
      "type": "boolean",
      "readOnly": true,
      "description": "Whether the benefit is considered imputed income."
    },
    "posttax": {
      "type": "boolean",
      "readOnly": true,
      "description": "Whether the benefit is deducted after tax calculations."
    },
    "category": {
      "type": "string",
      "readOnly": true,
      "description": "Category where the benefit belongs to."
    },
    "healthcare": {
      "type": "boolean",
      "readOnly": true,
      "description": "Whether the benefit is healthcare related."
    },
    "retirement": {
      "type": "boolean",
      "readOnly": true,
      "description": "Whether the benefit is associated with retirement planning."
    },
    "description": {
      "type": "string",
      "readOnly": true,
      "description": "The description of the benefit."
    },
    "benefit_type": {
      "type": "number",
      "readOnly": true,
      "description": "The benefit type in Gusto."
    },
    "yearly_limit": {
      "type": "boolean",
      "readOnly": true,
      "description": "Whether the benefit has a government mandated yearly limit."
    }
  },
  "x-examples": {
    "Example": {
      "name": "Medical Insurance",
      "pretax": true,
      "imputed": false,
      "posttax": false,
      "category": "Health",
      "healthcare": true,
      "retirement": false,
      "description": "Deductions and contributions for Medical Insurance",
      "benefit_type": 1,
      "yearly_limit": false
    }
  },
  "description": ""
}
object Tax-Liabilities-Selections
{
  "type": "object",
  "title": "",
  "x-tags": [
    "External Payrolls"
  ],
  "properties": {
    "tax_id": {
      "type": "integer",
      "readOnly": true,
      "description": "The ID of the tax."
    },
    "tax_name": {
      "type": "string",
      "readOnly": true,
      "description": "The name of the tax."
    },
    "possible_liabilities": {
      "type": "object",
      "readOnly": true,
      "properties": {
        "liability_amount": {
          "type": "string",
          "readOnly": true,
          "description": "Liability amount."
        },
        "payroll_check_date": {
          "type": "string",
          "readOnly": true,
          "description": "The external payroll check date."
        },
        "external_payroll_uuid": {
          "type": "string",
          "readOnly": true,
          "description": "The UUID of the external payroll."
        }
      },
      "description": "Possible tax liabilities selections."
    },
    "last_unpaid_external_payroll_uuid": {
      "type": "string",
      "nullable": true,
      "readOnly": true,
      "description": "The UUID of last unpaid external payroll."
    }
  },
  "x-examples": {
    "Example": {
      "tax_id": 1,
      "tax_name": "Federal Income Tax",
      "possible_liabilities": [
        {
          "liability_amount": 0,
          "payroll_check_date": null,
          "external_payroll_uuid": null
        },
        {
          "liability_amount": 3000,
          "payroll_check_date": "2022-06-01",
          "external_payroll_uuid": "1bf1efe1-72d4-4e6e-a181-611f3ea66435"
        }
      ],
      "last_unpaid_external_payroll_uuid": null
    }
  },
  "description": "The representation of tax liabilities selections."
}
object Tax-Requirement
{
  "type": "object",
  "properties": {
    "key": {
      "$ref": "#/components/schemas/Tax-Requirement-Key"
    },
    "label": {
      "type": "string",
      "description": "A customer facing description of the requirement"
    },
    "value": {
      "type": "string",
      "description": "The \"answer\""
    },
    "metadata": {
      "$ref": "#/components/schemas/Tax-Requirement-Metadata"
    },
    "description": {
      "type": "string",
      "description": "A more detailed customer facing description of the requirement"
    },
    "applicable_if": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "$ref": "#/components/schemas/Tax-Requirement-Key"
          },
          "value": {
            "oneOf": [
              {
                "type": "boolean"
              },
              {
                "type": "string"
              },
              {
                "type": "number"
              }
            ],
            "description": "The required value of the requirement identified by `key`"
          }
        }
      },
      "description": "An array of references to other requirements within the requirement set. This requirement is only applicable if all referenced requirements have values matching the corresponding `value`. The primary use-case is dynamically hiding and showing requirements as values change. E.g. Show Requirement-B when Requirement-A has been answered with `false`. To be explicit, an empty array means the requirement is applicable."
    }
  },
  "x-examples": {
    "ga-withholding-requirement-example": {
      "key": "71653ec0-00b5-4c66-a58b-22ecf21704c5",
      "label": "Withholding Number",
      "value": "1233214-AB",
      "metadata": {
        "mask": "#######-^^",
        "type": "account_number",
        "prefix": null
      },
      "description": "If you have run payroll in the past in GA, find your withholding number on notices received from the Georgia Department of Revenue, or call the agency at (877) 423-6711. If you don’t have a number yet, you should <a target='_blank' data-bypass href='https://gtc.dor.ga.gov/_/#1'>register the business online</a>. The last two characters of your ID must be upper case letters.",
      "applicable_if": []
    }
  }
}
string Tax-Requirement-Effective-From
{
  "type": "string",
  "title": "Tax-Requirement-Effective-From",
  "nullable": true,
  "description": "An ISO 8601 formatted date representing the date values became effective. Some requirement sets are effective dated, while others are not. Multiple requirement sets for the same state/key can/will exist with unique effective dates. If a requirement set is has an `effective_from` value, all requirement sets with the same key will also have an `effective_from` value."
}
string Tax-Requirement-Key
{
  "type": "string",
  "title": "Tax-Requirement-Key",
  "description": "An identifier for an individual requirement. Uniqueness is guaranteed within a requirement set."
}
object Tax-Requirement-Metadata
{
  "type": "object",
  "required": [
    "type"
  ],
  "properties": {
    "mask": {
      "type": "string",
      "description": "[for `account_number`] A pattern describing the format of the account number\n\nThe mask is a sequence of characters representing the requirements of the actual account number. Each character in the mask represents a single character in the account number as follows:\n- `#`: a digit (`\\d`)\n- `@`: a upper or lower case letter (`[a-zA-Z]`)\n- `^`: an uppercase letter (`[A-Z]`)\n- `%`: a digit or uppercase letter (`[0-9A-Z]`)\n- any other character represents the literal character\n\nExamples:\n- mask: `WHT-######` represents `WHT-` followed by 5 digits, e.g. `WHT-33421`\n- mask: `%####-^^` supports values of `75544-AB` and `Z7654-HK`\n"
    },
    "type": {
      "enum": [
        "text",
        "currency",
        "radio",
        "select",
        "percent",
        "account_number",
        "tax_rate",
        "workers_compensation_rate"
      ],
      "type": "string",
      "readOnly": true,
      "description": "Describes the type of requirement - each type may have additional metadata properties to describe possible values, formats, etc.\n\n- `text`: free-text input, no additional requirements\n- `currency`: a value representing a dollar amount, e.g. `374.55` representing `$374.55`\n- `radio`: choose one of options provided, see `options`\n- `select`: choose one of options provided, see `options`\n- `percent`: A decimal value representing a percentage, e.g. `0.034` representing `3.4%`\n- `account_number`: An account number for a tax agency, more information provided by `mask` and `prefix`\n- `tax_rate`: A decimal value representing a tax rate, e.g. `0.034` representing a tax rate of `3.4%`, see `validation` for additional validation guidance\n- `workers_compensation_rate`: A decimal value representing a percentage, see `risk_class_code`, `risk_class_description`, and `rate_type`\n"
    },
    "prefix": {
      "type": "string",
      "description": "[for `account_number`] A value that precedes the value to be collected - useful for display, but should not be submitted as part of the value. E.g. some tax agencies use an account number that is a company's federal ein plus two digits. In that case the mask would be `##` and the prefix `XXXXX1234`."
    },
    "options": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "label",
          "value"
        ],
        "properties": {
          "label": {
            "type": "string",
            "description": "A customer facing label for the answer"
          },
          "value": {
            "type": "string",
            "description": "The actual value to be submitted"
          },
          "short_label": {
            "type": "string",
            "description": "A less verbose label that may sometimes be available"
          }
        }
      },
      "description": "[for `select` or `radio`] An array of objects describing the possible values."
    },
    "rate_type": {
      "enum": [
        "percent",
        "currency_per_hour"
      ],
      "type": "string",
      "description": "[for `workers_compensation_rate`] The type of rate being collected. Either:\n - `percent`: A percentage formatted as a decimal, e.g. `0.01` for 1%\n - `currency_per_hour`: A dollar amount per hour, e.g. `3.24` for $3.24/hr\n"
    },
    "validation": {
      "type": "object",
      "required": [
        "type"
      ],
      "properties": {
        "max": {
          "type": "string",
          "description": "[for `min_max`] The inclusive upper bound of the tax rate"
        },
        "min": {
          "type": "string",
          "description": "[for `min_max`] The inclusive lower bound of the tax rate"
        },
        "type": {
          "enum": [
            "one_of",
            "min_max"
          ],
          "type": "string",
          "description": "Describes the type of tax_rate validation rule"
        },
        "rates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[for `one_of`] The possible, unformatted tax rates for selection.\n- e.g. [\"0.0\", \"0.001\"] representing 0% and 0.1%\n"
        }
      },
      "description": "[for `tax_rate`] Describes the validation required for the tax rate"
    },
    "risk_class_code": {
      "type": "string",
      "description": "[for `workers_compensation_rate`] The industry risk class code for the rate being requested"
    },
    "risk_class_description": {
      "type": "string",
      "description": "[for `workers_compensation_rate`] A description of the industry risk class for the rate being requested"
    }
  },
  "x-examples": {
    "radio-example": {
      "metadata": {
        "type": "radio",
        "options": [
          {
            "label": "No, we cannot reimburse the state—we have to pay SUI taxes quarterly",
            "value": false,
            "short_label": "Not Reimbursable"
          },
          {
            "label": "Yes, we can reimburse the state if an employee collects SUI benefits—we don’t have to pay SUI taxes quarterly",
            "value": true,
            "short_label": "Reimbursable"
          }
        ]
      }
    },
    "select-example": {
      "type": "select",
      "options": [
        {
          "label": "Semiweekly",
          "value": "Semi-weekly"
        },
        {
          "label": "Monthly",
          "value": "Monthly"
        },
        {
          "label": "Quarterly",
          "value": "Quarterly"
        }
      ]
    },
    "tax_rate-example": {
      "metadata": {
        "type": "tax_rate",
        "validation": {
          "max": "0.081",
          "min": "0.0004",
          "type": "min_max"
        }
      }
    },
    "account_number-example": {
      "metadata": {
        "mask": "######-##",
        "type": "account_number",
        "prefix": null
      }
    }
  },
  "description": ""
}
object Tax-Requirement-Set
{
  "type": "object",
  "properties": {
    "key": {
      "$ref": "#/components/schemas/Tax-Requirement-Set-Key"
    },
    "label": {
      "type": "string",
      "description": "Customer facing label for the requirement set, e.g. \"Registrations\""
    },
    "state": {
      "$ref": "#/components/schemas/State"
    },
    "requirements": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/Tax-Requirement"
      }
    },
    "effective_from": {
      "$ref": "#/components/schemas/Tax-Requirement-Effective-From"
    }
  },
  "x-examples": {
    "tax-requirements-set-ga-registrations-example": {
      "key": "registrations",
      "label": "Registrations",
      "state": "GA",
      "requirements": [
        {
          "key": "71653ec0-00b5-4c66-a58b-22ecf21704c5",
          "label": "Withholding Number",
          "value": "1233214-AB",
          "metadata": {
            "mask": "#######-^^",
            "type": "account_number",
            "prefix": null
          },
          "description": "If you have run payroll in the past in GA, find your withholding number on notices received from the Georgia Department of Revenue, or call the agency at (877) 423-6711. If you don’t have a number yet, you should <a target='_blank' data-bypass href='https://gtc.dor.ga.gov/_/#1'>register the business online</a>. The last two characters of your ID must be upper case letters.",
          "applicable_if": []
        },
        {
          "key": "6c0911ab-5860-412e-bdef-6437cd881df5",
          "label": "DOL Account Number",
          "value": "474747-88",
          "metadata": {
            "mask": "######-##",
            "type": "account_number",
            "prefix": null
          },
          "description": "If you have run payroll in the past in GA, find your DOL account number on notices received from the Georgia Department of Labor, or call the agency at (404) 232-3300. If you don’t have an account number yet, please <a target='_blank' data-bypass href='https://support.gusto.com/hc/en-us/articles/210139038#registerdol'>follow the instructions here</a> to register your business with the Georgia Dept. of Labor.",
          "applicable_if": []
        }
      ],
      "effective_from": null
    }
  },
  "description": ""
}
string Tax-Requirement-Set-Key
{
  "type": "string",
  "title": "Tax-Requirement-Set-Key",
  "description": "An identifier for a set of requirements. A list of requirement sets can contain multiple sets with the same `key` and different `effective_from` values."
}
object Tax-Requirements-State
{
  "type": "object",
  "title": "Tax-Requirements-State",
  "properties": {
    "state": {
      "$ref": "#/components/schemas/State"
    },
    "company_uuid": {
      "type": "string"
    },
    "requirement_sets": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/Tax-Requirement-Set"
      }
    }
  },
  "x-examples": {
    "tax-requirements-state-ga-example": {
      "state": "GA",
      "company_uuid": "6c14eac3-0da2-474d-bda1-786b3602d381",
      "requirement_sets": [
        {
          "key": "registrations",
          "label": "Registrations",
          "state": "GA",
          "requirements": [
            {
              "key": "71653ec0-00b5-4c66-a58b-22ecf21704c5",
              "label": "Withholding Number",
              "value": "1233214-AB",
              "metadata": {
                "mask": "#######-^^",
                "type": "account_number",
                "prefix": null
              },
              "description": "If you have run payroll in the past in GA, find your withholding number on notices received from the Georgia Department of Revenue, or call the agency at (877) 423-6711. If you don’t have a number yet, you should <a target='_blank' data-bypass href='https://gtc.dor.ga.gov/_/#1'>register the business online</a>. The last two characters of your ID must be upper case letters.",
              "applicable_if": []
            },
            {
              "key": "6c0911ab-5860-412e-bdef-6437cd881df5",
              "label": "DOL Account Number",
              "value": "474747-88",
              "metadata": {
                "mask": "######-##",
                "type": "account_number",
                "prefix": null
              },
              "description": "If you have run payroll in the past in GA, find your DOL account number on notices received from the Georgia Department of Labor, or call the agency at (404) 232-3300. If you don’t have an account number yet, please <a target='_blank' data-bypass href='https://support.gusto.com/hc/en-us/articles/210139038#registerdol'>follow the instructions here</a> to register your business with the Georgia Dept. of Labor.",
              "applicable_if": []
            }
          ],
          "effective_from": null
        },
        {
          "key": "taxrates",
          "label": "Tax Rates",
          "state": "GA",
          "requirements": [
            {
              "key": "suireimbursable",
              "label": "SUI Reimburser",
              "value": false,
              "metadata": {
                "type": "radio",
                "options": [
                  {
                    "label": "No, we cannot reimburse the state—we have to pay SUI taxes quarterly",
                    "value": false,
                    "short_label": "Not Reimbursable"
                  },
                  {
                    "label": "Yes, we can reimburse the state if an employee collects SUI benefits—we don’t have to pay SUI taxes quarterly",
                    "value": true,
                    "short_label": "Reimbursable"
                  }
                ]
              },
              "description": "Instead of paying state unemployment insurance (SUI) taxes quarterly, some businesses (like non-profits or government organizations) may be allowed to reimburse the state if one of their employees collects unemployment benefits.",
              "applicable_if": []
            },
            {
              "key": "e0ac2284-8d30-4100-ae23-f85f9574868b",
              "label": "Total Tax Rate",
              "value": "0.05",
              "metadata": {
                "type": "tax_rate",
                "validation": {
                  "max": "0.081",
                  "min": "0.0004",
                  "type": "min_max"
                }
              },
              "description": "Haven't received your assigned rate yet? <a target='_blank' data-bypass href='https://support.gusto.com/article/106622236100000/State-unemployment-insurance-(SUI)-tax'>Find the new employer rate</a> and enter it here.",
              "applicable_if": [
                {
                  "key": "suireimbursable",
                  "value": false
                }
              ]
            }
          ],
          "effective_from": "2022-01-01"
        },
        {
          "key": "depositschedules",
          "label": "Deposit Schedules",
          "state": "GA",
          "requirements": [
            {
              "key": "6ddfcbeb-94d3-4003-bfc2-8c6e1ca9f70c",
              "label": "Deposit Schedule",
              "value": "Monthly",
              "metadata": {
                "type": "select",
                "options": [
                  {
                    "label": "Semiweekly",
                    "value": "Semi-weekly"
                  },
                  {
                    "label": "Monthly",
                    "value": "Monthly"
                  },
                  {
                    "label": "Quarterly",
                    "value": "Quarterly"
                  }
                ]
              },
              "description": "Georgia rejects payments made on the wrong schedule. GA employers receive their schedule on a registration verification letter after registering with the Georgia Dept. of Revenue. If you are unsure, call the agency at (877) 423-6711. If you did not register your business yet, please <a target='_blank' data-bypass href='https://gtc.dor.ga.gov/_/#2'>register the business with the Georgia Dept. of Revenue</a>.",
              "applicable_if": []
            }
          ],
          "effective_from": "2022-01-01"
        },
        {
          "key": "depositschedules",
          "label": "Deposit Schedules",
          "state": "GA",
          "requirements": [
            {
              "key": "6ddfcbeb-94d3-4003-bfc2-8c6e1ca9f70c",
              "label": "Deposit Schedule",
              "value": "Monthly",
              "metadata": {
                "type": "select",
                "options": [
                  {
                    "label": "Semiweekly",
                    "value": "Semi-weekly"
                  },
                  {
                    "label": "Monthly",
                    "value": "Monthly"
                  },
                  {
                    "label": "Quarterly",
                    "value": "Quarterly"
                  }
                ]
              },
              "description": "Georgia rejects payments made on the wrong schedule. GA employers receive their schedule on a registration verification letter after registering with the Georgia Dept. of Revenue. If you are unsure, call the agency at (877) 423-6711. If you did not register your business yet, please <a target='_blank' data-bypass href='https://gtc.dor.ga.gov/_/#2'>register the business with the Georgia Dept. of Revenue</a>.",
              "applicable_if": []
            }
          ],
          "effective_from": "2022-07-01"
        }
      ]
    }
  },
  "description": ""
}
array TaxRequirementsGetStatesResponse
{
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "state": {
        "$ref": "#/components/schemas/State"
      },
      "setup_complete": {
        "type": "boolean",
        "description": "If all requirements for the state have been satisfied such that the company can complete\nonboarding, the company is `setup_complete` in the state. A company must be `setup_complete` in\nall relevant states to complete the `state_setup` company onboarding step."
      }
    }
  },
  "x-examples": {
    "example-1": [
      {
        "state": "CA",
        "setup_complete": true
      },
      {
        "state": "GA",
        "setup_complete": false
      }
    ]
  }
}
object TaxRequirementsUpdateStateTaxesRequest
{
  "type": "object",
  "properties": {
    "requirement_sets": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "$ref": "#/components/schemas/Tax-Requirement-Set-Key"
          },
          "state": {
            "$ref": "#/components/schemas/State"
          },
          "requirements": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "key": {
                  "$ref": "#/components/schemas/Tax-Requirement-Key"
                },
                "value": {
                  "type": "string",
                  "nullable": true
                }
              }
            }
          },
          "effective_from": {
            "$ref": "#/components/schemas/Tax-Requirement-Effective-From"
          }
        }
      }
    }
  },
  "x-examples": {
    "example-1": {
      "requirement_sets": [
        {
          "key": "registrations",
          "state": "GA",
          "requirements": [
            {
              "key": "71653ec0-00b5-4c66-a58b-22ecf21704c5",
              "value": "1233214-AB"
            },
            {
              "key": "6c0911ab-5860-412e-bdef-6437cd881df5",
              "value": "474747-22"
            }
          ],
          "effective_from": null
        },
        {
          "key": "taxrates",
          "state": "GA",
          "requirements": [
            {
              "key": "e0ac2284-8d30-4100-ae23-f85f9574868b",
              "value": "0.05"
            }
          ],
          "effective_from": "2022-01-01"
        },
        {
          "key": "depositschedules",
          "state": "GA",
          "requirements": [
            {
              "key": "6ddfcbeb-94d3-4003-bfc2-8c6e1ca9f70c",
              "value": "Semi-weekly"
            }
          ],
          "effective_from": "2022-01-01"
        }
      ]
    }
  }
}
object Termination
{
  "type": "object",
  "x-tags": [
    "Terminations"
  ],
  "properties": {
    "uuid": {
      "type": "string",
      "readOnly": true,
      "description": "The UUID of the termination object."
    },
    "active": {
      "type": "boolean",
      "readOnly": true,
      "description": "Whether the employee's termination has gone into effect."
    },
    "version": {
      "type": "string",
      "description": "The current version of the object. See the [versioning guide](https://docs.gusto.com/embedded-payroll/docs/idempotency) for information on how to use this field."
    },
    "cancelable": {
      "type": "boolean",
      "readOnly": true,
      "description": "Whether the employee's termination is cancelable. Cancelable is true if `run_termination_payroll` is false and `effective_date` is in the future."
    },
    "employee_uuid": {
      "type": "integer",
      "readOnly": true,
      "description": "The UUID of the employee to which this termination is attached."
    },
    "effective_date": {
      "type": "string",
      "readOnly": false,
      "description": "The employee's last day of work."
    },
    "run_termination_payroll": {
      "type": "boolean",
      "readOnly": false,
      "description": "If true, the employee should receive their final wages via an off-cycle payroll. If false, they should receive their final wages on their current pay schedule."
    }
  },
  "x-examples": {
    "example-1": {
      "uuid": "da441196-43a9-4d23-ad5d-f37ce6bb99c0",
      "active": true,
      "version": "d487dd0b55dfcacdd920ccbdaeafa351",
      "cancelable": true,
      "employee_uuid": "da441196-43a9-4d23-ad5d-f37ce6bb99c0",
      "effective_date": "2020-03-10",
      "run_termination_payroll": false
    }
  },
  "description": "The representation of a termination in Gusto."
}
object Time-Off-Activity
{
  "type": "object",
  "properties": {
    "balance": {
      "type": "string",
      "format": "float",
      "description": "The time off balance at the time of the activity"
    },
    "event_type": {
      "type": "string",
      "description": "The type of the time off event/activity"
    },
    "policy_name": {
      "type": "string",
      "description": "The name of the time off policy for this activity"
    },
    "policy_uuid": {
      "type": "string",
      "description": "unique identifier of a time off policy"
    },
    "time_off_type": {
      "enum": [
        "vacation",
        "sick"
      ],
      "type": "string",
      "description": "Type of the time off activity"
    },
    "balance_change": {
      "type": "string",
      "format": "float",
      "description": "The amount the time off balance changed as a result of the activity"
    },
    "effective_time": {
      "type": "string",
      "description": "The datetime of the time off activity"
    },
    "event_description": {
      "type": "string",
      "description": "A description for the time off event/activity"
    }
  },
  "x-examples": {
    "example": {
      "balance": "0.0",
      "event_type": "TimeOffEvent::AddToPolicy",
      "policy_name": "Paid Time Off",
      "policy_uuid": "a7838f74-4c29-4b70-9bfb-02a4e3e60709",
      "time_off_type": "vacation",
      "balance_change": "0.0",
      "effective_time": "2022-09-27T13:43:03.000-07:00",
      "event_description": "Added to policy: Vacation Per Hour Worked"
    }
  },
  "description": "Representation of a Time Off Activity"
}
object Time-Off-Policy
{
  "type": "object",
  "required": [
    "uuid",
    "company_uuid",
    "name",
    "policy_type",
    "accrual_method",
    "is_active",
    "employees"
  ],
  "properties": {
    "name": {
      "type": "string",
      "description": "Name of the time off policy"
    },
    "uuid": {
      "type": "string",
      "description": "Unique identifier of a time off policy"
    },
    "version": {
      "type": "string",
      "description": "The current version of the object. See the [versioning guide](https://docs.gusto.com/embedded-payroll/docs/versioning#object-layer) for information on how to use this field."
    },
    "complete": {
      "type": "boolean",
      "description": "boolean representing if a policy has completed configuration"
    },
    "employees": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string"
          }
        }
      },
      "description": "List of employee UUIDs under a time off policy"
    },
    "is_active": {
      "type": "boolean",
      "description": "boolean representing if a policy is active or not"
    },
    "max_hours": {
      "type": "string",
      "format": "float",
      "description": "The max number of hours an employee can accrue"
    },
    "policy_type": {
      "enum": [
        "vacation",
        "sick"
      ],
      "type": "string",
      "description": "Type of the time off policy"
    },
    "accrual_rate": {
      "type": "string",
      "format": "float",
      "description": "The rate at which the time off hours will accrue for an employee on the policy. Represented as a float, e.g. \"40.0\"."
    },
    "company_uuid": {
      "type": "string",
      "description": "Unique identifier for the company owning the time off policy"
    },
    "accrual_method": {
      "type": "string",
      "description": "Policy time off accrual method"
    },
    "accrual_rate_unit": {
      "type": "string",
      "format": "float",
      "description": "The number of hours an employee has to work or be paid for to accrue the number of hours set in the accrual rate. Only used for hourly policies (per_hour_paid, per_hour_paid_no_overtime, per_hour_work, per_hour_worked_no_overtime). Represented as a float, e.g. \"40.0\"."
    },
    "carryover_limit_hours": {
      "type": "string",
      "format": "float",
      "description": "The max number of hours and employee can carryover from one year to the next"
    },
    "paid_out_on_termination": {
      "type": "boolean",
      "description": "Boolean representing if an employees accrued time off hours will be paid out on termination"
    },
    "max_accrual_hours_per_year": {
      "type": "string",
      "format": "float",
      "description": "The max number of hours and employee can accrue in a year"
    },
    "accrual_waiting_period_days": {
      "type": "integer",
      "description": "Number of days before an employee on the policy will begin accruing time off hours"
    }
  },
  "x-examples": {
    "example": {
      "name": "test policy",
      "uuid": "3f746cd0-dd08-408f-b712-8180c7c621e9",
      "employees": [
        {
          "uuid": "c61d1895-5cf8-4217-88c8-20d7c3132a04"
        }
      ],
      "is_active": true,
      "policy_type": "vacation",
      "company_uuid": "de83cff2-8e7a-448e-a28c-14258a9971c3",
      "accrual_method": "unlimited"
    }
  },
  "description": "Representation of a Time Off Policy"
}
object Time-Off-Request
{
  "type": "object",
  "title": "Time-Off-Request",
  "x-tags": [
    "Time Off Requests"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "The ID of the time off request."
    },
    "days": {
      "type": "object",
      "readOnly": true,
      "description": "An object that represents the days in the time off request. The keys of the object are the dates, formatted as a YYYY-MM-DD string. The values of the object are the number of hours requested off for each day, formatted as a string representation of a numeric decimal to the thousands place."
    },
    "status": {
      "enum": [
        "pending",
        "approved",
        "denied"
      ],
      "type": "string",
      "readOnly": true,
      "description": "The status of the time off request."
    },
    "approver": {
      "type": "object",
      "nullable": true,
      "readOnly": true,
      "properties": {
        "id": {
          "type": "string",
          "readOnly": true,
          "description": "The ID of the employee who approved the time off request."
        },
        "full_name": {
          "type": "string",
          "readOnly": true,
          "description": "The full name of the employee who approved the time off request."
        }
      },
      "description": "This value will be null if the request has not been approved."
    },
    "employee": {
      "type": "object",
      "readOnly": true,
      "properties": {
        "id": {
          "type": "string",
          "readOnly": true,
          "description": "The ID of the employee the time off request is for."
        },
        "full_name": {
          "type": "string",
          "readOnly": true,
          "description": "The full name of the employee the time off request is for."
        }
      },
      "description": ""
    },
    "initiator": {
      "type": "object",
      "nullable": true,
      "readOnly": true,
      "properties": {
        "id": {
          "type": "string",
          "readOnly": true,
          "description": "The ID of the employee who initiated the time off request."
        },
        "full_name": {
          "type": "string",
          "readOnly": true,
          "description": "The full name of the employee who initiated the time off request."
        }
      },
      "description": ""
    },
    "request_type": {
      "enum": [
        "vacation",
        "sick"
      ],
      "type": "string",
      "readOnly": true,
      "description": "The type of time off request."
    },
    "employee_note": {
      "type": "string",
      "readOnly": true,
      "description": "A note about the time off request, from the employee to the employer."
    },
    "employer_note": {
      "type": "string",
      "readOnly": true,
      "description": "A note about the time off request, from the employer to the employee."
    }
  },
  "x-examples": {
    "Example": {
      "id": "1",
      "days": {
        "2019-06-01": "4.000",
        "2019-06-02": "8.000",
        "2019-06-03": "2.000"
      },
      "status": "approved",
      "approver": {
        "id": "345678",
        "full_name": "Karen Gusto"
      },
      "employee": {
        "id": "234567",
        "full_name": "Jessica Gusto"
      },
      "initiator": {
        "id": "234567",
        "full_name": "Jessica Gusto"
      },
      "request_type": "vacation",
      "employee_note": "Vacation at Disney World!",
      "employer_note": "But Universal has Harry Potter World..."
    }
  },
  "description": "The representation of a time off request. "
}
object TimeOffPoliciesAddEmployeesToPolicyRequest
{
  "type": "object",
  "properties": {
    "employees": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string"
          },
          "balance": {
            "type": "string",
            "format": "float"
          }
        }
      }
    }
  },
  "x-examples": {
    "example-1": {
      "employees": [
        {
          "uuid": "c61d1895-5cf8-4217-88c8-20d7c3132a04"
        }
      ]
    }
  }
}
object TimeOffPoliciesCalculateAccruingTimeOffHoursRequest
{
  "type": "object",
  "properties": {
    "pto_hours_used": {
      "type": "number",
      "description": "paid time off hours used in this pay period"
    },
    "sick_hours_used": {
      "type": "number",
      "description": "sick hours used in this pay period"
    },
    "regular_hours_worked": {
      "type": "number",
      "description": "regular hours worked in this pay period"
    },
    "overtime_hours_worked": {
      "type": "number",
      "description": "overtime hours worked in this pay period"
    },
    "double_overtime_hours_worked": {
      "type": "number",
      "description": "double overtime hours worked in this pay period"
    }
  },
  "description": ""
}
array TimeOffPoliciesCalculateAccruingTimeOffHoursResponse
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/Accruing-Time-Off-Hour"
  }
}
object TimeOffPoliciesCreatePolicyRequest
{
  "type": "object",
  "required": [
    "name",
    "policy_type",
    "accrual_method"
  ],
  "properties": {
    "name": {
      "type": "string",
      "description": "Name of the time off policy"
    },
    "max_hours": {
      "type": "string",
      "format": "float",
      "description": "The max number of hours an employee can accrue"
    },
    "policy_type": {
      "type": "string",
      "description": "Type of the time off policy. Currently only \"vacation\" and \"sick\" are supported"
    },
    "accrual_rate": {
      "type": "string",
      "format": "float",
      "description": "The rate at which the time off hours will accrue for an employee on the policy. Represented as a float, e.g. \"40.0\"."
    },
    "accrual_method": {
      "enum": [
        "unlimited",
        "per_pay_period",
        "per_calendar_year",
        "per_anniversary_year",
        "per_hour_worked",
        "per_hour_worked_no_overtime",
        "per_hour_paid",
        "per_hour_paid_no_overtime"
      ],
      "type": "string",
      "description": "Accrual method of the time off policy"
    },
    "accrual_rate_unit": {
      "type": "string",
      "format": "float",
      "description": "The number of hours an employee has to work or be paid for to accrue the number of hours set in the accrual rate. Only used for hourly policies (per_hour_paid, per_hour_paid_no_overtime, per_hour_work, per_hour_worked_no_overtime). Represented as a float, e.g. \"40.0\"."
    },
    "carryover_limit_hours": {
      "type": "string",
      "format": "float",
      "description": "The max number of hours and employee can carryover from one year to the next"
    },
    "paid_out_on_termination": {
      "type": "boolean",
      "description": "Boolean representing if an employees accrued time off hours will be paid out on termination"
    },
    "max_accrual_hours_per_year": {
      "type": "string",
      "format": "float",
      "description": "The max number of hours and employee can accrue in a year"
    },
    "accrual_waiting_period_days": {
      "type": "integer",
      "description": "Number of days before an employee on the policy will begin accruing time off hours"
    }
  },
  "x-examples": {
    "example-1": {
      "name": "test policy3",
      "policy_type": "sick"
    }
  }
}
array TimeOffPoliciesGetAllPoliciesResponse
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/Time-Off-Policy"
  }
}
object TimeOffPoliciesRemoveEmployeesRequest
{
  "type": "object",
  "properties": {
    "employees": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string"
          }
        }
      }
    }
  },
  "x-examples": {
    "example-1": {
      "employees": [
        {
          "uuid": "c61d1895-5cf8-4217-88c8-20d7c3132a04"
        }
      ]
    }
  }
}
object TimeOffPoliciesUpdateEmployeeBalanceRequest
{
  "type": "object",
  "properties": {
    "employees": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string"
          },
          "balance": {
            "type": "string",
            "format": "float"
          }
        }
      }
    }
  },
  "x-examples": {
    "example-1": {
      "employees": [
        {
          "uuid": "c61d1895-5cf8-4217-88c8-20d7c3132a04",
          "balance": "40.0"
        }
      ]
    }
  }
}
object TimeOffPoliciesUpdatePolicyRequest
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Name of the time off policy"
    },
    "max_hours": {
      "type": "string",
      "format": "float",
      "description": "The max number of hours an employee can accrue"
    },
    "accrual_rate": {
      "type": "string",
      "format": "float",
      "description": "The rate at which the time off hours will accrue for an employee on the policy. Represented as a float, e.g. \"40.0\"."
    },
    "accrual_method": {
      "enum": [
        "unlimited",
        "per_pay_period",
        "per_calendar_year",
        "per_anniversary_year",
        "per_hour_worked",
        "per_hour_worked_no_overtime",
        "per_hour_paid",
        "per_hour_paid_no_overtime"
      ],
      "type": "string",
      "description": "Accrual method of the time off policy"
    },
    "accrual_rate_unit": {
      "type": "string",
      "format": "float",
      "description": "The number of hours an employee has to work or be paid for to accrue the number of hours set in the accrual rate. Only used for hourly policies (per_hour_paid, per_hour_paid_no_overtime, per_hour_work, per_hour_worked_no_overtime). Represented as a float, e.g. \"40.0\"."
    },
    "carryover_limit_hours": {
      "type": "string",
      "format": "float",
      "description": "The max number of hours and employee can carryover from one year to the next"
    },
    "paid_out_on_termination": {
      "type": "boolean",
      "description": "Boolean representing if an employees accrued time off hours will be paid out on termination"
    },
    "max_accrual_hours_per_year": {
      "type": "string",
      "format": "float",
      "description": "The max number of hours and employee can accrue in a year"
    },
    "accrual_waiting_period_days": {
      "type": "integer",
      "description": "Number of days before an employee on the policy will begin accruing time off hours"
    }
  },
  "x-examples": {
    "example-1": {
      "name": "test policy3",
      "accrual_rate": "120.0",
      "accrual_method": "per_calendar_year"
    }
  }
}
object Unprocessable-Entity-Error-Object
{
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "description": "Provides details about the error - generally this message can be surfaced to an end user."
          },
          "category": {
            "type": "string",
            "description": "Specifies the type of error. The category provides error groupings and can be used to build custom error handling in your integration."
          },
          "metadata": {
            "type": "object",
            "description": "Contains relevant data to identify the resource in question when applicable. For example, to identify an entity `entity_type` and `entity_uuid` will be provided."
          },
          "error_key": {
            "type": "string",
            "description": "Specifies where the error occurs. Typically this key identifies the attribute/parameter related to the error."
          }
        }
      }
    }
  },
  "description": "Unprocessable Entity\n  \nThis may happen when the body of your request contains errors such as `invalid_attribute_value`, or the request fails due to an `invalid_operation`. See the [Errors Categories](https://docs.gusto.com/embedded-payroll/docs/error-categories) guide for more details.\n"
}
object Unprocessed-Termination-Pay-Period
{
  "type": "object",
  "x-tags": [
    "Employee Employments"
  ],
  "properties": {
    "end_date": {
      "type": "string",
      "description": "The end date of the pay period."
    },
    "check_date": {
      "type": "string",
      "readOnly": true,
      "description": "The check date of the pay period."
    },
    "debit_date": {
      "type": "string",
      "description": "The debit date of the pay period."
    },
    "start_date": {
      "type": "string",
      "readOnly": true,
      "description": "The start date of the pay period."
    },
    "employee_name": {
      "type": "string",
      "description": "The full name of the employee."
    },
    "employee_uuid": {
      "type": "string",
      "description": "A unique identifier of the employee."
    },
    "pay_schedule_uuid": {
      "type": "string",
      "description": "A unique identifier of the pay schedule to which the pay period belongs."
    }
  },
  "description": "The representation of an unprocessed termination pay period."
}
object Versionable
{
  "type": "object",
  "properties": {
    "version": {
      "type": "string",
      "description": "The current version of the object. See the [versioning guide](https://docs.gusto.com/embedded-payroll/docs/idempotency) for information on how to use this field."
    }
  }
}
object Versionable-Required
{
  "type": "object",
  "required": [
    "version"
  ],
  "properties": {
    "version": {
      "type": "string",
      "description": "The current version of the object. See the [versioning guide](https://docs.gusto.com/embedded-payroll/docs/idempotency) for information on how to use this field."
    }
  }
}
object Webhook-Subscription
{
  "type": "object",
  "title": "",
  "x-tags": [
    "Webhooks"
  ],
  "properties": {
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "The webhook subscriber URL. Updates will be POSTed to this URL."
    },
    "uuid": {
      "type": "string",
      "readOnly": true,
      "description": "The UUID of the webhook subscription."
    },
    "status": {
      "enum": [
        "pending",
        "verified",
        "removed"
      ],
      "type": "string",
      "readOnly": true,
      "description": "The status of the webhook subscription."
    },
    "subscription_types": {
      "type": "array",
      "items": {
        "enum": [
          "BankAccount",
          "Company",
          "CompanyBenefit",
          "Contractor",
          "ContractorPayment",
          "Employee",
          "EmployeeBenefit",
          "EmployeeJobCompensation",
          "ExternalPayroll",
          "Form",
          "Location",
          "Notification",
          "Payroll",
          "PaySchedule",
          "Signatory"
        ],
        "type": "string"
      },
      "readOnly": false,
      "description": "Receive updates for these types."
    }
  },
  "x-examples": {
    "Example": {
      "url": "https://partner-app.com/subscriber",
      "uuid": "c5fdae57-5483-4529-9aae-f0edceed92d4",
      "status": "verified",
      "subscription_types": [
        "BankAccount",
        "Company",
        "CompanyBenefit",
        "Contractor",
        "ContractorPayment",
        "Employee",
        "EmployeeBenefit",
        "EmployeeJobCompensation",
        "ExternalPayroll",
        "Form",
        "Location",
        "Notification",
        "Payroll",
        "PaySchedule",
        "Signatory"
      ]
    }
  },
  "description": "The representation of webhook subscription."
}
object WebhooksCreateSubscriptionRequest
{
  "type": "object",
  "required": [
    "url",
    "subscription_types"
  ],
  "properties": {
    "url": {
      "type": "string"
    },
    "subscription_types": {
      "type": "array",
      "items": {
        "enum": [
          "BankAccount",
          "Company",
          "CompanyBenefit",
          "Contractor",
          "ContractorPayment",
          "Employee",
          "EmployeeBenefit",
          "EmployeeJobCompensation",
          "ExternalPayroll",
          "Form",
          "Location",
          "Notification",
          "Payroll",
          "PaySchedule",
          "Signatory"
        ],
        "type": "string"
      }
    }
  },
  "description": ""
}
array WebhooksListSubscriptionsResponse
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/Webhook-Subscription"
  }
}
object WebhooksUpdateSubscriptionRequest
{
  "type": "object",
  "required": [
    "subscription_types"
  ],
  "properties": {
    "subscription_types": {
      "type": "array",
      "items": {
        "enum": [
          "BankAccount",
          "Company",
          "CompanyBenefit",
          "Contractor",
          "ContractorPayment",
          "Employee",
          "EmployeeBenefit",
          "EmployeeJobCompensation",
          "ExternalPayroll",
          "Form",
          "Location",
          "Notification",
          "Payroll",
          "PaySchedule",
          "Signatory"
        ],
        "type": "string"
      }
    }
  },
  "description": ""
}
object WebhooksVerifySubscriptionTokenRequest
{
  "type": "object",
  "required": [
    "verification_token"
  ],
  "properties": {
    "verification_token": {
      "type": "string",
      "description": "The token POSTed to the Subscription URL."
    }
  },
  "description": ""
}