{
  "service": "byteforms",
  "displayName": "ByteForms",
  "categories": [
    "Productivity",
    "Data"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "byteforms_api_key",
      "description": "ByteForms API key sent in the Authorization header without a Bearer prefix. Create it from Account > API Key: https://dev.forms.bytesuite.io/profile?tab=account&action=new_api_key.",
      "extraFields": []
    }
  ],
  "homepageUrl": "https://forms.bytesuite.io/",
  "actions": [
    {
      "id": "byteforms.get_form",
      "service": "byteforms",
      "name": "get_form",
      "description": "Get one ByteForms form by form ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "formId": {
            "type": "string",
            "minLength": 1,
            "description": "The ByteForms form ID to retrieve."
          }
        },
        "additionalProperties": false,
        "required": [
          "formId"
        ],
        "description": "Input payload for retrieving one ByteForms form."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "form": {
            "type": "object",
            "properties": {
              "id": {
                "anyOf": [
                  {
                    "type": "number",
                    "description": "The internal ByteForms form ID."
                  },
                  {
                    "type": "string",
                    "description": "The internal ByteForms form ID."
                  }
                ],
                "description": "The internal ByteForms form ID."
              },
              "public_id": {
                "type": "string",
                "description": "The public ByteForms form ID."
              },
              "name": {
                "type": "string",
                "description": "The visible ByteForms form name."
              },
              "body": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "component": {
                      "type": "string",
                      "description": "The ByteForms component category, such as input."
                    },
                    "type": {
                      "type": "string",
                      "description": "The ByteForms component type, such as text or email."
                    },
                    "label": {
                      "type": "string",
                      "description": "The field label shown in the form builder."
                    },
                    "placeholder": {
                      "type": "string",
                      "description": "The placeholder shown for the field."
                    },
                    "page": {
                      "type": "integer",
                      "description": "The form page that owns this field."
                    },
                    "index": {
                      "type": "integer",
                      "description": "The field index within the form body."
                    },
                    "id": {
                      "type": "string",
                      "description": "The field identifier used in ByteForms responses."
                    },
                    "required": {
                      "type": "boolean",
                      "description": "Whether the field is required."
                    }
                  },
                  "additionalProperties": true,
                  "description": "One form body item returned by ByteForms."
                },
                "description": "The form body definition."
              },
              "pages": {
                "description": "The ByteForms pages payload when present."
              },
              "is_custom": {
                "type": "boolean",
                "description": "Whether the form is marked as custom."
              },
              "options": {
                "type": "object",
                "properties": {
                  "one_submission_per_email": {
                    "type": "boolean",
                    "description": "Whether ByteForms restricts one submission per email."
                  },
                  "thank_you_message": {
                    "type": "string",
                    "description": "The thank-you message shown after submission."
                  },
                  "max_submissions": {
                    "type": "integer",
                    "description": "The maximum number of allowed submissions."
                  },
                  "stop_submissions_after": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "The timestamp after which ByteForms stops accepting submissions."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "submit_button_text": {
                    "type": "string",
                    "description": "The submit button label configured for the form."
                  },
                  "form_width": {
                    "type": "string",
                    "description": "The configured form width mode."
                  },
                  "redirect_url": {
                    "type": "string",
                    "description": "The redirect URL configured after submission."
                  },
                  "password": {
                    "type": "string",
                    "description": "The configured password protection value."
                  },
                  "theme": {
                    "type": "string",
                    "description": "The ByteForms theme name applied to the form."
                  },
                  "visibility": {
                    "type": "string",
                    "description": "The visibility mode configured for the form."
                  },
                  "page_behaviour": {
                    "type": "string",
                    "description": "The page navigation behaviour for the form."
                  },
                  "custom_code": {
                    "type": "string",
                    "description": "The custom code snippet configured for the form."
                  },
                  "draft_submissions": {
                    "type": "boolean",
                    "description": "Whether draft submissions are enabled."
                  },
                  "remove_branding": {
                    "type": "boolean",
                    "description": "Whether ByteForms branding is removed from the form."
                  },
                  "email_notifications": {
                    "type": "boolean",
                    "description": "Whether email notifications are enabled for the form."
                  }
                },
                "additionalProperties": true,
                "description": "The documented ByteForms form options object."
              },
              "user_id": {
                "anyOf": [
                  {
                    "type": "number",
                    "description": "The owning ByteForms user ID."
                  },
                  {
                    "type": "string",
                    "description": "The owning ByteForms user ID."
                  }
                ],
                "description": "The owning ByteForms user ID."
              },
              "created_at": {
                "type": "string",
                "description": "The timestamp when the form was created."
              },
              "updated_at": {
                "type": "string",
                "description": "The timestamp when the form was last updated."
              },
              "deleted_at": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The timestamp when the form was deleted, or null when active."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": true,
            "description": "One normalized ByteForms form."
          }
        },
        "additionalProperties": false,
        "required": [
          "form"
        ],
        "description": "The normalized ByteForms single-form response."
      }
    },
    {
      "id": "byteforms.list_form_responses",
      "service": "byteforms",
      "name": "list_form_responses",
      "description": "List responses for one ByteForms form with the documented cursor, query, order, and limit parameters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "formId": {
            "type": "string",
            "minLength": 1,
            "description": "The ByteForms form ID whose responses should be listed."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "description": "The maximum number of responses to return."
          },
          "order": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "description": "The sort order for the response page."
          },
          "query": {
            "type": "string",
            "minLength": 1,
            "description": "The free-text filter query passed through to ByteForms."
          },
          "after": {
            "type": "string",
            "minLength": 1,
            "description": "The cursor used to request the next response page."
          },
          "before": {
            "type": "string",
            "minLength": 1,
            "description": "The cursor used to request the previous response page."
          }
        },
        "additionalProperties": false,
        "required": [
          "formId"
        ],
        "description": "Input payload for listing ByteForms responses on one form."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer",
            "minimum": 0,
            "description": "The number of responses in the current page."
          },
          "cursor": {
            "type": "object",
            "properties": {
              "after": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The cursor to request the next response page, or null when unavailable."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "before": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The cursor to request the previous response page, or null when unavailable."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": false,
            "required": [
              "after",
              "before"
            ],
            "description": "The ByteForms response pagination cursors."
          },
          "responses": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "anyOf": [
                    {
                      "type": "number",
                      "description": "The ByteForms response ID."
                    },
                    {
                      "type": "string",
                      "description": "The ByteForms response ID."
                    }
                  ],
                  "description": "The ByteForms response ID."
                },
                "form_id": {
                  "anyOf": [
                    {
                      "type": "number",
                      "description": "The owning ByteForms form ID."
                    },
                    {
                      "type": "string",
                      "description": "The owning ByteForms form ID."
                    }
                  ],
                  "description": "The owning ByteForms form ID."
                },
                "response": {
                  "type": "object",
                  "additionalProperties": {
                    "description": "The raw field value."
                  },
                  "description": "The field-value pairs returned for one form submission."
                },
                "options": {
                  "type": "object",
                  "properties": {
                    "ip": {
                      "type": "string",
                      "description": "The submitter IP address recorded by ByteForms."
                    }
                  },
                  "additionalProperties": true,
                  "description": "The submission options object returned by ByteForms."
                },
                "created_at": {
                  "type": "string",
                  "description": "The timestamp when the response was created."
                },
                "updated_at": {
                  "type": "string",
                  "description": "The timestamp when the response was last updated."
                },
                "deleted_at": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The timestamp when the response was deleted, or null when active."
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "additionalProperties": true,
              "description": "One normalized ByteForms form response."
            },
            "description": "The responses returned for the requested form."
          }
        },
        "additionalProperties": false,
        "required": [
          "count",
          "cursor",
          "responses"
        ],
        "description": "The normalized ByteForms response-list payload."
      }
    },
    {
      "id": "byteforms.list_forms",
      "service": "byteforms",
      "name": "list_forms",
      "description": "List forms available to the authenticated ByteForms account.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "No input parameters are required for this action."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "forms": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "anyOf": [
                    {
                      "type": "number",
                      "description": "The internal ByteForms form ID."
                    },
                    {
                      "type": "string",
                      "description": "The internal ByteForms form ID."
                    }
                  ],
                  "description": "The internal ByteForms form ID."
                },
                "public_id": {
                  "type": "string",
                  "description": "The public ByteForms form ID."
                },
                "name": {
                  "type": "string",
                  "description": "The visible ByteForms form name."
                },
                "body": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "component": {
                        "type": "string",
                        "description": "The ByteForms component category, such as input."
                      },
                      "type": {
                        "type": "string",
                        "description": "The ByteForms component type, such as text or email."
                      },
                      "label": {
                        "type": "string",
                        "description": "The field label shown in the form builder."
                      },
                      "placeholder": {
                        "type": "string",
                        "description": "The placeholder shown for the field."
                      },
                      "page": {
                        "type": "integer",
                        "description": "The form page that owns this field."
                      },
                      "index": {
                        "type": "integer",
                        "description": "The field index within the form body."
                      },
                      "id": {
                        "type": "string",
                        "description": "The field identifier used in ByteForms responses."
                      },
                      "required": {
                        "type": "boolean",
                        "description": "Whether the field is required."
                      }
                    },
                    "additionalProperties": true,
                    "description": "One form body item returned by ByteForms."
                  },
                  "description": "The form body definition."
                },
                "pages": {
                  "description": "The ByteForms pages payload when present."
                },
                "is_custom": {
                  "type": "boolean",
                  "description": "Whether the form is marked as custom."
                },
                "options": {
                  "type": "object",
                  "properties": {
                    "one_submission_per_email": {
                      "type": "boolean",
                      "description": "Whether ByteForms restricts one submission per email."
                    },
                    "thank_you_message": {
                      "type": "string",
                      "description": "The thank-you message shown after submission."
                    },
                    "max_submissions": {
                      "type": "integer",
                      "description": "The maximum number of allowed submissions."
                    },
                    "stop_submissions_after": {
                      "anyOf": [
                        {
                          "type": "string",
                          "description": "The timestamp after which ByteForms stops accepting submissions."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "submit_button_text": {
                      "type": "string",
                      "description": "The submit button label configured for the form."
                    },
                    "form_width": {
                      "type": "string",
                      "description": "The configured form width mode."
                    },
                    "redirect_url": {
                      "type": "string",
                      "description": "The redirect URL configured after submission."
                    },
                    "password": {
                      "type": "string",
                      "description": "The configured password protection value."
                    },
                    "theme": {
                      "type": "string",
                      "description": "The ByteForms theme name applied to the form."
                    },
                    "visibility": {
                      "type": "string",
                      "description": "The visibility mode configured for the form."
                    },
                    "page_behaviour": {
                      "type": "string",
                      "description": "The page navigation behaviour for the form."
                    },
                    "custom_code": {
                      "type": "string",
                      "description": "The custom code snippet configured for the form."
                    },
                    "draft_submissions": {
                      "type": "boolean",
                      "description": "Whether draft submissions are enabled."
                    },
                    "remove_branding": {
                      "type": "boolean",
                      "description": "Whether ByteForms branding is removed from the form."
                    },
                    "email_notifications": {
                      "type": "boolean",
                      "description": "Whether email notifications are enabled for the form."
                    }
                  },
                  "additionalProperties": true,
                  "description": "The documented ByteForms form options object."
                },
                "user_id": {
                  "anyOf": [
                    {
                      "type": "number",
                      "description": "The owning ByteForms user ID."
                    },
                    {
                      "type": "string",
                      "description": "The owning ByteForms user ID."
                    }
                  ],
                  "description": "The owning ByteForms user ID."
                },
                "created_at": {
                  "type": "string",
                  "description": "The timestamp when the form was created."
                },
                "updated_at": {
                  "type": "string",
                  "description": "The timestamp when the form was last updated."
                },
                "deleted_at": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The timestamp when the form was deleted, or null when active."
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "additionalProperties": true,
              "description": "One normalized ByteForms form."
            },
            "description": "The forms returned by ByteForms."
          }
        },
        "additionalProperties": false,
        "required": [
          "forms"
        ],
        "description": "The normalized ByteForms form-list response."
      }
    }
  ]
}
