{
  "service": "basin",
  "displayName": "Basin",
  "categories": [
    "Productivity",
    "Marketing"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "basin_api_key",
      "description": "Basin account API key sent with the Authorization Token header. Find or regenerate it from the Basin API section in your dashboard: https://docs.usebasin.com/account-management/api-access/",
      "extraFields": []
    }
  ],
  "homepageUrl": "https://usebasin.com",
  "actions": [
    {
      "id": "basin.create_form",
      "service": "basin",
      "name": "create_form",
      "description": "Create a new Basin form.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "Form name."
          },
          "timezone": {
            "type": "string",
            "minLength": 1,
            "description": "IANA timezone used for form timestamps."
          },
          "project_id": {
            "type": "integer",
            "minimum": 1,
            "description": "Basin project ID."
          },
          "redirect_url": {
            "type": "string",
            "minLength": 1,
            "description": "URL to redirect users to after submission."
          },
          "use_ajax": {
            "type": "boolean",
            "description": "Whether the form should submit via AJAX."
          },
          "notification_emails": {
            "type": "string",
            "minLength": 1,
            "description": "Comma-separated email addresses notified for each submission."
          },
          "notification_cc_emails": {
            "type": "string",
            "minLength": 1,
            "description": "Comma-separated CC email addresses for submission notifications."
          },
          "notification_bcc_emails": {
            "type": "string",
            "minLength": 1,
            "description": "Comma-separated BCC email addresses for submission notifications."
          },
          "notification_subject": {
            "type": "string",
            "minLength": 1,
            "description": "Subject for submission notification emails."
          },
          "notification_from_name": {
            "type": "string",
            "minLength": 1,
            "description": "From name for submission notification emails."
          },
          "autoreply": {
            "type": "boolean",
            "description": "Whether Basin should send auto-reply emails."
          },
          "autoreply_body": {
            "type": "string",
            "minLength": 1,
            "description": "Body text for auto-reply emails."
          },
          "autoreply_subject": {
            "type": "string",
            "minLength": 1,
            "description": "Subject for auto-reply emails."
          },
          "autoreply_from_name": {
            "type": "string",
            "minLength": 1,
            "description": "From name for auto-reply emails."
          },
          "autoreply_greeting": {
            "type": "string",
            "minLength": 1,
            "description": "Greeting text for auto-reply emails."
          },
          "autoreply_name": {
            "type": "string",
            "minLength": 1,
            "description": "Sender display name for auto-reply emails."
          },
          "autoreply_title": {
            "type": "string",
            "minLength": 1,
            "description": "Title text for auto-reply emails."
          },
          "autoreply_email": {
            "type": "string",
            "minLength": 1,
            "description": "Reply-to email address for auto-reply emails."
          },
          "force_recaptcha": {
            "type": "boolean",
            "description": "Whether Google reCAPTCHA is required."
          },
          "force_hcaptcha": {
            "type": "boolean",
            "description": "Whether hCaptcha is required."
          },
          "force_turnstile": {
            "type": "boolean",
            "description": "Whether Cloudflare Turnstile is required."
          },
          "honeypot_field": {
            "type": "string",
            "minLength": 1,
            "description": "Honeypot field name used for spam filtering."
          },
          "retention_days": {
            "type": "integer",
            "minimum": 1,
            "description": "Number of days to retain form submissions."
          },
          "allowed_domains": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "description": "Domains allowed to submit the form."
          },
          "blocked_domains": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "description": "Domains blocked from submitting the form."
          },
          "duplicate_filter": {
            "type": "boolean",
            "description": "Whether Basin should filter duplicate submissions."
          },
          "smtp_email_validation": {
            "type": "boolean",
            "description": "Whether SMTP email validation is enabled."
          }
        },
        "additionalProperties": false,
        "required": [
          "name",
          "timezone",
          "project_id"
        ],
        "description": "Request payload for creating a Basin form."
      },
      "outputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": true,
        "description": "Basin resource response."
      }
    },
    {
      "id": "basin.create_form_webhook",
      "service": "basin",
      "name": "create_form_webhook",
      "description": "Create a new Basin form webhook.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "form_id": {
            "type": "integer",
            "minimum": 1,
            "description": "Basin form ID to attach the webhook to."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "Friendly webhook name."
          },
          "url": {
            "type": "string",
            "description": "Destination URL where Basin posts submission payloads.",
            "format": "uri"
          },
          "format": {
            "type": "string",
            "minLength": 1,
            "description": "Webhook payload format accepted by Basin."
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether the webhook is enabled."
          },
          "trigger_when_spam": {
            "type": "boolean",
            "description": "Whether the webhook fires for spam submissions."
          }
        },
        "additionalProperties": false,
        "required": [
          "form_id",
          "name",
          "url"
        ],
        "description": "Request payload for creating a Basin form webhook."
      },
      "outputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": true,
        "description": "Basin resource response."
      }
    },
    {
      "id": "basin.create_project",
      "service": "basin",
      "name": "create_project",
      "description": "Create a new Basin project.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "Project name."
          }
        },
        "additionalProperties": false,
        "description": "Request payload for creating a Basin project."
      },
      "outputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": true,
        "description": "Basin resource response."
      }
    },
    {
      "id": "basin.delete_form",
      "service": "basin",
      "name": "delete_form",
      "description": "Delete a Basin form by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "form_id": {
            "type": "string",
            "minLength": 1,
            "description": "Basin form ID."
          }
        },
        "additionalProperties": false,
        "description": "Path parameters for a Basin form endpoint."
      },
      "outputSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Basin resource response."
          },
          {
            "type": "object",
            "properties": {
              "success": {
                "type": "boolean",
                "description": "Whether Basin accepted the operation."
              }
            },
            "additionalProperties": false,
            "description": "Success marker returned after a Basin response with no JSON body."
          }
        ],
        "description": "Basin form deletion response."
      }
    },
    {
      "id": "basin.delete_form_webhook",
      "service": "basin",
      "name": "delete_form_webhook",
      "description": "Delete a Basin form webhook by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "webhook_id": {
            "type": "integer",
            "minimum": 1,
            "description": "Basin form webhook ID."
          }
        },
        "additionalProperties": false,
        "description": "Path parameters for a Basin form webhook endpoint."
      },
      "outputSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Basin resource response."
          },
          {
            "type": "object",
            "properties": {
              "success": {
                "type": "boolean",
                "description": "Whether Basin accepted the operation."
              }
            },
            "additionalProperties": false,
            "description": "Success marker returned after a Basin response with no JSON body."
          }
        ],
        "description": "Basin form webhook deletion response."
      }
    },
    {
      "id": "basin.delete_project",
      "service": "basin",
      "name": "delete_project",
      "description": "Delete a Basin project by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "project_id": {
            "type": "integer",
            "minimum": 1,
            "description": "Basin project ID."
          }
        },
        "additionalProperties": false,
        "description": "Path parameters for a Basin project endpoint."
      },
      "outputSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Basin resource response."
          },
          {
            "type": "object",
            "properties": {
              "success": {
                "type": "boolean",
                "description": "Whether Basin accepted the operation."
              }
            },
            "additionalProperties": false,
            "description": "Success marker returned after a Basin response with no JSON body."
          }
        ],
        "description": "Basin project deletion response."
      }
    },
    {
      "id": "basin.delete_submission",
      "service": "basin",
      "name": "delete_submission",
      "description": "Delete a Basin submission by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "submission_id": {
            "type": "integer",
            "minimum": 1,
            "description": "Basin submission ID."
          }
        },
        "additionalProperties": false,
        "description": "Path parameters for a Basin submission endpoint."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Whether Basin accepted the operation."
          }
        },
        "additionalProperties": false,
        "description": "Success marker returned after a Basin response with no JSON body."
      }
    },
    {
      "id": "basin.get_form",
      "service": "basin",
      "name": "get_form",
      "description": "Fetch a single Basin form by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "form_id": {
            "type": "string",
            "minLength": 1,
            "description": "Basin form ID."
          }
        },
        "additionalProperties": false,
        "description": "Path parameters for a Basin form endpoint."
      },
      "outputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": true,
        "description": "Basin resource response."
      }
    },
    {
      "id": "basin.get_form_webhook",
      "service": "basin",
      "name": "get_form_webhook",
      "description": "Fetch a single Basin form webhook by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "webhook_id": {
            "type": "integer",
            "minimum": 1,
            "description": "Basin form webhook ID."
          }
        },
        "additionalProperties": false,
        "description": "Path parameters for a Basin form webhook endpoint."
      },
      "outputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": true,
        "description": "Basin resource response."
      }
    },
    {
      "id": "basin.get_project",
      "service": "basin",
      "name": "get_project",
      "description": "Fetch a single Basin project by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "project_id": {
            "type": "integer",
            "minimum": 1,
            "description": "Basin project ID."
          }
        },
        "additionalProperties": false,
        "description": "Path parameters for a Basin project endpoint."
      },
      "outputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": true,
        "description": "Basin resource response."
      }
    },
    {
      "id": "basin.get_submission",
      "service": "basin",
      "name": "get_submission",
      "description": "Fetch a single Basin submission by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "submission_id": {
            "type": "integer",
            "minimum": 1,
            "description": "Basin submission ID."
          }
        },
        "additionalProperties": false,
        "description": "Path parameters for a Basin submission endpoint."
      },
      "outputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": true,
        "description": "Basin resource response."
      }
    },
    {
      "id": "basin.list_form_webhooks",
      "service": "basin",
      "name": "list_form_webhooks",
      "description": "List Basin form webhooks with optional filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number to request from Basin."
          },
          "query": {
            "type": "string",
            "minLength": 1,
            "description": "Search query accepted by the Basin list endpoint."
          }
        },
        "additionalProperties": false,
        "description": "Pagination and search query parameters accepted by Basin list endpoints."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "form_webhooks": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "Basin resource response."
            },
            "description": "Form webhooks returned by the Basin list endpoint."
          },
          "meta": {
            "type": "object",
            "properties": {
              "count": {
                "type": "integer",
                "description": "Total number of records available for the current query."
              },
              "page": {
                "type": "integer",
                "description": "Current page number."
              },
              "per_page": {
                "type": "integer",
                "description": "Maximum number of records returned on each page."
              }
            },
            "additionalProperties": true,
            "description": "Pagination metadata inferred from Basin list responses."
          }
        },
        "additionalProperties": false,
        "required": [
          "form_webhooks"
        ],
        "description": "Form webhook list response inferred from Basin API documentation."
      }
    },
    {
      "id": "basin.list_forms",
      "service": "basin",
      "name": "list_forms",
      "description": "List forms available to the current Basin API key.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number to request from Basin."
          },
          "query": {
            "type": "string",
            "minLength": 1,
            "description": "Search query accepted by the Basin list endpoint."
          }
        },
        "additionalProperties": false,
        "description": "Pagination and search query parameters accepted by Basin list endpoints."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "forms": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "Basin resource response."
            },
            "description": "Forms returned by the Basin forms list endpoint."
          },
          "meta": {
            "type": "object",
            "properties": {
              "count": {
                "type": "integer",
                "description": "Total number of records available for the current query."
              },
              "page": {
                "type": "integer",
                "description": "Current page number."
              },
              "per_page": {
                "type": "integer",
                "description": "Maximum number of records returned on each page."
              }
            },
            "additionalProperties": true,
            "description": "Pagination metadata inferred from Basin list responses."
          }
        },
        "additionalProperties": false,
        "required": [
          "forms"
        ],
        "description": "Form list response inferred from Basin API documentation."
      }
    },
    {
      "id": "basin.list_projects",
      "service": "basin",
      "name": "list_projects",
      "description": "List projects available to the current Basin API key.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Page number to request from Basin."
          },
          "query": {
            "type": "string",
            "minLength": 1,
            "description": "Search query accepted by the Basin list endpoint."
          }
        },
        "additionalProperties": false,
        "description": "Pagination and search query parameters accepted by Basin list endpoints."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "projects": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "Basin resource response."
            },
            "description": "Projects returned by the Basin projects list endpoint."
          },
          "meta": {
            "type": "object",
            "properties": {
              "count": {
                "type": "integer",
                "description": "Total number of records available for the current query."
              },
              "page": {
                "type": "integer",
                "description": "Current page number."
              },
              "per_page": {
                "type": "integer",
                "description": "Maximum number of records returned on each page."
              }
            },
            "additionalProperties": true,
            "description": "Pagination metadata inferred from Basin list responses."
          }
        },
        "additionalProperties": false,
        "required": [
          "projects"
        ],
        "description": "Project list response inferred from Basin API documentation."
      }
    },
    {
      "id": "basin.list_submissions",
      "service": "basin",
      "name": "list_submissions",
      "description": "List Basin form submissions with optional filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "form_id": {
            "type": "string",
            "minLength": 1,
            "description": "Basin form ID used to filter submissions."
          },
          "filter_by": {
            "type": "string",
            "enum": [
              "new",
              "spam",
              "trash",
              "all"
            ],
            "description": "Submission status filter accepted by Basin."
          },
          "query": {
            "type": "string",
            "minLength": 1,
            "description": "Search text for matching submissions."
          },
          "order_by": {
            "type": "string",
            "enum": [
              "date_asc",
              "date_desc",
              "email_asc",
              "email_desc"
            ],
            "description": "Submission sort order accepted by Basin."
          },
          "date_range": {
            "type": "string",
            "minLength": 1,
            "description": "Date range in YYYY-MM-DD+to+YYYY-MM-DD format accepted by Basin."
          }
        },
        "additionalProperties": false,
        "description": "Query parameters accepted by the Basin submissions list endpoint."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "submissions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "Basin resource response."
            },
            "description": "Submissions returned by the Basin submissions list endpoint."
          },
          "meta": {
            "type": "object",
            "properties": {
              "count": {
                "type": "integer",
                "description": "Total number of records available for the current query."
              },
              "page": {
                "type": "integer",
                "description": "Current page number."
              },
              "per_page": {
                "type": "integer",
                "description": "Maximum number of records returned on each page."
              }
            },
            "additionalProperties": true,
            "description": "Pagination metadata inferred from Basin list responses."
          }
        },
        "additionalProperties": false,
        "required": [
          "submissions"
        ],
        "description": "Submission list response inferred from Basin API documentation."
      }
    },
    {
      "id": "basin.update_form",
      "service": "basin",
      "name": "update_form",
      "description": "Update an existing Basin form by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "form_id": {
            "type": "string",
            "minLength": 1,
            "description": "Basin form ID."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "Form name."
          },
          "timezone": {
            "type": "string",
            "minLength": 1,
            "description": "IANA timezone used for form timestamps."
          },
          "project_id": {
            "type": "integer",
            "minimum": 1,
            "description": "Basin project ID."
          },
          "redirect_url": {
            "type": "string",
            "minLength": 1,
            "description": "URL to redirect users to after submission."
          },
          "use_ajax": {
            "type": "boolean",
            "description": "Whether the form should submit via AJAX."
          },
          "notification_emails": {
            "type": "string",
            "minLength": 1,
            "description": "Comma-separated email addresses notified for each submission."
          },
          "notification_cc_emails": {
            "type": "string",
            "minLength": 1,
            "description": "Comma-separated CC email addresses for submission notifications."
          },
          "notification_bcc_emails": {
            "type": "string",
            "minLength": 1,
            "description": "Comma-separated BCC email addresses for submission notifications."
          },
          "notification_subject": {
            "type": "string",
            "minLength": 1,
            "description": "Subject for submission notification emails."
          },
          "notification_from_name": {
            "type": "string",
            "minLength": 1,
            "description": "From name for submission notification emails."
          },
          "autoreply": {
            "type": "boolean",
            "description": "Whether Basin should send auto-reply emails."
          },
          "autoreply_body": {
            "type": "string",
            "minLength": 1,
            "description": "Body text for auto-reply emails."
          },
          "autoreply_subject": {
            "type": "string",
            "minLength": 1,
            "description": "Subject for auto-reply emails."
          },
          "autoreply_from_name": {
            "type": "string",
            "minLength": 1,
            "description": "From name for auto-reply emails."
          },
          "autoreply_greeting": {
            "type": "string",
            "minLength": 1,
            "description": "Greeting text for auto-reply emails."
          },
          "autoreply_name": {
            "type": "string",
            "minLength": 1,
            "description": "Sender display name for auto-reply emails."
          },
          "autoreply_title": {
            "type": "string",
            "minLength": 1,
            "description": "Title text for auto-reply emails."
          },
          "autoreply_email": {
            "type": "string",
            "minLength": 1,
            "description": "Reply-to email address for auto-reply emails."
          },
          "force_recaptcha": {
            "type": "boolean",
            "description": "Whether Google reCAPTCHA is required."
          },
          "force_hcaptcha": {
            "type": "boolean",
            "description": "Whether hCaptcha is required."
          },
          "force_turnstile": {
            "type": "boolean",
            "description": "Whether Cloudflare Turnstile is required."
          },
          "honeypot_field": {
            "type": "string",
            "minLength": 1,
            "description": "Honeypot field name used for spam filtering."
          },
          "retention_days": {
            "type": "integer",
            "minimum": 1,
            "description": "Number of days to retain form submissions."
          },
          "allowed_domains": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "description": "Domains allowed to submit the form."
          },
          "blocked_domains": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "description": "Domains blocked from submitting the form."
          },
          "duplicate_filter": {
            "type": "boolean",
            "description": "Whether Basin should filter duplicate submissions."
          },
          "smtp_email_validation": {
            "type": "boolean",
            "description": "Whether SMTP email validation is enabled."
          }
        },
        "additionalProperties": false,
        "required": [
          "form_id"
        ],
        "description": "Path and body parameters for updating a Basin form."
      },
      "outputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": true,
        "description": "Basin resource response."
      }
    },
    {
      "id": "basin.update_form_webhook",
      "service": "basin",
      "name": "update_form_webhook",
      "description": "Update an existing Basin form webhook by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "webhook_id": {
            "type": "integer",
            "minimum": 1,
            "description": "Basin form webhook ID."
          },
          "form_id": {
            "type": "integer",
            "minimum": 1,
            "description": "Basin form ID to attach the webhook to."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "Friendly webhook name."
          },
          "url": {
            "type": "string",
            "description": "Destination URL where Basin posts submission payloads.",
            "format": "uri"
          },
          "format": {
            "type": "string",
            "minLength": 1,
            "description": "Webhook payload format accepted by Basin."
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether the webhook is enabled."
          },
          "trigger_when_spam": {
            "type": "boolean",
            "description": "Whether the webhook fires for spam submissions."
          }
        },
        "additionalProperties": false,
        "required": [
          "webhook_id"
        ],
        "description": "Path and body parameters for updating a Basin form webhook."
      },
      "outputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": true,
        "description": "Basin resource response."
      }
    },
    {
      "id": "basin.update_project",
      "service": "basin",
      "name": "update_project",
      "description": "Update an existing Basin project by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "project_id": {
            "type": "integer",
            "minimum": 1,
            "description": "Basin project ID."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "Project name."
          }
        },
        "additionalProperties": false,
        "description": "Path and body parameters for updating a Basin project."
      },
      "outputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": true,
        "description": "Basin resource response."
      }
    }
  ]
}
