{
  "service": "bamboohr",
  "displayName": "BambooHR",
  "categories": [
    "Productivity",
    "Data"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "BAMBOOHR_API_KEY",
      "description": "BambooHR API key used as the Basic Auth username with x as the password. Generate it from the user menu in BambooHR under API Keys: https://documentation.bamboohr.com/docs/getting-started.",
      "extraFields": [
        {
          "key": "companyDomain",
          "label": "Company Domain",
          "inputType": "text",
          "placeholder": "acme",
          "description": "BambooHR company subdomain used to build https://<companyDomain>.bamboohr.com API requests. Use only the subdomain, not the full URL.",
          "required": true,
          "secret": false
        }
      ]
    }
  ],
  "homepageUrl": "https://www.bamboohr.com",
  "actions": [
    {
      "id": "bamboohr.get_company_information",
      "service": "bamboohr",
      "name": "get_company_information",
      "description": "Retrieve basic BambooHR company profile information for the connected tenant.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "No input is required for this BambooHR action."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "company": {
            "type": "object",
            "properties": {
              "legalName": {
                "type": "string",
                "description": "Company legal name."
              },
              "displayName": {
                "type": "string",
                "description": "Company display name."
              },
              "address": {
                "type": "object",
                "properties": {
                  "line1": {
                    "type": "string",
                    "description": "Company primary address line 1."
                  },
                  "line2": {
                    "type": "string",
                    "description": "Company primary address line 2."
                  },
                  "city": {
                    "type": "string",
                    "description": "Company city."
                  },
                  "state": {
                    "type": "string",
                    "description": "Company state or province."
                  },
                  "zip": {
                    "type": "string",
                    "description": "Company ZIP or postal code."
                  }
                },
                "additionalProperties": true,
                "description": "Company primary address."
              },
              "phone": {
                "type": "string",
                "description": "Company contact phone number."
              }
            },
            "additionalProperties": true,
            "description": "BambooHR company profile information."
          },
          "raw": {
            "description": "Raw BambooHR company information response."
          }
        },
        "additionalProperties": false,
        "description": "BambooHR company information output."
      }
    },
    {
      "id": "bamboohr.get_employee",
      "service": "bamboohr",
      "name": "get_employee",
      "description": "Retrieve one BambooHR employee by ID with optional field aliases.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "employeeId": {
            "type": "string",
            "minLength": 1,
            "description": "The BambooHR employee ID to retrieve."
          },
          "fields": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A BambooHR employee field alias."
            },
            "description": "BambooHR field aliases to request, such as firstName, lastName, jobTitle, or department.",
            "minItems": 1,
            "maxItems": 400
          },
          "onlyCurrent": {
            "type": "boolean",
            "description": "Whether to return only currently effective values for historical fields."
          }
        },
        "additionalProperties": false,
        "required": [
          "employeeId"
        ],
        "description": "Input for retrieving one BambooHR employee."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "employee": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "BambooHR employee ID."
              },
              "employeeId": {
                "type": "string",
                "description": "BambooHR employee ID returned by list endpoints."
              },
              "firstName": {
                "type": "string",
                "description": "Employee first name."
              },
              "lastName": {
                "type": "string",
                "description": "Employee last name."
              },
              "displayName": {
                "type": "string",
                "description": "Employee display name."
              },
              "jobTitle": {
                "type": "string",
                "description": "Employee job title."
              },
              "department": {
                "type": "string",
                "description": "Employee department."
              },
              "location": {
                "type": "string",
                "description": "Employee location."
              },
              "workEmail": {
                "type": "string",
                "description": "Employee work email address."
              },
              "status": {
                "type": "string",
                "description": "Employee status."
              },
              "_restrictedFields": {
                "type": "array",
                "items": {
                  "type": "string",
                  "minLength": 1
                },
                "description": "Fields BambooHR suppressed because the authenticated user cannot view them."
              }
            },
            "additionalProperties": true,
            "description": "A BambooHR employee record."
          },
          "raw": {
            "description": "Raw BambooHR employee response."
          }
        },
        "additionalProperties": false,
        "description": "BambooHR employee output."
      }
    },
    {
      "id": "bamboohr.list_employees",
      "service": "bamboohr",
      "name": "list_employees",
      "description": "List BambooHR employees with optional additional field aliases and cursor paging.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "fields": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A BambooHR employee field alias."
            },
            "description": "BambooHR field aliases to request, such as firstName, lastName, jobTitle, or department.",
            "minItems": 1,
            "maxItems": 400
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 2500,
            "description": "Maximum number of employees to return in one page."
          },
          "after": {
            "type": "string",
            "minLength": 1,
            "description": "Cursor for the next page of employees."
          },
          "before": {
            "type": "string",
            "minLength": 1,
            "description": "Cursor for the previous page of employees."
          }
        },
        "additionalProperties": false,
        "description": "Input for listing BambooHR employees."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "employees": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "BambooHR employee ID."
                },
                "employeeId": {
                  "type": "string",
                  "description": "BambooHR employee ID returned by list endpoints."
                },
                "firstName": {
                  "type": "string",
                  "description": "Employee first name."
                },
                "lastName": {
                  "type": "string",
                  "description": "Employee last name."
                },
                "displayName": {
                  "type": "string",
                  "description": "Employee display name."
                },
                "jobTitle": {
                  "type": "string",
                  "description": "Employee job title."
                },
                "department": {
                  "type": "string",
                  "description": "Employee department."
                },
                "location": {
                  "type": "string",
                  "description": "Employee location."
                },
                "workEmail": {
                  "type": "string",
                  "description": "Employee work email address."
                },
                "status": {
                  "type": "string",
                  "description": "Employee status."
                },
                "_restrictedFields": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1
                  },
                  "description": "Fields BambooHR suppressed because the authenticated user cannot view them."
                }
              },
              "additionalProperties": true,
              "description": "A BambooHR employee record."
            },
            "description": "BambooHR employees returned for the requested page."
          },
          "meta": {
            "type": "object",
            "properties": {
              "total": {
                "type": "integer",
                "description": "Total number of employees matching the request."
              },
              "page": {
                "type": "object",
                "properties": {
                  "nextCursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "Cursor for the next page of results."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "prevCursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "Cursor for the previous page of results."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "additionalProperties": true,
                "description": "BambooHR cursor pagination state."
              }
            },
            "additionalProperties": true,
            "description": "BambooHR pagination metadata."
          },
          "links": {
            "type": "object",
            "properties": {
              "self": {
                "type": "string",
                "description": "URL for the current page."
              },
              "next": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "URL for the next page, if present."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "prev": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "URL for the previous page, if present."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": true,
            "description": "BambooHR pagination links."
          },
          "raw": {
            "description": "Raw BambooHR employee list response."
          }
        },
        "additionalProperties": false,
        "description": "BambooHR employee list output."
      }
    },
    {
      "id": "bamboohr.list_fields",
      "service": "bamboohr",
      "name": "list_fields",
      "description": "List BambooHR employee fields available to the connected account.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "No input is required for this BambooHR action."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "fields": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "BambooHR field identifier as a string."
                    },
                    {
                      "type": "integer",
                      "description": "BambooHR field identifier as a number."
                    }
                  ],
                  "description": "BambooHR field identifier."
                },
                "name": {
                  "type": "string",
                  "description": "BambooHR field display name."
                },
                "alias": {
                  "type": "string",
                  "description": "BambooHR API field alias."
                },
                "type": {
                  "type": "string",
                  "description": "BambooHR field data type."
                },
                "deprecated": {
                  "type": "string",
                  "description": "Whether this BambooHR field is deprecated."
                }
              },
              "additionalProperties": true,
              "description": "A BambooHR employee field definition."
            },
            "description": "BambooHR field definitions."
          },
          "raw": {
            "description": "Raw BambooHR field list response."
          }
        },
        "additionalProperties": false,
        "description": "BambooHR field list output."
      }
    }
  ]
}
