# JotForm Routing Reference

**App name:** `jotform`
**Base URL proxied:** `api.jotform.com`

## API Path Pattern

```
/jotform/{endpoint}
```

## Common Endpoints

### User

#### Get User Info
```bash
GET /jotform/user
```

#### Get User Forms
```bash
GET /jotform/user/forms?limit=20&offset=0
```

#### Get User Submissions
```bash
GET /jotform/user/submissions?limit=20&offset=0
```

#### Get User Usage
```bash
GET /jotform/user/usage
```

#### Get User History
```bash
GET /jotform/user/history?limit=20
```

### Forms

#### Get Form
```bash
GET /jotform/form/{formId}
```

#### Get Form Questions
```bash
GET /jotform/form/{formId}/questions
```

#### Get Form Properties
```bash
GET /jotform/form/{formId}/properties
```

#### Get Form Submissions
```bash
GET /jotform/form/{formId}/submissions?limit=20&offset=0
```

With filter:
```bash
GET /jotform/form/{formId}/submissions?filter={"created_at:gt":"[REDACTED_PHONE]"}
```

#### Get Form Files
```bash
GET /jotform/form/{formId}/files
```

#### Create Form
```bash
POST /jotform/user/forms
Content-Type: application/json

{
  "properties": {
    "title": "Contact Form"
  },
  "questions": {
    "1": {
      "type": "control_textbox",
      "text": "Name",
      "name": "name"
    },
    "2": {
      "type": "control_email",
      "text": "Email",
      "name": "email"
    }
  }
}
```

#### Delete Form
```bash
DELETE /jotform/form/{formId}
```

### Submissions

#### Get Submission
```bash
GET /jotform/submission/{submissionId}
```

#### Update Submission
```bash
POST /jotform/submission/{submissionId}
Content-Type: application/x-www-form-urlencoded

submission[3][first]=John&submission[3][last]=Doe
```

Note: Use question IDs from the form questions endpoint. The submission field format is `submission[questionId][subfield]=value`.

#### Delete Submission
```bash
DELETE /jotform/submission/{submissionId}
```

### Reports

#### Get Form Reports
```bash
GET /jotform/form/{formId}/reports
```

### Webhooks

#### Get Form Webhooks
```bash
GET /jotform/form/{formId}/webhooks
```

#### Create Webhook
```bash
POST /jotform/form/{formId}/webhooks
Content-Type: application/x-www-form-urlencoded

webhookURL=https://example.com/webhook
```

#### Delete Webhook
```bash
DELETE /jotform/form/{formId}/webhooks/{webhookIndex}
```

## Question Types

- `control_textbox` - Single line text
- `control_textarea` - Multi-line text
- `control_email` - Email
- `control_phone` - Phone number
- `control_dropdown` - Dropdown
- `control_radio` - Radio buttons
- `control_checkbox` - Checkboxes
- `control_datetime` - Date/time picker
- `control_fileupload` - File upload
- `control_signature` - Signature

## Filter Syntax

Filters use JSON format:
- `{"field:gt":"value"}` - Greater than
- `{"field:lt":"value"}` - Less than
- `{"field:eq":"value"}` - Equal to
- `{"field:ne":"value"}` - Not equal to

## Notes

- Authentication is automatic - the router injects the `APIKEY` header
- Form IDs are numeric
- Submissions include all answers as key-value pairs
- Use `orderby` parameter to sort results (e.g., `orderby=created_at`)
- Pagination uses `limit` and `offset` parameters

## Resources

- [API Overview](https://api.jotform.com/docs/)
- [Get User Info](https://api.jotform.com/docs/#user)
- [Get User Forms](https://api.jotform.com/docs/#user-forms)
- [Get User Submissions](https://api.jotform.com/docs/#user-submissions)
- [Get Form Details](https://api.jotform.com/docs/#form-id)
- [Get Form Questions](https://api.jotform.com/docs/#form-id-questions)
- [Get Form Submissions](https://api.jotform.com/docs/#form-id-submissions)
- [Get Submission](https://api.jotform.com/docs/#submission-id)
- [Webhooks](https://api.jotform.com/docs/#form-id-webhooks)