openapi: 3.0.2
info:
  version: 2.0.0
  title: Riskcast API v2
  description: |
    # Overview

    This is a REST API that provides access to Riskcast data.

    ## Usage
    An API key is required in order to gain access.  This will be used to generate a token that provides both authorization and authentication. The API key is a 40 character alphanumeric string value specific to your 
    Riskcast tenant account.  The API key is associated to an integration account specific to your Riskcast account that will have access to all of your Riskcast resources.  Therefore, 
    it is important that you safeguard your API key and it not be shared with anyone.  A new API key can be generated if the original is compromised.  Integration into this API using user-specific 
    credentials is currently NOT supported.  

    The API key should be added as an `x-api-key` header in all HTTPS requests. HTTP (non SSL) requests are not supported.  If your API key is a read only key, then only GET requests will be allowed.  All other requests will be denied and return a `403 Forbidden` error.

    Any date fields labeled as Integer should be formatted as `YYYYMMDD`.  This applies to both query parameters and entity fields.  For example, February 9th, 2023 would be formatted as `20230209`.

    In contrast, the `updatedAfter` date available as a parameter in most endpoints must be provided in ISO 8601 format.  For example, February 9th, 2023 in UTC would be formatted as `2023-02-09T00:00:00Z`.

    Several endpoints support paging.  However, the `page` parameter is optional.  If it is NOT provided, then all available records are returned, as long as the count is equal to or less than `8000` records.  An error will be thrown if there are more than `8000` records and a `page` is not provided.

    Riskcast provides production and test environments.  If a test environment has not been created for your Riskcast account, you will need to submit a request to customer support to have one created for you.
    Both the production and test environments provide access to this API.  The URL endpoints for each environment are listed below.


    ## API Rate Limits, Quotas, and Throttling
    To ensure fair usage and maintain system stability, the following API rate limits apply:
    - **Rate Limits:** Requests are throttled to a maximum of **5,000 requests per hour** per API key. If you exceed this limit, the API fails the limit-exceeding requests and returns a **429 Too Many Requests** error.
    - **Retry Handling:** Clients should implement exponential backoff strategies when handling 429 errors. Suggested retry intervals are:
      - First retry: Wait **1 second**
      - Second retry: Wait **2 seconds**
      - Third retry: Wait **4 seconds**, etc.
    - **Burst Limit:** A short-term burst allowance of up to **50 requests per second** is permitted for a **maximum of 5 seconds**, after which normal rate limits apply.
    - **Data Quota:** The maximum data payload allowed per API request is **5MB**. Requests exceeding this limit will receive a **413 Payload Too Large** error.

    Some of the `list` end points have a record limit associated to them. If the record limit exceeds our internal limits, an error `413 Maximum results count allowed is ####` will be returned.  Upon getting this error,
    the client should adjust the parameters to lower the number of records retrieved. 

    ## Filtering
    It is possible to filter records returned from list endpoints that accept the `filter` query parameter. The syntax for filter query is very similar to the one specified in [OData Standard](https://www.odata.org/documentation/).
    The only operators supported at the moment are: `and`, `eq`. For example, the following query would return the list of projects that are closed: `GET /projects&filter=closed eq true`. When constructing these queries, it's important
    to follow the rules below:
    - Only fields present on the 'read' schema of the specified resource can be used for filtering
    - Operators and operands must be separated by a **single** space character (`left_operand operator right_operand`)
    - String values must be quoted via **single** quotes (`field eq 'string value'`)
    - Number and boolean values shouldn't be quoted (`field eq 10`, `field eq false`)
    - Filters can be combined only using `and` operator, within the same `filter` query parameter (`filter=field1 eq 'value1' and field2 eq true`)
    - A known limitation prevents search if the field being searched includes one of the following special characters: %, +, /, ?, #, &, '


    ## Payroll Export Workflow
    What follows is an overview of the endpoints and the workflows needed to process payroll exports.

    ### STEP 1
    Get Export Formats for the company.  An export format defines the schema that the data will be retrieved in.  Riskcast allows a company to have more than one export format.  However, most clients only end up using one format, per company. Each company will require a unique export format Id, even if every company ends up using the same schema.  Use this endpoint to get the id for the Export Format you desire.

    ```GET /core/payrollexports/exportformats?companyId={{companyId}}```

    ### STEP 2
    Once you know the export format Id for the company, get a list of payroll exports for the given week end date and projectIds.  If projectIds is an empty array, then all projects for that week are retrieved.  Provide the flag `isReceivedByERP` as true/false to specify whether you want exports that have already been received and processed.  Send `isReceivedByERP = false` to retrieve payroll exports that have not yet been received and processed.  If `isReceivedByERP` is not provided, then all payroll exports are sent back.

    ```GET /core/payrollexports?exportFormatId={{exportFormatId}}&weekEndDateKey={{weekEndDateKey}}&isReceivedByERP={{isReceivedByERP}}&projectId={{projectId1}}&projectId={{projectId2}}```

    ### STEP 3
    For each available payroll export Id, request the export data for that export.  This contains the formatted labor, equipment, and "other" export data using the schema specified by the export format Id.  The `type` parameter is optional and can be one of the following values: `labor`, `equipment`, `other`.  If `type` is not provided, then labor is returned.  The `snapshot` parameter is optional and can be one of the following values: `true`, `false`.  If `snapshot` is true, then the data is returned as a snapshot of the data at the time of the export.  If `snapshot` is false or not provided, then the data is returned as a live view of the data.

    ```GET /core/payrollexports/{{id}}/data?type={{type}}&snapshot={{snapshot}}```

    ### STEP 4
    Optional.  Update the status of the payroll export to set the status of isReceivedByERP to true.  It is recommended that this is done so that future requests in STEP 2 only retrieve exports that have NOT yet been processed.

    ```PUT /core/payrollexports/{{id}}/received```

    ### STEP 5
    In order to reset a payroll export if an error occurs, use the following end point

    ```PUT /core/payrollexports/{{id}}/reset```
servers:
  - url: 'https://{environment}'
    variables:
      environment:
        default: apiv2.riskcast.com
        enum:
          - apiv2.riskcast.com
          - apiv2-sandbox.riskcast.com
tags:
  - name: Company
    description: ''
  - name: Company Division
    description: ''
  - name: Company Value List
    description: ''
  - name: Company Role
    description: ''
  - name: Benefit Time Off
    description: ''
  - name: Project
    description: ''
  - name: Project Option
    description: ''
  - name: Project Role
    description: ''
  - name: Person
    description: ''
  - name: Employee
    description: ''
  - name: Employee Daily Time Off
    description: ''
  - name: Employee Time Off Balance
    description: ''
  - name: User
    description: ''
  - name: User Company
    description: ''
  - name: User Project
    description: ''
  - name: Temp Agency
    description: ''
  - name: Temp Employee
    description: ''
  - name: Equipment
    description: ''
  - name: Company Equipment
    description: ''
  - name: Project Equipment
    description: ''
  - name: Trade
    description: ''
  - name: Export Format
    description: ''
  - name: Payroll Export
    description: ''
  - name: Payclass
    description: ''
  - name: Project Payclass
    description: ''
  - name: Project Payclass Employee
    description: ''
  - name: Cost Type
    description: ''
  - name: Cost Code
    description: ''
  - name: Budget Code
    description: ''
  - name: Quantity Code
    description: ''
  - name: Change Orders
    description: ''
  - name: Change Order Line Items
    description: ''
  - name: Change Order Notes
    description: ''
  - name: Change Order Budget Codes
    description: ''
  - name: Change Order Quantity Codes
    description: ''
  - name: Attendance Employee Punch Time
    description: ''
  - name: Daily Log
    description: ''
  - name: Daily Log Weather
    description: ''
  - name: Daily Log Delivery
    description: ''
  - name: Daily Log Equipment
    description: ''
  - name: Daily Log Inspection
    description: ''
  - name: Daily Log Labor
    description: ''
  - name: Daily Log Note
    description: ''
  - name: Daily Log Visitor
    description: ''
  - name: Daily Log Questions
    description: ''
  - name: Daily Log Photos
    description: ''
  - name: Production Quantity
    description: ''
  - name: Production Quantity Detail
    description: ''
  - name: JHA
    description: ''
  - name: Attendance
    description: ''
  - name: Timecard
    description: ''
  - name: Timecard Detail
    description: ''
  - name: Timecard Allowance
    description: ''
  - name: T&M Billing Period
    description: ''
  - name: T&M Billing Class
    description: ''
  - name: T&M Billing Class Equipment
    description: ''
  - name: T&M Billing Class Employee
    description: ''
  - name: T&M Billing Rate
    description: ''
paths:
  /core/companies:
    get:
      description: |
        ### Overview
        Gets all available companies.

        ### Caching
        This endpoint uses caching to improve performance. The `filter` and `updatedAfter` parameters form the cache key. Modifying any one of these parameters results in a new cache being created. 
        Records are cached for 1 hour after the initial retrieval for a specific cache key.
      parameters:
        - name: filter
          in: query
          required: false
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of companies
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/CompanyRead'
      security:
        - api_key: []
      tags:
        - Company
    post:
      description: Create new company
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompanyCreate'
        required: true
      responses:
        '201':
          description: Created company object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/CompanyRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Company
  '/core/companies/{id}':
    get:
      description: Get single company by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Company object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/CompanyRead'
        '404':
          description: Company not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Company
    put:
      description: Modify single company by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompanyPatch'
        required: true
      responses:
        '200':
          description: Modified company object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/CompanyRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Company not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Company
    delete:
      description: Remove single company by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Company deleted
        '400':
          description: Company has history and can not be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Company not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Company
  /core/companyvaluelist:
    get:
      description: Get all company value list
      parameters:
        - name: companyId
          in: query
          required: true
          schema:
            type: integer
        - name: valueListType
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: List of company value list
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/CompanyValueListRead'
        '400':
          description: Company id is required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Company Value List
  /core/companyvaluelist/types:
    get:
      description: Get all company value list types
      responses:
        '200':
          description: List of company value list types
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/CompanyValueListTypeRead'
        '400':
          description: Company id is required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Company Value List
  /core/companydivisions:
    get:
      description: Get all company divisions
      parameters:
        - name: companyId
          in: query
          required: true
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: filter
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: List of company divisions
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/CompanyDivisionRead'
      security:
        - api_key: []
      tags:
        - Company Division
    post:
      description: Create new company division
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompanyDivisionCreate'
        required: true
      responses:
        '201':
          description: Created company division object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/CompanyDivisionRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Company Division
  '/core/companydivisions/{id}':
    get:
      description: Get single company division by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Company division object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/CompanyDivisionRead'
        '404':
          description: Company division not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Company Division
    put:
      description: Modify single company division by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompanyDivisionPatch'
        required: true
      responses:
        '200':
          description: Modified company division object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/CompanyDivisionRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Company division not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Company Division
    delete:
      description: Remove single company division by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Company division deleted
        '400':
          description: Company division has history and can not be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Company division not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Company Division
  /core/companyroles:
    get:
      description: Get all company roles
      parameters:
        - name: companyId
          in: query
          required: true
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: filter
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: List of company roles
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/CompanyRoleRead'
      security:
        - api_key: []
      tags:
        - Company Role
  '/core/companyroles/{id}':
    get:
      description: Get single company role by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Company role object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/CompanyRoleRead'
        '404':
          description: Company role not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Company Role
  /core/projects:
    get:
      description: Get all projects
      parameters:
        - name: companyId
          in: query
          required: true
          schema:
            type: integer
        - name: filter
          in: query
          required: false
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: page
          in: query
          required: false
          schema:
            type: integer
            default: 0
      responses:
        '200':
          description: List of projects
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ProjectRead'
                  pagination:
                    type: object
                    properties:
                      page:
                        type: integer
                      itemsPerPage:
                        type: integer
                      totalResults:
                        type: integer
        '400':
          description: Company id is required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Project
    post:
      description: Create new project
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectCreate'
        required: true
      responses:
        '201':
          description: Created project object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/ProjectRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Project
  '/core/projects/{id}':
    get:
      description: Get single project by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Project object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/ProjectRead'
        '404':
          description: Project not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Project
    put:
      description: Modify single project by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectPatch'
        required: true
      responses:
        '200':
          description: Modified project object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/ProjectRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Project not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Project
    delete:
      description: Remove single project by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Project deleted
        '400':
          description: Project has history and can not be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Project not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Project
  '/core/projects/{id}/options':
    get:
      description: |
        # JHA Options
        For JHA options to be available, the JHA Module must be enabled for your Riskcast account
        - `enableJHA`: Set to `true` to enable JHA on this project.  Set to `false` otherwise.  NOTE:  The JHA Module must be enabled for your Riskcast account.  It must also be enabled at the project's company level.
        - `requireJHA`:  Set to `true` so that JHA is required on a timecard.  `enableJHA` must be `true` to allow this.
        - `showSafetyMessage`:  Set to `true` to show safety message on timecard.  `enableJHA` must be `true` to allow this.
        - `inheritSafetyMessage`:  Set to `true` to inherit safety message from company.  Set to `false` to add a custom safety message on this project.  `showSafetyMessage` must be `true` to allow this field to be used.
        - `newNearestHospital`:  Set a string value representing the nearest hospital.  `enableJHA` must be `true` to allow this.
        - `safetyMessage`:  Set a string value representing a custom safety message for the project.  `inheritSafetyMessage` must be `false` to allow this.
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Project options object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/ProjectOptionRead'
        '404':
          description: Project not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Project Option
    put:
      description: |
        # JHA Options
        For JHA options, the following rules must be adhered to: 
        - JHA Module must be enabled for your Riskcast account
        - JHA must be enabled for the project's company
        - `enableJHA` must be `true` in order to set `requireJHA` to `true`, set `newNearestHospital` value and set `showSafetyMessage` to `true`
        - `showSafetyMessage` must be `true` in order to set `inheritSafetyMessage` to `true`
        - `inheritSafetyMessage` must be `false` in order to set `safetyMessage` value
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectOptionPatch'
        required: true
      responses:
        '200':
          description: Modified project option object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/ProjectOptionRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Project not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Project Option
  /core/projectroles:
    get:
      description: Get all project roles
      parameters:
        - name: projectId
          in: query
          required: true
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: filter
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: List of project roles
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ProjectRoleRead'
      security:
        - api_key: []
      tags:
        - Project Role
  '/core/projectroles/{id}':
    get:
      description: Get single project role by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Project role object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/ProjectRoleRead'
        '404':
          description: Project role not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Project Role
  /core/people:
    get:
      description: Get all people
      parameters:
        - name: filter
          in: query
          required: false
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: page
          in: query
          required: false
          schema:
            type: integer
            default: 0
      responses:
        '200':
          description: List of people
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/PersonRead'
                  pagination:
                    type: object
                    properties:
                      page:
                        type: integer
                      itemsPerPage:
                        type: integer
                      totalResults:
                        type: integer
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Person
    post:
      description: Create new person
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PersonCreate'
        required: true
      responses:
        '201':
          description: Created person object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/PersonRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Person
  '/core/people/{id}':
    get:
      description: Get person by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Person object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/PersonRead'
        '404':
          description: Person not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Person
    put:
      description: Modify person by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PersonPatch'
        required: true
      responses:
        '200':
          description: Modified person object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/PersonRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Person not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Person
    delete:
      description: Remove person by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Person deleted
        '400':
          description: Person has history and can not be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Person not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Person
  /core/employees:
    get:
      description: Get all company employees
      parameters:
        - name: companyId
          in: query
          required: true
          schema:
            type: integer
        - name: filter
          in: query
          required: false
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: page
          in: query
          required: false
          schema:
            type: integer
            default: 0
      responses:
        '200':
          description: List of company employees
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/EmployeeRead'
                  pagination:
                    type: object
                    properties:
                      page:
                        type: integer
                      itemsPerPage:
                        type: integer
                      totalResults:
                        type: integer
        '400':
          description: Company id is required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Employee
    post:
      description: Create new employee
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmployeeCreate'
        required: true
      responses:
        '201':
          description: Created employee object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/EmployeeRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Employee
  '/core/employees/{id}':
    get:
      description: Get single employee by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Employee object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/EmployeeRead'
        '404':
          description: Employee not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Employee
    put:
      description: Modify single employee by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmployeePatch'
        required: true
      responses:
        '200':
          description: Modified employee object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/EmployeeRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Employee not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Employee
    delete:
      description: Remove single employee by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Employee deleted
        '400':
          description: Employee has history and can not be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Employee not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Employee
  /core/employees/dailytimeoff:
    get:
      description: |
        Gets & Sets employee's daily time off.  The field `benefitTimeOffId` can be retrieved from the `Benefit Time Off` endpoint.  
        - If a valid `benefitTimeOffId` value is provided, then the record is considered as "Paid Time Off" for the employee and will show up on a timecard if the employee's company setting `Use Paid Time Off` is turned on.
        - However, if `benefitTimeOffId` is left `null`, then the record is considered as "Unpaid Time Off" for the employee and will show up on a timecard if the employee's company setting `Use Unpaid Time Off` is turned on.
      parameters:
        - name: companyId
          in: query
          required: true
          schema:
            type: integer
        - name: fromDate
          in: query
          required: true
          schema:
            type: integer
        - name: toDate
          in: query
          required: true
          schema:
            type: integer
        - name: filter
          in: query
          required: false
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: Employee daily time off
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/EmployeeDailyTimeOffRead'
        '404':
          description: Employee daily time off not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Employee Daily Time Off
    post:
      description: Create new employee time off
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmployeeDailyTimeOffCreate'
        required: true
      responses:
        '201':
          description: Created employee time off object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/EmployeeDailyTimeOffRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Employee Daily Time Off
  '/core/employees/dailytimeoff/{id}':
    get:
      description: Get employee daily time off by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Employee daily time off
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/EmployeeDailyTimeOffRead'
        '404':
          description: Employee daily time off not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Employee Daily Time Off
    put:
      description: Modify employee daily time off by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmployeeDailyTimeOffPatch'
        required: true
      responses:
        '200':
          description: Modified employee daily time off object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/EmployeeDailyTimeOffRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: employee daily time off not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Employee Daily Time Off
    delete:
      description: Remove employee daily time off by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: employee daily time off deleted
        '404':
          description: employee daily time off not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Employee Daily Time Off
  /core/employees/timeoff:
    get:
      description: Get all employee time off
      parameters:
        - name: employeeId
          in: query
          required: true
          schema:
            type: integer
        - name: filter
          in: query
          required: false
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of employee time off
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/EmployeeTimeOffRead'
        '400':
          description: Employee id is required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Employee Time Off Balance
    post:
      description: Create new employee time off
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmployeeTimeOffCreate'
        required: true
      responses:
        '201':
          description: Created employee time off object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/EmployeeTimeOffRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Employee Time Off Balance
  '/core/employees/timeoff/{id}':
    get:
      description: Get single employee time off by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Employee time off object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/EmployeeTimeOffRead'
        '404':
          description: Employee Time Off not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Employee Time Off Balance
    put:
      description: Modify single employee time off by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmployeeTimeOffPatch'
        required: true
      responses:
        '200':
          description: Modified employee time off object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/EmployeeTimeOffRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Employee time off not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Employee Time Off Balance
    delete:
      description: Remove single employee time off by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Employee time off deleted
        '400':
          description: Employee time off has history and can not be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Employee time off not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Employee Time Off Balance
  /core/users:
    get:
      description: Get all users
      parameters:
        - name: companyId
          in: query
          required: false
          schema:
            type: integer
        - name: filter
          in: query
          required: false
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: page
          in: query
          required: false
          schema:
            type: integer
            default: 0
      responses:
        '200':
          description: List of users
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/UserRead'
                  pagination:
                    type: object
                    properties:
                      page:
                        type: integer
                      itemsPerPage:
                        type: integer
                      totalResults:
                        type: integer
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - User
    post:
      description: Create new user
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserCreate'
        required: true
      responses:
        '201':
          description: Created user object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/UserRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: User already exists (username or person id)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - User
  '/core/users/{id}':
    get:
      description: Get user by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: User object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/UserRead'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - User
    put:
      description: Modify user by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserPatch'
        required: true
      responses:
        '200':
          description: Modified user object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/UserRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: User already exists (person id)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - User
    delete:
      description: Remove user by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: User deleted
        '400':
          description: User has history and can not be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - User
  '/core/users/{id}/resendinvite':
    post:
      description: Resend invite to user
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Invite resent
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - User
  /core/users/projects:
    get:
      description: Get users by projects.  Set includeAdmin to true to include users with company-admin access.
      parameters:
        - name: companyId
          in: query
          required: true
          schema:
            type: integer
        - name: includeAdmin
          in: query
          required: false
          schema:
            type: boolean
            default: false
        - name: filter
          in: query
          required: false
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: page
          in: query
          required: false
          schema:
            type: integer
            default: 0
      responses:
        '200':
          description: List of users by projects
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/UsersProjectsList'
                  pagination:
                    type: object
                    properties:
                      page:
                        type: integer
                      itemsPerPage:
                        type: integer
                      totalResults:
                        type: integer
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - User
  /core/usercompanies:
    get:
      description: Get all company permissions for user
      parameters:
        - name: userId
          in: query
          required: true
          schema:
            type: integer
        - name: filter
          in: query
          required: false
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of user's company permissions
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/UserCompanyRead'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - User Company
    post:
      description: Create new user company permission
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserCompanyCreate'
        required: true
      responses:
        '201':
          description: Created user company permission object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/UserCompanyRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: User company permission already exists
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - User Company
  '/core/usercompanies/{id}':
    get:
      description: Get user company permission by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: User company permission object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/UserCompanyRead'
        '404':
          description: User company permission not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - User Company
    put:
      description: Modify user company permission by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserCompanyPatch'
        required: true
      responses:
        '200':
          description: Modified user company permission object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/UserCompanyRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: User company permission not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: User company permission already exists
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - User Company
    delete:
      description: Remove user company permission by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: User company permission removed
        '400':
          description: User company permission has history and cannot be removed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: User company permission not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - User Company
  /core/userprojects:
    get:
      description: Get all project permissions for user
      parameters:
        - name: userId
          in: query
          required: true
          schema:
            type: integer
        - name: filter
          in: query
          required: false
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of user's project permissions
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/UserProjectRead'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - User Project
    post:
      description: Create new user project permission.  Cannot set `isCrewLead` to `true` if user is not an employee.
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserProjectCreate'
        required: true
      responses:
        '201':
          description: Created user project permission object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/UserProjectRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: User project permission already exists
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - User Project
  '/core/userprojects/{id}':
    get:
      description: Get user project permission by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: User project permission object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/UserProjectRead'
        '404':
          description: User project permission not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - User Project
    put:
      description: Modify user project permission by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserProjectCreate'
        required: true
      responses:
        '200':
          description: Modified user project permission object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/UserProjectRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: User project permission not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: User project permission already exists
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - User Project
    delete:
      description: Remove user project permission by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: User project permission removed
        '400':
          description: User project permission not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: User project permission not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - User Project
  /core/benefits/timeoff:
    get:
      description: Get all benefit time off
      parameters:
        - name: companyId
          in: query
          required: true
          schema:
            type: integer
        - name: filter
          in: query
          required: false
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of benefit time off
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/BenefitTimeOffRead'
        '400':
          description: Company id is required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Benefit Time Off
    post:
      description: Create new benefit time off
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BenefitTimeOffCreate'
        required: true
      responses:
        '201':
          description: Created benefit time off object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/BenefitTimeOffRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Benefit Time Off
  '/core/benefits/timeoff/{id}':
    get:
      description: Get single benefit time off by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Benefit time off object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/BenefitTimeOffRead'
        '404':
          description: Benefit Time Off not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Benefit Time Off
    put:
      description: Modify single benefit time off by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BenefitTimeOffPatch'
        required: true
      responses:
        '200':
          description: Modified benefit time off object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/BenefitTimeOffRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Benefit time off not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Benefit Time Off
    delete:
      description: Remove single benefit time off by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Benefit time off deleted
        '400':
          description: Benefit time off has history and can not be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Benefit time off not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Benefit Time Off
  /core/tempagencies:
    get:
      description: Get all company temp agencies
      parameters:
        - name: companyId
          in: query
          required: true
          schema:
            type: integer
        - name: filter
          in: query
          required: false
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of company temp agencies
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/TempAgencyRead'
        '400':
          description: Company id is required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Temp Agency
    post:
      description: Create new temp agency
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TempAgencyCreate'
        required: true
      responses:
        '201':
          description: Created temp agency object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/TempAgencyRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Temp Agency
  '/core/tempagencies/{id}':
    get:
      description: Get temp agency by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Temp agency object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/TempAgencyRead'
        '404':
          description: Temp agency not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Temp Agency
    put:
      description: Modify temp agency by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TempAgencyPatch'
        required: true
      responses:
        '200':
          description: Modified temp agency object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/TempAgencyRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Temp agency not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Temp Agency
    delete:
      description: Remove temp agency by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Temp agency deleted
        '400':
          description: Temp agency has history and can not be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Temp agency not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Temp Agency
  /core/tempemployees:
    get:
      description: Get all company temp employees
      parameters:
        - name: companyId
          in: query
          required: true
          schema:
            type: integer
        - name: filter
          in: query
          required: false
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of company temp employees
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/TempEmployeeRead'
        '400':
          description: Company id is required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Temp Employee
    post:
      description: Create new temp employee
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TempEmployeeCreate'
        required: true
      responses:
        '201':
          description: Created temp employee object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/TempEmployeeRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Temp Employee
  '/core/tempemployees/{id}':
    get:
      description: Get temp employee by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Temp employee object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/TempEmployeeRead'
        '404':
          description: Temp employee not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Temp Employee
    put:
      description: Modify temp employee by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TempEmployeePatch'
        required: true
      responses:
        '200':
          description: Modified temp employee object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/TempEmployeeRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Temp employee not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Temp Employee
    delete:
      description: Remove temp employee by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Temp employee deleted
        '400':
          description: Temp employee has history and can not be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Temp employee not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Temp Employee
  /core/equipment:
    get:
      description: Get all equipment
      parameters:
        - name: filter
          in: query
          required: false
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of equipment
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/EquipmentRead'
      security:
        - api_key: []
      tags:
        - Equipment
    post:
      description: Create new equipment
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EquipmentCreate'
        required: true
      responses:
        '201':
          description: Created equipment object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/EquipmentRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Equipment
  '/core/equipment/{id}':
    get:
      description: Get single equipment by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Equipment object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/EquipmentRead'
        '404':
          description: Equipment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Equipment
    put:
      description: Modify single equipment by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EquipmentPatch'
        required: true
      responses:
        '200':
          description: Modified equipment object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/EquipmentRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Equipment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Equipment
    delete:
      description: Remove single equipment by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Equipment deleted
        '400':
          description: Equipment has history and can not be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Equipment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Equipment
  /core/companyequipment:
    get:
      description: Get all company equipment
      parameters:
        - name: companyId
          in: query
          required: true
          schema:
            type: integer
        - name: filter
          in: query
          required: false
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of company equipment
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/CompanyEquipmentRead'
        '400':
          description: Company id is required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Company Equipment
    post:
      description: Create new company equipment
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompanyEquipmentCreate'
        required: true
      responses:
        '201':
          description: Created company equipment object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/CompanyEquipmentRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Company Equipment
  '/core/companyequipment/{id}':
    get:
      description: Get company equipment by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Company equipment object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/CompanyEquipmentRead'
        '404':
          description: Company equipment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Company Equipment
    put:
      description: Modify company equipment by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompanyEquipmentPatch'
        required: true
      responses:
        '200':
          description: Modified company equipment object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/CompanyEquipmentRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Company equipment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Company Equipment
    delete:
      description: Remove company equipment by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Company equipment deleted
        '400':
          description: Company equipment has history and can not be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Company equipment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Company Equipment
  /core/projectequipment:
    get:
      description: Get all project equipment
      parameters:
        - name: projectId
          in: query
          required: true
          schema:
            type: integer
        - name: filter
          in: query
          required: false
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of project equipment
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ProjectEquipmentRead'
        '400':
          description: Project id is required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Project Equipment
    post:
      description: Create new project equipment
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectEquipmentCreate'
        required: true
      responses:
        '201':
          description: Created project equipment object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/ProjectEquipmentRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Project Equipment
  '/core/projectequipment/{id}':
    get:
      description: Get project equipment by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Project equipment object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/ProjectEquipmentRead'
        '404':
          description: Project equipment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Project Equipment
    put:
      description: Modify project equipment by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectEquipmentPatch'
        required: true
      responses:
        '200':
          description: Modified project equipment object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/ProjectEquipmentRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Project equipment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Project Equipment
    delete:
      description: Remove project equipment by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Project equipment deleted
        '400':
          description: Project equipment has history and can not be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Project equipment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Project Equipment
  /core/trades:
    get:
      description: Get all trades
      parameters:
        - name: companyId
          in: query
          required: true
          schema:
            type: integer
        - name: filter
          in: query
          required: false
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of trades
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/TradeRead'
        '400':
          description: Company id is required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Trade
    post:
      description: Create new trade
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TradeCreate'
        required: true
      responses:
        '201':
          description: Created trade object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/TradeRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Trade
  '/core/trades/{id}':
    get:
      description: Get single trade by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Trade object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/TradeRead'
        '404':
          description: Trade not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Trade
    put:
      description: Modify single trade by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TradePatch'
        required: true
      responses:
        '200':
          description: Modified trade object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/TradeRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Trade not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Trade
    delete:
      description: Remove single trade by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Trade deleted
        '400':
          description: Trade has history and can not be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Trade not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Trade
  /core/payclasses:
    get:
      description: Get all payclasss
      parameters:
        - name: companyId
          in: query
          required: true
          schema:
            type: integer
        - name: filter
          in: query
          required: false
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of payclasss
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/PayclassRead'
        '400':
          description: Company id is required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Payclass
    post:
      description: Create new payclass
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PayclassCreate'
        required: true
      responses:
        '201':
          description: Created payclass object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/PayclassRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Payclass
  '/core/payclasses/{id}':
    get:
      description: Get single payclass by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Payclass object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/PayclassRead'
        '404':
          description: Payclass not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Payclass
    put:
      description: Modify single payclass by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PayclassPatch'
        required: true
      responses:
        '200':
          description: Modified payclass object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/PayclassRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Payclass not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Payclass
    delete:
      description: Remove single payclass by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Payclass deleted
        '400':
          description: Payclass has history and can not be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Payclass not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Payclass
  /core/uniontradeclassprojectemployees:
    get:
      description: Get all union trade class project employees
      parameters:
        - name: projectId
          in: query
          required: true
          schema:
            type: integer
        - name: filter
          in: query
          required: false
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of union trade class project employees
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/UnionTradeClassProjectEmployeeRead'
        '400':
          description: Project id is required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Project Payclass Employee
    post:
      description: Create new union trade class project employee
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UnionTradeClassProjectEmployeeCreate'
        required: true
      responses:
        '201':
          description: Created union trade class project employee object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/UnionTradeClassProjectEmployeeRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Project Payclass Employee
  '/core/uniontradeclassprojectemployees/{id}':
    get:
      description: Get single union trade class project employee by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Union Trade Class Project Employee object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/UnionTradeClassProjectEmployeeRead'
        '404':
          description: Union Trade Class Project Employee Project not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Project Payclass Employee
    put:
      description: Modify single union trade class project employee by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UnionTradeClassProjectEmployeePatch'
        required: true
      responses:
        '200':
          description: Modified union trade class project employee object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/UnionTradeClassProjectEmployeeRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Union Trade Class Project Employee not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Project Payclass Employee
    delete:
      description: Remove single union trade class project employee by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Union Trade Class Project Employee deleted
        '400':
          description: Union Trade Class Project Employee has history and can not be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Union Trade Class Project Employee not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Project Payclass Employee
  /core/uniontradeclassprojects:
    get:
      description: Get all union trade class projects
      parameters:
        - name: projectId
          in: query
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: List of union trade class projects
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/UnionTradeClassProjectRead'
        '400':
          description: Project id is required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Project Payclass
    post:
      description: Create new union trade class project
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UnionTradeClassProjectCreate'
        required: true
      responses:
        '201':
          description: Created union trade class project object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/UnionTradeClassProjectRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Project Payclass
  '/core/uniontradeclassprojects/{id}':
    get:
      description: Get single union trade class project by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Union Trade Class Project object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/UnionTradeClassProjectRead'
        '404':
          description: Union Trade Class Project not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Project Payclass
    put:
      description: Modify single union trade class project by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UnionTradeClassProjectPatch'
        required: true
      responses:
        '200':
          description: Modified union trade class project object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/UnionTradeClassProjectRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Union Trade Class Project not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Project Payclass
    delete:
      description: Remove single union trade class project by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Union Trade Class Project deleted
        '400':
          description: Union Trade Class Project has history and can not be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Union Trade Class Project not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Project Payclass
  /core/costtypes:
    get:
      description: Get all cost types
      parameters:
        - name: companyId
          in: query
          required: true
          schema:
            type: integer
        - name: filter
          in: query
          required: false
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of cost types
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/CostTypeRead'
        '400':
          description: Company id is required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Cost Type
    post:
      description: Create new cost type
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CostTypeCreate'
        required: true
      responses:
        '201':
          description: Created cost type object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/CostTypeRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Cost Type
  '/core/costtypes/{id}':
    get:
      description: Get cost type by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Cost type object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/CostTypeRead'
        '404':
          description: Cost type not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Cost Type
    put:
      description: Modify cost type by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CostTypePatch'
        required: true
      responses:
        '200':
          description: Modified cost type object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/CostTypeRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Cost type not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Cost Type
    delete:
      description: Remove cost type by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Cost type deleted
        '400':
          description: Cost type has history and can not be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Cost type not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Cost Type
  /core/costcodes:
    get:
      description: Get all cost codes
      parameters:
        - name: projectId
          in: query
          required: true
          schema:
            type: integer
        - name: filter
          in: query
          required: false
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: retrieveDeleted
          in: query
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: List of cost codes
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/CostCodeRead'
        '400':
          description: Project id is required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Cost Code
    post:
      description: Create new cost code
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CostCodeCreate'
        required: true
      responses:
        '201':
          description: Created cost code object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/CostCodeRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Cost Code
  '/core/costcodes/{id}':
    get:
      description: Get cost code by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Cost code object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/CostCodeRead'
        '404':
          description: Cost code not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Cost Code
    put:
      description: Modify cost code by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CostCodePatch'
        required: true
      responses:
        '200':
          description: Modified cost code object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/CostCodeRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Cost code not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Cost Code
    delete:
      description: Remove cost code by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Cost code deleted
        '400':
          description: Cost code has history and can not be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Cost code not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Cost Code
  /core/budgetcodes:
    get:
      description: Get all budget codes
      parameters:
        - name: projectId
          in: query
          required: true
          schema:
            type: integer
        - name: filter
          in: query
          required: false
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: page
          in: query
          required: false
          schema:
            type: integer
            default: 0
        - name: retrieveDeleted
          in: query
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: List of budget codes
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/BudgetCodeRead'
                  pagination:
                    type: object
                    properties:
                      page:
                        type: integer
                      itemsPerPage:
                        type: integer
                      totalResults:
                        type: integer
        '400':
          description: Project id is required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Budget Code
    post:
      description: Create new budget code
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BudgetCodeCreate'
        required: true
      responses:
        '201':
          description: Created budget code object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/BudgetCodeRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Budget Code
  '/core/budgetcodes/{id}':
    get:
      description: Get budget code by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Budget code object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/BudgetCodeRead'
        '404':
          description: Budget code not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Budget Code
    put:
      description: Modify budget code by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BudgetCodePatch'
        required: true
      responses:
        '200':
          description: Modified budget code object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/BudgetCodeRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Budget code not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Budget Code
    delete:
      description: Remove budget code by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Budget code deleted
        '400':
          description: Budget code has history and can not be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Budget code not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Budget Code
  /core/quantitycodes:
    get:
      description: Get all quantity codes
      parameters:
        - name: projectId
          in: query
          required: true
          schema:
            type: integer
        - name: filter
          in: query
          required: false
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: page
          in: query
          required: false
          schema:
            type: integer
            default: 0
        - name: retrieveDeleted
          in: query
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: List of quantity codes
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/QuantityCodeRead'
                  pagination:
                    type: object
                    properties:
                      page:
                        type: integer
                      itemsPerPage:
                        type: integer
                      totalResults:
                        type: integer
        '400':
          description: Project id is required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Quantity Code
    post:
      description: Create new quantity code
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QuantityCodeCreate'
        required: true
      responses:
        '201':
          description: Created quantity code object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/QuantityCodeRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Quantity Code
  '/core/quantitycodes/{id}':
    get:
      description: Get quantity code by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Quantity code object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/QuantityCodeRead'
        '404':
          description: Quantity code not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Quantity Code
    put:
      description: Modify quantity code by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QuantityCodePatch'
        required: true
      responses:
        '200':
          description: Modified quantity code object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/QuantityCodeRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Quantity code not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Quantity Code
    delete:
      description: Remove quantity code by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Quantity code deleted
        '400':
          description: Quantity code has history and can not be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Quantity code not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Quantity Code
  /core/changeorders/statuses:
    get:
      description: Get a list of Change Orders Statuses
      parameters:
        - name: companyId
          in: query
          required: true
          schema:
            type: integer
        - name: filter
          in: query
          required: false
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of Change Orders Statuses
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ChangeOrdersStatusesRead'
        '400':
          description: Company id is required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Change Orders
  /core/changeorders:
    get:
      description: Get all change orders.
      parameters:
        - name: projectId
          in: query
          required: true
          schema:
            type: integer
        - name: filter
          in: query
          required: false
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: page
          in: query
          required: false
          schema:
            type: integer
            default: 0
      responses:
        '200':
          description: List of change orders
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ChangeOrderRead'
                  pagination:
                    type: object
                    properties:
                      page:
                        type: integer
                      itemsPerPage:
                        type: integer
                      totalResults:
                        type: integer
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Change Orders
    post:
      description: Create new change order
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChangeOrderCreate'
        required: true
      responses:
        '201':
          description: Created change order object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/ChangeOrderRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Change Orders
  '/core/changeorders/{id}':
    get:
      description: Get change order by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Change order object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/ChangeOrderRead'
        '404':
          description: Change order not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Change Orders
    put:
      description: Modify change order by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChangeOrderPatch'
        required: true
      responses:
        '200':
          description: Modified change order object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/ChangeOrderRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Change order not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Change Orders
    delete:
      description: Remove change order by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Change order deleted
        '400':
          description: Change order has history and can not be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Change order not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Change Orders
  /core/changeorderlineitems:
    get:
      description: Get all Change Order Line Items.
      parameters:
        - name: changeOrderId
          in: query
          required: true
          schema:
            type: integer
        - name: filter
          in: query
          required: false
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: page
          in: query
          required: false
          schema:
            type: integer
            default: 0
      responses:
        '200':
          description: List of Change Order Line Items
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ChangeOrderLineItemRead'
                  pagination:
                    type: object
                    properties:
                      page:
                        type: integer
                      itemsPerPage:
                        type: integer
                      totalResults:
                        type: integer
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Change Order Line Items
    post:
      description: Create new Change Order Line Item
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChangeOrderLineItemCreate'
        required: true
      responses:
        '201':
          description: Created Change Order Line Item object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/ChangeOrderLineItemRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Change Order Line Item already exists
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Change Order Line Items
  '/core/changeorderlineitems/{id}':
    get:
      description: Get Change Order Line Item by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Change Order Line Item object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/ChangeOrderLineItemRead'
        '404':
          description: Change Order Line Item not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Change Order Line Items
    put:
      description: Modify Change Order Line Item by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChangeOrderLineItemPatch'
        required: true
      responses:
        '200':
          description: Modified Change Order Line Item object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/ChangeOrderLineItemRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Change Order Line Item not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Change Order Line Item already exists
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Change Order Line Items
    delete:
      description: Remove Change Order Line Item by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Change Order Line Item deleted
        '400':
          description: Change Order Line Item has history and can not be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Change Order Line Item not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Change Order Line Items
  /core/changeordernotes:
    get:
      description: Get all Change Order Notes.
      parameters:
        - name: coOrderId
          description: Maximum number of change order ids supported is 100
          in: query
          required: true
          schema:
            type: array
            items:
              type: integer
            minItems: 1
            maxItems: 100
        - name: filter
          in: query
          required: false
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: page
          in: query
          required: false
          schema:
            type: integer
            default: 0
      responses:
        '200':
          description: List of Change Order Notes
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ChangeOrderNoteRead'
                  pagination:
                    type: object
                    properties:
                      page:
                        type: integer
                      itemsPerPage:
                        type: integer
                      totalResults:
                        type: integer
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Change Order Notes
    post:
      description: Create new Change Order Note
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChangeOrderNoteCreate'
        required: true
      responses:
        '201':
          description: Created Change Order Note object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/ChangeOrderNoteRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Change Order Note already exists
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Change Order Notes
  '/core/changeordernotes/{id}':
    get:
      description: Get Change Order Note by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Change Order Note object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/ChangeOrderNoteRead'
        '404':
          description: Change Order Note not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Change Order Notes
    put:
      description: Modify Change Order Note by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChangeOrderNotePatch'
        required: true
      responses:
        '200':
          description: Modified Change Order Note object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/ChangeOrderNoteRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Change Order Note not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Change Order Notes
    delete:
      description: Remove Change Order Note by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Change Order Note deleted
        '400':
          description: Change Order Note has history and can not be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Change Order Note not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: This note is a system managed note and cannot be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Change Order Notes
  /core/changeorderbudgetcodes:
    get:
      description: Get all change order budget codes
      parameters:
        - name: changeOrderId
          in: query
          required: true
          schema:
            type: integer
        - name: filter
          in: query
          required: false
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: page
          in: query
          required: false
          schema:
            type: integer
            default: 0
      responses:
        '200':
          description: List of change order budget codes
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ChangeOrderBudgetCodeItemRead'
                  pagination:
                    type: object
                    properties:
                      page:
                        type: integer
                      itemsPerPage:
                        type: integer
                      totalResults:
                        type: integer
        '400':
          description: Change Order id is required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Change Order Budget Codes
    post:
      description: Create new change order budget code
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChangeOrderBudgetCodeCreate'
        required: true
      responses:
        '201':
          description: Created change order budget code object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/ChangeOrderBudgetCodeItemRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Change Order Budget Codes
  '/core/changeorderbudgetcodes/{id}':
    get:
      description: Get change order budget code by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Change Order Budget code object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/ChangeOrderBudgetCodeItemRead'
        '404':
          description: Change Order Budget code not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Change Order Budget Codes
    put:
      description: Modify change order budget code by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChangeOrderBudgetCodePatch'
        required: true
      responses:
        '200':
          description: Modified change order budget code object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/ChangeOrderBudgetCodeItemRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Change Order Budget code not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Change Order Budget Codes
    delete:
      description: Remove change order budget code by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Change Order Budget code deleted
        '400':
          description: Budget code has history and can not be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Change Order Budget code not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Change Order Budget Codes
  /core/changeorderquantitycodes:
    get:
      description: Get all change order quantity codes
      parameters:
        - name: changeOrderId
          in: query
          required: true
          schema:
            type: integer
        - name: filter
          in: query
          required: false
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: page
          in: query
          required: false
          schema:
            type: integer
            default: 0
      responses:
        '200':
          description: List of change order quantity codes
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ChangeOrderQuantityCodeItemRead'
                  pagination:
                    type: object
                    properties:
                      page:
                        type: integer
                      itemsPerPage:
                        type: integer
                      totalResults:
                        type: integer
        '400':
          description: Change Order id is required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Change Order Quantity Codes
    post:
      description: Create new change order quantity code
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChangeOrderQuantityCodeCreate'
        required: true
      responses:
        '201':
          description: Created change order quantity code object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/ChangeOrderQuantityCodeItemRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Change Order Quantity Codes
  '/core/changeorderquantitycodes/{id}':
    get:
      description: Get change order quantity code by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Change Order Quantity code object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/ChangeOrderQuantityCodeItemRead'
        '404':
          description: Change Order Quantity code not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Change Order Quantity Codes
    put:
      description: Modify change order quantity code by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChangeOrderQuantityCodePatch'
        required: true
      responses:
        '200':
          description: Modified change order quantity code object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/ChangeOrderQuantityCodeItemRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Change Order Quantity code not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Change Order Quantity Codes
    delete:
      description: Remove change order Quantity code by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Change Order Quantity code deleted
        '400':
          description: Quantity code has history and can not be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Change Order Quantity code not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Change Order Quantity Codes
  /core/exportformats:
    get:
      description: Get list of export formats by company id
      parameters:
        - name: companyId
          in: query
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: List of export formats
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/ExportFormatRead'
        '400':
          description: Company id is required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Export Format
  '/core/exportformats/{id}':
    put:
      description: Modify single export format by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExportFormatPatch'
        required: true
      responses:
        '200':
          description: Modified export format object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/ExportFormatRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Export format not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Export Format
  /core/payrollexports:
    get:
      description: Get list of payroll exports
      parameters:
        - name: projectId
          description: Maximum number of project ids supported is 100
          in: query
          required: true
          schema:
            type: array
            items:
              type: integer
            minItems: 1
            maxItems: 100
        - name: exportFormatId
          in: query
          required: true
          schema:
            type: integer
        - name: weekEndDateKey
          in: query
          required: true
          schema:
            type: integer
        - name: isReceivedByERP
          in: query
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: List of payroll exports
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/PayrollExportRead'
        '400':
          description: Missing required parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Payroll Export
  /core/payrollexports/projects:
    get:
      description: 'Get all available project ids that had payroll exports between the specified week end dates.  Use optional parameters to search for appropriate projects.  If optional parameters are omitted, then all projects that match the required parameters are retreived.'
      parameters:
        - name: exportFormatId
          in: query
          required: true
          schema:
            type: integer
        - name: fromWeekEndDateKey
          in: query
          required: true
          schema:
            type: integer
        - name: toWeekEndDateKey
          in: query
          required: true
          schema:
            type: integer
        - name: isReset
          in: query
          required: false
          schema:
            type: boolean
        - name: isReceivedByERP
          in: query
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: List of project ids
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      type: integer
        '400':
          description: Params 'from week end date' and 'to week end date' are required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Payroll Export
  '/core/payrollexports/{id}':
    get:
      description: Get payroll export by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Payroll export object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/PayrollExportRead'
        '404':
          description: Payroll export not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Payroll Export
  '/core/payrollexports/{id}/data':
    get:
      description: Get payroll export data by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
        - name: type
          in: query
          required: false
          schema:
            type: string
            enum:
              - labor
              - equipment
              - other
            default: labor
        - name: snapshot
          in: query
          required: false
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: List of custom payroll export data records
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/PayrollExportDataRead'
        '404':
          description: Payroll export data not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Payroll Export
  '/core/payrollexports/{id}/received':
    put:
      description: Update payroll export as received
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Payroll export object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/PayrollExportRead'
        '404':
          description: Payroll export not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Payroll Export
  '/core/payrollexports/{id}/reset':
    put:
      description: Update payroll export as reset
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PayrollExportReset'
        required: false
      responses:
        '200':
          description: Payroll export object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/PayrollExportRead'
        '404':
          description: Payroll export not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Payroll Export
  /field/attendanceemployeepunchtime:
    get:
      description: Get all attendance employee punch time
      parameters:
        - name: companyId
          in: query
          required: true
          schema:
            type: integer
        - name: fromDate
          in: query
          required: true
          schema:
            type: integer
        - name: toDate
          in: query
          required: true
          schema:
            type: integer
        - name: filter
          in: query
          required: false
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: Attendance Employee Punch Time
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/AttendanceEmployeePunchTimeRead'
        '404':
          description: Attendance employee punch time not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Attendance Employee Punch Time
    post:
      description: Create new attendance employee punch time
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AttendanceEmployeePunchTimeCreate'
        required: true
      responses:
        '201':
          description: Created attendance employee punch time object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/AttendanceEmployeePunchTimeRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Attendance Employee Punch Time
  '/field/attendanceemployeepunchtime/{id}':
    get:
      description: Get attendance employee punch time by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Attendance Employee Punch Time
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/AttendanceEmployeePunchTimeRead'
        '404':
          description: Attendance employee punch time not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Attendance Employee Punch Time
    put:
      description: Modify attendance employee punch time by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AttendanceEmployeePunchTimePatch'
        required: true
      responses:
        '200':
          description: Modified attendance employee punch time object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/AttendanceEmployeePunchTimeRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Attendance employee punch time not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Attendance Employee Punch Time
    delete:
      description: Remove attendance employee punch time by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: Attendance employee punch time deleted
        '404':
          description: Attendance employee punch time not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Attendance Employee Punch Time
  /field/dailylogs:
    get:
      description: Get all daily logs
      parameters:
        - name: projectId
          description: Maximum number of project ids supported is 100
          in: query
          required: true
          schema:
            type: array
            items:
              type: integer
            minItems: 1
            maxItems: 100
        - name: fromDate
          in: query
          required: true
          schema:
            type: integer
        - name: toDate
          in: query
          required: true
          schema:
            type: integer
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of daily logs
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/DailyLogRead'
        '400':
          description: 'Project id, ''from date'' and ''to date'' are required'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Daily Log
  /field/dailylogs/weather:
    get:
      description: Get all daily log weather
      parameters:
        - name: projectId
          description: Maximum number of project ids supported is 100
          in: query
          required: true
          schema:
            type: array
            items:
              type: integer
            minItems: 1
            maxItems: 100
        - name: fromDate
          in: query
          required: true
          schema:
            type: integer
        - name: toDate
          in: query
          required: true
          schema:
            type: integer
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of daily log weather
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/DailyLogWeatherRead'
        '400':
          description: 'Project id, ''from date'' and ''to date'' are required'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Daily Log Weather
  /field/dailylogs/deliveries:
    get:
      description: Get all daily log deliveries
      parameters:
        - name: projectId
          description: Maximum number of project ids supported is 100
          in: query
          required: true
          schema:
            type: array
            items:
              type: integer
            minItems: 1
            maxItems: 100
        - name: fromDate
          in: query
          required: true
          schema:
            type: integer
        - name: toDate
          in: query
          required: true
          schema:
            type: integer
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of daily log deliveries
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/DailyLogDeliveryRead'
        '400':
          description: 'Project id, ''from date'' and ''to date'' are required'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Daily Log Delivery
  /field/dailylogs/equipment:
    get:
      description: Get all daily log equipment
      parameters:
        - name: projectId
          description: Maximum number of project ids supported is 100
          in: query
          required: true
          schema:
            type: array
            items:
              type: integer
            minItems: 1
            maxItems: 100
        - name: fromDate
          in: query
          required: true
          schema:
            type: integer
        - name: toDate
          in: query
          required: true
          schema:
            type: integer
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of daily log equipment
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/DailyLogEquipmentRead'
        '400':
          description: 'Project id, ''from date'' and ''to date'' are required'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Daily Log Equipment
  /field/dailylogs/inspections:
    get:
      description: Get all daily log inspections
      parameters:
        - name: projectId
          description: Maximum number of project ids supported is 100
          in: query
          required: true
          schema:
            type: array
            items:
              type: integer
            minItems: 1
            maxItems: 100
        - name: fromDate
          in: query
          required: true
          schema:
            type: integer
        - name: toDate
          in: query
          required: true
          schema:
            type: integer
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of daily log inspections
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/DailyLogInspectionRead'
        '400':
          description: 'Project id, ''from date'' and ''to date'' are required'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Daily Log Inspection
  /field/dailylogs/labor:
    get:
      description: Get all daily log labor
      parameters:
        - name: projectId
          description: Maximum number of project ids supported is 100
          in: query
          required: true
          schema:
            type: array
            items:
              type: integer
            minItems: 1
            maxItems: 100
        - name: fromDate
          in: query
          required: true
          schema:
            type: integer
        - name: toDate
          in: query
          required: true
          schema:
            type: integer
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of daily log labor
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/DailyLogLaborRead'
        '400':
          description: 'Project id, ''from date'' and ''to date'' are required'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Daily Log Labor
  /field/dailylogs/notes:
    get:
      description: Get all daily log notes
      parameters:
        - name: projectId
          description: Maximum number of project ids supported is 100
          in: query
          required: true
          schema:
            type: array
            items:
              type: integer
            minItems: 1
            maxItems: 100
        - name: fromDate
          in: query
          required: true
          schema:
            type: integer
        - name: toDate
          in: query
          required: true
          schema:
            type: integer
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of daily log notes
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/DailyLogNoteRead'
        '400':
          description: 'Project id, ''from date'' and ''to date'' are required'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Daily Log Note
  /field/dailylogs/visitors:
    get:
      description: Get all daily log visitors
      parameters:
        - name: projectId
          description: Maximum number of project ids supported is 100
          in: query
          required: true
          schema:
            type: array
            items:
              type: integer
            minItems: 1
            maxItems: 100
        - name: fromDate
          in: query
          required: true
          schema:
            type: integer
        - name: toDate
          in: query
          required: true
          schema:
            type: integer
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of daily log visitors
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/DailyLogVisitorRead'
        '400':
          description: 'Project id, ''from date'' and ''to date'' are required'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Daily Log Visitor
  /field/dailylogs/questions:
    get:
      description: Get all daily log questions
      parameters:
        - name: projectId
          description: Maximum number of project ids supported is 100
          in: query
          required: true
          schema:
            type: array
            items:
              type: integer
            minItems: 1
            maxItems: 100
        - name: fromDate
          in: query
          required: true
          schema:
            type: integer
        - name: toDate
          in: query
          required: true
          schema:
            type: integer
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of daily log questions
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/DailyLogQuestionsRead'
        '400':
          description: 'Project id, ''from date'' and ''to date'' are required'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Daily Log Questions
  /field/dailylogs/photos:
    get:
      description: Get all daily log photos
      parameters:
        - name: projectId
          description: Maximum number of project ids supported is 100
          in: query
          required: true
          schema:
            type: array
            items:
              type: integer
            minItems: 1
            maxItems: 100
        - name: fromDate
          in: query
          required: true
          schema:
            type: integer
        - name: toDate
          in: query
          required: true
          schema:
            type: integer
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of daily log photos
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/DailyLogPhotosRead'
        '400':
          description: 'Project id, ''from date'' and ''to date'' are required'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Daily Log Photos
  /field/jhas:
    get:
      description: Get a list of JHAs
      parameters:
        - name: projectId
          description: Maximum number of project ids supported is 100
          in: query
          required: true
          schema:
            type: array
            items:
              type: integer
            minItems: 1
            maxItems: 100
        - name: fromDate
          in: query
          required: true
          schema:
            type: integer
        - name: toDate
          in: query
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: List of JHAs
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/JHARead'
        '400':
          description: Project id is required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - JHA
  /field/jhas/projects:
    get:
      description: Get a list of project ids having JHA data
      parameters:
        - name: fromDate
          in: query
          required: true
          schema:
            type: integer
        - name: toDate
          in: query
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: List of project ids having JHA data
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/JHAProjectRead'
        '400':
          description: '''fromDate'' and ''toDate'' are required'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - JHA
  /field/jhas/crew:
    get:
      description: Get a list of crew details from JHA
      parameters:
        - name: jhaId
          description: Maximum number of JHA ids supported is 100
          in: query
          required: true
          schema:
            type: array
            items:
              type: integer
            minItems: 1
            maxItems: 100
        - name: fromDate
          in: query
          required: true
          schema:
            type: integer
        - name: toDate
          in: query
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: List of crew details from JHA
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/JHACrewRead'
        '400':
          description: JHA id is required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - JHA
  /field/attendance:
    get:
      description: Get a list of Attendance
      parameters:
        - name: projectId
          description: Maximum number of project ids supported is 100
          in: query
          required: true
          schema:
            type: array
            items:
              type: integer
            minItems: 1
            maxItems: 100
        - name: fromDate
          in: query
          required: true
          schema:
            type: integer
        - name: toDate
          in: query
          required: true
          schema:
            type: integer
        - name: filter
          in: query
          required: false
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of Attendance
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/AttendanceRead'
        '400':
          description: Project id is required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Attendance
  /field/attendance/questionresponse:
    get:
      description: Get a list of Attendance Questions/Responses
      parameters:
        - name: projectId
          description: Maximum number of project ids supported is 100
          in: query
          required: true
          schema:
            type: array
            items:
              type: integer
            minItems: 1
            maxItems: 100
        - name: fromDate
          in: query
          required: true
          schema:
            type: integer
        - name: toDate
          in: query
          required: true
          schema:
            type: integer
        - name: filter
          in: query
          required: false
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of Attendance Questions/Responses
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/AttendanceQuestionRead'
        '400':
          description: Project id is required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Attendance
  /field/attendance/projects:
    get:
      description: Get a list of project ids having Attendance data
      parameters:
        - name: fromDate
          in: query
          required: true
          schema:
            type: integer
        - name: toDate
          in: query
          required: true
          schema:
            type: integer
        - name: filter
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: List of project ids having Attendance data
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/AttendanceProjectRead'
        '400':
          description: '''fromDate'' and ''toDate'' are required'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Attendance
  /field/timecards:
    get:
      description: Get all timecards
      parameters:
        - name: projectId
          in: query
          required: true
          schema:
            type: integer
        - name: fromDate
          in: query
          required: true
          schema:
            type: integer
        - name: toDate
          in: query
          required: true
          schema:
            type: integer
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of timecards
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/TimeCardRead'
        '400':
          description: 'Project id, ''from date'' and ''to date'' are required'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Timecard
  /field/timecards/projects:
    get:
      description: |
        ### Overview
        Get all project ids having timecard data

        ### Deleted Records
        The `retrieveDeleted` parameter is used to retrieve project ids for deleted records.  When set to `true`, the endpoint will return project Ids for deleted records ONLY.  When set to `false`, ONLY non-deleted project Ids are returned.
      parameters:
        - name: fromDate
          in: query
          required: true
          schema:
            type: integer
        - name: toDate
          in: query
          required: true
          schema:
            type: integer
        - name: retrieveDeleted
          in: query
          required: false
          schema:
            type: boolean
            default: false
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of project ids
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      type: integer
        '400':
          description: Params 'from date' and 'to date' are required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Timecard
  '/field/timecards/{id}':
    get:
      description: Get timecard by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Timecard object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/TimeCardRead'
        '404':
          description: Timecard not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Timecard
  /field/timecarddetails:
    get:
      description: |
        ### Overview
        Gets timecard details for given parameters.  Only records where the budget code `projectId` matches the supplied `projectIds` will be returned regardless of whether the `timeCardProjectId` matches.
        The `fromDate` and `toDate` parameters filter records based on the timecard's `weekEndDate` field.

        ### Caching
        This endpoint utilizes caching to enhance performance. The `fromDate`, `toDate`, `projectId` and `updatedAfter` parameters form the cache key.  Modifying any one of these parameters results in a new cache being created. 
        Records are cached after the initial retrieval for a specific cache key.  Records with a `timeCardDate` within the last 3 weeks will be cached for 1 hour. Records with a `timeCardDate` older than 3 weeks will be cached for 12 hours.

        ### Deleted Records
        The `retrieveDeleted` parameter is used to retrieve deleted records.  When set to `true`, the endpoint will return deleted records in ONLY.  When set to `false`, ONLY non-deleted records are returned.

        ### Paging
        Paging is used for this endpoint:
        - Paging works by allowing a total number of records to be broken up into chunks called "pages".  However, it's still possible to overwhelm the system if the total
        number of records requested is very large.  Therefore, the total records allowed for a given request is limited to `50,000`.  
        - If the `page` value is not provided, it will default to `page` 0.
        - The MAX allowable of items per page is `8,000`.  However, for performance reasons, we recommend using a smaller page size, like `500`.

        Example

        Timecard details for a given set of `projectIds` is desired for the period of Jan 2020 - Dec 2023.  This results in a total of 200K records.  Therefore, the request is broken into blocks of 3 months, and then paged within those months:
        - Retrieve data from Jan 2020 - Mar 2020
          - Get page 0
          - Get page 1
          - Get page 2
          - etc...
        - Retrieve data from Apr 2020 - Jun 2020
          - Get page 0
          - etc...
        - Retrieve data from ...
      parameters:
        - name: projectId
          description: Maximum number of project ids supported is 100
          in: query
          required: true
          schema:
            type: array
            items:
              type: integer
            minItems: 1
            maxItems: 100
        - name: fromDate
          in: query
          required: true
          schema:
            type: integer
        - name: toDate
          in: query
          required: true
          schema:
            type: integer
        - name: retrieveDeleted
          in: query
          required: false
          schema:
            type: boolean
            default: false
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: page
          in: query
          required: false
          schema:
            type: integer
            default: 0
        - name: itemsPerPage
          in: query
          required: false
          schema:
            type: integer
            default: 500
      responses:
        '200':
          description: List of timecard details
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/TimeCardDetailRead'
                    maxItems: 10000
                  pagination:
                    type: object
                    properties:
                      page:
                        type: integer
                      itemsPerPage:
                        type: integer
                      totalResults:
                        type: integer
        '400':
          description: 'Project id, ''from date'' and ''to date'' are required'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '413':
          description: Query would generate a record count that exceeds limit
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Timecard Detail
  /field/timecardallowances:
    get:
      description: Get all timecard allowances
      parameters:
        - name: projectId
          description: Maximum number of project ids supported is 100
          in: query
          required: true
          schema:
            type: array
            items:
              type: integer
            minItems: 1
            maxItems: 100
        - name: fromDate
          in: query
          required: true
          schema:
            type: integer
        - name: toDate
          in: query
          required: true
          schema:
            type: integer
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of timecard allowances
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/TimeCardAllowanceRead'
        '400':
          description: 'Project id, ''from date'' and ''to date'' are required'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Timecard Allowance
  /field/tandmbillingrates:
    get:
      description: Get all TandMBillingRate
      parameters:
        - name: tandMBillingClassId
          in: query
          required: true
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: filter
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: List of TandMBillingRate
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/TandMBillingRateRead'
      security:
        - api_key: []
      tags:
        - T&M Billing Rate
    post:
      description: Create new TandMBillingRate
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TandMBillingRateCreate'
        required: true
      responses:
        '201':
          description: Created TandMBillingRate object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/TandMBillingRateRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - T&M Billing Rate
  '/field/tandmbillingrates/{id}':
    get:
      description: Get single TandMBillingRate by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: TandMBillingRate object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/TandMBillingRateRead'
        '404':
          description: TandMBillingRate not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - T&M Billing Rate
    put:
      description: Modify single TandMBillingRate by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TandMBillingRatePatch'
        required: true
      responses:
        '200':
          description: Modified TandMBillingRate object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/TandMBillingRateRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: TandMBillingRate not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - T&M Billing Rate
    delete:
      description: Remove single TandMBillingRate by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: TandMBillingRate deleted
        '400':
          description: TandMBillingRate has history and can not be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: TandMBillingRate not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - T&M Billing Rate
  /field/tandmbillingemployees:
    get:
      description: Get all TandMBillingEmployee
      parameters:
        - name: tandMBillingClassId
          in: query
          required: true
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: filter
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: List of TandMBillingEmployee
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/TandMBillingEmployeeRead'
      security:
        - api_key: []
      tags:
        - T&M Billing Class Employee
    post:
      description: Create new TandMBillingEmployee
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TandMBillingEmployeeCreate'
        required: true
      responses:
        '201':
          description: Created TandMBillingEmployee object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/TandMBillingEmployeeRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - T&M Billing Class Employee
  '/field/tandmbillingemployees/{id}':
    get:
      description: Get single TandMBillingEmployee by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: TandMBillingEmployee object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/TandMBillingEmployeeRead'
        '404':
          description: TandMBillingEmployee not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - T&M Billing Class Employee
    put:
      description: Modify single TandMBillingEmployee by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TandMBillingEmployeePatch'
        required: true
      responses:
        '200':
          description: Modified TandMBillingEmployee object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/TandMBillingEmployeeRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: TandMBillingEmployee not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - T&M Billing Class Employee
    delete:
      description: Remove single TandMBillingEmployee by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: TandMBillingEmployee deleted
        '400':
          description: TandMBillingEmployee has history and can not be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: TandMBillingEmployee not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - T&M Billing Class Employee
  /field/tandmbillingequipment:
    get:
      description: Get all TandMBillingEquipment
      parameters:
        - name: tandMBillingClassId
          in: query
          required: true
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: filter
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: List of TandMBillingEquipment
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/TandMBillingEquipmentRead'
      security:
        - api_key: []
      tags:
        - T&M Billing Class Equipment
    post:
      description: Create new TandMBillingEquipment
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TandMBillingEquipmentCreate'
        required: true
      responses:
        '201':
          description: Created TandMBillingEquipment object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/TandMBillingEquipmentRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - T&M Billing Class Equipment
  '/field/tandmbillingequipment/{id}':
    get:
      description: Get single TandMBillingEquipment by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: TandMBillingEquipment object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/TandMBillingEquipmentRead'
        '404':
          description: TandMBillingEquipment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - T&M Billing Class Equipment
    put:
      description: Modify single TandMBillingEquipment by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TandMBillingEquipmentPatch'
        required: true
      responses:
        '200':
          description: Modified TandMBillingEquipment object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/TandMBillingEquipmentRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: TandMBillingEquipment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - T&M Billing Class Equipment
    delete:
      description: Remove single TandMBillingEquipment by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: TandMBillingEquipment deleted
        '400':
          description: TandMBillingEquipment has history and can not be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: TandMBillingEquipment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - T&M Billing Class Equipment
  /field/productionqtys/projects:
    get:
      description: Get all project ids having production quantity data
      parameters:
        - name: fromDate
          in: query
          required: true
          schema:
            type: integer
        - name: toDate
          in: query
          required: true
          schema:
            type: integer
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of project ids
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      type: integer
        '400':
          description: Params 'from date' and 'to date' are required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Production Quantity
  /field/productionqtydetails:
    get:
      description: Get all production quantity details
      parameters:
        - name: projectId
          description: Maximum number of project ids supported is 100
          in: query
          required: true
          schema:
            type: array
            items:
              type: integer
            minItems: 1
            maxItems: 100
        - name: fromDate
          in: query
          required: true
          schema:
            type: integer
        - name: toDate
          in: query
          required: true
          schema:
            type: integer
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of production quantity details
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ProductionQtyDetailRead'
        '400':
          description: 'Project id, ''from date'' and ''to date'' are required'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '413':
          description: Query would generate a record count that exceeds limit
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Production Quantity Detail
  /field/productionqtydetails/dailytotals/costcode:
    get:
      description: Get all production quantity totals at the project-costcode-date level
      parameters:
        - name: projectId
          in: query
          required: true
          schema:
            type: integer
        - name: fromDate
          in: query
          required: true
          schema:
            type: integer
        - name: toDate
          in: query
          required: true
          schema:
            type: integer
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: List of production quantity totals
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ProductionQtyDetailTotalsRead'
        '400':
          description: 'Project id, ''from date'' and ''to date'' are required'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '413':
          description: Query would generate a record count that exceeds limit
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - Production Quantity Detail
  /field/tandmbillingclasses:
    get:
      description: Get all TandMBillingClasses
      parameters:
        - name: tandMBillingPeriodId
          in: query
          required: true
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: filter
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: List of TandMBillingClasses
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/TandMBillingClassRead'
      security:
        - api_key: []
      tags:
        - T&M Billing Class
    post:
      description: Create new TandMBillingClass
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TandMBillingClassCreate'
        required: true
      responses:
        '201':
          description: Created TandMBillingClass object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/TandMBillingClassRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - T&M Billing Class
  '/field/tandmbillingclasses/{id}':
    get:
      description: Get single TandMBillingClass by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: TandMBillingClass object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/TandMBillingClassRead'
        '404':
          description: TandMBillingClass not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - T&M Billing Class
    put:
      description: Modify single TandMBillingClass by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TandMBillingClassPatch'
        required: true
      responses:
        '200':
          description: Modified TandMBillingClass object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/TandMBillingClassRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: TandMBillingClass not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - T&M Billing Class
    delete:
      description: Remove single TandMBillingClass by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: TandMBillingClass deleted
        '400':
          description: TandMBillingClass has history and can not be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: TandMBillingClass not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - T&M Billing Class
  /field/tandmbillingperiods:
    get:
      description: Get all TandMBillingPeriods
      parameters:
        - name: projectId
          in: query
          required: true
          schema:
            type: string
        - name: updatedAfter
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: filter
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: List of TandMBillingPeriods
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/TandMBillingPeriodRead'
      security:
        - api_key: []
      tags:
        - T&M Billing Period
    post:
      description: Create new TandMBillingPeriod
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TandMBillingPeriodCreate'
        required: true
      responses:
        '201':
          description: Created TandMBillingPeriod object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/TandMBillingPeriodRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - T&M Billing Period
  '/field/tandmbillingperiods/{id}':
    get:
      description: Get single TandMBillingPeriod by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: TandMBillingPeriod object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/TandMBillingPeriodRead'
        '404':
          description: TandMBillingPeriod not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - T&M Billing Period
    put:
      description: Modify single TandMBillingPeriod by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        description: Expected fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TandMBillingPeriodPatch'
        required: true
      responses:
        '200':
          description: Modified TandMBillingPeriod object
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP response status code
                  data:
                    $ref: '#/components/schemas/TandMBillingPeriodRead'
        '400':
          description: Schema validation error(s) or bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: TandMBillingPeriod not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - T&M Billing Period
    delete:
      description: Remove single TandMBillingPeriod by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: TandMBillingPeriod deleted
        '400':
          description: TandMBillingPeriod has history and can not be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: TandMBillingPeriod not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
      tags:
        - T&M Billing Period
components:
  securitySchemes:
    api_key:
      type: apiKey
      name: x-api-key
      in: header
  schemas:
    Error:
      type: object
      properties:
        status:
          type: integer
          description: HTTP response status code
          minimum: 400
          maximum: 500
          default: 500
        error:
          type: string
          description: Error description message
    Id:
      type: object
      properties:
        id:
          type: integer
    Meta:
      type: object
      properties:
        updatedBy:
          type: string
          nullable: true
        createdAt:
          type: string
          nullable: true
        updatedAt:
          type: string
          nullable: true
    AttendanceEmployeePunchTimeCreate:
      type: object
      properties:
        dateKey:
          type: number
        employeeId:
          type: integer
        hours:
          type: number
      required:
        - dateKey
        - employeeId
        - hours
    AttendanceEmployeePunchTimePatch:
      type: object
      properties:
        dateKey:
          type: number
        employeeId:
          type: integer
        hours:
          type: number
    AttendanceEmployeePunchTimeRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - $ref: '#/components/schemas/AttendanceEmployeePunchTimeCreate'
    CompanyPatch:
      type: object
      properties:
        companyNumber:
          type: string
        companyName:
          type: string
        companyDescription:
          type: string
        dayOfWeekEndDate:
          type: integer
        companyAltKey:
          type: string
        companySubAltKey:
          type: string
    CompanyCreate:
      type: object
      properties:
        companyNumber:
          type: string
        companyName:
          type: string
        companyDescription:
          type: string
        dayOfWeekEndDate:
          type: integer
        companyAltKey:
          type: string
        companySubAltKey:
          type: string
      required:
        - companyNumber
        - companyName
    CompanyRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - $ref: '#/components/schemas/CompanyCreate'
        - type: object
          properties:
            logoPic:
              type: string
        - $ref: '#/components/schemas/Meta'
    CompanyValueListTypeRead:
      type: object
      properties:
        valueListType:
          type: string
        valueListTypeName:
          type: string
        createdAt:
          type: string
        updatedAt:
          type: string
      required:
        - valueListType
        - valueListTypeName
    CompanyValueListRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - type: object
          properties:
            companyId:
              type: string
            valueListType:
              type: string
            valueListKey:
              type: string
            valueListName:
              type: string
            valueListDescription:
              type: string
            valueListTagColor:
              type: string
            sortOrder:
              type: integer
        - $ref: '#/components/schemas/Meta'
      required:
        - companyId
        - valueListType
        - valueListTypeName
    PayrollExportRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - type: object
          properties:
            id:
              type: number
            projectExportBatchId:
              type: number
            exportFormatId:
              type: number
            projectId:
              type: number
            weekEndDateKey:
              type: number
            dateKey:
              type: number
            exportNum:
              type: number
            groupingId:
              type: number
            deliveredExportApi:
              type: string
              nullable: true
            isReset:
              type: boolean
            isReceivedByERP:
              type: boolean
            createdBy:
              type: string
              nullable: true
          required:
            - exportFormatId
            - projectId
            - weekEndDateKey
            - dateKey
        - $ref: '#/components/schemas/Meta'
    PayrollExportReset:
      type: object
      properties:
        localTzTimeStamp:
          type: string
    PayrollExportDataRead:
      allOf:
        - type: object
          additionalProperties:
            type: string
    CompanyDivisionPatch:
      type: object
      properties:
        companyDivisionNumber:
          type: string
        companyDivisionName:
          type: string
        companyDivisionDescription:
          type: string
        address1:
          type: string
        address2:
          type: string
        address3:
          type: string
        city:
          type: string
        state:
          type: string
        postalCode:
          type: string
        country:
          type: string
        addressPhone:
          type: string
      required:
        - companyDivisionNumber
        - companyDivisionName
    CompanyDivisionCreate:
      type: object
      properties:
        companyId:
          type: integer
        companyDivisionNumber:
          type: string
        companyDivisionName:
          type: string
        companyDivisionDescription:
          type: string
        address1:
          type: string
        address2:
          type: string
        address3:
          type: string
        city:
          type: string
        state:
          type: string
        postalCode:
          type: string
        country:
          type: string
        addressPhone:
          type: string
      required:
        - companyId
        - companyDivisionNumber
        - companyDivisionName
    CompanyDivisionRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - $ref: '#/components/schemas/CompanyDivisionCreate'
        - $ref: '#/components/schemas/Meta'
    UserRoleMembershipRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - type: object
          properties:
            userId:
              type: integer
            roleId:
              type: integer
            roleName:
              type: string
            username:
              type: string
            lastName:
              type: string
            firstName:
              type: string
            level:
              type: string
          required:
            - userId
            - roleId
    CompanyRoleRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - type: object
          properties:
            companyId:
              type: integer
            roleKey:
              type: string
            roleName:
              type: string
            roleDescription:
              type: string
            sysRole:
              type: boolean
            disabled:
              type: boolean
            isSysAdmin:
              type: boolean
            roleMembership:
              type: array
              items:
                $ref: '#/components/schemas/UserRoleMembershipRead'
          required:
            - companyId
            - roleKey
            - roleName
        - $ref: '#/components/schemas/Meta'
    ProjectPatch:
      type: object
      properties:
        parentProjectId:
          type: integer
        companyDivisionId:
          type: integer
        projectName:
          type: string
        startDate:
          type: string
          format: date-time
        endDate:
          type: string
          format: date-time
        projectIntegrationNumber:
          type: string
        projectSubIntegrationNumber:
          type: string
        projectDescription:
          type: string
        closed:
          type: boolean
        clientName:
          type: string
        contractValue:
          type: integer
        address1:
          type: string
        address2:
          type: string
        address3:
          type: string
        city:
          type: string
        state:
          type: string
        postalCode:
          type: string
        country:
          type: string
        addressPhone:
          type: string
        projUdf01:
          type: string
        projUdf02:
          type: string
        projUdf03:
          type: string
        projUdf04:
          type: string
        projUdf05:
          type: string
    ProjectCreate:
      type: object
      properties:
        companyId:
          type: integer
        parentProjectId:
          type: integer
        companyDivisionId:
          type: integer
        projectNumber:
          type: string
        projectName:
          type: string
        startDate:
          type: string
          format: date-time
        endDate:
          type: string
          format: date-time
        projectIntegrationNumber:
          type: string
        projectSubIntegrationNumber:
          type: string
        projectDescription:
          type: string
        closed:
          type: boolean
        projectTemplateCode:
          type: string
        clientName:
          type: string
        contractValue:
          type: integer
        address1:
          type: string
        address2:
          type: string
        address3:
          type: string
        city:
          type: string
        state:
          type: string
        postalCode:
          type: string
        country:
          type: string
        addressPhone:
          type: string
        projUdf01:
          type: string
        projUdf02:
          type: string
        projUdf03:
          type: string
        projUdf04:
          type: string
        projUdf05:
          type: string
      required:
        - companyId
        - projectNumber
        - projectName
    ProjectRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - $ref: '#/components/schemas/ProjectCreate'
        - type: object
          properties:
            latitude:
              type: number
            longitude:
              type: number
        - $ref: '#/components/schemas/Meta'
    ProjectRoleRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - type: object
          properties:
            projectId:
              type: integer
            roleKey:
              type: string
            roleName:
              type: string
            roleDescription:
              type: string
            sysRole:
              type: boolean
            disabled:
              type: boolean
            roleMembership:
              type: array
              items:
                $ref: '#/components/schemas/UserRoleMembershipRead'
          required:
            - projectId
            - roleKey
            - roleName
        - $ref: '#/components/schemas/Meta'
    ProjectOptionRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - type: object
          properties:
            enableJHA:
              type: boolean
            requireJHA:
              type: boolean
            showSafetyMessage:
              type: boolean
            inheritSafetyMessage:
              type: boolean
            safetyMessage:
              type: string
            nearestHospital:
              type: string
        - $ref: '#/components/schemas/Meta'
    ProjectOptionPatch:
      type: object
      properties:
        enableJHA:
          type: boolean
        requireJHA:
          type: boolean
        showSafetyMessage:
          type: boolean
        inheritSafetyMessage:
          type: boolean
        safetyMessage:
          type: string
        nearestHospital:
          type: string
    PersonPatch:
      type: object
      properties:
        lastName:
          type: string
        firstName:
          type: string
        middleName:
          type: string
        nickName:
          type: string
        personNumber:
          type: string
        ethnicity:
          type: string
        gender:
          type: string
        primaryEmail:
          type: string
        secondaryEmail:
          type: string
        personalEmail:
          type: string
        personalMobile:
          type: string
        dateOfBirth:
          type: integer
        emergencyRelationship:
          type: string
        emergencyContact:
          type: string
        emergencyPhone:
          type: string
        address1:
          type: string
        address2:
          type: string
        address3:
          type: string
        city:
          type: string
        state:
          type: string
        postalCode:
          type: string
        country:
          type: string
        addressPhone:
          type: string
    PersonCreate:
      type: object
      properties:
        lastName:
          type: string
        firstName:
          type: string
        middleName:
          type: string
        nickName:
          type: string
        personNumber:
          type: string
        ethnicity:
          type: string
        gender:
          type: string
        primaryEmail:
          type: string
        secondaryEmail:
          type: string
        personalEmail:
          type: string
        personalMobile:
          type: string
        dateOfBirth:
          type: integer
          nullable: true
        emergencyRelationship:
          type: string
        emergencyContact:
          type: string
        emergencyPhone:
          type: string
        address1:
          type: string
        address2:
          type: string
        address3:
          type: string
        city:
          type: string
        state:
          type: string
        postalCode:
          type: string
        country:
          type: string
        addressPhone:
          type: string
      required:
        - lastName
        - firstName
        - personNumber
    PersonRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - $ref: '#/components/schemas/PersonCreate'
        - type: object
          properties:
            personPic:
              type: string
              nullable: true
        - $ref: '#/components/schemas/Meta'
    EmployeePatch:
      type: object
      properties:
        title:
          type: string
        companyDivisionId:
          type: integer
        costTypeId:
          type: integer
          nullable: true
        employeeAltKey:
          type: string
        department:
          type: string
        dateOfHire:
          type: integer
        terminationDate:
          type: integer
        assignedProjectId:
          type: integer
        isExempt:
          type: boolean
        active:
          type: boolean
        unionCode:
          type: string
        tradeCode:
          type: string
        class01:
          type: string
        class02:
          type: string
        class03:
          type: string
        udf01:
          type: string
        udf02:
          type: string
        udf03:
          type: string
        udf04:
          type: string
        udf05:
          type: string
        unionCardNum:
          type: string
        pinCode:
          type: string
          maxLength: 10
      required:
        - unionCode
        - tradeCode
        - class01
        - class02
        - class03
    EmployeeCreate:
      type: object
      properties:
        companyId:
          type: integer
        personId:
          type: integer
        companyDivisionId:
          type: integer
        costTypeId:
          type: integer
          nullable: true
        employeeKey:
          type: string
        employeeAltKey:
          type: string
        title:
          type: string
        department:
          type: string
        dateOfHire:
          type: integer
        terminationDate:
          type: integer
        assignedProjectId:
          type: integer
        isExempt:
          type: boolean
        unionCode:
          type: string
        tradeCode:
          type: string
        class01:
          type: string
        class02:
          type: string
        class03:
          type: string
        udf01:
          type: string
        udf02:
          type: string
        udf03:
          type: string
        udf04:
          type: string
        udf05:
          type: string
        unionCardNum:
          type: string
        pinCode:
          type: string
          maxLength: 10
      required:
        - companyId
        - personId
        - employeeKey
        - unionCode
        - tradeCode
        - class01
        - class02
        - class03
    EmployeeRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - $ref: '#/components/schemas/EmployeeCreate'
        - type: object
          properties:
            firstName:
              type: string
            middleName:
              type: string
            lastName:
              type: string
            nickName:
              type: string
            active:
              type: boolean
        - $ref: '#/components/schemas/Meta'
    EmployeeDailyTimeOffCreate:
      type: object
      properties:
        companyId:
          type: integer
        benefitTimeOffId:
          type:
            - integer
            - 'null'
          nullable: true
        dateKey:
          type: integer
        employeeId:
          type: integer
        hours:
          type: number
      required:
        - companyId
        - dateKey
        - employeeId
        - hours
        - benefitTimeOffId
    EmployeeDailyTimeOffPatch:
      type: object
      properties:
        dateKey:
          type: number
        employeeId:
          type: integer
        hours:
          type: number
    EmployeeDailyTimeOffRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - $ref: '#/components/schemas/EmployeeDailyTimeOffCreate'
    UserCreate:
      type: object
      properties:
        personId:
          type: integer
        username:
          type: string
          format: email
          pattern: '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$'
        companyMobileNumber:
          type: string
        isSysAdmin:
          type: boolean
      required:
        - personId
        - username
    UserPatch:
      type: object
      properties:
        personId:
          type: integer
        companyMobileNumber:
          type: string
        isSysAdmin:
          type: boolean
        password:
          type: string
        active:
          type: boolean
    UserRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - $ref: '#/components/schemas/UserCreate'
        - type: object
          properties:
            firstName:
              type: string
            lastName:
              type: string
            registrationSent:
              type: boolean
          required:
            - personId
            - username
        - $ref: '#/components/schemas/Meta'
    UsersProjectsList:
      allOf:
        - type: object
          properties:
            userId:
              type: integer
            projectId:
              type: integer
            roleId:
              type: integer
            lastName:
              type: string
            firstName:
              type: string
            employeeKey:
              type: string
            employeeIsCrewLead:
              type: boolean
            username:
              type: string
            projectNumber:
              type: string
            projectName:
              type: string
            roleKey:
              type: string
            roleName:
              type: string
            roleType:
              type: string
            roleIsCompanyAdmin:
              type: boolean
            roleHasAllProjectAccess:
              type: boolean
          required:
            - userId
            - projectId
            - roleId
        - $ref: '#/components/schemas/Meta'
    UserCompanyCreate:
      type: object
      properties:
        userId:
          type: integer
        companyId:
          type: integer
        roleId:
          type: integer
        accessAllProjects:
          type: boolean
      required:
        - userId
        - companyId
        - roleId
    UserCompanyPatch:
      type: object
      properties:
        userId:
          type: integer
        companyId:
          type: integer
        roleId:
          type: integer
        accessAllProjects:
          type: boolean
    UserCompanyRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - $ref: '#/components/schemas/UserCompanyCreate'
        - type: object
          properties:
            username:
              type: string
            firstName:
              type: string
            lastName:
              type: string
            roleKey:
              type: string
            roleName:
              type: string
            isSysAdmin:
              type: boolean
        - $ref: '#/components/schemas/Meta'
    UserProjectCreate:
      type: object
      properties:
        userId:
          type: integer
        projectId:
          type: integer
        roleId:
          type: integer
        isCrewLead:
          type: boolean
      required:
        - userId
        - projectId
        - roleId
    UserProjectPatch:
      type: object
      properties:
        userId:
          type: integer
        projectId:
          type: integer
        roleId:
          type: integer
        isCrewLead:
          type: boolean
    UserProjectRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - $ref: '#/components/schemas/UserProjectCreate'
        - type: object
          properties:
            username:
              type: string
            firstName:
              type: string
            lastName:
              type: string
            roleKey:
              type: string
            roleName:
              type: string
        - $ref: '#/components/schemas/Meta'
    ExportFormatRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - type: object
          properties:
            id:
              type: integer
            companyId:
              type: integer
            exportFormatKey:
              type: string
            exportFormatName:
              type: string
            exportDataTypeKey:
              type: string
            exportTargetSystemKey:
              type: string
            exportTargetSystemVersion:
              type: string
          required:
            - companyId
            - exportFormatKey
            - exportFormatName
            - exportDataTypeKey
            - exportTargetSystemKey
            - exportTargetSystemVersion
        - $ref: '#/components/schemas/ExportFormatPatch'
        - $ref: '#/components/schemas/Meta'
    ExportFormatPatch:
      type: object
      properties:
        hasEquipmentExport:
          type: boolean
        hasHeader:
          type: boolean
        fileExtension:
          type: string
        defaultParamValues:
          type: string
    TempAgencyPatch:
      type: object
      properties:
        tempAgencyName:
          type: string
        tempAgencyDescription:
          type: string
        address1:
          type: string
        address2:
          type: string
        address3:
          type: string
        city:
          type: string
        state:
          type: string
        postalCode:
          type: string
        country:
          type: string
        addressPhone:
          type: string
    TempAgencyCreate:
      type: object
      properties:
        companyId:
          type: integer
        tempAgencyKey:
          type: string
        tempAgencyName:
          type: string
        tempAgencyDescription:
          type: string
        address1:
          type: string
        address2:
          type: string
        address3:
          type: string
        city:
          type: string
        state:
          type: string
        postalCode:
          type: string
        country:
          type: string
        addressPhone:
          type: string
      required:
        - companyId
        - tempAgencyKey
        - tempAgencyName
    TempAgencyRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - $ref: '#/components/schemas/TempAgencyCreate'
        - type: object
          properties:
            latitude:
              type: number
            longitude:
              type: number
            tempAgencyLogoPic:
              type: string
        - $ref: '#/components/schemas/Meta'
    TempEmployeePatch:
      type: object
      properties:
        tempAgencyId:
          type: integer
        title:
          type: string
        dateOfHire:
          type: integer
        terminationDate:
          type: integer
        assignedProjectId:
          type: integer
        active:
          type: boolean
    TempEmployeeCreate:
      type: object
      properties:
        companyId:
          type: integer
        personId:
          type: integer
        tempAgencyId:
          type: integer
        employeeKey:
          type: string
        title:
          type: string
        dateOfHire:
          type: integer
        terminationDate:
          type: integer
        assignedProjectId:
          type: integer
        active:
          type: boolean
      required:
        - companyId
        - personId
        - tempAgencyId
        - employeeKey
    TempEmployeeRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - $ref: '#/components/schemas/TempEmployeeCreate'
        - type: object
          properties:
            firstName:
              type: string
            middleName:
              type: string
            lastName:
              type: string
            nickName:
              type: string
        - $ref: '#/components/schemas/Meta'
    EquipmentType:
      type: object
      properties:
        equipmentTypeModelName:
          type: string
        equipmentTypeModelNumber:
          type: string
        equipmentTypeMake:
          type: string
        equipmentTypeYear:
          type: integer
    EquipmentPatch:
      allOf:
        - $ref: '#/components/schemas/EquipmentType'
        - type: object
          properties:
            equipmentNumber:
              type: string
            equipmentDescription:
              type: string
            acquisitionDate:
              type: integer
    EquipmentCreate:
      allOf:
        - $ref: '#/components/schemas/EquipmentType'
        - type: object
          properties:
            equipmentKey:
              type: string
            equipmentNumber:
              type: string
            equipmentDescription:
              type: string
            acquisitionDate:
              type: integer
        - required:
            - equipmentTypeModelName
            - equipmentTypeModelNumber
            - equipmentTypeMake
            - equipmentTypeYear
            - equipmentKey
            - equipmentNumber
    EquipmentRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - $ref: '#/components/schemas/EquipmentCreate'
        - type: object
          properties:
            equipmentPic:
              type: string
              nullable: true
        - $ref: '#/components/schemas/Meta'
    CompanyEquipmentPatch:
      type: object
      properties:
        equipmentCategory:
          type: string
        equipmentOwner:
          type: string
        equipmentClass:
          type: string
        acquisitionDate:
          type: integer
        assignedDate:
          type: integer
        equipmentName:
          type: string
        active:
          type: boolean
        regRate:
          type: number
        ovtRate:
          type: number
        othRate:
          type: number
    CompanyEquipmentCreate:
      type: object
      properties:
        companyId:
          type: integer
        equipmentId:
          type: integer
        equipmentCategory:
          type: string
        equipmentOwner:
          type: string
        equipmentClass:
          type: string
        acquisitionDate:
          type: integer
        assignedDate:
          type: integer
        equipmentName:
          type: string
        active:
          type: boolean
        regRate:
          type: number
        ovtRate:
          type: number
        othRate:
          type: number
      required:
        - companyId
        - equipmentId
    CompanyEquipmentRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - $ref: '#/components/schemas/CompanyEquipmentCreate'
        - $ref: '#/components/schemas/EquipmentCreate'
        - type: object
          properties:
            equipmentPic:
              type: string
              nullable: true
        - $ref: '#/components/schemas/Meta'
    ProjectEquipmentPatch:
      type: object
      properties:
        assignedDate:
          type: integer
        equipmentName:
          type: string
        active:
          type: boolean
        regRate:
          type: number
        ovtRate:
          type: number
        othRate:
          type: number
    ProjectEquipmentCreate:
      type: object
      properties:
        companyId:
          type: integer
        projectId:
          type: integer
        equipmentId:
          type: integer
        assignedDate:
          type: integer
        equipmentName:
          type: string
        active:
          type: boolean
        regRate:
          type: number
        ovtRate:
          type: number
        othRate:
          type: number
      required:
        - companyId
        - projectId
        - equipmentId
    ProjectEquipmentRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - $ref: '#/components/schemas/ProjectEquipmentCreate'
        - $ref: '#/components/schemas/EquipmentCreate'
        - type: object
          properties:
            equipmentPic:
              type: string
              nullable: true
            acquisitionDate:
              type: integer
              nullable: true
        - $ref: '#/components/schemas/Meta'
    TradePatch:
      type: object
      properties:
        tradeLabel:
          type: string
        unionLabel:
          type: string
    TradeCreate:
      type: object
      properties:
        companyId:
          type: integer
        unionCode:
          type: string
        tradeCode:
          type: string
        tradeLabel:
          type: string
        unionLabel:
          type: string
      required:
        - companyId
        - tradeCode
    TradeRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - $ref: '#/components/schemas/TradeCreate'
        - $ref: '#/components/schemas/Meta'
    PayclassPatch:
      type: object
      properties:
        class01:
          type: string
        class02:
          type: string
        class03:
          type: string
        displayName:
          type: string
        description:
          type: string
        regRate:
          type: number
        ovtRate:
          type: number
        othRate:
          type: number
        active:
          type: boolean
    PayclassCreate:
      type: object
      properties:
        companyId:
          type: integer
        unionCode:
          type: string
        tradeCode:
          type: string
        class01:
          type: string
        class02:
          type: string
        class03:
          type: string
        displayName:
          type: string
        description:
          type: string
        regRate:
          type: number
        ovtRate:
          type: number
        othRate:
          type: number
        active:
          type: boolean
      required:
        - companyId
        - tradeCode
        - class01
    PayclassRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - $ref: '#/components/schemas/PayclassCreate'
        - $ref: '#/components/schemas/Meta'
    BenefitTimeOffPatch:
      type: object
      properties:
        timeOffCode:
          type: string
        timeOffName:
          type: string
        timeOffCategoryKey:
          type: string
        timeOffColor:
          type: string
        timeOffDescription:
          type: string
        active:
          type: boolean
    BenefitTimeOffCreate:
      type: object
      properties:
        companyId:
          type: integer
        timeOffCode:
          type: string
        timeOffName:
          type: string
        timeOffCategoryKey:
          type: string
        timeOffColor:
          type: string
        timeOffDescription:
          type: string
        active:
          type: boolean
      required:
        - companyId
        - timeOffCode
        - timeOffName
        - timeOffCategoryKey
    BenefitTimeOffRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - $ref: '#/components/schemas/BenefitTimeOffCreate'
        - $ref: '#/components/schemas/Meta'
    EmployeeTimeOffPatch:
      type: object
      properties:
        employeeId:
          type: integer
        benefitTimeOffId:
          type: integer
          nullable: true
        allowedFromDate:
          type: integer
        allowedToDate:
          type: integer
        daysAllowed:
          type: number
        daysTaken:
          type: number
        cachedDaysTaken:
          type: number
    EmployeeTimeOffCreate:
      type: object
      properties:
        employeeId:
          type: integer
        benefitTimeOffId:
          type: integer
          nullable: true
        allowedFromDate:
          type: integer
        allowedToDate:
          type: integer
        daysAllowed:
          type: number
        daysTaken:
          type: number
        cachedDaysTaken:
          type: number
      required:
        - employeeId
        - benefitTimeOffId
        - allowedFromDate
        - allowedToDate
    EmployeeTimeOffRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - $ref: '#/components/schemas/EmployeeTimeOffCreate'
        - $ref: '#/components/schemas/Meta'
    UnionTradeClassProjectPatch:
      type: object
      properties:
        regRate:
          type: number
        ovtRate:
          type: number
        othRate:
          type: number
    UnionTradeClassProjectCreate:
      type: object
      properties:
        companyId:
          type: integer
        projectId:
          type: integer
        payclassId:
          type: integer
        regRate:
          type: number
        ovtRate:
          type: number
        othRate:
          type: number
      required:
        - companyId
        - projectId
        - payclassId
    UnionTradeClassProjectRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - $ref: '#/components/schemas/UnionTradeClassProjectCreate'
        - $ref: '#/components/schemas/Meta'
    UnionTradeClassProjectEmployeePatch:
      type: object
      properties:
        regRate:
          type: number
        ovtRate:
          type: number
        othRate:
          type: number
    UnionTradeClassProjectEmployeeCreate:
      type: object
      properties:
        companyId:
          type: integer
        projectId:
          type: integer
        payclassId:
          type: integer
        employeeId:
          type: integer
        regRate:
          type: number
        ovtRate:
          type: number
        othRate:
          type: number
      required:
        - companyId
        - projectId
        - payclassId
        - employeeId
    UnionTradeClassProjectEmployeeRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - $ref: '#/components/schemas/UnionTradeClassProjectEmployeeCreate'
        - $ref: '#/components/schemas/Meta'
    CostTypePatch:
      type: object
      properties:
        costTypeAltKey:
          type: string
        costTypeDescription:
          type: string
    CostTypeCreate:
      type: object
      properties:
        companyId:
          type: integer
        costTypeKey:
          type: string
        costTypeAltKey:
          type: string
        costTypeDescription:
          type: string
        costTypeClassKey:
          type: string
      required:
        - companyId
        - costTypeKey
        - costTypeClassKey
    CostTypeRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - $ref: '#/components/schemas/CostTypeCreate'
        - $ref: '#/components/schemas/Meta'
    CostCodePatch:
      type: object
      properties:
        costCodeIntegrationNumber:
          type: string
        costCodeDescription:
          type: string
        costCodeUOM:
          type: string
        completed:
          type: boolean
        ccCat01:
          type: string
        ccCat02:
          type: string
        ccCat03:
          type: string
        ccCat04:
          type: string
        ccCat05:
          type: string
        ccUdf01:
          type: string
        ccUdf02:
          type: string
        ccUdf03:
          type: string
        ccUdf04:
          type: string
        ccUdf05:
          type: string
    CostCodeCreate:
      type: object
      properties:
        projectId:
          type: integer
        costCodeKey:
          type: string
        costCodeIntegrationNumber:
          type: string
        costCodeDescription:
          type: string
        costCodeUOM:
          type: string
        completed:
          type: boolean
        ccCat01:
          type: string
        ccCat02:
          type: string
        ccCat03:
          type: string
        ccCat04:
          type: string
        ccCat05:
          type: string
        ccUdf01:
          type: string
        ccUdf02:
          type: string
        ccUdf03:
          type: string
        ccUdf04:
          type: string
        ccUdf05:
          type: string
      required:
        - projectId
        - costCodeKey
    CostCodeRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - $ref: '#/components/schemas/CostCodeCreate'
        - $ref: '#/components/schemas/Meta'
        - type: object
          properties:
            isDeleted:
              type: boolean
            deletedBy:
              type: string
            deletedAt:
              type: date-time
              nullable: true
    BudgetCodePatch:
      type: object
      properties:
        budgetCodeIntegrationNumber:
          type: string
        budgetCodeDescription:
          type: string
        active:
          type: boolean
        category01:
          type: string
        category02:
          type: string
        category03:
          type: string
        category04:
          type: string
        category05:
          type: string
        originalBudgetHours:
          type: number
        originalBudgetAmount:
          type: number
        approvedHours:
          type: number
        approvedAmount:
          type: number
        forecastedHours:
          type: number
        forecastedAmount:
          type: number
    BudgetCodeCreate:
      type: object
      properties:
        projectId:
          type: integer
        costCodeKey:
          type: string
        costTypeKey:
          type: string
        budgetCodeIntegrationNumber:
          type: string
        budgetCodeDescription:
          type: string
        active:
          type: boolean
        category01:
          type: string
        category02:
          type: string
        category03:
          type: string
        category04:
          type: string
        category05:
          type: string
        originalBudgetHours:
          type: number
        originalBudgetAmount:
          type: number
        approvedHours:
          type: number
        approvedAmount:
          type: number
        forecastedHours:
          type: number
        forecastedAmount:
          type: number
      required:
        - projectId
        - costCodeKey
        - costTypeKey
    BudgetCodeRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - $ref: '#/components/schemas/BudgetCodeCreate'
        - type: object
          properties:
            changeOrderId:
              type: integer
              nullable: true
            changeOrderNumber:
              type: string
              nullable: true
            isDeleted:
              type: boolean
            deletedBy:
              type: string
            deletedAt:
              type: date-time
              nullable: true
        - $ref: '#/components/schemas/Meta'
    QuantityCodePatch:
      type: object
      properties:
        sortOrder:
          type: integer
        UOM:
          type: string
        quantityCodeIntegrationNumber:
          type: string
        lineItemDescription:
          type: string
        active:
          type: boolean
        category01:
          type: string
        category02:
          type: string
        category03:
          type: string
        category04:
          type: string
        category05:
          type: string
        originalBudgetQty:
          type: number
        originalBudgetHours:
          type: number
        originalBudgetAmount:
          type: number
        approvedQty:
          type: number
        approvedHours:
          type: number
        approvedAmount:
          type: number
        forecastedQty:
          type: number
        forecastedHours:
          type: number
        forecastedAmount:
          type: number
    QuantityCodeCreate:
      type: object
      properties:
        projectId:
          type: integer
        costCodeKey:
          type: string
        itemNumber:
          type: integer
        sortOrder:
          type: integer
        UOM:
          type: string
        quantityCodeIntegrationNumber:
          type: string
        lineItemDescription:
          type: string
        active:
          type: boolean
        category01:
          type: string
        category02:
          type: string
        category03:
          type: string
        category04:
          type: string
        category05:
          type: string
        originalBudgetQty:
          type: number
        originalBudgetHours:
          type: number
        originalBudgetAmount:
          type: number
        approvedQty:
          type: number
        approvedHours:
          type: number
        approvedAmount:
          type: number
        forecastedQty:
          type: number
        forecastedHours:
          type: number
        forecastedAmount:
          type: number
      required:
        - projectId
        - costCodeKey
        - itemNumber
    QuantityCodeRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - $ref: '#/components/schemas/QuantityCodeCreate'
        - type: object
          properties:
            isDeleted:
              type: boolean
            deletedBy:
              type: string
            deletedAt:
              type: date-time
              nullable: true
        - $ref: '#/components/schemas/Meta'
    ChangeOrdersStatusesRead:
      allOf:
        - type: object
          properties:
            id:
              type: integer
            coStatus:
              type: string
        - $ref: '#/components/schemas/Meta'
    ChangeOrderRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - type: object
          properties:
            coNumber:
              type: string
            coStatusId:
              type: integer
            coStatus:
              type: string
            coDate:
              type: integer
            gcNumber:
              type: string
            ownerNumber:
              type: string
            coDescription:
              type: string
            addToBudget:
              type: boolean
        - $ref: '#/components/schemas/Meta'
    ChangeOrderPatch:
      type: object
      properties:
        projectId:
          type: integer
        coStatusId:
          type: integer
        coDate:
          type: integer
        gcNumber:
          type: string
        ownerNumber:
          type: string
        coDescription:
          type: string
        addToBudget:
          type: boolean
    ChangeOrderCreate:
      type: object
      properties:
        projectId:
          type: integer
        coStatusId:
          type: integer
        coDate:
          type: integer
        gcNumber:
          type: string
        ownerNumber:
          type: string
        coDescription:
          type: string
        addToBudget:
          type: boolean
    ChangeOrderLineItemRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - type: object
          properties:
            changeOrderId:
              type: integer
            coItemNumber:
              type: string
            coItemDescription:
              type: string
            costCodeId:
              type: integer
            changeOrderRevenue:
              type: integer
        - $ref: '#/components/schemas/Meta'
    ChangeOrderLineItemPatch:
      type: object
      properties:
        changeOrderId:
          type: integer
        coItemDescription:
          type: string
        costCodeId:
          type: integer
        changeOrderRevenue:
          type: integer
    ChangeOrderLineItemCreate:
      type: object
      properties:
        changeOrderId:
          type: integer
        coItemDescription:
          type: string
        costCodeId:
          type: integer
        changeOrderRevenue:
          type: integer
    ChangeOrderNoteRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - type: object
          properties:
            changeOrderId:
              type: integer
            note:
              type: string
            userFullName:
              type: string
            isSysNote:
              type: boolean
        - $ref: '#/components/schemas/Meta'
    ChangeOrderNotePatch:
      type: object
      properties:
        note:
          type: string
    ChangeOrderNoteCreate:
      type: object
      properties:
        changeOrderId:
          type: integer
        note:
          type: string
    ChangeOrderBudgetCodeItemRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - type: object
          properties:
            sourceBudgetCodeId:
              type: integer
            changeOrderItemId:
              type: integer
            costCodeId:
              type: integer
            costCodeKey:
              type: string
            costTypeId:
              type: integer
            costTypeKey:
              type: string
            inScopeApprovedHours:
              type: integer
            inScopeApprovedAmount:
              type: integer
            addToBudget:
              type: boolean
        - $ref: '#/components/schemas/Meta'
    ChangeOrderBudgetCodeCreate:
      type: object
      properties:
        sourceBudgetCodeId:
          type: integer
        changeOrderItemId:
          type: integer
        inScopeApprovedHours:
          type: integer
        inScopeApprovedAmount:
          type: integer
        addToBudget:
          type: boolean
    ChangeOrderBudgetCodePatch:
      type: object
      properties:
        inScopeApprovedHours:
          type: integer
        inScopeApprovedAmount:
          type: integer
        addToBudget:
          type: boolean
    ChangeOrderQuantityCodeItemRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - type: object
          properties:
            sourceQuantityCodeId:
              type: integer
            changeOrderItemId:
              type: integer
            costCodeId:
              type: integer
            costCodeKey:
              type: string
            inScopeApprovedQty:
              type: integer
            addToBudget:
              type: boolean
        - $ref: '#/components/schemas/Meta'
    ChangeOrderQuantityCodeCreate:
      type: object
      properties:
        sourceQuantityCodeId:
          type: integer
        changeOrderItemId:
          type: integer
        inScopeApprovedQty:
          type: integer
        addToBudget:
          type: boolean
    ChangeOrderQuantityCodePatch:
      type: object
      properties:
        inScopeApprovedQty:
          type: integer
        addToBudget:
          type: boolean
    DailyLogRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - type: object
          properties:
            projectId:
              type: integer
            dateKey:
              type: integer
            reportDescription:
              type: string
            latitude:
              type: number
            longitude:
              type: number
            timeZone:
              type: string
            timeZoneAbbr:
              type: string
            forecastOffice:
              type: string
            radarStation:
              type: string
        - $ref: '#/components/schemas/Meta'
    DailyLogWeatherRead:
      allOf:
        - type: object
          properties:
            dailyLogId:
              type: integer
            projectId:
              type: integer
            dateKey:
              type: integer
            hourPeriod:
              type: integer
            forecastTime:
              type: string
              nullable: true
            forecastTimeTzFormatted:
              type: string
            tempF:
              type: number
            dewpointF:
              type: number
            heatIndexF:
              type: number
            relativeHumidityPrcnt:
              type: number
            precipitationInches:
              type: number
            iceAccumulationInches:
              type: number
            snowfallAmountInches:
              type: number
            windSpeedMph:
              type: number
            windSpeedDirection:
              type: string
            shortForecastDesc:
              type: string
            detailedForecastDesc:
              type: string
        - $ref: '#/components/schemas/Meta'
    DailyLogDeliveryRead:
      allOf:
        - type: object
          properties:
            dailyLogId:
              type: integer
            projectId:
              type: integer
            dateKey:
              type: integer
            itemNumber:
              type: integer
            userId:
              type: integer
            userLastName:
              type: string
            userFirstName:
              type: string
            deliveryTimeUtc:
              type: string
              nullable: true
            deliveryTimeLocalString:
              type: string
            deliveryFrom:
              type: string
            deliveryTrackingNumber:
              type: string
            deliveryLocation:
              type: string
            deliveryContents:
              type: string
            deliveryNotes:
              type: string
        - $ref: '#/components/schemas/Meta'
    DailyLogEquipmentRead:
      allOf:
        - type: object
          properties:
            dailyLogId:
              type: integer
            projectId:
              type: integer
            dateKey:
              type: integer
            itemNumber:
              type: integer
            userId:
              type: integer
            userLastName:
              type: string
            userFirstName:
              type: string
            equipmentNumber:
              type: string
            equipmentName:
              type: string
            hoursOperating:
              type: number
            hoursIdle:
              type: number
            inspected:
              type: boolean
            inspectionTimeUtc:
              type: string
              nullable: true
            inspectionTimeLocalString:
              type: string
            equipmentLocation:
              type: string
            equipmentNotes:
              type: string
        - $ref: '#/components/schemas/Meta'
    DailyLogInspectionRead:
      allOf:
        - type: object
          properties:
            dailyLogId:
              type: integer
            projectId:
              type: integer
            dateKey:
              type: integer
            itemNumber:
              type: integer
            userId:
              type: integer
            userLastName:
              type: string
            userFirstName:
              type: string
            startTimeUtc:
              type: string
              nullable: true
            endTimeUtc:
              type: string
              nullable: true
            startTimeLocalString:
              type: string
            endTimeLocalString:
              type: string
            inspectionType:
              type: string
            inspectionEntity:
              type: string
            inspectorName:
              type: string
            inspectionLocation:
              type: string
            inspectionArea:
              type: string
            inspectionNotes:
              type: string
        - $ref: '#/components/schemas/Meta'
    DailyLogLaborRead:
      allOf:
        - type: object
          properties:
            dailyLogId:
              type: integer
            projectId:
              type: integer
            dateKey:
              type: integer
            itemNumber:
              type: integer
            userId:
              type: integer
            userLastName:
              type: string
            userFirstName:
              type: string
            projectNumber:
              type: string
            costCodeKey:
              type: string
            costTypeKey:
              type: string
            costCodeAndDescription:
              type: string
            UOM:
              type: string
            employeeKey:
              type: string
            laborEntity:
              type: string
            laborNumOfWorkers:
              type: number
            laborLocation:
              type: string
            laborNotes:
              type: string
            laborRegHours:
              type: number
            laborOvtHours:
              type: number
            laborOthHours:
              type: number
        - $ref: '#/components/schemas/Meta'
    DailyLogNoteRead:
      allOf:
        - type: object
          properties:
            dailyLogId:
              type: integer
            projectId:
              type: integer
            dateKey:
              type: integer
            itemNumber:
              type: integer
            userId:
              type: integer
            userLastName:
              type: string
            userFirstName:
              type: string
            noteLocation:
              type: string
            notes:
              type: string
        - $ref: '#/components/schemas/Meta'
    DailyLogVisitorRead:
      allOf:
        - type: object
          properties:
            dailyLogId:
              type: integer
            projectId:
              type: integer
            dateKey:
              type: integer
            itemNumber:
              type: integer
            userId:
              type: integer
            userLastName:
              type: string
            userFirstName:
              type: string
            visitorName:
              type: string
            subcontractorName:
              type: string
            startTimeUtc:
              type: string
              nullable: true
            endTimeUtc:
              type: string
              nullable: true
            startTimeLocalString:
              type: string
            endTimeLocalString:
              type: string
            visitorNotes:
              type: string
        - $ref: '#/components/schemas/Meta'
    DailyLogQuestionsRead:
      allOf:
        - type: object
          properties:
            dailyLogId:
              type: integer
            projectId:
              type: integer
            dateKey:
              type: integer
            userId:
              type: integer
            userLastName:
              type: string
            userFirstName:
              type: string
            questionId:
              type: integer
            questionOptionId:
              type: integer
            questionSortOrder:
              type: integer
            questionText:
              type: string
            questionTextAltLang:
              type: string
            optLabel:
              type: string
            responseValue:
              type: string
            localTzResponseTimeStamp:
              type: string
        - $ref: '#/components/schemas/Meta'
    DailyLogPhotosRead:
      allOf:
        - type: object
          properties:
            dailyLogId:
              type: integer
            projectId:
              type: integer
            dateKey:
              type: integer
            userId:
              type: integer
            userLastName:
              type: string
            userFirstName:
              type: string
            url:
              type: string
            note:
              type: string
        - $ref: '#/components/schemas/Meta'
    ProductionQtyDetailRead:
      allOf:
        - type: object
          properties:
            id:
              type: integer
            projectId:
              type: integer
            projectNumber:
              type: string
            projectName:
              type: string
            weekEndDateKey:
              type: integer
            dateKey:
              type: integer
            projectLocationCode:
              type: string
            projectLocationName:
              type: string
            employeeKey:
              type: string
            employeeLastName:
              type: string
            employeeFirstName:
              type: string
            costCodeKey:
              type: string
            qtyConversionFactor:
              type: number
            itemNumber:
              type: integer
            budgetCodeSortOrder:
              type: integer
            lineItemDescription:
              type: string
            UOM:
              type: string
            ruleDescription:
              type: string
            rulePercentage:
              type: number
            ruleSortOrder:
              type: integer
            periodQty:
              type: number
            periodHoursFromPeriodQty:
              type: number
            periodAmountFromPeriodQty:
              type: number
            earnedPeriodQty:
              type: number
            earnedPeriodQtyWithoutConvFactor:
              type: number
            earnedPeriodHoursFromPeriodQty:
              type: number
            earnedPeriodAmountFromPeriodQty:
              type: number
            note:
              type: string
            originalBudgetQtyWithoutConvFactor:
              type: number
            currentBudgetQtyWithoutConvFactor:
              type: number
            forecastedQtyWithoutConvFactor:
              type: number
            originalBudgetQty:
              type: number
            originalBudgetHours:
              type: number
            originalBudgetAmount:
              type: number
            budgetUnitHours:
              type: number
            budgetUnitAmount:
              type: number
            currentBudgetQty:
              type: number
            currentBudgetHours:
              type: number
            currentBudgetAmount:
              type: number
            forecastedQty:
              type: number
            forecastedHours:
              type: number
            forecastedAmount:
              type: number
            forecastedUnitHours:
              type: number
            forecastedUnitAmount:
              type: number
            timeCardId:
              type: integer
            timeCardProjectNumber:
              type: string
            timeCardDate:
              type: string
            shift:
              type: string
              enum:
                - ''
                - '1'
                - '2'
                - '3'
                - '4'
            foremanEmployeeKey:
              type: string
            foremanLastName:
              type: string
            foremanFirstName:
              type: string
            enteredByUsername:
              type: string
            enteredByLastName:
              type: string
            enteredByFirstName:
              type: string
        - $ref: '#/components/schemas/Meta'
    ProductionQtyDetailTotalsRead:
      allOf:
        - type: object
          properties:
            projectId:
              type: integer
            costCodeId:
              type: integer
            projectNumber:
              type: string
            weekEndDateKey:
              type: integer
            dateKey:
              type: integer
            costCodeKey:
              type: string
            periodQty:
              type: number
            periodHoursFromPeriodQty:
              type: number
            periodAmountFromPeriodQty:
              type: number
            earnedPeriodQty:
              type: number
            earnedPeriodQtyWithoutConvFactor:
              type: number
            earnedPeriodHoursFromPeriodQty:
              type: number
            earnedPeriodAmountFromPeriodQty:
              type: number
            note:
              type: string
        - $ref: '#/components/schemas/Meta'
    TimeCardRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - type: object
          properties:
            projectId:
              type: integer
            timeCardProjectNumber:
              type: string
            timeCardProjectName:
              type: string
            timeCardStatus:
              type: integer
              enum:
                - 1
                - 2
                - 3
                - 4
            weekEndDate:
              type: integer
            timeCardDate:
              type: integer
            shift:
              type: string
              enum:
                - '1'
                - '2'
                - '3'
                - '4'
            indexNumber:
              type: integer
            timeCardTypeKey:
              type: string
            timeCardTypeDescription:
              type: string
            foremanEmployeeKey:
              type: string
            foremanLastName:
              type: string
            foremanFirstName:
              type: string
            startTimeUtc:
              type: string
              nullable: true
            endTimeUtc:
              type: string
              nullable: true
            startTimeLocal:
              type: string
            endTimeLocal:
              type: string
        - $ref: '#/components/schemas/Meta'
    TimeCardDetailRead:
      type: object
      properties:
        timeCardId:
          type: integer
        timeCardCrewId:
          type: integer
        timeCardBudgetCodeId:
          type: integer
        timeCardHourId:
          type: integer
        timeCardProjectNumber:
          type: string
        timeCardStatusFormatted:
          type: string
        weekEndDateFormatted:
          type: string
        timeCardDateFormatted:
          type: string
        shift:
          type: string
          enum:
            - '1'
            - '2'
            - '3'
            - '4'
        indexNumber:
          type: integer
        timeCardTypeKey:
          type: string
        timeCardTypeDescription:
          type: string
        foremanName:
          type: string
        startTimeLocal:
          type: string
        endTimeLocal:
          type: string
        crewKey:
          type: string
        crewName:
          type: string
        crewPayclass:
          type: string
        crewClassDisplayName:
          type: string
        hasSignature:
          type: boolean
        isExempt:
          type: boolean
        isTemp:
          type: boolean
        tempAgencyKey:
          type: string
        tempAgencyName:
          type: string
        tags:
          type: string
        sortOrder:
          type: integer
        budgetCodeProjectNumber:
          type: string
        budgetCodeProjectName:
          type: string
        costCodeKey:
          type: string
        costTypeKey:
          type: string
        costTypeClassKey:
          type: string
        budgetCodeDescription:
          type: string
        hourCategoryKey:
          type: string
        hourCategoryLabel:
          type: string
        projectLocationCode:
          type: string
        regRate:
          type: number
        ovtRate:
          type: number
        othRate:
          type: number
        regHours:
          type: number
        ovtHours:
          type: number
        othHours:
          type: number
        regCost:
          type: number
        ovtCost:
          type: number
        othCost:
          type: number
        notes:
          type: string
        isDeleted:
          type: boolean
        deletedBy:
          type: string
        deletedAt:
          type: string
    TimeCardAllowanceRead:
      type: object
      properties:
        timeCardId:
          type: integer
        timeCardProjectNumber:
          type: string
        timeCardProjectName:
          type: string
        weekEndDateFormatted:
          type: string
        timeCardDateFormatted:
          type: string
        employeeKey:
          type: string
        lastName:
          type: string
        firstName:
          type: string
        budgetCodeProjectNumber:
          type: string
        budgetCodeProjectName:
          type: string
        costCodeKey:
          type: string
        budgetCodeDescription:
          type: string
        allowanceTypeCode:
          type: string
        allowanceTypeName:
          type: string
        allowanceAmount:
          type: number
        notes:
          type: string
    TandMBillingRateCreate:
      type: object
      properties:
        tandMBillingClassId:
          type: integer
        ceCategoryKey:
          type: string
        rateDescription:
          type: string
        sortOrder:
          type: integer
          minimum: 0
          maximum: 127
        regBillRate:
          type: number
        ovtBillRate:
          type: number
        othBillRate:
          type: number
      required:
        - tandMBillingClassId
        - ceCategoryKey
        - rateDescription
    TandMBillingRatePatch:
      type: object
      properties:
        rateDescription:
          type: string
        sortOrder:
          type: integer
        regBillRate:
          type: number
        ovtBillRate:
          type: number
        othBillRate:
          type: number
    TandMBillingRateRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - $ref: '#/components/schemas/TandMBillingRateCreate'
        - $ref: '#/components/schemas/Meta'
    TandMBillingEquipmentCreate:
      type: object
      properties:
        tandMBillingClassId:
          type: integer
        projectEquipmentId:
          type: integer
        equipmentMake:
          type: string
      required:
        - tandMBillingClassId
        - projectEquipmentId
    TandMBillingEquipmentPatch:
      type: object
      properties:
        tandMBillingClassId:
          type: integer
        projectEquipmentId:
          type: integer
        equipmentMake:
          type: string
    TandMBillingEquipmentRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - $ref: '#/components/schemas/TandMBillingEquipmentCreate'
        - type: object
          properties:
            equipmentProjectName:
              type: string
            equipmentKey:
              type: string
            equipmentNumber:
              type: string
            className:
              type: string
        - $ref: '#/components/schemas/Meta'
    TandMBillingEmployeeCreate:
      type: object
      properties:
        tandMBillingClassId:
          type: integer
        employeeId:
          type: integer
      required:
        - tandMBillingClassId
        - employeeId
    TandMBillingEmployeePatch:
      type: object
      properties:
        tandMBillingClassId:
          type: integer
        employeeId:
          type: integer
    TandMBillingEmployeeRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - $ref: '#/components/schemas/TandMBillingEmployeeCreate'
        - type: object
          properties:
            employeeKey:
              type: string
            lastName:
              type: string
            firstName:
              type: string
            className:
              type: string
        - $ref: '#/components/schemas/Meta'
    TandMBillingClassCreate:
      type: object
      properties:
        tandMBillingPeriodId:
          type: integer
        className:
          type: string
        payClassId:
          type: integer
        isLabor:
          type: boolean
      required:
        - tandMBillingPeriodId
        - className
        - payClassId
    TandMBillingClassPatch:
      type: object
      properties:
        className:
          type: string
        payClassId:
          type: integer
        isLabor:
          type: boolean
    TandMBillingClassRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - $ref: '#/components/schemas/TandMBillingClassCreate'
        - $ref: '#/components/schemas/Meta'
    TandMBillingPeriodCreate:
      type: object
      properties:
        projectId:
          type: integer
        fromDate:
          type: integer
        toDate:
          type: integer
        billingPeriodName:
          type: string
      required:
        - projectId
        - fromDate
        - toDate
        - billingPeriodName
    TandMBillingPeriodRead:
      allOf:
        - $ref: '#/components/schemas/Id'
        - $ref: '#/components/schemas/TandMBillingPeriodCreate'
        - $ref: '#/components/schemas/Meta'
    TandMBillingPeriodPatch:
      type: object
      properties:
        fromDate:
          type: integer
        toDate:
          type: integer
        billingPeriodName:
          type: string
      required:
        - fromDate
        - toDate
        - billingPeriodName
    JHARead:
      type: object
      properties:
        jhaId:
          type: integer
        projectId:
          type: integer
        jhaDate:
          type: integer
        jhaDescription:
          type: string
        jhaStatus:
          type: string
          enum:
            - DRAFT
            - OPEN
            - FINAL
        timeCardId:
          type: integer
        crewLeadLastName:
          type: string
        crewLeadEmployeeKey:
          type: string
        selectedProjectIds:
          type: array
          items:
            type: integer
    JHAProjectRead:
      type: object
      properties:
        projectId:
          type: integer
    JHACrewRead:
      type: object
      properties:
        jhaId:
          type: integer
        jhaDate:
          type: integer
        projectId:
          type: integer
        firstName:
          type: string
        lastName:
          type: string
        employeeKey:
          type: string
        isCrewLead:
          type: boolean
    AttendanceRead:
      allOf:
        - type: object
          properties:
            id:
              type: integer
            projectId:
              type: integer
            employeeId:
              type: integer
            employeeKey:
              type: string
            employeeFirstName:
              type: string
            employeeLastName:
              type: string
            attendanceType:
              type: string
            authMode:
              type: string
            dateKey:
              type: integer
            localTime:
              type: string
            projectNumber:
              type: string
            projectName:
              type: string
            imageURL:
              type: number
        - $ref: '#/components/schemas/Meta'
    AttendanceProjectRead:
      type: object
      properties:
        projectId:
          type: integer
    AttendanceQuestionRead:
      allOf:
        - type: object
          properties:
            responseId:
              type: integer
            questionId:
              type: integer
            questionOptionId:
              type: integer
            attendanceId:
              type: integer
            projectId:
              type: integer
            employeeId:
              type: integer
            questionText:
              type: string
            responseValue:
              type: string
            isResponseNegative:
              type: boolean
            responseTimeStamp:
              type: string
            employeeKey:
              type: string
            employeeFirstName:
              type: string
            employeeLastName:
              type: string
            projectNumber:
              type: string
            projectName:
              type: string
        - $ref: '#/components/schemas/Meta'
  responses:
    400BadRequest:
      description: Bad request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    401Unauthorized:
      description: Could not authenticate API Key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    404NotFound:
      description: Entity not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    409Duplicate:
      description: Duplicate entity
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    500InternalError:
      description: Internal Server Error
      content:
        application/json:
          schema:
            allOf:
              - $ref: '#/components/schemas/Error'
              - example:
                  status: 500
                  error: Internal Server Error
