{
  "service": "sage_hr",
  "displayName": "Sage HR",
  "categories": [
    "Productivity"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "SAGE_HR_API_KEY",
      "description": "Sage HR API key sent with the X-Auth-Token header. Enable the API and copy the key from Settings > Integrations > API in Sage HR: https://support.sage.hr/en/articles/3246469-how-does-cakehr-api-work.",
      "extraFields": [
        {
          "key": "domain",
          "label": "Domain",
          "inputType": "text",
          "required": true,
          "secret": false,
          "placeholder": "acme or acme.sage.hr",
          "description": "Your Sage HR company subdomain. If your portal is acme.sage.hr, enter acme or acme.sage.hr."
        }
      ]
    }
  ],
  "homepageUrl": "https://www.sage.com/en-us/sage-business-cloud/people/",
  "actions": [
    {
      "id": "sage_hr.get_employee",
      "service": "sage_hr",
      "name": "get_employee",
      "description": "Get a single active Sage HR employee by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "employeeId": {
            "type": "integer",
            "minimum": 1,
            "description": "The Sage HR employee ID."
          },
          "includeTeamHistory": {
            "type": "boolean",
            "description": "Whether Sage HR should include team_history records in employee responses."
          },
          "includeEmploymentStatusHistory": {
            "type": "boolean",
            "description": "Whether Sage HR should include employment_status_history records in employee responses."
          },
          "includePositionHistory": {
            "type": "boolean",
            "description": "Whether Sage HR should include position_history records in employee responses."
          }
        },
        "additionalProperties": false,
        "required": [
          "employeeId"
        ],
        "description": "Input parameters for getting a Sage HR active employee."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "employee": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A Sage HR active employee object."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Sage HR API response payload."
          }
        },
        "additionalProperties": false,
        "description": "The Sage HR active employee response."
      }
    },
    {
      "id": "sage_hr.get_terminated_employee",
      "service": "sage_hr",
      "name": "get_terminated_employee",
      "description": "Get a single terminated Sage HR employee by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "employeeId": {
            "type": "integer",
            "minimum": 1,
            "description": "The Sage HR employee ID."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for getting a Sage HR terminated employee."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "terminatedEmployee": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A Sage HR terminated employee object."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Sage HR API response payload."
          }
        },
        "additionalProperties": false,
        "description": "The Sage HR terminated employee response."
      }
    },
    {
      "id": "sage_hr.list_employees",
      "service": "sage_hr",
      "name": "list_employees",
      "description": "List active employees in Sage HR with optional pagination and history expansions.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The Sage HR page number to request."
          },
          "includeTeamHistory": {
            "type": "boolean",
            "description": "Whether Sage HR should include team_history records in employee responses."
          },
          "includeEmploymentStatusHistory": {
            "type": "boolean",
            "description": "Whether Sage HR should include employment_status_history records in employee responses."
          },
          "includePositionHistory": {
            "type": "boolean",
            "description": "Whether Sage HR should include position_history records in employee responses."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing Sage HR active employees."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "employees": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A Sage HR active employee object."
            },
            "description": "The active employees returned by Sage HR."
          },
          "meta": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Pagination metadata returned by Sage HR."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Sage HR API response payload."
          }
        },
        "additionalProperties": false,
        "description": "The Sage HR active employee list response."
      }
    },
    {
      "id": "sage_hr.list_positions",
      "service": "sage_hr",
      "name": "list_positions",
      "description": "List positions in Sage HR with optional pagination.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The Sage HR page number to request."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing Sage HR positions."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "positions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A Sage HR position object."
            },
            "description": "The positions returned by Sage HR."
          },
          "meta": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Pagination metadata returned by Sage HR."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Sage HR API response payload."
          }
        },
        "additionalProperties": false,
        "description": "The Sage HR position list response."
      }
    },
    {
      "id": "sage_hr.list_teams",
      "service": "sage_hr",
      "name": "list_teams",
      "description": "List teams in Sage HR with optional pagination.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The Sage HR page number to request."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing Sage HR teams."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "teams": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A Sage HR team object."
            },
            "description": "The teams returned by Sage HR."
          },
          "meta": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Pagination metadata returned by Sage HR."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Sage HR API response payload."
          }
        },
        "additionalProperties": false,
        "description": "The Sage HR team list response."
      }
    },
    {
      "id": "sage_hr.list_terminated_employees",
      "service": "sage_hr",
      "name": "list_terminated_employees",
      "description": "List terminated employees in Sage HR with optional pagination and history expansions.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The Sage HR page number to request."
          },
          "includeTeamHistory": {
            "type": "boolean",
            "description": "Whether Sage HR should include team_history records in employee responses."
          },
          "includeEmploymentStatusHistory": {
            "type": "boolean",
            "description": "Whether Sage HR should include employment_status_history records in employee responses."
          },
          "includePositionHistory": {
            "type": "boolean",
            "description": "Whether Sage HR should include position_history records in employee responses."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing Sage HR terminated employees."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "terminatedEmployees": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A Sage HR terminated employee object."
            },
            "description": "The terminated employees returned by Sage HR."
          },
          "meta": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Pagination metadata returned by Sage HR."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Sage HR API response payload."
          }
        },
        "additionalProperties": false,
        "description": "The Sage HR terminated employee list response."
      }
    },
    {
      "id": "sage_hr.list_termination_reasons",
      "service": "sage_hr",
      "name": "list_termination_reasons",
      "description": "List termination reasons configured in Sage HR with optional pagination.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The Sage HR page number to request."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing Sage HR termination reasons."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "terminationReasons": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A Sage HR termination reason object."
            },
            "description": "The termination reasons returned by Sage HR."
          },
          "meta": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Pagination metadata returned by Sage HR."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Sage HR API response payload."
          }
        },
        "additionalProperties": false,
        "description": "The Sage HR termination reason list response."
      }
    },
    {
      "id": "sage_hr.list_time_off_requests",
      "service": "sage_hr",
      "name": "list_time_off_requests",
      "description": "List Sage HR time off requests with optional date range and pagination filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The Sage HR page number to request."
          },
          "from": {
            "type": "string",
            "description": "Start date for the time off request range. Sage HR expects YYYY-MM-DD; when from and to are both provided, the range must be less than 65 days.",
            "format": "date"
          },
          "to": {
            "type": "string",
            "description": "End date for the time off request range. Sage HR expects YYYY-MM-DD; when from and to are both provided, the range must be less than 65 days.",
            "format": "date"
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing Sage HR time off requests."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "timeOffRequests": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A Sage HR time off request object."
            },
            "description": "The time off requests returned by Sage HR."
          },
          "meta": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Pagination metadata returned by Sage HR."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Sage HR API response payload."
          }
        },
        "additionalProperties": false,
        "description": "The Sage HR time off request list response."
      }
    }
  ]
}
