{
  "service": "chaserhq",
  "displayName": "ChaserHQ",
  "categories": [
    "Finance"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "CHASER_API_KEY",
      "description": "Chaser API key used with the API Secret through HTTP Basic authentication. Find both values in Chaser under Organisation Settings > Integrations > Get API keys: https://my.chaserhq.com/settings/integrations",
      "extraFields": [
        {
          "key": "apiSecret",
          "label": "API Secret",
          "inputType": "password",
          "required": true,
          "secret": true,
          "placeholder": "CHASER_API_SECRET",
          "description": "Chaser API Secret paired with the API Key for HTTP Basic authentication."
        }
      ]
    }
  ],
  "homepageUrl": "https://www.chaserhq.com/",
  "actions": [
    {
      "id": "chaserhq.get_customer",
      "service": "chaserhq",
      "name": "get_customer",
      "description": "Get one Chaser customer by ID or ext_ external ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "customerId": {
            "type": "string",
            "minLength": 1,
            "description": "The Chaser customer id, or an external id prefixed with ext_."
          },
          "additionalFields": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "description": "Optional customer fields to include in the response.",
            "minItems": 1
          }
        },
        "additionalProperties": false,
        "required": [
          "customerId"
        ],
        "description": "Input for reading one customer."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "customer": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw Chaser object returned by the API."
          }
        },
        "additionalProperties": false
      }
    },
    {
      "id": "chaserhq.get_invoice",
      "service": "chaserhq",
      "name": "get_invoice",
      "description": "Get one Chaser invoice by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "invoiceId": {
            "type": "string",
            "minLength": 1,
            "description": "The Chaser invoice identifier."
          }
        },
        "additionalProperties": false,
        "required": [
          "invoiceId"
        ],
        "description": "The Chaser invoice identifier."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "invoice": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw Chaser object returned by the API."
          }
        },
        "additionalProperties": false
      }
    },
    {
      "id": "chaserhq.get_invoice_history",
      "service": "chaserhq",
      "name": "get_invoice_history",
      "description": "Get history for one Chaser invoice.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "invoiceId": {
            "type": "string",
            "minLength": 1,
            "description": "The Chaser invoice identifier."
          }
        },
        "additionalProperties": false,
        "required": [
          "invoiceId"
        ],
        "description": "The Chaser invoice identifier."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "history": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw Chaser object returned by the API."
          }
        },
        "additionalProperties": false
      }
    },
    {
      "id": "chaserhq.get_organisation",
      "service": "chaserhq",
      "name": "get_organisation",
      "description": "Get the Chaser organisation attached to the API credentials.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "Input for reading the organisation."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "organisation": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw Chaser object returned by the API."
          }
        },
        "additionalProperties": false
      }
    },
    {
      "id": "chaserhq.get_status",
      "service": "chaserhq",
      "name": "get_status",
      "description": "Get ChaserHQ API status.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "Input for reading Chaser status."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean",
            "description": "Whether the status request succeeded."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw Chaser object returned by the API."
          }
        },
        "additionalProperties": false
      }
    },
    {
      "id": "chaserhq.list_customers",
      "service": "chaserhq",
      "name": "list_customers",
      "description": "List Chaser customers with optional filters and pagination.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "The number of items per page. Chaser allows at most 100."
          },
          "page": {
            "type": "integer",
            "minimum": 0,
            "description": "The zero-based page number to request."
          },
          "filters": {
            "type": "object",
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "eq": {
                      "type": "string",
                      "description": "Match records equal to this value."
                    },
                    "ne": {
                      "type": "string",
                      "description": "Match records not equal to this value."
                    },
                    "in": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "minLength": 1
                      },
                      "description": "Match records in this list.",
                      "minItems": 1
                    },
                    "nin": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "minLength": 1
                      },
                      "description": "Exclude records in this list.",
                      "minItems": 1
                    }
                  },
                  "additionalProperties": false,
                  "description": "A string filter."
                },
                {
                  "type": "object",
                  "properties": {
                    "eq": {
                      "type": "number",
                      "description": "Match records equal to this value."
                    },
                    "ne": {
                      "type": "number",
                      "description": "Match records not equal to this value."
                    },
                    "gt": {
                      "type": "number",
                      "description": "Match records greater than this value."
                    },
                    "lt": {
                      "type": "number",
                      "description": "Match records less than this value."
                    },
                    "gte": {
                      "type": "number",
                      "description": "Match records greater than or equal to this value."
                    },
                    "lte": {
                      "type": "number",
                      "description": "Match records less than or equal to this value."
                    }
                  },
                  "additionalProperties": false,
                  "description": "A numeric filter."
                }
              ]
            },
            "description": "Chaser filters keyed by field name."
          },
          "additionalFields": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "description": "Optional customer fields to include in the response.",
            "minItems": 1
          }
        },
        "additionalProperties": false,
        "description": "Query parameters for a Chaser list endpoint."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "customers": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "Raw Chaser object returned by the API."
            },
            "description": "Customers returned by Chaser."
          },
          "pagination": {
            "type": "object",
            "properties": {
              "pageNumber": {
                "anyOf": [
                  {
                    "type": "number",
                    "description": "The zero-based page number returned by Chaser."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "pageSize": {
                "anyOf": [
                  {
                    "type": "number",
                    "description": "The page size returned by Chaser."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "totalCount": {
                "anyOf": [
                  {
                    "type": "number",
                    "description": "The total matching record count returned by Chaser."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      }
    },
    {
      "id": "chaserhq.list_invoice_history",
      "service": "chaserhq",
      "name": "list_invoice_history",
      "description": "List Chaser invoice history records with optional filters and pagination.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "The number of items per page. Chaser allows at most 100."
          },
          "page": {
            "type": "integer",
            "minimum": 0,
            "description": "The zero-based page number to request."
          },
          "filters": {
            "type": "object",
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "eq": {
                      "type": "string",
                      "description": "Match records equal to this value."
                    },
                    "ne": {
                      "type": "string",
                      "description": "Match records not equal to this value."
                    },
                    "in": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "minLength": 1
                      },
                      "description": "Match records in this list.",
                      "minItems": 1
                    },
                    "nin": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "minLength": 1
                      },
                      "description": "Exclude records in this list.",
                      "minItems": 1
                    }
                  },
                  "additionalProperties": false,
                  "description": "A string filter."
                },
                {
                  "type": "object",
                  "properties": {
                    "eq": {
                      "type": "number",
                      "description": "Match records equal to this value."
                    },
                    "ne": {
                      "type": "number",
                      "description": "Match records not equal to this value."
                    },
                    "gt": {
                      "type": "number",
                      "description": "Match records greater than this value."
                    },
                    "lt": {
                      "type": "number",
                      "description": "Match records less than this value."
                    },
                    "gte": {
                      "type": "number",
                      "description": "Match records greater than or equal to this value."
                    },
                    "lte": {
                      "type": "number",
                      "description": "Match records less than or equal to this value."
                    }
                  },
                  "additionalProperties": false,
                  "description": "A numeric filter."
                }
              ]
            },
            "description": "Chaser filters keyed by field name."
          },
          "additionalFields": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "description": "Optional customer fields to include in the response.",
            "minItems": 1
          }
        },
        "additionalProperties": false,
        "description": "Query parameters for a Chaser list endpoint."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "histories": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "Raw Chaser object returned by the API."
            },
            "description": "Invoice histories returned by Chaser."
          },
          "pagination": {
            "type": "object",
            "properties": {
              "pageNumber": {
                "anyOf": [
                  {
                    "type": "number",
                    "description": "The zero-based page number returned by Chaser."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "pageSize": {
                "anyOf": [
                  {
                    "type": "number",
                    "description": "The page size returned by Chaser."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "totalCount": {
                "anyOf": [
                  {
                    "type": "number",
                    "description": "The total matching record count returned by Chaser."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      }
    },
    {
      "id": "chaserhq.list_invoices",
      "service": "chaserhq",
      "name": "list_invoices",
      "description": "List Chaser invoices with optional filters and pagination.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "The number of items per page. Chaser allows at most 100."
          },
          "page": {
            "type": "integer",
            "minimum": 0,
            "description": "The zero-based page number to request."
          },
          "filters": {
            "type": "object",
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "eq": {
                      "type": "string",
                      "description": "Match records equal to this value."
                    },
                    "ne": {
                      "type": "string",
                      "description": "Match records not equal to this value."
                    },
                    "in": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "minLength": 1
                      },
                      "description": "Match records in this list.",
                      "minItems": 1
                    },
                    "nin": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "minLength": 1
                      },
                      "description": "Exclude records in this list.",
                      "minItems": 1
                    }
                  },
                  "additionalProperties": false,
                  "description": "A string filter."
                },
                {
                  "type": "object",
                  "properties": {
                    "eq": {
                      "type": "number",
                      "description": "Match records equal to this value."
                    },
                    "ne": {
                      "type": "number",
                      "description": "Match records not equal to this value."
                    },
                    "gt": {
                      "type": "number",
                      "description": "Match records greater than this value."
                    },
                    "lt": {
                      "type": "number",
                      "description": "Match records less than this value."
                    },
                    "gte": {
                      "type": "number",
                      "description": "Match records greater than or equal to this value."
                    },
                    "lte": {
                      "type": "number",
                      "description": "Match records less than or equal to this value."
                    }
                  },
                  "additionalProperties": false,
                  "description": "A numeric filter."
                }
              ]
            },
            "description": "Chaser filters keyed by field name."
          },
          "additionalFields": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "description": "Optional customer fields to include in the response.",
            "minItems": 1
          }
        },
        "additionalProperties": false,
        "description": "Query parameters for a Chaser list endpoint."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "invoices": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "Raw Chaser object returned by the API."
            },
            "description": "Invoices returned by Chaser."
          },
          "pagination": {
            "type": "object",
            "properties": {
              "pageNumber": {
                "anyOf": [
                  {
                    "type": "number",
                    "description": "The zero-based page number returned by Chaser."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "pageSize": {
                "anyOf": [
                  {
                    "type": "number",
                    "description": "The page size returned by Chaser."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "totalCount": {
                "anyOf": [
                  {
                    "type": "number",
                    "description": "The total matching record count returned by Chaser."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      }
    }
  ]
}
