{
  "service": "jotform",
  "displayName": "Jotform",
  "categories": [
    "Productivity",
    "Data"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "JOTFORM_API_KEY",
      "description": "Jotform API key sent with the APIKEY request header. Create it from Account API > Create New Key: https://www.jotform.com/help/253-how-to-create-jotform-api-key/."
    }
  ],
  "homepageUrl": "https://www.jotform.com",
  "actions": [
    {
      "id": "jotform.create_submission",
      "service": "jotform",
      "name": "create_submission",
      "description": "Create a submission on a Jotform form using question IDs and answer values.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "formId": {
            "type": "string",
            "minLength": 1,
            "description": "The Jotform form ID that will receive the submission."
          },
          "answers": {
            "type": "object",
            "additionalProperties": true,
            "minProperties": 1,
            "description": "The submission answers keyed by Jotform question ID. Values may be scalars, arrays, or nested objects for compound fields."
          },
          "markAsNew": {
            "type": "boolean",
            "description": "Whether Jotform should mark the submission as new."
          },
          "flag": {
            "type": "boolean",
            "description": "Whether Jotform should set the submission flag."
          }
        },
        "additionalProperties": false,
        "required": [
          "formId",
          "answers"
        ],
        "description": "Input payload for creating a submission on a Jotform form."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "submissionId": {
            "type": "string",
            "minLength": 1,
            "description": "The Jotform submission ID created by the request."
          },
          "submissionUrl": {
            "type": "string",
            "description": "The API URL that can be used to retrieve the created Jotform submission."
          }
        },
        "additionalProperties": false,
        "description": "The normalized submission-create response returned by Jotform."
      }
    },
    {
      "id": "jotform.get_current_user",
      "service": "jotform",
      "name": "get_current_user",
      "description": "Get the current Jotform account associated with the authenticated API key.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "No input parameters are required for this action."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "user": {
            "type": "object",
            "properties": {
              "username": {
                "type": "string",
                "minLength": 1,
                "description": "The Jotform username associated with the API key."
              },
              "name": {
                "type": "string",
                "description": "The full name reported by Jotform."
              },
              "email": {
                "type": "string",
                "description": "The account email address reported by Jotform."
              },
              "website": {
                "type": "string",
                "description": "The website URL stored on the Jotform account."
              },
              "time_zone": {
                "type": "string",
                "description": "The configured IANA time zone for the account."
              },
              "account_type": {
                "type": "string",
                "description": "The Jotform account plan URL or identifier."
              },
              "status": {
                "type": "string",
                "description": "The current account status reported by Jotform."
              },
              "created_at": {
                "type": "string",
                "description": "The timestamp when the account was created."
              },
              "updated_at": {
                "type": "string",
                "description": "The timestamp when the account was last updated."
              },
              "is_verified": {
                "type": "boolean",
                "description": "Whether the Jotform account is verified."
              },
              "usage": {
                "type": "string",
                "description": "The Jotform usage endpoint URL for the account."
              },
              "industry": {
                "type": "string",
                "description": "The industry configured on the account."
              },
              "company": {
                "type": "string",
                "description": "The company configured on the account."
              },
              "language": {
                "type": "string",
                "description": "The language configured on the account."
              },
              "avatarUrl": {
                "type": "string",
                "description": "The avatar URL reported by Jotform."
              },
              "webhooks": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "One webhook URL configured on the account."
                },
                "description": "The account-level webhooks configured in Jotform."
              },
              "doNotClone": {
                "type": "boolean",
                "description": "Whether the account disables form cloning."
              }
            },
            "additionalProperties": false,
            "required": [
              "username",
              "is_verified",
              "webhooks",
              "doNotClone"
            ],
            "description": "The normalized current Jotform account."
          }
        },
        "additionalProperties": false,
        "description": "The normalized current-user response returned by Jotform."
      }
    },
    {
      "id": "jotform.get_form",
      "service": "jotform",
      "name": "get_form",
      "description": "Get one Jotform form by form ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "formId": {
            "type": "string",
            "minLength": 1,
            "description": "The Jotform form ID to retrieve."
          }
        },
        "additionalProperties": false,
        "description": "Input payload for retrieving one Jotform form."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "form": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "description": "The unique Jotform form ID."
              },
              "username": {
                "type": "string",
                "description": "The Jotform username that owns the form."
              },
              "title": {
                "type": "string",
                "description": "The visible form title."
              },
              "height": {
                "type": "integer",
                "description": "The configured form height in pixels."
              },
              "status": {
                "type": "string",
                "description": "The current Jotform form status."
              },
              "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."
              },
              "last_submission": {
                "type": "string",
                "description": "The timestamp of the most recent form submission."
              },
              "new": {
                "type": "integer",
                "minimum": 0,
                "description": "The count of unread submissions."
              },
              "count": {
                "type": "integer",
                "minimum": 0,
                "description": "The total submission count."
              },
              "type": {
                "type": "string",
                "description": "The Jotform form type, such as LEGACY or CARD."
              },
              "favorite": {
                "type": "boolean",
                "description": "Whether the form is marked as a favorite."
              },
              "archived": {
                "type": "boolean",
                "description": "Whether the form is archived."
              },
              "url": {
                "type": "string",
                "description": "The public URL of the Jotform form."
              }
            },
            "additionalProperties": true,
            "required": [
              "id"
            ],
            "description": "One normalized Jotform form summary."
          }
        },
        "additionalProperties": false,
        "description": "The normalized single-form response returned by Jotform."
      }
    },
    {
      "id": "jotform.get_submission",
      "service": "jotform",
      "name": "get_submission",
      "description": "Get one Jotform submission by submission ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "submissionId": {
            "type": "string",
            "minLength": 1,
            "description": "The Jotform submission ID to retrieve."
          }
        },
        "additionalProperties": false,
        "description": "Input payload for retrieving one Jotform submission."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "submission": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "description": "The unique Jotform submission ID."
              },
              "form_id": {
                "type": "string",
                "minLength": 1,
                "description": "The Jotform form ID that owns this submission."
              },
              "ip": {
                "type": "string",
                "description": "The submitter IP address reported by Jotform."
              },
              "created_at": {
                "type": "string",
                "description": "The timestamp when the submission was created."
              },
              "updated_at": {
                "type": "string",
                "description": "The timestamp when the submission was last updated."
              },
              "status": {
                "type": "string",
                "description": "The Jotform submission status."
              },
              "new": {
                "type": "boolean",
                "description": "Whether the submission is currently marked as new."
              },
              "answers": {
                "type": "object",
                "additionalProperties": {
                  "type": "object",
                  "properties": {
                    "text": {
                      "type": "string",
                      "description": "The question label shown on the Jotform form."
                    },
                    "type": {
                      "type": "string",
                      "description": "The Jotform question type, such as control_textbox."
                    },
                    "answer": {
                      "description": "The raw answer payload returned by Jotform."
                    },
                    "prettyFormat": {
                      "type": "string",
                      "description": "The formatted answer string returned by Jotform when available."
                    }
                  },
                  "additionalProperties": true,
                  "description": "One normalized answer entry from a Jotform submission."
                },
                "description": "The answers keyed by Jotform question ID."
              },
              "workflowStatus": {
                "type": "string",
                "description": "The workflow status reported by Jotform when a workflow is attached."
              }
            },
            "additionalProperties": true,
            "required": [
              "id",
              "form_id",
              "new",
              "answers"
            ],
            "description": "One normalized Jotform submission."
          }
        },
        "additionalProperties": false,
        "description": "The normalized single-submission response returned by Jotform."
      }
    },
    {
      "id": "jotform.list_form_questions",
      "service": "jotform",
      "name": "list_form_questions",
      "description": "List the question definitions configured on one Jotform form.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "formId": {
            "type": "string",
            "minLength": 1,
            "description": "The Jotform form ID whose questions should be listed."
          }
        },
        "additionalProperties": false,
        "description": "Input payload for listing the questions on one Jotform form."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "questions": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "properties": {
                "qid": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The unique Jotform question ID."
                },
                "type": {
                  "type": "string",
                  "description": "The Jotform question type, such as control_textbox."
                },
                "text": {
                  "type": "string",
                  "description": "The visible question label on the form."
                },
                "name": {
                  "type": "string",
                  "description": "The Jotform internal question name."
                },
                "order": {
                  "type": "string",
                  "description": "The position of the question in the form."
                },
                "required": {
                  "type": "string",
                  "description": "Whether Jotform marks the question as required."
                },
                "readonly": {
                  "type": "string",
                  "description": "Whether Jotform marks the question as readonly."
                },
                "labelAlign": {
                  "type": "string",
                  "description": "The configured label alignment for the question."
                },
                "hint": {
                  "type": "string",
                  "description": "The question hint text returned by Jotform."
                },
                "validation": {
                  "type": "string",
                  "description": "The validation mode configured on the question."
                },
                "sublabels": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string",
                    "description": "The string value returned for this key."
                  },
                  "description": "A string-keyed map returned by Jotform."
                }
              },
              "additionalProperties": true,
              "required": [
                "qid",
                "type"
              ],
              "description": "One normalized Jotform question definition."
            },
            "description": "The normalized questions keyed by Jotform question ID."
          }
        },
        "additionalProperties": false,
        "description": "The normalized question-list response returned by Jotform."
      }
    },
    {
      "id": "jotform.list_form_submissions",
      "service": "jotform",
      "name": "list_form_submissions",
      "description": "List submissions for one Jotform form.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "formId": {
            "type": "string",
            "minLength": 1,
            "description": "The Jotform form ID whose submissions should be listed."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1000,
            "description": "The maximum number of submissions to return."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "The starting offset for the submissions page."
          }
        },
        "additionalProperties": false,
        "required": [
          "formId"
        ],
        "description": "Input payload for listing Jotform submissions on one form."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "submissions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The unique Jotform submission ID."
                },
                "form_id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The Jotform form ID that owns this submission."
                },
                "ip": {
                  "type": "string",
                  "description": "The submitter IP address reported by Jotform."
                },
                "created_at": {
                  "type": "string",
                  "description": "The timestamp when the submission was created."
                },
                "updated_at": {
                  "type": "string",
                  "description": "The timestamp when the submission was last updated."
                },
                "status": {
                  "type": "string",
                  "description": "The Jotform submission status."
                },
                "new": {
                  "type": "boolean",
                  "description": "Whether the submission is currently marked as new."
                },
                "answers": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "object",
                    "properties": {
                      "text": {
                        "type": "string",
                        "description": "The question label shown on the Jotform form."
                      },
                      "type": {
                        "type": "string",
                        "description": "The Jotform question type, such as control_textbox."
                      },
                      "answer": {
                        "description": "The raw answer payload returned by Jotform."
                      },
                      "prettyFormat": {
                        "type": "string",
                        "description": "The formatted answer string returned by Jotform when available."
                      }
                    },
                    "additionalProperties": true,
                    "description": "One normalized answer entry from a Jotform submission."
                  },
                  "description": "The answers keyed by Jotform question ID."
                },
                "workflowStatus": {
                  "type": "string",
                  "description": "The workflow status reported by Jotform when a workflow is attached."
                }
              },
              "additionalProperties": true,
              "required": [
                "id",
                "form_id",
                "new",
                "answers"
              ],
              "description": "One normalized Jotform submission."
            },
            "description": "The submissions returned by Jotform."
          }
        },
        "additionalProperties": false,
        "description": "The normalized submission-list response returned by Jotform."
      }
    },
    {
      "id": "jotform.list_forms",
      "service": "jotform",
      "name": "list_forms",
      "description": "List forms available to the authenticated Jotform account.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1000,
            "description": "The maximum number of forms to return."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "The starting offset for the forms page."
          },
          "search": {
            "type": "string",
            "minLength": 1,
            "description": "The free-text search query for matching forms."
          },
          "folder": {
            "type": "string",
            "minLength": 1,
            "description": "The folder ID used to filter returned forms."
          },
          "orderby": {
            "type": "string",
            "minLength": 1,
            "description": "The Jotform form field used for upstream sorting."
          },
          "sorting": {
            "type": "string",
            "enum": [
              "ASC",
              "DESC"
            ],
            "description": "The upstream sort direction used when listing forms."
          }
        },
        "additionalProperties": false,
        "description": "Input payload for listing Jotform forms."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "forms": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The unique Jotform form ID."
                },
                "username": {
                  "type": "string",
                  "description": "The Jotform username that owns the form."
                },
                "title": {
                  "type": "string",
                  "description": "The visible form title."
                },
                "height": {
                  "type": "integer",
                  "description": "The configured form height in pixels."
                },
                "status": {
                  "type": "string",
                  "description": "The current Jotform form status."
                },
                "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."
                },
                "last_submission": {
                  "type": "string",
                  "description": "The timestamp of the most recent form submission."
                },
                "new": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "The count of unread submissions."
                },
                "count": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "The total submission count."
                },
                "type": {
                  "type": "string",
                  "description": "The Jotform form type, such as LEGACY or CARD."
                },
                "favorite": {
                  "type": "boolean",
                  "description": "Whether the form is marked as a favorite."
                },
                "archived": {
                  "type": "boolean",
                  "description": "Whether the form is archived."
                },
                "url": {
                  "type": "string",
                  "description": "The public URL of the Jotform form."
                }
              },
              "additionalProperties": true,
              "required": [
                "id"
              ],
              "description": "One normalized Jotform form summary."
            },
            "description": "The forms returned by Jotform."
          },
          "resultSet": {
            "type": "object",
            "properties": {
              "offset": {
                "type": "integer",
                "minimum": 0,
                "description": "The starting offset of the returned form page."
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "description": "The maximum number of forms requested."
              },
              "count": {
                "type": "integer",
                "minimum": 0,
                "description": "The number of forms returned in this page."
              }
            },
            "additionalProperties": false,
            "description": "The Jotform pagination metadata returned for form listings."
          }
        },
        "additionalProperties": false,
        "required": [
          "forms"
        ],
        "description": "The normalized form-list response returned by Jotform."
      }
    }
  ]
}
