{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/deputy/main/json-schema/deputy-pay-comparison-submit-report-request-schema.json",
  "title": "PayComparisonSubmitReportRequest",
  "x-generated": "2026-10-14",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/deputy-v2-api-openapi.yml#/components/schemas/PayComparisonSubmitReportRequest",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "A user-defined name for the report."
    },
    "creatorEmail": {
      "type": "string",
      "description": "The email address of the report creator. This email address will receive an email notification when the report has completed."
    },
    "start": {
      "type": "string",
      "description": "`yyyy-mm-dd` start date of the report time period."
    },
    "end": {
      "type": "string",
      "description": "`yyyy-mm-dd` end date of the report time period."
    },
    "comparisonContractId": {
      "type": "integer",
      "format": "int32",
      "description": "ID of the EmploymentContract to use for comparison. Set this to empty string if using awardOverride."
    },
    "awardOverride": {
      "type": "string",
      "description": "Name of the award to use for comparison, e.g. `au/casual-2022-01-01-teachersa-earlychildhood-1`"
    },
    "awardBaseRateOverride": {
      "type": "number",
      "format": "float",
      "description": "The base hourly rate to use for comparison with an award."
    },
    "outerLimitOvertime": {
      "type": "number",
      "format": "float",
      "description": "Outer limit value for overtime pay, in hours. Optional, default 0."
    },
    "outerLimitPenalty": {
      "type": "number",
      "format": "float",
      "description": "Outer limit value for penalty pay, in hours. Optional, default 0."
    },
    "includeOuterLimitOvertime": {
      "type": "boolean",
      "description": "Whether outer limit should be used for overtime. Optional, default false."
    },
    "includeOuterLimitPenalty": {
      "type": "boolean",
      "description": "Whether outer limit should be used for penalty. Optional, default false."
    },
    "workPeriodCycle": {
      "$ref": "#/$defs/PayComparisonReportWorkPeriodCycle"
    },
    "employeeFilter": {
      "$ref": "#/$defs/PayComparisonEmployeeFilter",
      "description": "Deprecated, please use `employeeQuery`."
    },
    "employeeQuery": {
      "$ref": "#/$defs/PayComparisonEmployeeQuery"
    }
  },
  "$defs": {
    "PayComparisonEmployeeFilter": {
      "type": "object",
      "properties": {
        "limit": {
          "type": "integer",
          "format": "int32",
          "description": "Limit the result set returned after applying filters."
        },
        "offset": {
          "type": "integer",
          "format": "int32",
          "description": "Offset (from the first result) the result set returned after applying filters."
        },
        "contractIds": {
          "type": "array",
          "items": {
            "type": "integer",
            "format": "int32"
          },
          "description": "Filter the employees based on main contract."
        }
      }
    },
    "PayComparisonEmployeeQuery": {
      "type": "object",
      "properties": {
        "limit": {
          "type": "integer",
          "format": "int32",
          "description": "Limit the result set returned after applying filters."
        },
        "offset": {
          "type": "integer",
          "format": "int32",
          "description": "Offset (from the first result) the result set returned after applying filters."
        },
        "filter": {
          "$ref": "#/$defs/PayComparisonEmployeeQueryFilter"
        }
      }
    },
    "PayComparisonEmployeeQueryFilter": {
      "type": "object",
      "properties": {
        "contractIds": {
          "type": "array",
          "items": {
            "type": "integer",
            "format": "int32"
          },
          "description": "Used to match employees by their contract linked by the agreement on their main location."
        },
        "includeEmployeeIds": {
          "type": "array",
          "items": {
            "type": "integer",
            "format": "int32"
          },
          "description": "Employees with IDs matching this field will be added to the set of results, if they are not matched already."
        },
        "includeCompanyIds": {
          "type": "array",
          "items": {
            "type": "integer",
            "format": "int32"
          },
          "description": "Employees that are associated with the Company matching any of the IDs will be added to the set of results."
        },
        "includeTrainingModuleIds": {
          "type": "array",
          "items": {
            "type": "integer",
            "format": "int32"
          },
          "description": "Employees that have any of the matching TrainingModule IDs."
        },
        "includeJobPositions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Employees based on the given Job Positions. (Will be set to empty if install is not Enterprise)."
        },
        "includeEmployeesWithNameLike": {
          "type": "string",
          "description": "Employees will be added to the results if they have Name matching this value. `%` can be used as a wildcard."
        }
      }
    },
    "PayComparisonReportWorkPeriodCycle": {
      "type": "object",
      "properties": {
        "cycleStart": {
          "type": "string",
          "description": "`yyyy-mm-dd` date to specify the start of the cycle."
        },
        "daysInCycle": {
          "type": "integer",
          "format": "int32",
          "description": "Number of days in each cycle, e.g. Weekly = 7, Fortnightly = 14, 4-Weekly = 28."
        }
      }
    }
  }
}