Fresh start - excluded large ROM JSON files

This commit is contained in:
OpenClaw Agent
2026-04-11 09:45:12 -05:00
commit 5deb387aa6
395 changed files with 47744 additions and 0 deletions

View File

@@ -0,0 +1,220 @@
# ActiveCampaign Routing Reference
**App name:** `active-campaign`
**Base URL proxied:** `{account}.api-us1.com`
## API Path Pattern
```
/active-campaign/api/3/{resource}
```
## Common Endpoints
### Contacts
#### List Contacts
```bash
GET /active-campaign/api/3/contacts
```
#### Get Contact
```bash
GET /active-campaign/api/3/contacts/{contactId}
```
#### Create Contact
```bash
POST /active-campaign/api/3/contacts
Content-Type: application/json
{
"contact": {
"email": "user@example.com",
"firstName": "John",
"lastName": "Doe"
}
}
```
#### Update Contact
```bash
PUT /active-campaign/api/3/contacts/{contactId}
```
#### Delete Contact
```bash
DELETE /active-campaign/api/3/contacts/{contactId}
```
### Tags
#### List Tags
```bash
GET /active-campaign/api/3/tags
```
#### Create Tag
```bash
POST /active-campaign/api/3/tags
Content-Type: application/json
{
"tag": {
"tag": "Tag Name",
"tagType": "contact"
}
}
```
### Contact Tags
#### Add Tag to Contact
```bash
POST /active-campaign/api/3/contactTags
Content-Type: application/json
{
"contactTag": {
"contact": "1",
"tag": "1"
}
}
```
#### Remove Tag from Contact
```bash
DELETE /active-campaign/api/3/contactTags/{contactTagId}
```
### Lists
#### List All Lists
```bash
GET /active-campaign/api/3/lists
```
#### Create List
```bash
POST /active-campaign/api/3/lists
```
### Deals
#### List Deals
```bash
GET /active-campaign/api/3/deals
```
#### Create Deal
```bash
POST /active-campaign/api/3/deals
Content-Type: application/json
{
"deal": {
"title": "New Deal",
"value": "10000",
"currency": "usd",
"contact": "1",
"stage": "1"
}
}
```
### Deal Stages & Pipelines
#### List Deal Stages
```bash
GET /active-campaign/api/3/dealStages
```
#### List Pipelines (Deal Groups)
```bash
GET /active-campaign/api/3/dealGroups
```
### Automations
#### List Automations
```bash
GET /active-campaign/api/3/automations
```
### Campaigns
#### List Campaigns
```bash
GET /active-campaign/api/3/campaigns
```
### Users
#### List Users
```bash
GET /active-campaign/api/3/users
```
### Accounts
#### List Accounts
```bash
GET /active-campaign/api/3/accounts
```
### Custom Fields
#### List Fields
```bash
GET /active-campaign/api/3/fields
```
### Notes
#### List Notes
```bash
GET /active-campaign/api/3/notes
```
### Webhooks
#### List Webhooks
```bash
GET /active-campaign/api/3/webhooks
```
## Pagination
Uses offset-based pagination:
```bash
GET /active-campaign/api/3/contacts?limit=20&offset=0
```
**Parameters:**
- `limit` - Results per page (default: 20)
- `offset` - Starting index
Response includes meta with total:
```json
{
"contacts": [...],
"meta": {
"total": "150"
}
}
```
## Notes
- All endpoints require `/api/3/` prefix
- Request bodies use singular resource names (e.g., `{"contact": {...}}`)
- IDs returned as strings
- Rate limit: 5 requests per second per account
- DELETE returns 200 OK (not 204)
## Resources
- [ActiveCampaign API Overview](https://developers.activecampaign.com/reference/overview)
- [Developer Portal](https://developers.activecampaign.com/)
- [Contacts API](https://developers.activecampaign.com/reference/list-all-contacts)

View File

@@ -0,0 +1,154 @@
# Acuity Scheduling Routing Reference
**App name:** `acuity-scheduling`
**Base URL proxied:** `acuityscheduling.com`
## API Path Pattern
```
/acuity-scheduling/api/v1/{resource}
```
The gateway automatically prepends `/api/v1` when proxying to Acuity.
## Common Endpoints
### Get Account Info
```bash
GET /acuity-scheduling/api/v1/me
```
### List Appointments
```bash
GET /acuity-scheduling/api/v1/appointments?max=100&minDate=2026-02-01
```
### Get Appointment
```bash
GET /acuity-scheduling/api/v1/appointments/{id}
```
### Create Appointment
```bash
POST /acuity-scheduling/api/v1/appointments
Content-Type: application/json
{
"datetime": "2026-02-15T09:00",
"appointmentTypeID": 123,
"firstName": "John",
"lastName": "Doe",
"email": "john@example.com"
}
```
### Update Appointment
```bash
PUT /acuity-scheduling/api/v1/appointments/{id}
Content-Type: application/json
{
"firstName": "Jane",
"lastName": "Smith"
}
```
### Cancel Appointment
```bash
PUT /acuity-scheduling/api/v1/appointments/{id}/cancel
```
### Reschedule Appointment
```bash
PUT /acuity-scheduling/api/v1/appointments/{id}/reschedule
Content-Type: application/json
{
"datetime": "2026-02-20T10:00"
}
```
### List Calendars
```bash
GET /acuity-scheduling/api/v1/calendars
```
### List Appointment Types
```bash
GET /acuity-scheduling/api/v1/appointment-types
```
### Get Available Dates
```bash
GET /acuity-scheduling/api/v1/availability/dates?month=2026-02&appointmentTypeID=123
```
### Get Available Times
```bash
GET /acuity-scheduling/api/v1/availability/times?date=2026-02-04&appointmentTypeID=123
```
### List Clients
```bash
GET /acuity-scheduling/api/v1/clients?search=John
```
### Create Client
```bash
POST /acuity-scheduling/api/v1/clients
Content-Type: application/json
{
"firstName": "John",
"lastName": "Doe",
"email": "john@example.com"
}
```
### List Blocks
```bash
GET /acuity-scheduling/api/v1/blocks?calendarID=1234
```
### Create Block
```bash
POST /acuity-scheduling/api/v1/blocks
Content-Type: application/json
{
"start": "2026-02-15T12:00",
"end": "2026-02-15T13:00",
"calendarID": 1234
}
```
### Delete Block
```bash
DELETE /acuity-scheduling/api/v1/blocks/{id}
```
### List Forms
```bash
GET /acuity-scheduling/api/v1/forms
```
### List Labels
```bash
GET /acuity-scheduling/api/v1/labels
```
## Notes
- Datetime values must be parseable by PHP's `strtotime()` function
- Timezones use IANA format (e.g., "America/New_York")
- Use `max` parameter to limit results (default: 100)
- Use `minDate` and `maxDate` for date-range filtering
- Client update/delete only works for clients with existing appointments
- Rescheduling requires the new datetime to be an available time slot
## Resources
- [Acuity Scheduling API Quick Start](https://developers.acuityscheduling.com/reference/quick-start)
- [Appointments API](https://developers.acuityscheduling.com/reference/get-appointments)
- [Availability API](https://developers.acuityscheduling.com/reference/get-availability-dates)
- [OAuth2 Documentation](https://developers.acuityscheduling.com/docs/oauth2)

View File

@@ -0,0 +1,149 @@
# Airtable Routing Reference
**App name:** `airtable`
**Base URL proxied:** `api.airtable.com`
## API Path Pattern
```
/airtable/v0/{baseId}/{tableIdOrName}
```
## Common Endpoints
### List Records
```bash
GET /airtable/v0/{baseId}/{tableIdOrName}?maxRecords=100
```
With view:
```bash
GET /airtable/v0/{baseId}/{tableIdOrName}?view=Grid%20view&maxRecords=100
```
With filter formula:
```bash
GET /airtable/v0/{baseId}/{tableIdOrName}?filterByFormula={Status}='Active'
```
With field selection:
```bash
GET /airtable/v0/{baseId}/{tableIdOrName}?fields[]=Name&fields[]=Status&fields[]=Email
```
With sorting:
```bash
GET /airtable/v0/{baseId}/{tableIdOrName}?sort[0][field]=Created&sort[0][direction]=desc
```
### Get Record
```bash
GET /airtable/v0/{baseId}/{tableIdOrName}/{recordId}
```
### Create Records
```bash
POST /airtable/v0/{baseId}/{tableIdOrName}
Content-Type: application/json
{
"records": [
{
"fields": {
"Name": "New Record",
"Status": "Active",
"Email": "test@example.com"
}
}
]
}
```
### Update Records (PATCH - partial update)
```bash
PATCH /airtable/v0/{baseId}/{tableIdOrName}
Content-Type: application/json
{
"records": [
{
"id": "recXXXXXXXXXXXXXX",
"fields": {
"Status": "Completed"
}
}
]
}
```
### Update Records (PUT - full replace)
```bash
PUT /airtable/v0/{baseId}/{tableIdOrName}
Content-Type: application/json
{
"records": [
{
"id": "recXXXXXXXXXXXXXX",
"fields": {
"Name": "Updated Name",
"Status": "Active"
}
}
]
}
```
### Delete Records
```bash
DELETE /airtable/v0/{baseId}/{tableIdOrName}?records[]=recXXXXX&records[]=recYYYYY
```
### List Bases
```bash
GET /airtable/v0/meta/bases
```
### Get Base Schema
```bash
GET /airtable/v0/meta/bases/{baseId}/tables
```
## Pagination
**Parameters:**
- `pageSize` - Number of records per request (max 100, default 100)
- `maxRecords` - Maximum total records across all pages
- `offset` - Cursor for next page (returned in response)
Response includes `offset` when more records exist:
```json
{
"records": [...],
"offset": "itrXXXXXXXXXXX"
}
```
Use offset for next page:
```bash
GET /airtable/v0/{baseId}/{tableIdOrName}?pageSize=50&offset=itrXXXXXXXXXXX
```
## Notes
- Authentication is automatic via OAuth
- Base IDs start with `app`
- Table IDs start with `tbl` (can also use table name)
- Record IDs start with `rec`
- Maximum 100 records per request for create/update
- Maximum 10 records per delete request
- Filter formulas use Airtable formula syntax
## Resources
- [API Overview](https://airtable.com/developers/web/api/introduction)
- [List Records](https://airtable.com/developers/web/api/list-records)
- [Create Records](https://airtable.com/developers/web/api/create-records)
- [Update Records](https://airtable.com/developers/web/api/update-record)
- [Delete Records](https://airtable.com/developers/web/api/delete-record)
- [Formula Reference](https://support.airtable.com/docs/formula-field-reference)

View File

@@ -0,0 +1,213 @@
# Apollo Routing Reference
**App name:** `apollo`
**Base URL proxied:** `api.apollo.io`
## API Path Pattern
```
/apollo/v1/{endpoint}
```
## Common Endpoints
### People
#### Search People
```bash
POST /apollo/v1/mixed_people/api_search
Content-Type: application/json
{
"q_organization_name": "Google",
"page": 1,
"per_page": 25
}
```
#### Get Person
```bash
GET /apollo/v1/people/{personId}
```
#### Enrich Person
```bash
POST /apollo/v1/people/match
Content-Type: application/json
{
"email": "john@example.com"
}
```
Or by LinkedIn:
```bash
POST /apollo/v1/people/match
Content-Type: application/json
{
"linkedin_url": "https://linkedin.com/in/johndoe"
}
```
### Organizations
#### Search Organizations
```bash
POST /apollo/v1/organizations/search
Content-Type: application/json
{
"q_organization_name": "Google",
"page": 1,
"per_page": 25
}
```
#### Enrich Organization
```bash
POST /apollo/v1/organizations/enrich
Content-Type: application/json
{
"domain": "google.com"
}
```
### Contacts
#### Search Contacts
```bash
POST /apollo/v1/contacts/search
Content-Type: application/json
{
"page": 1,
"per_page": 25
}
```
#### Create Contact
```bash
POST /apollo/v1/contacts
Content-Type: application/json
{
"first_name": "John",
"last_name": "Doe",
"email": "john@example.com",
"organization_name": "Acme Corp"
}
```
#### Update Contact
```bash
PUT /apollo/v1/contacts/{contactId}
Content-Type: application/json
{
"first_name": "Jane"
}
```
### Accounts
#### Search Accounts
```bash
POST /apollo/v1/accounts/search
Content-Type: application/json
{
"page": 1,
"per_page": 25
}
```
#### Create Account
```bash
POST /apollo/v1/accounts
Content-Type: application/json
{
"name": "Acme Corp",
"domain": "acme.com"
}
```
### Sequences
#### Search Sequences
```bash
POST /apollo/v1/emailer_campaigns/search
Content-Type: application/json
{
"page": 1,
"per_page": 25
}
```
#### Add Contact to Sequence
```bash
POST /apollo/v1/emailer_campaigns/{campaignId}/add_contact_ids
Content-Type: application/json
{
"contact_ids": ["contact_id_1", "contact_id_2"]
}
```
### Email
#### Search Email Messages
```bash
POST /apollo/v1/emailer_messages/search
Content-Type: application/json
{
"contact_id": "{contactId}"
}
```
### Labels
#### List Labels
```bash
GET /apollo/v1/labels
```
## Search Filters
Common search parameters:
- `q_organization_name` - Company name
- `q_person_title` - Job title
- `person_locations` - Array of locations
- `organization_num_employees_ranges` - Employee count ranges
- `q_keywords` - General keyword search
## Notes
- Authentication is automatic - the router injects the API key
- Pagination uses `page` and `per_page` parameters in POST body
- Most list endpoints use POST with `/search` suffix (not GET)
- Email enrichment consumes credits
- Rate limits apply per endpoint
- `people/search` and `mixed_people/search` are deprecated - use `mixed_people/api_search` instead
## Resources
- [API Overview](https://docs.apollo.io/reference/introduction)
- [Search People](https://docs.apollo.io/reference/people-api-search.md)
- [Enrich Person](https://docs.apollo.io/reference/people-enrichment.md)
- [Search Organizations](https://docs.apollo.io/reference/organization-search.md)
- [Enrich Organization](https://docs.apollo.io/reference/organization-enrichment.md)
- [Search Contacts](https://docs.apollo.io/reference/search-for-contacts.md)
- [Create Contact](https://docs.apollo.io/reference/create-a-contact.md)
- [Update Contact](https://docs.apollo.io/reference/update-a-contact.md)
- [Search Accounts](https://docs.apollo.io/reference/search-for-accounts.md)
- [Create Account](https://docs.apollo.io/reference/create-an-account.md)
- [Search Sequences](https://docs.apollo.io/reference/search-for-sequences.md)
- [Add Contacts to Sequence](https://docs.apollo.io/reference/add-contacts-to-sequence.md)
- [Search Email Messages](https://docs.apollo.io/reference/search-for-outreach-emails.md)
- [List Labels](https://docs.apollo.io/reference/get-a-list-of-all-lists.md)
- [LLM Reference](https://docs.apollo.io/llms.txt)

View File

@@ -0,0 +1,154 @@
# Asana Routing Reference
**App name:** `asana`
**Base URL proxied:** `app.asana.com`
## API Path Pattern
```
/asana/api/1.0/{resource}
```
## Common Endpoints
### Get Current User
```bash
GET /asana/api/1.0/users/me
```
### List Workspaces
```bash
GET /asana/api/1.0/workspaces
```
### List Tasks
```bash
GET /asana/api/1.0/tasks?project=PROJECT_GID&opt_fields=name,completed,due_on
```
### Get a Task
```bash
GET /asana/api/1.0/tasks/{task_gid}
```
### Create a Task
```bash
POST /asana/api/1.0/tasks
Content-Type: application/json
{
"data": {
"name": "New task",
"projects": ["PROJECT_GID"],
"assignee": "USER_GID",
"due_on": "2025-03-20",
"notes": "Task description"
}
}
```
### Update a Task
```bash
PUT /asana/api/1.0/tasks/{task_gid}
Content-Type: application/json
{
"data": {
"completed": true
}
}
```
### Delete a Task
```bash
DELETE /asana/api/1.0/tasks/{task_gid}
```
### Get Subtasks
```bash
GET /asana/api/1.0/tasks/{task_gid}/subtasks
```
### Create Subtask
```bash
POST /asana/api/1.0/tasks/{task_gid}/subtasks
Content-Type: application/json
{
"data": {
"name": "Subtask name"
}
}
```
### List Projects
```bash
GET /asana/api/1.0/projects?workspace=WORKSPACE_GID&opt_fields=name,owner,due_date
```
### Get a Project
```bash
GET /asana/api/1.0/projects/{project_gid}
```
### Create a Project
```bash
POST /asana/api/1.0/projects
Content-Type: application/json
{
"data": {
"name": "New Project",
"workspace": "WORKSPACE_GID"
}
}
```
### List Users in Workspace
```bash
GET /asana/api/1.0/workspaces/{workspace_gid}/users?opt_fields=name,email
```
### Create Webhook
```bash
POST /asana/api/1.0/webhooks
Content-Type: application/json
{
"data": {
"resource": "PROJECT_OR_TASK_GID",
"target": "https://example.com/webhook",
"filters": [
{
"resource_type": "task",
"action": "changed",
"fields": ["completed", "due_on"]
}
]
}
}
```
### Delete Webhook
```bash
DELETE /asana/api/1.0/webhooks/{webhook_gid}
```
## Notes
- Resource IDs (GIDs) are strings
- Timestamps are in ISO 8601 format
- Use `opt_fields` to specify which fields to return in responses
- Workspaces are the highest-level organizational unit
- Use cursor-based pagination with `offset` parameter
- Webhook creation requires the target URL to respond with 200 status
## Resources
- [Asana API Overview](https://developers.asana.com)
- [API Reference](https://developers.asana.com/reference)
- [Tasks](https://developers.asana.com/reference/tasks)
- [Projects](https://developers.asana.com/reference/projects)
- [Workspaces](https://developers.asana.com/reference/workspaces)
- [Webhooks](https://developers.asana.com/reference/webhooks)
- [LLM Reference](https://developers.asana.com/llms.txt)

View File

@@ -0,0 +1,122 @@
# Attio Routing Reference
**App name:** `attio`
**Base URL proxied:** `api.attio.com`
## API Path Pattern
```
/attio/v2/{resource}
```
## Common Endpoints
### List Objects
```bash
GET /attio/v2/objects
```
### Get Object
```bash
GET /attio/v2/objects/{object}
```
### List Attributes
```bash
GET /attio/v2/objects/{object}/attributes
```
### Query Records
```bash
POST /attio/v2/objects/{object}/records/query
Content-Type: application/json
{
"limit": 50,
"offset": 0
}
```
### Get Record
```bash
GET /attio/v2/objects/{object}/records/{record_id}
```
### Create Record
```bash
POST /attio/v2/objects/{object}/records
Content-Type: application/json
{
"data": {
"values": {
"name": [{"first_name": "John", "last_name": "Doe", "full_name": "John Doe"}],
"email_addresses": ["john@example.com"]
}
}
}
```
### Update Record
```bash
PATCH /attio/v2/objects/{object}/records/{record_id}
Content-Type: application/json
{
"data": {
"values": {
"job_title": "Engineer"
}
}
}
```
### Delete Record
```bash
DELETE /attio/v2/objects/{object}/records/{record_id}
```
### List Tasks
```bash
GET /attio/v2/tasks?limit=50
```
### Create Task
```bash
POST /attio/v2/tasks
Content-Type: application/json
{
"data": {
"content": "Task description",
"format": "plaintext",
"assignees": [],
"linked_records": []
}
}
```
### List Workspace Members
```bash
GET /attio/v2/workspace_members
```
### Identify Self
```bash
GET /attio/v2/self
```
## Notes
- Object slugs are lowercase snake_case (e.g., `people`, `companies`)
- Record IDs are UUIDs
- For personal-name attributes, include `full_name` when creating records
- Task creation requires `format` and `assignees` fields
- Rate limits: 100 read/sec, 25 write/sec
- Pagination uses `limit` and `offset` parameters
## Resources
- [Attio API Overview](https://docs.attio.com/rest-api/overview)
- [Attio API Reference](https://docs.attio.com/rest-api/endpoint-reference)
- [Records API](https://docs.attio.com/rest-api/endpoint-reference/records)

View File

@@ -0,0 +1,148 @@
# Basecamp Routing Reference
**App name:** `basecamp`
**Base URL proxied:** `3.basecampapi.com/{account_id}`
Note: The gateway automatically injects the account ID from the OAuth connection.
## API Path Pattern
```
/basecamp/{resource}.json
```
All paths must end with `.json`.
## Common Endpoints
### Get Current User
```bash
GET /basecamp/my/profile.json
```
### List People
```bash
GET /basecamp/people.json
```
### List Projects
```bash
GET /basecamp/projects.json
```
### Get Project
```bash
GET /basecamp/projects/{project_id}.json
```
Returns project with `dock` array containing tool IDs.
### Create Project
```bash
POST /basecamp/projects.json
Content-Type: application/json
{
"name": "Project Name",
"description": "Description"
}
```
### Get Todoset
```bash
GET /basecamp/buckets/{project_id}/todosets/{todoset_id}.json
```
### List Todolists
```bash
GET /basecamp/buckets/{project_id}/todosets/{todoset_id}/todolists.json
```
### List Todos
```bash
GET /basecamp/buckets/{project_id}/todolists/{todolist_id}/todos.json
```
### Create Todo
```bash
POST /basecamp/buckets/{project_id}/todolists/{todolist_id}/todos.json
Content-Type: application/json
{
"content": "Todo content",
"due_on": "2026-02-15",
"assignee_ids": [123]
}
```
### Complete Todo
```bash
POST /basecamp/buckets/{project_id}/todos/{todo_id}/completion.json
```
### Get Message Board
```bash
GET /basecamp/buckets/{project_id}/message_boards/{message_board_id}.json
```
### List Messages
```bash
GET /basecamp/buckets/{project_id}/message_boards/{message_board_id}/messages.json
```
### Get Schedule
```bash
GET /basecamp/buckets/{project_id}/schedules/{schedule_id}.json
```
### List Schedule Entries
```bash
GET /basecamp/buckets/{project_id}/schedules/{schedule_id}/entries.json
```
### Get Vault (Documents)
```bash
GET /basecamp/buckets/{project_id}/vaults/{vault_id}.json
```
### List Documents
```bash
GET /basecamp/buckets/{project_id}/vaults/{vault_id}/documents.json
```
### List Campfires
```bash
GET /basecamp/chats.json
```
### Trash Recording
```bash
PUT /basecamp/buckets/{project_id}/recordings/{recording_id}/status/trashed.json
```
## Key Concepts
- **Bucket**: Project content container (bucket_id = project_id)
- **Dock**: Per-project tool list with `id`, `name`, `enabled`
- **Recording**: Any content item (todos, messages, documents)
## Pagination
Uses `Link` header with `rel="next"`:
```
Link: <url>; rel="next"
X-Total-Count: 150
```
## Notes
- All paths must end with `.json`
- Gateway injects account ID automatically
- Uses Basecamp 4 API (bc3-api)
- Rate limit: ~50 requests per 10 seconds per IP
- Check `enabled: true` in dock before using tools
## Resources
- [Basecamp 4 API Documentation](https://github.com/basecamp/bc3-api)
- [API Endpoints](https://github.com/basecamp/bc3-api#endpoints)

View File

@@ -0,0 +1,191 @@
# Box Routing Reference
**App name:** `box`
**Base URL proxied:** `api.box.com`
## API Path Pattern
```
/box/2.0/{resource}
```
## Common Endpoints
### Get Current User
```bash
GET /box/2.0/users/me
```
### Get User
```bash
GET /box/2.0/users/{user_id}
```
### Get Folder
```bash
GET /box/2.0/folders/{folder_id}
```
Root folder ID is `0`.
### List Folder Items
```bash
GET /box/2.0/folders/{folder_id}/items
GET /box/2.0/folders/{folder_id}/items?limit=100&offset=0
```
### Create Folder
```bash
POST /box/2.0/folders
Content-Type: application/json
{
"name": "New Folder",
"parent": {"id": "0"}
}
```
### Update Folder
```bash
PUT /box/2.0/folders/{folder_id}
Content-Type: application/json
{
"name": "Updated Name",
"description": "Description"
}
```
### Copy Folder
```bash
POST /box/2.0/folders/{folder_id}/copy
Content-Type: application/json
{
"name": "Copied Folder",
"parent": {"id": "0"}
}
```
### Delete Folder
```bash
DELETE /box/2.0/folders/{folder_id}
DELETE /box/2.0/folders/{folder_id}?recursive=true
```
### Get File
```bash
GET /box/2.0/files/{file_id}
```
### Download File
```bash
GET /box/2.0/files/{file_id}/content
```
### Update File
```bash
PUT /box/2.0/files/{file_id}
```
### Copy File
```bash
POST /box/2.0/files/{file_id}/copy
```
### Delete File
```bash
DELETE /box/2.0/files/{file_id}
```
### Create Shared Link
```bash
PUT /box/2.0/folders/{folder_id}
Content-Type: application/json
{
"shared_link": {"access": "open"}
}
```
### List Collaborations
```bash
GET /box/2.0/folders/{folder_id}/collaborations
```
### Create Collaboration
```bash
POST /box/2.0/collaborations
Content-Type: application/json
{
"item": {"type": "folder", "id": "123"},
"accessible_by": {"type": "user", "login": "user@example.com"},
"role": "editor"
}
```
### Search
```bash
GET /box/2.0/search?query=keyword
```
### Events
```bash
GET /box/2.0/events
```
### Trash
```bash
GET /box/2.0/folders/trash/items
DELETE /box/2.0/files/{file_id}/trash
DELETE /box/2.0/folders/{folder_id}/trash
```
### Collections
```bash
GET /box/2.0/collections
GET /box/2.0/collections/{collection_id}/items
```
### Recent Items
```bash
GET /box/2.0/recent_items
```
### Webhooks
```bash
GET /box/2.0/webhooks
POST /box/2.0/webhooks
DELETE /box/2.0/webhooks/{webhook_id}
```
## Pagination
Offset-based pagination:
```bash
GET /box/2.0/folders/0/items?limit=100&offset=0
```
Response:
```json
{
"total_count": 250,
"entries": [...],
"offset": 0,
"limit": 100
}
```
## Notes
- Root folder ID is `0`
- File uploads use `upload.box.com` (different base URL)
- Delete operations return 204 No Content
- Some operations require enterprise admin permissions
- Use `fields` parameter to select specific fields
## Resources
- [Box API Reference](https://developer.box.com/reference)
- [Box Developer Documentation](https://developer.box.com/guides)

View File

@@ -0,0 +1,229 @@
# Brevo Routing Reference
**App name:** `brevo`
**Base URL proxied:** `api.brevo.com`
## API Path Pattern
```
/brevo/v3/{resource}
```
## Common Endpoints
### Account
```bash
GET /brevo/v3/account
```
### Contacts
#### List Contacts
```bash
GET /brevo/v3/contacts?limit=50&offset=0
```
#### Get Contact
```bash
GET /brevo/v3/contacts/{identifier}
```
#### Create Contact
```bash
POST /brevo/v3/contacts
Content-Type: application/json
{
"email": "contact@example.com",
"attributes": {"FIRSTNAME": "John", "LASTNAME": "Doe"},
"listIds": [2]
}
```
#### Update Contact
```bash
PUT /brevo/v3/contacts/{identifier}
Content-Type: application/json
{
"attributes": {"FIRSTNAME": "Updated"}
}
```
#### Delete Contact
```bash
DELETE /brevo/v3/contacts/{identifier}
```
### Lists
#### List All Lists
```bash
GET /brevo/v3/contacts/lists
```
#### Create List
```bash
POST /brevo/v3/contacts/lists
Content-Type: application/json
{
"name": "New List",
"folderId": 1
}
```
#### Add Contacts to List
```bash
POST /brevo/v3/contacts/lists/{listId}/contacts/add
Content-Type: application/json
{
"emails": ["contact@example.com"]
}
```
### Folders
#### List Folders
```bash
GET /brevo/v3/contacts/folders
```
#### Create Folder
```bash
POST /brevo/v3/contacts/folders
Content-Type: application/json
{
"name": "New Folder"
}
```
### Transactional Emails
#### Send Email
```bash
POST /brevo/v3/smtp/email
Content-Type: application/json
{
"sender": {"name": "John", "email": "john@example.com"},
"to": [{"email": "recipient@example.com", "name": "Jane"}],
"subject": "Hello!",
"htmlContent": "<html><body><h1>Hi!</h1></body></html>"
}
```
#### Get Email Statistics
```bash
GET /brevo/v3/smtp/statistics/events?limit=50
```
### Email Templates
#### List Templates
```bash
GET /brevo/v3/smtp/templates
```
#### Create Template
```bash
POST /brevo/v3/smtp/templates
Content-Type: application/json
{
"sender": {"name": "Company", "email": "noreply@company.com"},
"templateName": "Welcome Email",
"subject": "Welcome {{params.name}}!",
"htmlContent": "<html><body><h1>Hello {{params.name}}!</h1></body></html>"
}
```
### Email Campaigns
#### List Campaigns
```bash
GET /brevo/v3/emailCampaigns
```
#### Create Campaign
```bash
POST /brevo/v3/emailCampaigns
Content-Type: application/json
{
"name": "Newsletter",
"subject": "Monthly Update",
"sender": {"name": "Company", "email": "news@company.com"},
"htmlContent": "<html><body><h1>News</h1></body></html>",
"recipients": {"listIds": [2]}
}
```
#### Send Campaign
```bash
POST /brevo/v3/emailCampaigns/{campaignId}/sendNow
```
### Senders
#### List Senders
```bash
GET /brevo/v3/senders
```
#### Create Sender
```bash
POST /brevo/v3/senders
Content-Type: application/json
{
"name": "Marketing",
"email": "marketing@company.com"
}
```
### Attributes
#### List Attributes
```bash
GET /brevo/v3/contacts/attributes
```
## Pagination
Brevo uses offset-based pagination:
```bash
GET /brevo/v3/contacts?limit=50&offset=0
```
**Parameters:**
- `limit` - Results per page (max varies by endpoint, typically 500)
- `offset` - Starting index (0-based)
Response includes count:
```json
{
"contacts": [...],
"count": 150
}
```
## Notes
- All endpoints require `/v3/` prefix
- Attribute names must be UPPERCASE
- Contact identifiers: email, phone, or ID
- Template parameters: `{{params.name}}` syntax
- PUT/DELETE return 204 No Content on success
- Rate limit: 300 calls/min (free), higher on paid plans
## Resources
- [Brevo API Overview](https://developers.brevo.com/)
- [API Key Concepts](https://developers.brevo.com/docs/how-it-works)
- [Manage Contacts](https://developers.brevo.com/docs/synchronise-contact-lists)
- [Send Transactional Email](https://developers.brevo.com/docs/send-a-transactional-email)

View File

@@ -0,0 +1,108 @@
# Calendly Routing Reference
**App name:** `calendly`
**Base URL proxied:** `api.calendly.com`
## API Path Pattern
```
/calendly/{resource}
```
## Common Endpoints
### Get Current User
```bash
GET /calendly/users/me
```
### List Event Types
```bash
GET /calendly/event_types?user=USER_URI&active=true
```
### Get an Event Type
```bash
GET /calendly/event_types/{uuid}
```
### List Scheduled Events
```bash
GET /calendly/scheduled_events?user=USER_URI&status=active&min_start_time=2025-03-01T00:00:00Z
```
### Get a Scheduled Event
```bash
GET /calendly/scheduled_events/{uuid}
```
### Cancel a Scheduled Event
```bash
POST /calendly/scheduled_events/{uuid}/cancellation
Content-Type: application/json
{
"reason": "Meeting rescheduled"
}
```
### List Event Invitees
```bash
GET /calendly/scheduled_events/{event_uuid}/invitees
```
### Get Available Times
```bash
GET /calendly/event_type_available_times?event_type=EVENT_TYPE_URI&start_time=2025-03-15T00:00:00Z&end_time=2025-03-22T00:00:00Z
```
### Get User Busy Times
```bash
GET /calendly/user_busy_times?user=USER_URI&start_time=2025-03-15T00:00:00Z&end_time=2025-03-22T00:00:00Z
```
### List Organization Memberships
```bash
GET /calendly/organization_memberships?organization=ORGANIZATION_URI
```
### List Webhook Subscriptions
```bash
GET /calendly/webhook_subscriptions?organization=ORGANIZATION_URI&scope=organization
```
### Create Webhook Subscription
```bash
POST /calendly/webhook_subscriptions
Content-Type: application/json
{
"url": "https://example.com/webhook",
"events": ["invitee.created", "invitee.canceled"],
"organization": "ORGANIZATION_URI",
"scope": "organization"
}
```
### Delete Webhook Subscription
```bash
DELETE /calendly/webhook_subscriptions/{uuid}
```
## Notes
- Resource identifiers are full URIs (e.g., `https://api.calendly.com/users/AAAA`)
- Timestamps are in ISO 8601 format
- Availability endpoints have a 7-day maximum range per request
- Webhooks require a paid Calendly plan (Standard, Teams, or Enterprise)
- Available webhook events: `invitee.created`, `invitee.canceled`, `routing_form_submission.created`
- Use `page_token` for pagination
## Resources
- [Calendly Developer Portal](https://developer.calendly.com/)
- [API Reference](https://developer.calendly.com/api-docs)
- [Event Types](https://developer.calendly.com/api-docs/e2f95ebd44914-list-user-s-event-types)
- [Scheduled Events](https://developer.calendly.com/api-docs/d61a40b4ea90e-list-events)
- [Availability](https://developer.calendly.com/api-docs/4241cf0f7f0d4-get-event-type-available-times)
- [Webhooks](https://developer.calendly.com/api-docs/c1ddc06ce1f1a-create-webhook-subscription)

View File

@@ -0,0 +1,178 @@
# CallRail Routing Reference
**App name:** `callrail`
**Base URL proxied:** `api.callrail.com`
## API Path Pattern
```
/callrail/v3/a/{account_id}/{resource}.json
```
**Important:** All CallRail API endpoints end with `.json`. Account IDs start with `ACC`.
## Common Endpoints
### Accounts
#### List Accounts
```bash
GET /callrail/v3/a.json
```
#### Get Account
```bash
GET /callrail/v3/a/{account_id}.json
```
### Companies
#### List Companies
```bash
GET /callrail/v3/a/{account_id}/companies.json
```
#### Get Company
```bash
GET /callrail/v3/a/{account_id}/companies/{company_id}.json
```
### Calls
#### List Calls
```bash
GET /callrail/v3/a/{account_id}/calls.json
```
Query parameters: `page`, `per_page`, `date_range`, `start_date`, `end_date`, `company_id`, `tracker_id`, `search`, `fields`, `sort`, `order`
#### Get Call
```bash
GET /callrail/v3/a/{account_id}/calls/{call_id}.json
```
#### Update Call
```bash
PUT /callrail/v3/a/{account_id}/calls/{call_id}.json
Content-Type: application/json
{
"customer_name": "John Smith",
"note": "Follow up scheduled",
"lead_status": "good_lead"
}
```
#### Call Summary
```bash
GET /callrail/v3/a/{account_id}/calls/summary.json
```
#### Call Timeseries
```bash
GET /callrail/v3/a/{account_id}/calls/timeseries.json
```
### Trackers
#### List Trackers
```bash
GET /callrail/v3/a/{account_id}/trackers.json
```
#### Get Tracker
```bash
GET /callrail/v3/a/{account_id}/trackers/{tracker_id}.json
```
### Tags
#### List Tags
```bash
GET /callrail/v3/a/{account_id}/tags.json
```
#### Create Tag
```bash
POST /callrail/v3/a/{account_id}/tags.json
Content-Type: application/json
{
"name": "New Tag",
"tag_level": "account",
"color": "blue1"
}
```
#### Update Tag
```bash
PUT /callrail/v3/a/{account_id}/tags/{tag_id}.json
Content-Type: application/json
{
"name": "Updated Name",
"color": "green1"
}
```
#### Delete Tag
```bash
DELETE /callrail/v3/a/{account_id}/tags/{tag_id}.json
```
### Users
#### List Users
```bash
GET /callrail/v3/a/{account_id}/users.json
```
#### Get User
```bash
GET /callrail/v3/a/{account_id}/users/{user_id}.json
```
### Integrations
#### List Integrations
```bash
GET /callrail/v3/a/{account_id}/integrations.json?company_id={company_id}
```
### Notifications
#### List Notifications
```bash
GET /callrail/v3/a/{account_id}/notifications.json
```
## ID Prefixes
- Account IDs: `ACC`
- Company IDs: `COM`
- Call IDs: `CAL`
- Tracker IDs: `TRK`
- User IDs: `USR`
## Pagination
Uses offset-based pagination with `page` and `per_page` parameters:
```bash
GET /callrail/v3/a/{account_id}/calls.json?page=2&per_page=50
# Response includes page, per_page, total_pages, total_records
```
For calls endpoint, relative pagination is available via `relative_pagination=true`.
## Notes
- All endpoints end with `.json`
- Communication records retained for 25 months
- Rate limits: 1,000/hour, 10,000/day for general API
- ISO 8601 date format with timezone
## Resources
- [CallRail API Documentation](https://apidocs.callrail.com/)
- [CallRail Help Center - API](https://support.callrail.com/hc/en-us/sections/4426797289229-API)

View File

@@ -0,0 +1,203 @@
# Chargebee Routing Reference
**App name:** `chargebee`
**Base URL proxied:** `{subdomain}.chargebee.com`
The router automatically handles the subdomain from your connection.
## API Path Pattern
```
/chargebee/api/v2/{endpoint}
```
## Common Endpoints
### Customers
#### List Customers
```bash
GET /chargebee/api/v2/customers?limit=10
```
#### Get Customer
```bash
GET /chargebee/api/v2/customers/{customerId}
```
#### Create Customer
```bash
POST /chargebee/api/v2/customers
Content-Type: application/x-www-form-urlencoded
first_name=John&last_name=Doe&email=john@example.com
```
#### Update Customer
```bash
POST /chargebee/api/v2/customers/{customerId}
Content-Type: application/x-www-form-urlencoded
first_name=Jane
```
### Subscriptions
#### List Subscriptions
```bash
GET /chargebee/api/v2/subscriptions?limit=10
```
#### Get Subscription
```bash
GET /chargebee/api/v2/subscriptions/{subscriptionId}
```
#### Create Subscription
```bash
POST /chargebee/api/v2/subscriptions
Content-Type: application/x-www-form-urlencoded
plan_id=basic-plan&customer[email]=john@example.com&customer[first_name]=John
```
#### Cancel Subscription
```bash
POST /chargebee/api/v2/subscriptions/{subscriptionId}/cancel
Content-Type: application/x-www-form-urlencoded
end_of_term=true
```
### Item Prices (Product Catalog 2.0)
#### List Item Prices
```bash
GET /chargebee/api/v2/item_prices?limit=10
```
#### Get Item Price
```bash
GET /chargebee/api/v2/item_prices/{itemPriceId}
```
### Items (Product Catalog 2.0)
#### List Items
```bash
GET /chargebee/api/v2/items?limit=10
```
#### Get Item
```bash
GET /chargebee/api/v2/items/{itemId}
```
### Plans (Product Catalog 1.0 - Legacy)
#### List Plans
```bash
GET /chargebee/api/v2/plans?limit=10
```
#### Get Plan
```bash
GET /chargebee/api/v2/plans/{planId}
```
### Invoices
#### List Invoices
```bash
GET /chargebee/api/v2/invoices?limit=10
```
#### Get Invoice
```bash
GET /chargebee/api/v2/invoices/{invoiceId}
```
#### Download Invoice PDF
```bash
POST /chargebee/api/v2/invoices/{invoiceId}/pdf
```
### Transactions
#### List Transactions
```bash
GET /chargebee/api/v2/transactions?limit=10
```
### Hosted Pages
#### Checkout New Subscription
```bash
POST /chargebee/api/v2/hosted_pages/checkout_new_for_items
Content-Type: application/x-www-form-urlencoded
subscription[plan_id]=basic-plan&customer[email]=john@example.com
```
#### Manage Payment Sources
```bash
POST /chargebee/api/v2/hosted_pages/manage_payment_sources
Content-Type: application/x-www-form-urlencoded
customer[id]=cust_123
```
### Portal Sessions
#### Create Portal Session
```bash
POST /chargebee/api/v2/portal_sessions
Content-Type: application/x-www-form-urlencoded
customer[id]=cust_123
```
## Filtering
Use filter parameters:
```bash
GET /chargebee/api/v2/subscriptions?status[is]=active
GET /chargebee/api/v2/customers?email[is]=john@example.com
GET /chargebee/api/v2/invoices?date[after]=1704067200
```
## Notes
- Authentication is automatic - the router injects Basic auth from your API key
- Subdomain is automatically determined from your connection
- Uses form-urlencoded data for POST requests
- Nested objects use bracket notation: `customer[email]`
- Timestamps are Unix timestamps
- List responses include `next_offset` for pagination
- Status values: `active`, `cancelled`, `non_renewing`, etc.
- **Product Catalog versions**: Use `item_prices` and `items` for PC 2.0, or `plans` and `addons` for PC 1.0
## Resources
- [Getting Started](https://apidocs.chargebee.com/docs/api)
- [List Customers](https://apidocs.chargebee.com/docs/api/customers/list-customers.md)
- [Retrieve a Customer](https://apidocs.chargebee.com/docs/api/customers/retrieve-a-customer.md)
- [Create a Customer](https://apidocs.chargebee.com/docs/api/customers/create-a-customer.md)
- [Update a Customer](https://apidocs.chargebee.com/docs/api/customers/update-a-customer.md)
- [List Subscriptions](https://apidocs.chargebee.com/docs/api/subscriptions/list-subscriptions.md)
- [Retrieve a Subscription](https://apidocs.chargebee.com/docs/api/subscriptions/retrieve-a-subscription.md)
- [Create a Subscription](https://apidocs.chargebee.com/docs/api/subscriptions/create-subscription-for-items.md)
- [Cancel a Subscription](https://apidocs.chargebee.com/docs/api/subscriptions/cancel-subscription-for-items.md)
- [List Items](https://apidocs.chargebee.com/docs/api/items/list-items.md)
- [Retrieve an Item](https://apidocs.chargebee.com/docs/api/items/retrieve-an-item.md)
- [List Item Prices](https://apidocs.chargebee.com/docs/api/item_prices/list-item-prices.md)
- [Retrieve an Item Price](https://apidocs.chargebee.com/docs/api/item_prices/retrieve-an-item-price.md)
- [List Plans](https://apidocs.chargebee.com/docs/api/v2/pcv-1/plans/list-plans.md)
- [Retrieve a Plan](https://apidocs.chargebee.com/docs/api/v2/pcv-1/plans/retrieve-a-plan.md)
- [List Invoices](https://apidocs.chargebee.com/docs/api/invoices/list-invoices.md)
- [Retrieve an Invoice](https://apidocs.chargebee.com/docs/api/invoices/retrieve-an-invoice.md)
- [Download Invoice as PDF](https://apidocs.chargebee.com/docs/api/invoices/download-e-invoice.md)
- [List Transactions](https://apidocs.chargebee.com/docs/api/transactions/list-transactions.md)
- [Checkout New Subscription](https://apidocs.chargebee.com/docs/api/hosted_pages/create-checkout-for-a-new-subscription.md)
- [Manage Payment Sources](https://apidocs.chargebee.com/docs/api/hosted_pages/manage-payment-sources.md)
- [Create a Portal Session](https://apidocs.chargebee.com/docs/api/portal_sessions/create-a-portal-session.md)

View File

@@ -0,0 +1,274 @@
# ClickFunnels Routing Reference
**App name:** `clickfunnels`
**Base URL proxied:** `{subdomain}.myclickfunnels.com`
The router automatically handles the subdomain from your OAuth connection.
## API Path Pattern
```
/clickfunnels/api/v2/{resource}
```
## Required Headers
THe `User-Agent` header is required to avoid Cloudflare blocks:
```
User-Agent: Maton/1.0
```
## Common Endpoints
### Teams
#### List Teams
```bash
GET /clickfunnels/api/v2/teams
```
#### Get Team
```bash
GET /clickfunnels/api/v2/teams/{team_id}
```
### Workspaces
#### List Workspaces
```bash
GET /clickfunnels/api/v2/teams/{team_id}/workspaces
```
#### Get Workspace
```bash
GET /clickfunnels/api/v2/workspaces/{workspace_id}
```
### Contacts
#### List Contacts
```bash
GET /clickfunnels/api/v2/workspaces/{workspace_id}/contacts
```
#### Get Contact
```bash
GET /clickfunnels/api/v2/contacts/{contact_id}
```
#### Create Contact
```bash
POST /clickfunnels/api/v2/workspaces/{workspace_id}/contacts
Content-Type: application/json
{
"contact": {
"email_address": "user@example.com",
"first_name": "John",
"last_name": "Doe"
}
}
```
#### Update Contact
```bash
PUT /clickfunnels/api/v2/contacts/{contact_id}
Content-Type: application/json
{
"contact": {
"first_name": "Updated"
}
}
```
#### Delete Contact
```bash
DELETE /clickfunnels/api/v2/contacts/{contact_id}
```
#### Upsert Contact
```bash
POST /clickfunnels/api/v2/workspaces/{workspace_id}/contacts/upsert
```
### Products
#### List Products
```bash
GET /clickfunnels/api/v2/workspaces/{workspace_id}/products
```
#### Get Product
```bash
GET /clickfunnels/api/v2/products/{product_id}
```
#### Create Product
```bash
POST /clickfunnels/api/v2/workspaces/{workspace_id}/products
Content-Type: application/json
{
"product": {
"name": "New Product",
"visible_in_store": true
}
}
```
#### Archive/Unarchive Product
```bash
POST /clickfunnels/api/v2/products/{product_id}/archive
POST /clickfunnels/api/v2/products/{product_id}/unarchive
```
### Orders
#### List Orders
```bash
GET /clickfunnels/api/v2/workspaces/{workspace_id}/orders
```
#### Get Order
```bash
GET /clickfunnels/api/v2/orders/{order_id}
```
### Fulfillments
#### List Fulfillments
```bash
GET /clickfunnels/api/v2/workspaces/{workspace_id}/fulfillments
```
#### Create Fulfillment
```bash
POST /clickfunnels/api/v2/workspaces/{workspace_id}/fulfillments
```
#### Cancel Fulfillment
```bash
POST /clickfunnels/api/v2/fulfillments/{fulfillment_id}/cancel
```
### Courses & Enrollments
#### List Courses
```bash
GET /clickfunnels/api/v2/workspaces/{workspace_id}/courses
```
#### List Enrollments
```bash
GET /clickfunnels/api/v2/courses/{course_id}/enrollments
```
#### Create Enrollment
```bash
POST /clickfunnels/api/v2/courses/{course_id}/enrollments
```
### Forms & Submissions
#### List Forms
```bash
GET /clickfunnels/api/v2/workspaces/{workspace_id}/forms
```
#### List Submissions
```bash
GET /clickfunnels/api/v2/forms/{form_id}/submissions
```
### Webhooks
#### List Webhook Endpoints
```bash
GET /clickfunnels/api/v2/workspaces/{workspace_id}/webhooks/outgoing/endpoints
```
#### Create Webhook Endpoint
```bash
POST /clickfunnels/api/v2/workspaces/{workspace_id}/webhooks/outgoing/endpoints
Content-Type: application/json
{
"webhooks_outgoing_endpoint": {
"url": "https://example.com/webhook",
"name": "My Webhook",
"event_type_ids": ["contact.created"]
}
}
```
#### Delete Webhook Endpoint
```bash
DELETE /clickfunnels/api/v2/webhooks/outgoing/endpoints/{endpoint_id}
```
### Images
#### List Images
```bash
GET /clickfunnels/api/v2/workspaces/{workspace_id}/images
```
#### Upload Image via URL
```bash
POST /clickfunnels/api/v2/workspaces/{workspace_id}/images
Content-Type: application/json
{
"image": {
"upload_source_url": "https://example.com/image.png"
}
}
```
## Pagination
Cursor-based pagination with 20 items per page:
```bash
# First page
GET /clickfunnels/api/v2/workspaces/{workspace_id}/contacts
# Next page (use ID from Pagination-Next header)
GET /clickfunnels/api/v2/workspaces/{workspace_id}/contacts?after=1087091674
```
Response headers:
- `Pagination-Next`: ID of last item
- `Link`: Full URL for next page
## Filtering
```bash
# Single filter
GET /clickfunnels/api/v2/workspaces/{workspace_id}/contacts?filter[email_address]=user@example.com
# Multiple values (OR)
GET /clickfunnels/api/v2/workspaces/{workspace_id}/contacts?filter[email_address]=a@example.com,b@example.com
# Multiple filters (AND)
GET /clickfunnels/api/v2/workspaces/{workspace_id}/contacts?filter[email_address]=user@example.com&filter[id]=123
```
## Notes
- Subdomain is automatically determined from your OAuth connection
- IDs are integers; each resource also has a `public_id` string
- Request bodies use nested keys: `{"contact": {...}}`, `{"product": {...}}`
- List endpoints: use `workspaces/{id}/{resource}` pattern
- Single resource: use `/{resource}/{id}` pattern (no workspace prefix)
- Delete operations return HTTP 204 with empty body
- Max 20 items per page, use `after` parameter for pagination
## Resources
- [ClickFunnels API Introduction](https://developers.myclickfunnels.com/docs/intro)
- [ClickFunnels API Reference](https://developers.myclickfunnels.com/reference)
- [Pagination Guide](https://developers.myclickfunnels.com/docs/pagination)
- [Filtering Guide](https://developers.myclickfunnels.com/docs/filtering)

View File

@@ -0,0 +1,152 @@
# ClickSend Routing Reference
**App name:** `clicksend`
**Base URL proxied:** `rest.clicksend.com`
## API Path Pattern
```
/clicksend/v3/{resource}
```
## Common Endpoints
### Account
#### Get Account
```bash
GET /clicksend/v3/account
```
### SMS
#### Send SMS
```bash
POST /clicksend/v3/sms/send
Content-Type: application/json
{
"messages": [
{
"to": "+15551234567",
"body": "Hello!",
"source": "api"
}
]
}
```
#### SMS History
```bash
GET /clicksend/v3/sms/history
```
#### SMS Templates
```bash
GET /clicksend/v3/sms/templates
POST /clicksend/v3/sms/templates
PUT /clicksend/v3/sms/templates/{template_id}
DELETE /clicksend/v3/sms/templates/{template_id}
```
### MMS
#### Send MMS
```bash
POST /clicksend/v3/mms/send
```
#### MMS History
```bash
GET /clicksend/v3/mms/history
```
### Voice
#### Send Voice
```bash
POST /clicksend/v3/voice/send
```
#### Voice Languages
```bash
GET /clicksend/v3/voice/lang
```
### Contact Lists
#### List All Lists
```bash
GET /clicksend/v3/lists
```
#### CRUD Operations
```bash
GET /clicksend/v3/lists/{list_id}
POST /clicksend/v3/lists
PUT /clicksend/v3/lists/{list_id}
DELETE /clicksend/v3/lists/{list_id}
```
### Contacts
#### List Contacts
```bash
GET /clicksend/v3/lists/{list_id}/contacts
```
#### CRUD Operations
```bash
GET /clicksend/v3/lists/{list_id}/contacts/{contact_id}
POST /clicksend/v3/lists/{list_id}/contacts
PUT /clicksend/v3/lists/{list_id}/contacts/{contact_id}
DELETE /clicksend/v3/lists/{list_id}/contacts/{contact_id}
```
### Email Addresses
```bash
GET /clicksend/v3/email/addresses
POST /clicksend/v3/email/addresses
DELETE /clicksend/v3/email/addresses/{email_address_id}
```
### Utility
```bash
GET /clicksend/v3/countries
```
## Response Format
All responses follow this structure:
```json
{
"http_code": 200,
"response_code": "SUCCESS",
"response_msg": "Description",
"data": { ... }
}
```
## Pagination
Uses page-based pagination:
```bash
GET /clicksend/v3/lists?page=2&limit=50
# Response includes total, per_page, current_page, last_page
```
## Notes
- Phone numbers must be E.164 format
- Timestamps are Unix timestamps
- Voice access requires account permissions
- SMS over 160 chars split into segments
## Resources
- [ClickSend Developer Portal](https://developers.clicksend.com/)
- [ClickSend REST API v3](https://developers.clicksend.com/docs)

View File

@@ -0,0 +1,155 @@
# ClickUp Routing Reference
**App name:** `clickup`
**Base URL proxied:** `api.clickup.com`
## API Path Pattern
```
/clickup/api/v2/{resource}
```
## ClickUp Hierarchy
Workspace (team) → Space → Folder → List → Task
## Common Endpoints
### Get Current User
```bash
GET /clickup/api/v2/user
```
### Get Workspaces (Teams)
```bash
GET /clickup/api/v2/team
```
### Get Spaces
```bash
GET /clickup/api/v2/team/{team_id}/space
```
### Get Folders
```bash
GET /clickup/api/v2/space/{space_id}/folder
```
### Get Lists
```bash
GET /clickup/api/v2/folder/{folder_id}/list
```
### Get Folderless Lists
```bash
GET /clickup/api/v2/space/{space_id}/list
```
### Get Tasks
```bash
GET /clickup/api/v2/list/{list_id}/task?include_closed=true
```
### Get a Task
```bash
GET /clickup/api/v2/task/{task_id}
```
### Create a Task
```bash
POST /clickup/api/v2/list/{list_id}/task
Content-Type: application/json
{
"name": "Task name",
"description": "Task description",
"assignees": [123],
"status": "to do",
"priority": 2,
"due_date": 1709251200000,
"tags": ["api", "backend"]
}
```
### Update a Task
```bash
PUT /clickup/api/v2/task/{task_id}
Content-Type: application/json
{
"status": "complete",
"priority": null
}
```
### Delete a Task
```bash
DELETE /clickup/api/v2/task/{task_id}
```
### Get Filtered Team Tasks
```bash
GET /clickup/api/v2/team/{team_id}/task?statuses[]=to%20do&assignees[]=123
```
### Create Space
```bash
POST /clickup/api/v2/team/{team_id}/space
Content-Type: application/json
{
"name": "New Space",
"multiple_assignees": true
}
```
### Create Folder
```bash
POST /clickup/api/v2/space/{space_id}/folder
Content-Type: application/json
{"name": "New Folder"}
```
### Create List
```bash
POST /clickup/api/v2/folder/{folder_id}/list
Content-Type: application/json
{"name": "New List"}
```
### Create Webhook
```bash
POST /clickup/api/v2/team/{team_id}/webhook
Content-Type: application/json
{
"endpoint": "https://example.com/webhook",
"events": ["taskCreated", "taskUpdated", "taskDeleted"]
}
```
### Delete Webhook
```bash
DELETE /clickup/api/v2/webhook/{webhook_id}
```
## Notes
- Task IDs are strings, timestamps are Unix milliseconds
- Priority values: 1=urgent, 2=high, 3=normal, 4=low, null=none
- Workspaces are called "teams" in the API
- Status values must match exact status names configured in the list
- Use page-based pagination with `page` parameter (0-indexed)
- Responses are limited to 100 items per page
## Resources
- [ClickUp API Overview](https://developer.clickup.com/docs/Getting%20Started.md)
- [Tasks](https://developer.clickup.com/reference/gettasks.md)
- [Spaces](https://developer.clickup.com/reference/getspaces.md)
- [Lists](https://developer.clickup.com/reference/getlists.md)
- [Webhooks](https://developer.clickup.com/reference/createwebhook.md)
- [Rate Limits](https://developer.clickup.com/docs/rate-limits.md)
- [LLM Reference](https://developer.clickup.com/llms.txt)

View File

@@ -0,0 +1,121 @@
# Cognito Forms Routing Reference
**App name:** `cognito-forms`
**Base URL proxied:** `www.cognitoforms.com`
## API Path Pattern
```
/cognito-forms/api/{endpoint}
```
## Common Endpoints
### Forms
#### List Forms
```bash
GET /cognito-forms/api/forms
```
#### Get Form
```bash
GET /cognito-forms/api/forms/{formId}
```
### Entries
#### List Entries
```bash
GET /cognito-forms/api/forms/{formId}/entries
```
#### Get Entry
```bash
GET /cognito-forms/api/forms/{formId}/entries/{entryId}
```
#### Create Entry
```bash
POST /cognito-forms/api/forms/{formId}/entries
Content-Type: application/json
{
"Name": {
"First": "John",
"Last": "Doe"
},
"Email": "john.doe@example.com"
}
```
#### Update Entry
```bash
PUT /cognito-forms/api/forms/{formId}/entries/{entryId}
Content-Type: application/json
{
"Name": {
"First": "Jane",
"Last": "Doe"
},
"Email": "jane.doe@example.com"
}
```
#### Delete Entry
```bash
DELETE /cognito-forms/api/forms/{formId}/entries/{entryId}
```
### Documents
#### Get Document
```bash
GET /cognito-forms/api/forms/{formId}/entries/{entryId}/documents/{templateNumber}
```
### Files
#### Get File
```bash
GET /cognito-forms/api/files/{fileId}
```
### Form Availability
#### Set Form Availability
```bash
PUT /cognito-forms/api/forms/{formId}/availability
Content-Type: application/json
{
"start": "2026-03-01T00:00:00Z",
"end": "2026-03-31T23:59:59Z",
"message": "This form is currently unavailable."
}
```
## Field Types
Complex fields use nested JSON objects:
- **Name**: `{"First": "...", "Last": "..."}`
- **Address**: `{"Line1": "...", "Line2": "...", "City": "...", "State": "...", "PostalCode": "..."}`
- **Choice (single)**: `"OptionValue"`
- **Choice (multiple)**: `["Option1", "Option2"]`
## Notes
- Form IDs can be internal form name (string) or numeric ID
- Entry IDs can be entry number (integer) or entry ID (GUID)
- Authentication is automatic - the router injects OAuth token
- Rate limit: 100 requests per 60 seconds
- File and document endpoints return temporary download URLs
- API scopes: Read, Read/Write, or Read/Write/Delete
## Resources
- [Cognito Forms API Overview](https://www.cognitoforms.com/support/475/data-integration/cognito-forms-api)
- [REST API Reference](https://www.cognitoforms.com/support/476/data-integration/cognito-forms-api/rest-api-reference)
- [API Reference](https://www.cognitoforms.com/support/476/data-integration/cognito-forms-api/api-reference)

View File

@@ -0,0 +1,130 @@
# Constant Contact Routing Reference
**App name:** `constant-contact`
**Base URL proxied:** `api.cc.email`
## API Path Pattern
```
/constant-contact/v3/{resource}
```
## Common Endpoints
### List Contacts
```bash
GET /constant-contact/v3/contacts
```
### Get Contact
```bash
GET /constant-contact/v3/contacts/{contact_id}
```
### Create Contact
```bash
POST /constant-contact/v3/contacts
Content-Type: application/json
{
"email_address": {
"address": "john@example.com",
"permission_to_send": "implicit"
},
"first_name": "John",
"last_name": "Doe",
"list_memberships": ["list-uuid"]
}
```
### Update Contact
```bash
PUT /constant-contact/v3/contacts/{contact_id}
Content-Type: application/json
{
"first_name": "John",
"last_name": "Smith"
}
```
### Delete Contact
```bash
DELETE /constant-contact/v3/contacts/{contact_id}
```
### List Contact Lists
```bash
GET /constant-contact/v3/contact_lists
```
### Create Contact List
```bash
POST /constant-contact/v3/contact_lists
Content-Type: application/json
{
"name": "Newsletter Subscribers",
"description": "Main newsletter list"
}
```
### List Email Campaigns
```bash
GET /constant-contact/v3/emails
```
### Create Email Campaign
```bash
POST /constant-contact/v3/emails
Content-Type: application/json
{
"name": "March Newsletter",
"email_campaign_activities": [
{
"format_type": 5,
"from_name": "Company",
"from_email": "marketing@example.com",
"reply_to_email": "reply@example.com",
"subject": "Newsletter",
"html_content": "<html><body>Hello</body></html>"
}
]
}
```
### List Segments
```bash
GET /constant-contact/v3/segments
```
### List Tags
```bash
GET /constant-contact/v3/contact_tags
```
### Get Account Summary
```bash
GET /constant-contact/v3/account/summary
```
### Email Campaign Summaries
```bash
GET /constant-contact/v3/reports/summary_reports/email_campaign_summaries
```
## Notes
- Authentication is automatic - the router injects the OAuth token
- Resource IDs use UUID format (36 characters with hyphens)
- All dates use ISO-8601 format
- Uses cursor-based pagination with `limit` and `cursor` parameters
- Maximum 1,000 contact lists per account
- Bulk operations are asynchronous
## Resources
- [V3 API Overview](https://developer.constantcontact.com/api_guide/getting_started.html)
- [API Reference](https://developer.constantcontact.com/api_reference/index.html)
- [Technical Overview](https://developer.constantcontact.com/api_guide/v3_technical_overview.html)

View File

@@ -0,0 +1,204 @@
# Dropbox Routing Reference
**App name:** `dropbox`
**Base URL proxied:** `api.dropboxapi.com`
## API Path Pattern
```
/dropbox/2/{endpoint}
```
**Important:** All Dropbox API v2 endpoints use HTTP POST with JSON request bodies.
## Common Endpoints
### Users
#### Get Current Account
```bash
POST /dropbox/2/users/get_current_account
Content-Type: application/json
null
```
#### Get Space Usage
```bash
POST /dropbox/2/users/get_space_usage
Content-Type: application/json
null
```
### Files
#### List Folder
```bash
POST /dropbox/2/files/list_folder
Content-Type: application/json
{
"path": ""
}
```
Use empty string `""` for root folder.
#### Continue Listing
```bash
POST /dropbox/2/files/list_folder/continue
Content-Type: application/json
{
"cursor": "..."
}
```
#### Get Metadata
```bash
POST /dropbox/2/files/get_metadata
Content-Type: application/json
{
"path": "/document.pdf"
}
```
#### Create Folder
```bash
POST /dropbox/2/files/create_folder_v2
Content-Type: application/json
{
"path": "/New Folder",
"autorename": false
}
```
#### Copy
```bash
POST /dropbox/2/files/copy_v2
Content-Type: application/json
{
"from_path": "/source/file.pdf",
"to_path": "/destination/file.pdf"
}
```
#### Move
```bash
POST /dropbox/2/files/move_v2
Content-Type: application/json
{
"from_path": "/old/file.pdf",
"to_path": "/new/file.pdf"
}
```
#### Delete
```bash
POST /dropbox/2/files/delete_v2
Content-Type: application/json
{
"path": "/file-to-delete.pdf"
}
```
#### Get Temporary Link
```bash
POST /dropbox/2/files/get_temporary_link
Content-Type: application/json
{
"path": "/document.pdf"
}
```
### Search
#### Search Files
```bash
POST /dropbox/2/files/search_v2
Content-Type: application/json
{
"query": "document"
}
```
### Revisions
#### List Revisions
```bash
POST /dropbox/2/files/list_revisions
Content-Type: application/json
{
"path": "/document.pdf"
}
```
### Tags
#### Get Tags
```bash
POST /dropbox/2/files/tags/get
Content-Type: application/json
{
"paths": ["/document.pdf"]
}
```
#### Add Tag
```bash
POST /dropbox/2/files/tags/add
Content-Type: application/json
{
"path": "/document.pdf",
"tag_text": "important"
}
```
#### Remove Tag
```bash
POST /dropbox/2/files/tags/remove
Content-Type: application/json
{
"path": "/document.pdf",
"tag_text": "important"
}
```
## Pagination
Dropbox uses cursor-based pagination:
```bash
POST /dropbox/2/files/list_folder
# Response includes "cursor" and "has_more": true/false
POST /dropbox/2/files/list_folder/continue
# Use cursor from previous response
```
## Notes
- All endpoints use POST method
- Request bodies are JSON
- Use empty string `""` for root folder path
- Paths are case-insensitive but case-preserving
- Tag text must match pattern `[\w]+` (alphanumeric and underscores)
- Temporary links expire after 4 hours
## Resources
- [Dropbox HTTP API Overview](https://www.dropbox.com/developers/documentation/http/overview)
- [Dropbox API Explorer](https://dropbox.github.io/dropbox-api-v2-explorer/)
- [DBX File Access Guide](https://developers.dropbox.com/dbx-file-access-guide)

View File

@@ -0,0 +1,214 @@
# Eventbrite Routing Reference
**App name:** `eventbrite`
**Base URL proxied:** `www.eventbriteapi.com`
## API Path Pattern
```
/eventbrite/v3/{resource}/
```
Note: All Eventbrite API paths should end with a trailing slash.
## Common Endpoints
### Get Current User
```bash
GET /eventbrite/v3/users/me/
```
### List User Organizations
```bash
GET /eventbrite/v3/users/me/organizations/
```
### List User Orders
```bash
GET /eventbrite/v3/users/me/orders/
```
### List Organization Events
```bash
GET /eventbrite/v3/organizations/{organization_id}/events/
```
Query parameters:
- `status` - Filter: `draft`, `live`, `started`, `ended`, `completed`, `canceled`
- `order_by` - Sort: `start_asc`, `start_desc`, `created_asc`, `created_desc`
- `time_filter` - Filter: `current_future`, `past`
### Create Event
```bash
POST /eventbrite/v3/organizations/{organization_id}/events/
Content-Type: application/json
{
"event": {
"name": {"html": "My Event"},
"start": {"timezone": "America/Los_Angeles", "utc": "2026-03-01T19:00:00Z"},
"end": {"timezone": "America/Los_Angeles", "utc": "2026-03-01T22:00:00Z"},
"currency": "USD"
}
}
```
### Get Event
```bash
GET /eventbrite/v3/events/{event_id}/
```
### Update Event
```bash
POST /eventbrite/v3/events/{event_id}/
Content-Type: application/json
{
"event": {
"name": {"html": "Updated Name"}
}
}
```
### Publish Event
```bash
POST /eventbrite/v3/events/{event_id}/publish/
```
### Cancel Event
```bash
POST /eventbrite/v3/events/{event_id}/cancel/
```
### Delete Event
```bash
DELETE /eventbrite/v3/events/{event_id}/
```
### List Ticket Classes
```bash
GET /eventbrite/v3/events/{event_id}/ticket_classes/
```
### Create Ticket Class
```bash
POST /eventbrite/v3/events/{event_id}/ticket_classes/
Content-Type: application/json
{
"ticket_class": {
"name": "General Admission",
"quantity_total": 100,
"cost": "USD,2500"
}
}
```
### List Event Attendees
```bash
GET /eventbrite/v3/events/{event_id}/attendees/
```
### List Event Orders
```bash
GET /eventbrite/v3/events/{event_id}/orders/
```
### Get Order
```bash
GET /eventbrite/v3/orders/{order_id}/
```
### List Organization Venues
```bash
GET /eventbrite/v3/organizations/{organization_id}/venues/
```
### Create Venue
```bash
POST /eventbrite/v3/organizations/{organization_id}/venues/
Content-Type: application/json
{
"venue": {
"name": "Conference Center",
"address": {
"address_1": "123 Main St",
"city": "San Francisco",
"region": "CA",
"postal_code": "94105",
"country": "US"
}
}
}
```
### Get Venue
```bash
GET /eventbrite/v3/venues/{venue_id}/
```
### List Categories
```bash
GET /eventbrite/v3/categories/
```
### Get Category
```bash
GET /eventbrite/v3/categories/{category_id}/
```
### List Subcategories
```bash
GET /eventbrite/v3/subcategories/
```
### List Formats
```bash
GET /eventbrite/v3/formats/
```
### List Countries
```bash
GET /eventbrite/v3/system/countries/
```
### List Regions
```bash
GET /eventbrite/v3/system/regions/
```
## Expansions
Include related data with the `expand` parameter:
```bash
GET /eventbrite/v3/events/{event_id}/?expand=venue,ticket_classes,category
```
Available expansions: `venue`, `ticket_classes`, `category`, `subcategory`, `format`, `organizer`
## Pagination
Use `continuation` token for pagination:
```bash
GET /eventbrite/v3/organizations/{org_id}/events/?page_size=50
GET /eventbrite/v3/organizations/{org_id}/events/?continuation=eyJwYWdlIjogMn0
```
## Notes
- All endpoint paths must end with a trailing slash (`/`)
- Event creation requires an organization - use `/organizations/{org_id}/events/`
- Legacy user-based event endpoints (e.g., `/users/me/owned_events/`) are deprecated
- Timestamps are in ISO 8601 format (UTC)
- Currency amounts use format "CURRENCY,AMOUNT" where amount is in cents (e.g., "USD,2500" = $25.00)
- Rate limit: 1,000 calls per hour, 48,000 calls per day
- Event Search API is no longer publicly available (deprecated February 2020)
## Resources
- [Eventbrite API Documentation](https://www.eventbrite.com/platform/api)
- [API Basics](https://www.eventbrite.com/platform/docs/api-basics)
- [API Explorer](https://www.eventbrite.com/platform/docs/api-explorer)

View File

@@ -0,0 +1,85 @@
# Fathom Routing Reference
**App name:** `fathom`
**Base URL proxied:** `api.fathom.ai`
## API Path Pattern
```
/fathom/external/v1/{resource}
```
## Common Endpoints
### List Meetings
```bash
GET /fathom/external/v1/meetings
```
With filters:
```bash
GET /fathom/external/v1/meetings?created_after=2025-01-01T00:00:00Z&teams[]=Sales
```
### Get Summary
```bash
GET /fathom/external/v1/recordings/{recording_id}/summary
```
Async callback:
```bash
GET /fathom/external/v1/recordings/{recording_id}/summary?destination_url=https://example.com/webhook
```
### Get Transcript
```bash
GET /fathom/external/v1/recordings/{recording_id}/transcript
```
Async callback:
```bash
GET /fathom/external/v1/recordings/{recording_id}/transcript?destination_url=https://example.com/webhook
```
### List Teams
```bash
GET /fathom/external/v1/teams
```
### List Team Members
```bash
GET /fathom/external/v1/team_members?team=Sales
```
### Create Webhook
```bash
POST /fathom/external/v1/webhooks
Content-Type: application/json
{
"destination_url": "https://example.com/webhook",
"triggered_for": ["my_recordings", "my_shared_with_team_recordings"],
"include_transcript": true,
"include_summary": true,
"include_action_items": true
}
```
### Delete Webhook
```bash
DELETE /fathom/external/v1/webhooks/{id}
```
## Notes
- Recording IDs are integers
- Timestamps are in ISO 8601 format
- OAuth users cannot use inline transcript/summary parameters on `/meetings` endpoint - use dedicated `/recordings/{id}/summary` and `/recordings/{id}/transcript` endpoints instead
- Use cursor-based pagination with `cursor` parameter
- Webhook `triggered_for` options: `my_recordings`, `shared_external_recordings`, `my_shared_with_team_recordings`, `shared_team_recordings`
- Webhook secrets are used to verify webhook signatures
## Resources
- [Fathom API Documentation](https://developers.fathom.ai)
- [LLM Reference](https://developers.fathom.ai/llms.txt)

View File

@@ -0,0 +1,125 @@
# GitHub Routing Reference
**App name:** `github`
**Base URL proxied:** `api.github.com`
## API Path Pattern
```
/github/{resource}
```
GitHub API does not use a version prefix in paths. Versioning is handled via the `X-GitHub-Api-Version` header.
## Common Endpoints
### Get Authenticated User
```bash
GET /github/user
```
### Get User by Username
```bash
GET /github/users/{username}
```
### List User Repositories
```bash
GET /github/user/repos?per_page=30&sort=updated
```
### Get Repository
```bash
GET /github/repos/{owner}/{repo}
```
### List Repository Contents
```bash
GET /github/repos/{owner}/{repo}/contents/{path}
```
### List Branches
```bash
GET /github/repos/{owner}/{repo}/branches
```
### List Commits
```bash
GET /github/repos/{owner}/{repo}/commits?per_page=30
```
### List Repository Issues
```bash
GET /github/repos/{owner}/{repo}/issues?state=open&per_page=30
```
### Create Issue
```bash
POST /github/repos/{owner}/{repo}/issues
Content-Type: application/json
{
"title": "Issue title",
"body": "Issue description",
"labels": ["bug"]
}
```
### List Pull Requests
```bash
GET /github/repos/{owner}/{repo}/pulls?state=open&per_page=30
```
### Create Pull Request
```bash
POST /github/repos/{owner}/{repo}/pulls
Content-Type: application/json
{
"title": "PR title",
"body": "PR description",
"head": "feature-branch",
"base": "main"
}
```
### Merge Pull Request
```bash
PUT /github/repos/{owner}/{repo}/pulls/{pull_number}/merge
Content-Type: application/json
{
"merge_method": "squash"
}
```
### Search Repositories
```bash
GET /github/search/repositories?q={query}&per_page=30
```
### Search Issues
```bash
GET /github/search/issues?q={query}&per_page=30
```
### Get Rate Limit
```bash
GET /github/rate_limit
```
## Notes
- Repository names are case-insensitive but the API preserves case
- Issue numbers and PR numbers share the same sequence per repository
- File content must be Base64 encoded when creating/updating files
- Rate limits: 5000 requests/hour for authenticated users, 30 searches/minute
- Pagination uses `per_page` (max 100, default 30) and `page` parameters
- Some endpoints require specific OAuth scopes (e.g., `read:org` for organization operations)
## Resources
- [GitHub REST API Documentation](https://docs.github.com/en/rest)
- [Repositories API](https://docs.github.com/en/rest/repos/repos)
- [Issues API](https://docs.github.com/en/rest/issues/issues)
- [Pull Requests API](https://docs.github.com/en/rest/pulls/pulls)

View File

@@ -0,0 +1,172 @@
# Google Ads Routing Reference
**App name:** `google-ads`
**Base URL proxied:** `googleads.googleapis.com`
## API Path Pattern
```
/google-ads/v23/customers/{customerId}/{endpoint}
```
## Common Endpoints
### List Accessible Customers
```bash
GET /google-ads/v23/customers:listAccessibleCustomers
```
### Search (GAQL Query)
```bash
POST /google-ads/v23/customers/{customerId}/googleAds:search
Content-Type: application/json
{
"query": "SELECT campaign.id, campaign.name, campaign.status FROM campaign ORDER BY campaign.id"
}
```
### Search Stream (for large result sets)
```bash
POST /google-ads/v23/customers/{customerId}/googleAds:searchStream
Content-Type: application/json
{
"query": "SELECT campaign.id, campaign.name FROM campaign"
}
```
## Common GAQL Queries
### List Campaigns
```sql
SELECT
campaign.id,
campaign.name,
campaign.status,
campaign.advertising_channel_type
FROM campaign
WHERE campaign.status != 'REMOVED'
ORDER BY campaign.name
```
### Campaign Performance
```sql
SELECT
campaign.id,
campaign.name,
metrics.impressions,
metrics.clicks,
metrics.cost_micros,
metrics.conversions
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
ORDER BY metrics.impressions DESC
```
### List Ad Groups
```sql
SELECT
ad_group.id,
ad_group.name,
ad_group.status,
campaign.id,
campaign.name
FROM ad_group
WHERE ad_group.status != 'REMOVED'
```
### Ad Group Performance
```sql
SELECT
ad_group.id,
ad_group.name,
metrics.impressions,
metrics.clicks,
metrics.average_cpc
FROM ad_group
WHERE segments.date DURING LAST_7_DAYS
```
### List Keywords
```sql
SELECT
ad_group_criterion.keyword.text,
ad_group_criterion.keyword.match_type,
ad_group_criterion.status,
metrics.impressions,
metrics.clicks
FROM keyword_view
WHERE segments.date DURING LAST_30_DAYS
```
### List Ads
```sql
SELECT
ad_group_ad.ad.id,
ad_group_ad.ad.name,
ad_group_ad.status,
ad_group_ad.ad.type
FROM ad_group_ad
WHERE ad_group_ad.status != 'REMOVED'
```
## Mutate Operations
### Create Campaign
```bash
POST /google-ads/v23/customers/{customerId}/campaigns:mutate
Content-Type: application/json
{
"operations": [
{
"create": {
"name": "New Campaign",
"advertisingChannelType": "SEARCH",
"status": "PAUSED",
"manualCpc": {},
"campaignBudget": "customers/{customerId}/campaignBudgets/{budgetId}"
}
}
]
}
```
### Update Campaign Status
```bash
POST /google-ads/v23/customers/{customerId}/campaigns:mutate
Content-Type: application/json
{
"operations": [
{
"update": {
"resourceName": "customers/{customerId}/campaigns/{campaignId}",
"status": "ENABLED"
},
"updateMask": "status"
}
]
}
```
## Notes
- Authentication is automatic - the router injects OAuth token and developer-token headers
- Use `listAccessibleCustomers` first to get available customer IDs
- Customer IDs are 10-digit numbers (remove dashes if formatted as XXX-XXX-XXXX)
- Monetary values are in micros (divide by 1,000,000)
- Use GAQL (Google Ads Query Language) for querying
- Date ranges: `LAST_7_DAYS`, `LAST_30_DAYS`, `THIS_MONTH`, etc.
- Status values: `ENABLED`, `PAUSED`, `REMOVED`
- API version updates frequently - check release notes for latest (currently v23)
## Resources
- [API Overview](https://developers.google.com/google-ads/api/docs/start)
- [List Accessible Customers](https://developers.google.com/google-ads/api/reference/rpc/v23/CustomerService/ListAccessibleCustomers?transport=rest)
- [Search](https://developers.google.com/google-ads/api/reference/rpc/v23/GoogleAdsService/Search?transport=rest)
- [Search Stream](https://developers.google.com/google-ads/api/reference/rpc/v23/GoogleAdsService/SearchStream?transport=rest)
- [GAQL Reference](https://developers.google.com/google-ads/api/docs/query/overview)
- [Metrics Reference](https://developers.google.com/google-ads/api/fields/v23/metrics)

View File

@@ -0,0 +1,210 @@
# Google Analytics Admin Routing Reference
**App name:** `google-analytics-admin`
**Base URL proxied:** `analyticsadmin.googleapis.com`
## API Path Pattern
```
/google-analytics-admin/v1beta/{endpoint}
```
## Common Endpoints
### List Accounts
```bash
GET /google-analytics-admin/v1beta/accounts
```
### Get Account
```bash
GET /google-analytics-admin/v1beta/accounts/{accountId}
```
### List Properties
```bash
GET /google-analytics-admin/v1beta/properties?filter=parent:accounts/{accountId}
```
### Get Property
```bash
GET /google-analytics-admin/v1beta/properties/{propertyId}
```
### Create Property
```bash
POST /google-analytics-admin/v1beta/properties
Content-Type: application/json
{
"parent": "accounts/{accountId}",
"displayName": "My New Property",
"timeZone": "America/Los_Angeles",
"currencyCode": "USD",
"industryCategory": "TECHNOLOGY"
}
```
### Update Property
```bash
PATCH /google-analytics-admin/v1beta/properties/{propertyId}?updateMask=displayName
Content-Type: application/json
{
"displayName": "Updated Property Name"
}
```
### List Data Streams
```bash
GET /google-analytics-admin/v1beta/properties/{propertyId}/dataStreams
```
### Get Data Stream
```bash
GET /google-analytics-admin/v1beta/properties/{propertyId}/dataStreams/{dataStreamId}
```
### Create Web Data Stream
```bash
POST /google-analytics-admin/v1beta/properties/{propertyId}/dataStreams
Content-Type: application/json
{
"type": "WEB_DATA_STREAM",
"displayName": "My Website",
"webStreamData": {
"defaultUri": "https://example.com"
}
}
```
### List Custom Dimensions
```bash
GET /google-analytics-admin/v1beta/properties/{propertyId}/customDimensions
```
### Create Custom Dimension
```bash
POST /google-analytics-admin/v1beta/properties/{propertyId}/customDimensions
Content-Type: application/json
{
"parameterName": "user_type",
"displayName": "User Type",
"scope": "USER",
"description": "Type of user (free, premium, enterprise)"
}
```
### List Custom Metrics
```bash
GET /google-analytics-admin/v1beta/properties/{propertyId}/customMetrics
```
### Create Custom Metric
```bash
POST /google-analytics-admin/v1beta/properties/{propertyId}/customMetrics
Content-Type: application/json
{
"parameterName": "points_earned",
"displayName": "Points Earned",
"scope": "EVENT",
"measurementUnit": "STANDARD",
"description": "Number of loyalty points earned"
}
```
### List Conversion Events
```bash
GET /google-analytics-admin/v1beta/properties/{propertyId}/conversionEvents
```
### Create Conversion Event
```bash
POST /google-analytics-admin/v1beta/properties/{propertyId}/conversionEvents
Content-Type: application/json
{
"eventName": "purchase"
}
```
### Get Measurement Protocol Secret
```bash
GET /google-analytics-admin/v1beta/properties/{propertyId}/dataStreams/{dataStreamId}/measurementProtocolSecrets
```
### Create Measurement Protocol Secret
```bash
POST /google-analytics-admin/v1beta/properties/{propertyId}/dataStreams/{dataStreamId}/measurementProtocolSecrets
Content-Type: application/json
{
"displayName": "Server-side tracking"
}
```
## Account Summaries
### List Account Summaries
```bash
GET /google-analytics-admin/v1beta/accountSummaries
```
Returns a lightweight summary of all accounts and properties the user has access to.
## Data Stream Types
- `WEB_DATA_STREAM` - Website tracking
- `ANDROID_APP_DATA_STREAM` - Android app
- `IOS_APP_DATA_STREAM` - iOS app
## Custom Dimension Scopes
- `EVENT` - Dimension applies to events
- `USER` - Dimension applies to users
## Custom Metric Scopes
- `EVENT` - Metric applies to events
## Measurement Units (Custom Metrics)
- `STANDARD` - Integer or decimal
- `CURRENCY` - Currency value
- `FEET`, `METERS` - Distance
- `MILES`, `KILOMETERS` - Distance
- `MILLISECONDS`, `SECONDS`, `MINUTES`, `HOURS` - Time
## Industry Categories
- `AUTOMOTIVE`, `BUSINESS_AND_INDUSTRIAL_MARKETS`, `FINANCE`, `HEALTHCARE`
- `TECHNOLOGY`, `TRAVEL`, `RETAIL`, `REAL_ESTATE`, `GAMES`
- `ARTS_AND_ENTERTAINMENT`, `BEAUTY_AND_FITNESS`, `BOOKS_AND_LITERATURE`
- `FOOD_AND_DRINK`, `HOBBIES_AND_LEISURE`, `HOME_AND_GARDEN`
- `INTERNET_AND_TELECOM`, `JOBS_AND_EDUCATION`, `LAW_AND_GOVERNMENT`
- `NEWS`, `ONLINE_COMMUNITIES`, `PEOPLE_AND_SOCIETY`, `PETS_AND_ANIMALS`
- `REFERENCE`, `SCIENCE`, `SHOPPING`, `SPORTS`
## Notes
- Authentication is automatic - the router injects the OAuth token
- Property IDs are numeric (e.g., `properties/521310447`)
- Account IDs are numeric (e.g., `accounts/123456789`)
- GA4 properties only (Universal Analytics not supported)
- Use `accountSummaries` endpoint to quickly list all accessible properties
- The `filter` parameter on list properties uses format: `parent:accounts/{accountId}`
- Use `updateMask` query parameter to specify which fields to update in PATCH requests
- This API is for property/account management - use the Data API for running reports
## Resources
- [API Overview](https://developers.google.com/analytics/devguides/config/admin/v1)
- [List Accounts](https://developers.google.com/analytics/devguides/config/admin/v1/rest/v1beta/accounts/list)
- [List Properties](https://developers.google.com/analytics/devguides/config/admin/v1/rest/v1beta/properties/list)
- [Create Property](https://developers.google.com/analytics/devguides/config/admin/v1/rest/v1beta/properties/create)
- [Data Streams](https://developers.google.com/analytics/devguides/config/admin/v1/rest/v1beta/properties.dataStreams)
- [Custom Dimensions](https://developers.google.com/analytics/devguides/config/admin/v1/rest/v1beta/properties.customDimensions)
- [Custom Metrics](https://developers.google.com/analytics/devguides/config/admin/v1/rest/v1beta/properties.customMetrics)
- [Conversion Events](https://developers.google.com/analytics/devguides/config/admin/v1/rest/v1beta/properties.conversionEvents)

View File

@@ -0,0 +1,151 @@
# Google Analytics Data Routing Reference
**App name:** `google-analytics-data`
**Base URL proxied:** `analyticsdata.googleapis.com`
## API Path Pattern
```
/google-analytics-data/v1beta/{endpoint}
```
## Common Endpoints
### Run Report
```bash
POST /google-analytics-data/v1beta/properties/{propertyId}:runReport
Content-Type: application/json
{
"dateRanges": [{"startDate": "30daysAgo", "endDate": "today"}],
"dimensions": [{"name": "city"}],
"metrics": [{"name": "activeUsers"}]
}
```
### Run Realtime Report
```bash
POST /google-analytics-data/v1beta/properties/{propertyId}:runRealtimeReport
Content-Type: application/json
{
"dimensions": [{"name": "country"}],
"metrics": [{"name": "activeUsers"}]
}
```
### Batch Run Reports
```bash
POST /google-analytics-data/v1beta/properties/{propertyId}:batchRunReports
Content-Type: application/json
{
"requests": [
{
"dateRanges": [{"startDate": "7daysAgo", "endDate": "today"}],
"dimensions": [{"name": "country"}],
"metrics": [{"name": "sessions"}]
},
{
"dateRanges": [{"startDate": "7daysAgo", "endDate": "today"}],
"dimensions": [{"name": "deviceCategory"}],
"metrics": [{"name": "sessions"}]
}
]
}
```
### Get Metadata (available dimensions/metrics)
```bash
GET /google-analytics-data/v1beta/properties/{propertyId}/metadata
```
## Common Report Examples
### Page Views by Page
```json
{
"dateRanges": [{"startDate": "30daysAgo", "endDate": "today"}],
"dimensions": [{"name": "pagePath"}],
"metrics": [{"name": "screenPageViews"}],
"orderBys": [{"metric": {"metricName": "screenPageViews"}, "desc": true}],
"limit": 10
}
```
### Users by Country
```json
{
"dateRanges": [{"startDate": "30daysAgo", "endDate": "today"}],
"dimensions": [{"name": "country"}],
"metrics": [{"name": "activeUsers"}, {"name": "sessions"}],
"orderBys": [{"metric": {"metricName": "activeUsers"}, "desc": true}]
}
```
### Traffic Sources
```json
{
"dateRanges": [{"startDate": "30daysAgo", "endDate": "today"}],
"dimensions": [{"name": "sessionSource"}, {"name": "sessionMedium"}],
"metrics": [{"name": "sessions"}, {"name": "conversions"}]
}
```
### Device Breakdown
```json
{
"dateRanges": [{"startDate": "7daysAgo", "endDate": "today"}],
"dimensions": [{"name": "deviceCategory"}],
"metrics": [{"name": "activeUsers"}, {"name": "sessions"}, {"name": "bounceRate"}]
}
```
### Daily Sessions Trend
```json
{
"dateRanges": [{"startDate": "30daysAgo", "endDate": "today"}],
"dimensions": [{"name": "date"}],
"metrics": [{"name": "sessions"}, {"name": "activeUsers"}],
"orderBys": [{"dimension": {"dimensionName": "date"}}]
}
```
## Common Dimensions
- `date`, `dateHour`, `dateHourMinute`
- `country`, `city`, `region`
- `deviceCategory`, `browser`, `operatingSystem`
- `pagePath`, `pageTitle`, `landingPage`
- `sessionSource`, `sessionMedium`, `sessionCampaignName`
- `eventName`
## Common Metrics
- `activeUsers`, `newUsers`, `totalUsers`
- `sessions`, `sessionsPerUser`
- `screenPageViews`, `screenPageViewsPerSession`
- `bounceRate`, `averageSessionDuration`
- `conversions`, `eventCount`
## Date Formats
- Relative: `today`, `yesterday`, `7daysAgo`, `30daysAgo`
- Absolute: `2026-01-01`
## Notes
- Authentication is automatic - the router injects the OAuth token
- Property IDs are numeric (e.g., `521310447` from URL `p521310447`)
- GA4 properties only (Universal Analytics not supported)
- Use metadata endpoint to discover available dimensions/metrics
- Results are paginated with `limit` and `offset`
- This API is for running reports only - listing properties requires the Admin API
## Resources
- [API Overview](https://developers.google.com/analytics/devguides/reporting/data/v1)
- [Run Report](https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport)
- [Run Realtime Report](https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runRealtimeReport)
- [Batch Run Reports](https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/batchRunReports)
- [Get Metadata](https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/getMetadata)

View File

@@ -0,0 +1,139 @@
# Google Calendar Routing Reference
**App name:** `google-calendar`
**Base URL proxied:** `www.googleapis.com`
## API Path Pattern
```
/google-calendar/calendar/v3/{endpoint}
```
## Common Endpoints
### List Calendars
```bash
GET /google-calendar/calendar/v3/users/me/calendarList
```
### Get Calendar
```bash
GET /google-calendar/calendar/v3/calendars/{calendarId}
```
Use `primary` for the user's primary calendar.
### List Events
```bash
GET /google-calendar/calendar/v3/calendars/primary/events?maxResults=10&orderBy=startTime&singleEvents=true
```
With time bounds:
```bash
GET /google-calendar/calendar/v3/calendars/primary/events?timeMin=2024-01-01T00:00:00Z&timeMax=2024-12-31T23:59:59Z&singleEvents=true&orderBy=startTime
```
### Get Event
```bash
GET /google-calendar/calendar/v3/calendars/primary/events/{eventId}
```
### Insert Event
```bash
POST /google-calendar/calendar/v3/calendars/primary/events
Content-Type: application/json
{
"summary": "Team Meeting",
"description": "Weekly sync",
"start": {
"dateTime": "2024-01-15T10:00:00",
"timeZone": "America/Los_Angeles"
},
"end": {
"dateTime": "2024-01-15T11:00:00",
"timeZone": "America/Los_Angeles"
},
"attendees": [
{"email": "attendee@example.com"}
]
}
```
All-day event:
```bash
POST /google-calendar/calendar/v3/calendars/primary/events
Content-Type: application/json
{
"summary": "All Day Event",
"start": {"date": "2024-01-15"},
"end": {"date": "2024-01-16"}
}
```
### Update Event
```bash
PUT /google-calendar/calendar/v3/calendars/primary/events/{eventId}
Content-Type: application/json
{
"summary": "Updated Meeting Title",
"start": {"dateTime": "2024-01-15T10:00:00Z"},
"end": {"dateTime": "2024-01-15T11:00:00Z"}
}
```
### Patch Event (partial update)
```bash
PATCH /google-calendar/calendar/v3/calendars/primary/events/{eventId}
Content-Type: application/json
{
"summary": "New Title Only"
}
```
### Delete Event
```bash
DELETE /google-calendar/calendar/v3/calendars/primary/events/{eventId}
```
### Quick Add Event (natural language)
```bash
POST /google-calendar/calendar/v3/calendars/primary/events/quickAdd?text=Meeting+with+John+tomorrow+at+3pm
```
### Free/Busy Query
```bash
POST /google-calendar/calendar/v3/freeBusy
Content-Type: application/json
{
"timeMin": "2024-01-15T00:00:00Z",
"timeMax": "2024-01-16T00:00:00Z",
"items": [{"id": "primary"}]
}
```
## Notes
- Authentication is automatic - the router injects the OAuth token
- Use `primary` as calendarId for the user's main calendar
- Times must be in RFC3339 format (e.g., `2026-01-15T10:00:00Z`)
- For recurring events, use `singleEvents=true` to expand instances
- `orderBy=startTime` requires `singleEvents=true`
## Resources
- [API Overview](https://developers.google.com/calendar/api/v3/reference)
- [List Calendars](https://developers.google.com/workspace/calendar/api/v3/reference/calendarList/list)
- [Get Calendar](https://developers.google.com/workspace/calendar/api/v3/reference/calendarList/get)
- [List Events](https://developers.google.com/workspace/calendar/api/v3/reference/events/list)
- [Get Event](https://developers.google.com/workspace/calendar/api/v3/reference/events/get)
- [Insert Event](https://developers.google.com/workspace/calendar/api/v3/reference/events/insert)
- [Update Event](https://developers.google.com/workspace/calendar/api/v3/reference/events/update)
- [Patch Event](https://developers.google.com/workspace/calendar/api/v3/reference/events/patch)
- [Delete Event](https://developers.google.com/workspace/calendar/api/v3/reference/events/delete)
- [Quick Add Event](https://developers.google.com/workspace/calendar/api/v3/reference/events/quickAdd)
- [Free/Busy Query](https://developers.google.com/workspace/calendar/api/v3/reference/freebusy/query)

View File

@@ -0,0 +1,139 @@
# Google Contacts Routing Reference
**App name:** `google-contacts`
**Base URL proxied:** `people.googleapis.com`
## API Path Pattern
```
/google-contacts/v1/{endpoint}
```
## Common Endpoints
### List Contacts
```bash
GET /google-contacts/v1/people/me/connections?personFields=names,emailAddresses,phoneNumbers&pageSize=100
```
### Get Contact
```bash
GET /google-contacts/v1/people/{resourceName}?personFields=names,emailAddresses,phoneNumbers
```
Example: `GET /google-contacts/v1/people/c1234567890?personFields=names,emailAddresses`
### Create Contact
```bash
POST /google-contacts/v1/people:createContact
Content-Type: application/json
{
"names": [{"givenName": "John", "familyName": "Doe"}],
"emailAddresses": [{"value": "john@example.com"}],
"phoneNumbers": [{"value": "+1-555-0123"}]
}
```
### Update Contact
```bash
PATCH /google-contacts/v1/people/{resourceName}:updateContact?updatePersonFields=names,emailAddresses
Content-Type: application/json
{
"etag": "%EgcBAgkLLjc9...",
"names": [{"givenName": "John", "familyName": "Smith"}]
}
```
### Delete Contact
```bash
DELETE /google-contacts/v1/people/{resourceName}:deleteContact
```
### Batch Get Contacts
```bash
GET /google-contacts/v1/people:batchGet?resourceNames=people/c123&resourceNames=people/c456&personFields=names
```
### Batch Create Contacts
```bash
POST /google-contacts/v1/people:batchCreateContacts
Content-Type: application/json
{
"contacts": [{"contactPerson": {"names": [{"givenName": "Alice"}]}}],
"readMask": "names"
}
```
### Batch Delete Contacts
```bash
POST /google-contacts/v1/people:batchDeleteContacts
Content-Type: application/json
{
"resourceNames": ["people/c123", "people/c456"]
}
```
### Search Contacts
```bash
GET /google-contacts/v1/people:searchContacts?query=John&readMask=names,emailAddresses
```
### List Contact Groups
```bash
GET /google-contacts/v1/contactGroups?pageSize=100
```
### Get Contact Group
```bash
GET /google-contacts/v1/contactGroups/{resourceName}?maxMembers=100
```
### Create Contact Group
```bash
POST /google-contacts/v1/contactGroups
Content-Type: application/json
{
"contactGroup": {"name": "Work Contacts"}
}
```
### Delete Contact Group
```bash
DELETE /google-contacts/v1/contactGroups/{resourceName}?deleteContacts=false
```
### Modify Group Members
```bash
POST /google-contacts/v1/contactGroups/{resourceName}/members:modify
Content-Type: application/json
{
"resourceNamesToAdd": ["people/c123"],
"resourceNamesToRemove": ["people/c456"]
}
```
### List Other Contacts
```bash
GET /google-contacts/v1/otherContacts?readMask=names,emailAddresses&pageSize=100
```
## Notes
- Resource names for contacts: `people/c{id}` (e.g., `people/c1234567890`)
- Resource names for groups: `contactGroups/{id}` (e.g., `contactGroups/starred`)
- System groups: `starred`, `friends`, `family`, `coworkers`, `myContacts`, `all`, `blocked`
- `personFields` parameter is required for most read operations
- Include `etag` when updating to prevent concurrent modification issues
- Pagination uses `pageToken` parameter
## Resources
- [Google People API Overview](https://developers.google.com/people/api/rest)
- [People Resource](https://developers.google.com/people/api/rest/v1/people)
- [Contact Groups Resource](https://developers.google.com/people/api/rest/v1/contactGroups)

View File

@@ -0,0 +1,158 @@
# Google Docs Routing Reference
**App name:** `google-docs`
**Base URL proxied:** `docs.googleapis.com`
## API Path Pattern
```
/google-docs/v1/documents/{documentId}
```
## Common Endpoints
### Get Document
```bash
GET /google-docs/v1/documents/{documentId}
```
### Create Document
```bash
POST /google-docs/v1/documents
Content-Type: application/json
{
"title": "New Document"
}
```
### Batch Update Document
```bash
POST /google-docs/v1/documents/{documentId}:batchUpdate
Content-Type: application/json
{
"requests": [
{
"insertText": {
"location": {"index": 1},
"text": "Hello, World!"
}
}
]
}
```
## Common Requests for batchUpdate
### Insert Text
```json
{
"insertText": {
"location": {"index": 1},
"text": "Text to insert"
}
}
```
### Delete Content
```json
{
"deleteContentRange": {
"range": {
"startIndex": 1,
"endIndex": 10
}
}
}
```
### Replace All Text
```json
{
"replaceAllText": {
"containsText": {
"text": "{{placeholder}}",
"matchCase": true
},
"replaceText": "replacement value"
}
}
```
### Insert Table
```json
{
"insertTable": {
"location": {"index": 1},
"rows": 3,
"columns": 3
}
}
```
### Insert Inline Image
```json
{
"insertInlineImage": {
"location": {"index": 1},
"uri": "https://example.com/image.png",
"objectSize": {
"height": {"magnitude": 100, "unit": "PT"},
"width": {"magnitude": 100, "unit": "PT"}
}
}
}
```
### Update Text Style
```json
{
"updateTextStyle": {
"range": {
"startIndex": 1,
"endIndex": 10
},
"textStyle": {
"bold": true,
"fontSize": {"magnitude": 14, "unit": "PT"}
},
"fields": "bold,fontSize"
}
}
```
### Insert Page Break
```json
{
"insertPageBreak": {
"location": {"index": 1}
}
}
```
## Document Structure
The document body contains:
- `content` - Array of structural elements
- `body.content[].paragraph` - Paragraph element
- `body.content[].table` - Table element
- `body.content[].sectionBreak` - Section break
## Notes
- Authentication is automatic - the router injects the OAuth token
- Index positions are 1-based (document starts at index 1)
- Use `endOfSegmentLocation` to append at end
- Multiple requests in batchUpdate are applied atomically
- Get document first to find correct indices for updates
- The `fields` parameter in style updates uses field mask syntax
## Resources
- [API Overview](https://developers.google.com/docs/api/how-tos/overview)
- [Get Document](https://developers.google.com/docs/api/reference/rest/v1/documents/get)
- [Create Document](https://developers.google.com/docs/api/reference/rest/v1/documents/create)
- [Batch Update](https://developers.google.com/docs/api/reference/rest/v1/documents/batchUpdate)
- [Request Types Reference](https://developers.google.com/docs/api/reference/rest/v1/documents/request)
- [Document Structure Guide](https://developers.google.com/docs/api/concepts/structure)

View File

@@ -0,0 +1,158 @@
# Google Drive Routing Reference
**App name:** `google-drive`
**Base URL proxied:** `www.googleapis.com`
## API Path Pattern
```
/google-drive/drive/v3/{endpoint}
```
## Common Endpoints
### List Files
```bash
GET /google-drive/drive/v3/files?pageSize=10
```
With query:
```bash
GET /google-drive/drive/v3/files?q=name%20contains%20'report'&pageSize=10
```
Only folders:
```bash
GET /google-drive/drive/v3/files?q=mimeType='application/vnd.google-apps.folder'
```
Files in specific folder:
```bash
GET /google-drive/drive/v3/files?q='FOLDER_ID'+in+parents
```
With fields:
```bash
GET /google-drive/drive/v3/files?fields=files(id,name,mimeType,createdTime,modifiedTime,size)
```
### Get File Metadata
```bash
GET /google-drive/drive/v3/files/{fileId}?fields=id,name,mimeType,size,createdTime
```
### Download File Content
```bash
GET /google-drive/drive/v3/files/{fileId}?alt=media
```
### Export Google Docs (to PDF, DOCX, etc.)
```bash
GET /google-drive/drive/v3/files/{fileId}/export?mimeType=application/pdf
```
### Create File (metadata only)
```bash
POST /google-drive/drive/v3/files
Content-Type: application/json
{
"name": "New Document",
"mimeType": "application/vnd.google-apps.document"
}
```
### Create Folder
```bash
POST /google-drive/drive/v3/files
Content-Type: application/json
{
"name": "New Folder",
"mimeType": "application/vnd.google-apps.folder"
}
```
### Update File Metadata
```bash
PATCH /google-drive/drive/v3/files/{fileId}
Content-Type: application/json
{
"name": "Renamed File"
}
```
### Move File to Folder
```bash
PATCH /google-drive/drive/v3/files/{fileId}?addParents=NEW_FOLDER_ID&removeParents=OLD_FOLDER_ID
```
### Delete File
```bash
DELETE /google-drive/drive/v3/files/{fileId}
```
### Copy File
```bash
POST /google-drive/drive/v3/files/{fileId}/copy
Content-Type: application/json
{
"name": "Copy of File"
}
```
### Create Permission (Share File)
```bash
POST /google-drive/drive/v3/files/{fileId}/permissions
Content-Type: application/json
{
"role": "reader",
"type": "user",
"emailAddress": "user@example.com"
}
```
## Query Operators
Use in the `q` parameter:
- `name = 'exact name'`
- `name contains 'partial'`
- `mimeType = 'application/pdf'`
- `'folderId' in parents`
- `trashed = false`
- `modifiedTime > '2024-01-01T00:00:00'`
Combine with `and`:
```
name contains 'report' and mimeType = 'application/pdf'
```
## Common MIME Types
- `application/vnd.google-apps.document` - Google Docs
- `application/vnd.google-apps.spreadsheet` - Google Sheets
- `application/vnd.google-apps.presentation` - Google Slides
- `application/vnd.google-apps.folder` - Folder
- `application/pdf` - PDF
## Notes
- Authentication is automatic - the router injects the OAuth token
- Use `fields` parameter to limit response data
- Pagination uses `pageToken` from previous response's `nextPageToken`
## Resources
- [API Overview](https://developers.google.com/workspace/drive/api/reference/rest/v3#rest-resource:-v3.about)
- [List Files](https://developers.google.com/drive/api/reference/rest/v3/files/list)
- [Get File](https://developers.google.com/drive/api/reference/rest/v3/files/get)
- [Create File](https://developers.google.com/drive/api/reference/rest/v3/files/create)
- [Update File](https://developers.google.com/drive/api/reference/rest/v3/files/update)
- [Delete File](https://developers.google.com/drive/api/reference/rest/v3/files/delete)
- [Copy File](https://developers.google.com/drive/api/reference/rest/v3/files/copy)
- [Export File](https://developers.google.com/drive/api/reference/rest/v3/files/export)
- [Create Permission](https://developers.google.com/workspace/drive/api/reference/rest/v3/permissions/create)
- [Search Query Syntax](https://developers.google.com/drive/api/guides/search-files)

View File

@@ -0,0 +1,206 @@
# Google Forms Routing Reference
**App name:** `google-forms`
**Base URL proxied:** `forms.googleapis.com`
## API Path Pattern
```
/google-forms/v1/forms/{formId}
```
## Common Endpoints
### Get Form
```bash
GET /google-forms/v1/forms/{formId}
```
### Create Form
```bash
POST /google-forms/v1/forms
Content-Type: application/json
{
"info": {
"title": "Customer Feedback Survey"
}
}
```
### Batch Update Form
```bash
POST /google-forms/v1/forms/{formId}:batchUpdate
Content-Type: application/json
{
"requests": [
{
"createItem": {
"item": {
"title": "What is your name?",
"questionItem": {
"question": {
"required": true,
"textQuestion": {
"paragraph": false
}
}
}
},
"location": {"index": 0}
}
}
]
}
```
### List Responses
```bash
GET /google-forms/v1/forms/{formId}/responses
```
### Get Response
```bash
GET /google-forms/v1/forms/{formId}/responses/{responseId}
```
## Common Requests for batchUpdate
### Create Text Question
```json
{
"createItem": {
"item": {
"title": "Question text",
"questionItem": {
"question": {
"required": true,
"textQuestion": {"paragraph": false}
}
}
},
"location": {"index": 0}
}
}
```
### Create Multiple Choice Question
```json
{
"createItem": {
"item": {
"title": "Select an option",
"questionItem": {
"question": {
"required": true,
"choiceQuestion": {
"type": "RADIO",
"options": [
{"value": "Option A"},
{"value": "Option B"},
{"value": "Option C"}
]
}
}
}
},
"location": {"index": 0}
}
}
```
### Create Checkbox Question
```json
{
"createItem": {
"item": {
"title": "Select all that apply",
"questionItem": {
"question": {
"choiceQuestion": {
"type": "CHECKBOX",
"options": [
{"value": "Option 1"},
{"value": "Option 2"}
]
}
}
}
},
"location": {"index": 0}
}
}
```
### Create Scale Question
```json
{
"createItem": {
"item": {
"title": "Rate your experience",
"questionItem": {
"question": {
"scaleQuestion": {
"low": 1,
"high": 5,
"lowLabel": "Poor",
"highLabel": "Excellent"
}
}
}
},
"location": {"index": 0}
}
}
```
### Update Form Info
```json
{
"updateFormInfo": {
"info": {
"title": "New Form Title",
"description": "Form description"
},
"updateMask": "title,description"
}
}
```
### Delete Item
```json
{
"deleteItem": {
"location": {"index": 0}
}
}
```
## Question Types
- `textQuestion` - Short or paragraph text
- `choiceQuestion` - Radio, checkbox, or dropdown
- `scaleQuestion` - Linear scale
- `dateQuestion` - Date picker
- `timeQuestion` - Time picker
- `fileUploadQuestion` - File upload
## Notes
- Authentication is automatic - the router injects the OAuth token
- Form IDs can be found in the form URL
- Responses include `answers` keyed by question ID
- Use `updateMask` to specify which fields to update
- Location index is 0-based for item positioning
## Resources
- [API Overview](https://developers.google.com/workspace/forms/api/reference/rest)
- [Get Form](https://developers.google.com/workspace/forms/api/reference/rest/v1/forms/get)
- [Create Form](https://developers.google.com/workspace/forms/api/reference/rest/v1/forms/create)
- [Batch Update Form](https://developers.google.com/workspace/forms/api/reference/rest/v1/forms/batchUpdate)
- [Batch Update Request Types](https://developers.google.com/workspace/forms/api/reference/rest/v1/forms/batchUpdate#request)
- [List Responses](https://developers.google.com/workspace/forms/api/reference/rest/v1/forms.responses/list)
- [Get Response](https://developers.google.com/workspace/forms/api/reference/rest/v1/forms.responses/get)
- [Form Resource](https://developers.google.com/workspace/forms/api/reference/rest/v1/forms)

View File

@@ -0,0 +1,146 @@
# Gmail Routing Reference
**App name:** `google-mail`
**Base URL proxied:** `gmail.googleapis.com`
## API Path Pattern
```
/google-mail/gmail/v1/users/me/{endpoint}
```
## Common Endpoints
### List Messages
```bash
GET /google-mail/gmail/v1/users/me/messages?maxResults=10
```
With query filter:
```bash
GET /google-mail/gmail/v1/users/me/messages?q=is:unread&maxResults=10
```
### Get Message
```bash
GET /google-mail/gmail/v1/users/me/messages/{messageId}
```
With metadata only:
```bash
GET /google-mail/gmail/v1/users/me/messages/{messageId}?format=metadata&metadataHeaders=From&metadataHeaders=Subject&metadataHeaders=Date
```
### Send Message
```bash
POST /google-mail/gmail/v1/users/me/messages/send
Content-Type: application/json
{
"raw": "BASE64_ENCODED_EMAIL"
}
```
### List Labels
```bash
GET /google-mail/gmail/v1/users/me/labels
```
### List Threads
```bash
GET /google-mail/gmail/v1/users/me/threads?maxResults=10
```
### Get Thread
```bash
GET /google-mail/gmail/v1/users/me/threads/{threadId}
```
### Modify Message Labels
```bash
POST /google-mail/gmail/v1/users/me/messages/{messageId}/modify
Content-Type: application/json
{
"addLabelIds": ["STARRED"],
"removeLabelIds": ["UNREAD"]
}
```
### Trash Message
```bash
POST /google-mail/gmail/v1/users/me/messages/{messageId}/trash
```
### Create Draft
```bash
POST /google-mail/gmail/v1/users/me/drafts
Content-Type: application/json
{
"message": {
"raw": "BASE64URL_ENCODED_EMAIL"
}
}
```
### Update Draft
```bash
PUT /google-mail/gmail/v1/users/me/drafts/{draftId}
Content-Type: application/json
{
"message": {
"raw": "BASE64URL_ENCODED_EMAIL"
}
}
```
### Send Draft
```bash
POST /google-mail/gmail/v1/users/me/drafts/send
Content-Type: application/json
{
"id": "{draftId}"
}
```
### Get Profile
```bash
GET /google-mail/gmail/v1/users/me/profile
```
## Query Operators
Use in the `q` parameter:
- `is:unread` - Unread messages
- `is:starred` - Starred messages
- `from:email@example.com` - From specific sender
- `to:email@example.com` - To specific recipient
- `subject:keyword` - Subject contains keyword
- `after:2024/01/01` - After date
- `before:2024/12/31` - Before date
- `has:attachment` - Has attachments
## Notes
- Authentication is automatic - the router injects the OAuth token
- Use `me` as userId for the authenticated user
- Message body is base64url encoded in the `raw` field
## Resources
- [API Overview](https://developers.google.com/gmail/api/reference/rest)
- [List Messages](https://developers.google.com/gmail/api/reference/rest/v1/users.messages/list)
- [Get Message](https://developers.google.com/gmail/api/reference/rest/v1/users.messages/get)
- [Send Message](https://developers.google.com/gmail/api/reference/rest/v1/users.messages/send)
- [Modify Message Labels](https://developers.google.com/gmail/api/reference/rest/v1/users.messages/modify)
- [Trash Message](https://developers.google.com/gmail/api/reference/rest/v1/users.messages/trash)
- [List Threads](https://developers.google.com/gmail/api/reference/rest/v1/users.threads/list)
- [Get Thread](https://developers.google.com/gmail/api/reference/rest/v1/users.threads/get)
- [List Labels](https://developers.google.com/gmail/api/reference/rest/v1/users.labels/list)
- [Create Draft](https://developers.google.com/gmail/api/reference/rest/v1/users.drafts/create)
- [Update Draft](https://developers.google.com/gmail/api/reference/rest/v1/users.drafts/update)
- [Send Draft](https://developers.google.com/gmail/api/reference/rest/v1/users.drafts/send)
- [Get Profile](https://developers.google.com/gmail/api/reference/rest/v1/users/getProfile)

View File

@@ -0,0 +1,121 @@
# Google Meet Routing Reference
**App name:** `google-meet`
**Base URL proxied:** `meet.googleapis.com`
## API Path Pattern
```
/google-meet/v2/{resource}
```
## Common Endpoints
### Create Space
```bash
POST /google-meet/v2/spaces
Content-Type: application/json
{}
```
Response:
```json
{
"name": "spaces/abc123",
"meetingUri": "https://meet.google.com/abc-defg-hij",
"meetingCode": "abc-defg-hij",
"config": {
"accessType": "OPEN",
"entryPointAccess": "ALL"
}
}
```
### Get Space
```bash
GET /google-meet/v2/spaces/{spaceId}
```
### Update Space
```bash
PATCH /google-meet/v2/spaces/{spaceId}
Content-Type: application/json
{
"config": {
"accessType": "TRUSTED"
}
}
```
### End Active Call
```bash
POST /google-meet/v2/spaces/{spaceId}:endActiveConference
```
### List Conference Records
```bash
GET /google-meet/v2/conferenceRecords
```
With filter:
```bash
GET /google-meet/v2/conferenceRecords?filter=space.name="spaces/abc123"
```
### Get Conference Record
```bash
GET /google-meet/v2/conferenceRecords/{conferenceRecordId}
```
### List Participants
```bash
GET /google-meet/v2/conferenceRecords/{conferenceRecordId}/participants
```
### Get Participant
```bash
GET /google-meet/v2/conferenceRecords/{conferenceRecordId}/participants/{participantId}
```
### List Recordings
```bash
GET /google-meet/v2/conferenceRecords/{conferenceRecordId}/recordings
```
### Get Recording
```bash
GET /google-meet/v2/conferenceRecords/{conferenceRecordId}/recordings/{recordingId}
```
### List Transcripts
```bash
GET /google-meet/v2/conferenceRecords/{conferenceRecordId}/transcripts
```
### Get Transcript
```bash
GET /google-meet/v2/conferenceRecords/{conferenceRecordId}/transcripts/{transcriptId}
```
### List Transcript Entries
```bash
GET /google-meet/v2/conferenceRecords/{conferenceRecordId}/transcripts/{transcriptId}/entries
```
## Notes
- Spaces are persistent meeting rooms that can be reused
- Conference records are created when a meeting starts and track meeting history
- Access types: `OPEN` (anyone with link), `TRUSTED` (organization members only), `RESTRICTED` (invited only)
- Recordings and transcripts require Google Workspace with recording enabled
## Resources
- [Google Meet API Overview](https://developers.google.com/meet/api/reference/rest)
- [Spaces](https://developers.google.com/meet/api/reference/rest/v2/spaces)
- [Conference Records](https://developers.google.com/meet/api/reference/rest/v2/conferenceRecords)
- [Participants](https://developers.google.com/meet/api/reference/rest/v2/conferenceRecords.participants)
- [Recordings](https://developers.google.com/meet/api/reference/rest/v2/conferenceRecords.recordings)
- [Transcripts](https://developers.google.com/meet/api/reference/rest/v2/conferenceRecords.transcripts)

View File

@@ -0,0 +1,96 @@
# Google Merchant Routing Reference
**App name:** `google-merchant`
**Base URL proxied:** `merchantapi.googleapis.com`
## API Path Pattern
```
/google-merchant/{sub-api}/{version}/accounts/{accountId}/{resource}
```
The Merchant API uses sub-APIs: `products`, `accounts`, `datasources`, `reports`, `promotions`, `inventories`, `notifications`, `conversions`, `lfp`
## Common Endpoints
### List Products
```bash
GET /google-merchant/products/v1/accounts/{accountId}/products
```
### Get Product
```bash
GET /google-merchant/products/v1/accounts/{accountId}/products/{productId}
```
Product ID format: `contentLanguage~feedLabel~offerId` (e.g., `en~US~sku123`)
### Insert Product Input
```bash
POST /google-merchant/products/v1/accounts/{accountId}/productInputs:insert?dataSource=accounts/{accountId}/dataSources/{dataSourceId}
Content-Type: application/json
{
"offerId": "sku123",
"contentLanguage": "en",
"feedLabel": "US",
"attributes": {
"title": "Product Title",
"link": "https://example.com/product",
"imageLink": "https://example.com/image.jpg",
"availability": "in_stock",
"price": {"amountMicros": "19990000", "currencyCode": "USD"}
}
}
```
### Delete Product Input
```bash
DELETE /google-merchant/products/v1/accounts/{accountId}/productInputs/{productId}?dataSource=accounts/{accountId}/dataSources/{dataSourceId}
```
### List Data Sources
```bash
GET /google-merchant/datasources/v1/accounts/{accountId}/dataSources
```
### Search Reports
```bash
POST /google-merchant/reports/v1/accounts/{accountId}/reports:search
Content-Type: application/json
{
"query": "SELECT offer_id, title, clicks FROM product_performance_view WHERE date BETWEEN '2026-01-01' AND '2026-01-31'"
}
```
### List Promotions
```bash
GET /google-merchant/promotions/v1/accounts/{accountId}/promotions
```
### Get Account
```bash
GET /google-merchant/accounts/v1/accounts/{accountId}
```
### List Local Inventories
```bash
GET /google-merchant/inventories/v1/accounts/{accountId}/products/{productId}/localInventories
```
## Notes
- Authentication is automatic - the router injects the OAuth token
- Account ID is your Merchant Center numeric ID (visible in MC URL)
- Product IDs use format `contentLanguage~feedLabel~offerId`
- Monetary values use micros (divide by 1,000,000)
- Products can only be inserted in data sources of type `API`
- Uses token-based pagination with `pageSize` and `pageToken`
## Resources
- [Merchant API Overview](https://developers.google.com/merchant/api/overview)
- [Merchant API Reference](https://developers.google.com/merchant/api/reference/rest)
- [Products Guide](https://developers.google.com/merchant/api/guides/products/overview)
- [Reports Guide](https://developers.google.com/merchant/api/guides/reports)

View File

@@ -0,0 +1,147 @@
# Google Play Routing Reference
**App name:** `google-play`
**Base URL proxied:** `androidpublisher.googleapis.com`
## API Path Pattern
```
/google-play/androidpublisher/v3/applications/{packageName}/{resource}
```
## Common Endpoints
### In-App Products
#### List In-App Products
```bash
GET /google-play/androidpublisher/v3/applications/{packageName}/inappproducts
```
#### Get In-App Product
```bash
GET /google-play/androidpublisher/v3/applications/{packageName}/inappproducts/{sku}
```
#### Create In-App Product
```bash
POST /google-play/androidpublisher/v3/applications/{packageName}/inappproducts
Content-Type: application/json
{
"packageName": "com.example.app",
"sku": "premium_upgrade",
"status": "active",
"purchaseType": "managedUser",
"defaultPrice": {
"priceMicros": "990000",
"currency": "USD"
},
"listings": {
"en-US": {
"title": "Premium Upgrade",
"description": "Unlock all premium features"
}
}
}
```
#### Delete In-App Product
```bash
DELETE /google-play/androidpublisher/v3/applications/{packageName}/inappproducts/{sku}
```
### Subscriptions
#### List Subscriptions
```bash
GET /google-play/androidpublisher/v3/applications/{packageName}/subscriptions
```
#### Get Subscription
```bash
GET /google-play/androidpublisher/v3/applications/{packageName}/subscriptions/{productId}
```
### Purchases
#### Get Product Purchase
```bash
GET /google-play/androidpublisher/v3/applications/{packageName}/purchases/products/{productId}/tokens/{token}
```
#### Acknowledge Purchase
```bash
POST /google-play/androidpublisher/v3/applications/{packageName}/purchases/products/{productId}/tokens/{token}:acknowledge
Content-Type: application/json
{
"developerPayload": "optional payload"
}
```
#### Get Subscription Purchase
```bash
GET /google-play/androidpublisher/v3/applications/{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}
```
#### Cancel Subscription
```bash
POST /google-play/androidpublisher/v3/applications/{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}:cancel
```
### Reviews
#### List Reviews
```bash
GET /google-play/androidpublisher/v3/applications/{packageName}/reviews
```
#### Get Review
```bash
GET /google-play/androidpublisher/v3/applications/{packageName}/reviews/{reviewId}
```
#### Reply to Review
```bash
POST /google-play/androidpublisher/v3/applications/{packageName}/reviews/{reviewId}:reply
Content-Type: application/json
{
"replyText": "Thank you for your feedback!"
}
```
### Edits (App Updates)
#### Create Edit
```bash
POST /google-play/androidpublisher/v3/applications/{packageName}/edits
```
#### Commit Edit
```bash
POST /google-play/androidpublisher/v3/applications/{packageName}/edits/{editId}:commit
```
#### Delete Edit
```bash
DELETE /google-play/androidpublisher/v3/applications/{packageName}/edits/{editId}
```
## Notes
- Replace `{packageName}` with your app's package name (e.g., `com.example.app`)
- The Google Play Developer API requires the app to be published on Google Play
- Subscription management requires the app to have active subscriptions configured
- Edits are transactional - create an edit, make changes, then commit
- Prices are in micros (1,000,000 micros = 1 unit of currency)
## Resources
- [Android Publisher API Overview](https://developers.google.com/android-publisher)
- [In-App Products](https://developers.google.com/android-publisher/api-ref/rest/v3/inappproducts)
- [Subscriptions](https://developers.google.com/android-publisher/api-ref/rest/v3/monetization.subscriptions)
- [Purchases](https://developers.google.com/android-publisher/api-ref/rest/v3/purchases.products)
- [Reviews](https://developers.google.com/android-publisher/api-ref/rest/v3/reviews)
- [Edits](https://developers.google.com/android-publisher/api-ref/rest/v3/edits)

View File

@@ -0,0 +1,189 @@
# Google Search Console Routing Reference
**App name:** `google-search-console`
**Base URL proxied:** `www.googleapis.com`
## API Path Pattern
```
/google-search-console/webmasters/v3/{endpoint}
```
## Common Endpoints
### List Sites
```bash
GET /google-search-console/webmasters/v3/sites
```
### Get Site
```bash
GET /google-search-console/webmasters/v3/sites/{siteUrl}
```
Note: Site URL must be URL-encoded (e.g., `https%3A%2F%2Fexample.com%2F`)
### Search Analytics Query
```bash
POST /google-search-console/webmasters/v3/sites/{siteUrl}/searchAnalytics/query
Content-Type: application/json
{
"startDate": "2024-01-01",
"endDate": "2024-01-31",
"dimensions": ["query"],
"rowLimit": 100
}
```
### List Sitemaps
```bash
GET /google-search-console/webmasters/v3/sites/{siteUrl}/sitemaps
```
### Get Sitemap
```bash
GET /google-search-console/webmasters/v3/sites/{siteUrl}/sitemaps/{feedpath}
```
### Submit Sitemap
```bash
PUT /google-search-console/webmasters/v3/sites/{siteUrl}/sitemaps/{feedpath}
```
### Delete Sitemap
```bash
DELETE /google-search-console/webmasters/v3/sites/{siteUrl}/sitemaps/{feedpath}
```
## Search Analytics Query Examples
### Top Queries
```json
{
"startDate": "2024-01-01",
"endDate": "2024-01-31",
"dimensions": ["query"],
"rowLimit": 25,
"startRow": 0
}
```
### Top Pages
```json
{
"startDate": "2024-01-01",
"endDate": "2024-01-31",
"dimensions": ["page"],
"rowLimit": 25
}
```
### Queries by Country
```json
{
"startDate": "2024-01-01",
"endDate": "2024-01-31",
"dimensions": ["query", "country"],
"rowLimit": 100
}
```
### Device Breakdown
```json
{
"startDate": "2024-01-01",
"endDate": "2024-01-31",
"dimensions": ["device"],
"rowLimit": 10
}
```
### Daily Performance
```json
{
"startDate": "2024-01-01",
"endDate": "2024-01-31",
"dimensions": ["date"],
"rowLimit": 31
}
```
### Filtered Query
```json
{
"startDate": "2024-01-01",
"endDate": "2024-01-31",
"dimensions": ["query"],
"dimensionFilterGroups": [{
"filters": [{
"dimension": "query",
"operator": "contains",
"expression": "keyword"
}]
}],
"rowLimit": 100
}
```
### Search Type Filter
```json
{
"startDate": "2024-01-01",
"endDate": "2024-01-31",
"dimensions": ["query"],
"type": "image",
"rowLimit": 25
}
```
## Dimensions
- `query` - Search query
- `page` - Page URL
- `country` - Country code (ISO 3166-1 alpha-3)
- `device` - DESKTOP, MOBILE, TABLET
- `date` - Date in YYYY-MM-DD format
- `searchAppearance` - Rich result types
## Metrics (returned automatically)
- `clicks` - Number of clicks
- `impressions` - Number of impressions
- `ctr` - Click-through rate
- `position` - Average position
## Filter Operators
- `equals`
- `contains`
- `notContains`
- `includingRegex`
- `excludingRegex`
## Search Types
- `web` - Web search (default)
- `image` - Image search
- `video` - Video search
- `news` - News search
## Notes
- Authentication is automatic - the router injects the OAuth token
- Site URLs must be URL-encoded in the path (e.g., `sc-domain%3Aexample.com`)
- Date range is limited to 16 months of data
- Maximum 25,000 rows per request
- Use `startRow` for pagination
- Data has a 2-3 day delay
## Resources
- [API Reference](https://developers.google.com/webmaster-tools/v1/api_reference_index)
- [List Sites](https://developers.google.com/webmaster-tools/v1/sites/list)
- [Get Site](https://developers.google.com/webmaster-tools/v1/sites/get)
- [Search Analytics Query](https://developers.google.com/webmaster-tools/v1/searchanalytics/query)
- [List Sitemaps](https://developers.google.com/webmaster-tools/v1/sitemaps/list)
- [Get Sitemap](https://developers.google.com/webmaster-tools/v1/sitemaps/get)
- [Submit Sitemap](https://developers.google.com/webmaster-tools/v1/sitemaps/submit)
- [Delete Sitemap](https://developers.google.com/webmaster-tools/v1/sitemaps/delete)

View File

@@ -0,0 +1,240 @@
# Google Sheets Routing Reference
**App name:** `google-sheets`
**Base URL proxied:** `sheets.googleapis.com`
## API Path Pattern
```
/google-sheets/v4/spreadsheets/{spreadsheetId}/{endpoint}
```
## Common Endpoints
### Get Spreadsheet Metadata
```bash
GET /google-sheets/v4/spreadsheets/{spreadsheetId}
```
### Get Values
```bash
GET /google-sheets/v4/spreadsheets/{spreadsheetId}/values/{range}
```
Example:
```bash
GET /google-sheets/v4/spreadsheets/SHEET_ID/values/Sheet1!A1:D10
```
### Get Multiple Ranges
```bash
GET /google-sheets/v4/spreadsheets/{spreadsheetId}/values:batchGet?ranges=Sheet1!A1:B10&ranges=Sheet2!A1:C5
```
### Update Values
```bash
PUT /google-sheets/v4/spreadsheets/{spreadsheetId}/values/{range}?valueInputOption=USER_ENTERED
Content-Type: application/json
{
"values": [
["A1", "B1", "C1"],
["A2", "B2", "C2"]
]
}
```
### Append Values
```bash
POST /google-sheets/v4/spreadsheets/{spreadsheetId}/values/{range}:append?valueInputOption=USER_ENTERED
Content-Type: application/json
{
"values": [
["New Row 1", "Data", "More Data"],
["New Row 2", "Data", "More Data"]
]
}
```
### Batch Update Values
```bash
POST /google-sheets/v4/spreadsheets/{spreadsheetId}/values:batchUpdate
Content-Type: application/json
{
"valueInputOption": "USER_ENTERED",
"data": [
{"range": "Sheet1!A1:B2", "values": [["A1", "B1"], ["A2", "B2"]]},
{"range": "Sheet1!D1:E2", "values": [["D1", "E1"], ["D2", "E2"]]}
]
}
```
### Clear Values
```bash
POST /google-sheets/v4/spreadsheets/{spreadsheetId}/values/{range}:clear
```
### Create Spreadsheet
```bash
POST /google-sheets/v4/spreadsheets
Content-Type: application/json
{
"properties": {"title": "New Spreadsheet"},
"sheets": [{"properties": {"title": "Sheet1"}}]
}
```
### Batch Update (formatting, add sheets, etc.)
```bash
POST /google-sheets/v4/spreadsheets/{spreadsheetId}:batchUpdate
Content-Type: application/json
{
"requests": [
{"addSheet": {"properties": {"title": "New Sheet"}}}
]
}
```
## Common batchUpdate Requests
See [full list of request types](https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets/request).
### Update Cells with Formatting
```json
{
"updateCells": {
"rows": [
{"values": [{"userEnteredValue": {"stringValue": "Name"}}, {"userEnteredValue": {"numberValue": 100}}]}
],
"fields": "userEnteredValue",
"start": {"sheetId": 0, "rowIndex": 0, "columnIndex": 0}
}
}
```
### Format Header Row (Bold + Background Color)
```json
{
"repeatCell": {
"range": {"sheetId": 0, "startRowIndex": 0, "endRowIndex": 1, "startColumnIndex": 0, "endColumnIndex": 3},
"cell": {
"userEnteredFormat": {
"backgroundColor": {"red": 0.2, "green": 0.6, "blue": 0.9},
"textFormat": {"bold": true}
}
},
"fields": "userEnteredFormat(backgroundColor,textFormat)"
}
}
```
### Auto-Resize Columns
```json
{
"autoResizeDimensions": {
"dimensions": {"sheetId": 0, "dimension": "COLUMNS", "startIndex": 0, "endIndex": 3}
}
}
```
### Rename Sheet
```json
{
"updateSheetProperties": {
"properties": {"sheetId": 0, "title": "NewName"},
"fields": "title"
}
}
```
### Insert Rows/Columns
```json
{
"insertDimension": {
"range": {"sheetId": 0, "dimension": "ROWS", "startIndex": 1, "endIndex": 3},
"inheritFromBefore": true
}
}
```
### Sort Range
```json
{
"sortRange": {
"range": {"sheetId": 0, "startRowIndex": 1, "endRowIndex": 10, "startColumnIndex": 0, "endColumnIndex": 3},
"sortSpecs": [{"dimensionIndex": 1, "sortOrder": "DESCENDING"}]
}
}
```
### Add Conditional Formatting
```json
{
"addConditionalFormatRule": {
"rule": {
"ranges": [{"sheetId": 0, "startRowIndex": 1, "endRowIndex": 10, "startColumnIndex": 1, "endColumnIndex": 2}],
"booleanRule": {
"condition": {"type": "NUMBER_GREATER_THAN_EQ", "values": [{"userEnteredValue": "90"}]},
"format": {"backgroundColor": {"red": 0.7, "green": 1, "blue": 0.7}}
}
},
"index": 0
}
}
```
### Add Filter
```json
{
"setBasicFilter": {
"filter": {
"range": {"sheetId": 0, "startRowIndex": 0, "endRowIndex": 100, "startColumnIndex": 0, "endColumnIndex": 5}
}
}
}
```
### Delete Sheet
```json
{
"deleteSheet": {"sheetId": 123456789}
}
```
## Value Input Options
- `RAW` - Values are stored as-is
- `USER_ENTERED` - Values are parsed as if typed into the UI (formulas executed, numbers parsed)
## Range Notation
- `Sheet1!A1:D10` - Specific range
- `Sheet1!A:D` - Entire columns A through D
- `Sheet1!1:10` - Entire rows 1 through 10
- `Sheet1` - Entire sheet
- `A1:D10` - Range in first sheet
## Notes
- Authentication is automatic - the router injects the OAuth token
- Range in URL path must be URL-encoded (`!``%21`, `:``%3A`)
- Use `valueInputOption=USER_ENTERED` to parse formulas and numbers
- Delete spreadsheets via Google Drive API
## Resources
- [API Overview](https://developers.google.com/workspace/sheets/api/reference/rest)
- [Get Spreadsheet](https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets/get)
- [Create Spreadsheet](https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets/create)
- [Batch Update](https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets/batchUpdate)
- [Batch Update Request Types](https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets/request)
- [Get Values](https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets.values/get)
- [Update Values](https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets.values/update)
- [Append Values](https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets.values/append)
- [Batch Get Values](https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets.values/batchGet)
- [Batch Update Values](https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets.values/batchUpdate)
- [Clear Values](https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets.values/clear)

View File

@@ -0,0 +1,215 @@
# Google Slides Routing Reference
**App name:** `google-slides`
**Base URL proxied:** `slides.googleapis.com`
## API Path Pattern
```
/google-slides/v1/presentations/{presentationId}
```
## Common Endpoints
### Create Presentation
```bash
POST /google-slides/v1/presentations
Content-Type: application/json
{
"title": "My Presentation"
}
```
### Get Presentation
```bash
GET /google-slides/v1/presentations/{presentationId}
```
### Get Page (Slide)
```bash
GET /google-slides/v1/presentations/{presentationId}/pages/{pageId}
```
### Get Page Thumbnail
```bash
GET /google-slides/v1/presentations/{presentationId}/pages/{pageId}/thumbnail
```
### Batch Update (All Modifications)
```bash
POST /google-slides/v1/presentations/{presentationId}:batchUpdate
Content-Type: application/json
{
"requests": [...]
}
```
### Create Slide
```bash
POST /google-slides/v1/presentations/{presentationId}:batchUpdate
Content-Type: application/json
{
"requests": [
{
"createSlide": {
"objectId": "slide_001",
"slideLayoutReference": {
"predefinedLayout": "TITLE_AND_BODY"
}
}
}
]
}
```
Predefined layouts: `BLANK`, `TITLE`, `TITLE_AND_BODY`, `TITLE_AND_TWO_COLUMNS`, `TITLE_ONLY`, `SECTION_HEADER`, `ONE_COLUMN_TEXT`, `MAIN_POINT`, `BIG_NUMBER`
### Insert Text
```bash
POST /google-slides/v1/presentations/{presentationId}:batchUpdate
Content-Type: application/json
{
"requests": [
{
"insertText": {
"objectId": "{shapeId}",
"text": "Hello, World!",
"insertionIndex": 0
}
}
]
}
```
### Create Shape (Text Box)
```bash
POST /google-slides/v1/presentations/{presentationId}:batchUpdate
Content-Type: application/json
{
"requests": [
{
"createShape": {
"objectId": "shape_001",
"shapeType": "TEXT_BOX",
"elementProperties": {
"pageObjectId": "{slideId}",
"size": {
"width": {"magnitude": 300, "unit": "PT"},
"height": {"magnitude": 100, "unit": "PT"}
},
"transform": {
"scaleX": 1,
"scaleY": 1,
"translateX": 100,
"translateY": 100,
"unit": "PT"
}
}
}
}
]
}
```
### Create Image
```bash
POST /google-slides/v1/presentations/{presentationId}:batchUpdate
Content-Type: application/json
{
"requests": [
{
"createImage": {
"objectId": "image_001",
"url": "https://example.com/image.png",
"elementProperties": {
"pageObjectId": "{slideId}",
"size": {
"width": {"magnitude": 200, "unit": "PT"},
"height": {"magnitude": 200, "unit": "PT"}
}
}
}
}
]
}
```
### Delete Object
```bash
POST /google-slides/v1/presentations/{presentationId}:batchUpdate
Content-Type: application/json
{
"requests": [
{
"deleteObject": {
"objectId": "{objectId}"
}
}
]
}
```
### Replace All Text (Template Substitution)
```bash
POST /google-slides/v1/presentations/{presentationId}:batchUpdate
Content-Type: application/json
{
"requests": [
{
"replaceAllText": {
"containsText": {
"text": "{{placeholder}}",
"matchCase": true
},
"replaceText": "Actual Value"
}
}
]
}
```
### Update Text Style
```bash
POST /google-slides/v1/presentations/{presentationId}:batchUpdate
Content-Type: application/json
{
"requests": [
{
"updateTextStyle": {
"objectId": "{shapeId}",
"textRange": {"type": "ALL"},
"style": {
"bold": true,
"fontSize": {"magnitude": 24, "unit": "PT"}
},
"fields": "bold,fontSize"
}
}
]
}
```
## Notes
- Object IDs must be unique within a presentation
- Use batchUpdate for all modifications (adding slides, text, shapes, etc.)
- Multiple requests in a batchUpdate are applied atomically
- Sizes and positions use PT (points) as the unit (72 points = 1 inch)
- Use `replaceAllText` for template-based presentation generation
## Resources
- [Slides API Overview](https://developers.google.com/slides/api/reference/rest)
- [Presentations](https://developers.google.com/slides/api/reference/rest/v1/presentations)
- [Pages](https://developers.google.com/slides/api/reference/rest/v1/presentations.pages)
- [BatchUpdate Requests](https://developers.google.com/slides/api/reference/rest/v1/presentations/batchUpdate)
- [Page Layouts](https://developers.google.com/slides/api/reference/rest/v1/presentations/create#predefinedlayout)

View File

@@ -0,0 +1,156 @@
# Google Tasks Routing Reference
**App name:** `google-tasks`
**Base URL proxied:** `tasks.googleapis.com`
## API Path Pattern
```
/google-tasks/tasks/v1/{endpoint}
```
## Common Endpoints
### Task Lists
#### List Task Lists
```bash
GET /google-tasks/tasks/v1/users/@me/lists
```
With pagination:
```bash
GET /google-tasks/tasks/v1/users/@me/lists?maxResults=20
```
#### Get Task List
```bash
GET /google-tasks/tasks/v1/users/@me/lists/{tasklistId}
```
#### Create Task List
```bash
POST /google-tasks/tasks/v1/users/@me/lists
Content-Type: application/json
{
"title": "New Task List"
}
```
#### Update Task List
```bash
PATCH /google-tasks/tasks/v1/users/@me/lists/{tasklistId}
Content-Type: application/json
{
"title": "Updated Title"
}
```
#### Delete Task List
```bash
DELETE /google-tasks/tasks/v1/users/@me/lists/{tasklistId}
```
### Tasks
#### List Tasks
```bash
GET /google-tasks/tasks/v1/lists/{tasklistId}/tasks
```
With filters:
```bash
GET /google-tasks/tasks/v1/lists/{tasklistId}/tasks?showCompleted=true&showHidden=true&maxResults=50
```
With date filters:
```bash
GET /google-tasks/tasks/v1/lists/{tasklistId}/tasks?dueMin=2026-01-01T00:00:00Z&dueMax=2026-12-31T23:59:59Z
```
#### Get Task
```bash
GET /google-tasks/tasks/v1/lists/{tasklistId}/tasks/{taskId}
```
#### Create Task
```bash
POST /google-tasks/tasks/v1/lists/{tasklistId}/tasks
Content-Type: application/json
{
"title": "New Task",
"notes": "Task description",
"due": "2026-03-01T00:00:00.000Z"
}
```
Create subtask:
```bash
POST /google-tasks/tasks/v1/lists/{tasklistId}/tasks?parent={parentTaskId}
Content-Type: application/json
{
"title": "Subtask"
}
```
#### Update Task (partial)
```bash
PATCH /google-tasks/tasks/v1/lists/{tasklistId}/tasks/{taskId}
Content-Type: application/json
{
"title": "Updated Title",
"status": "completed"
}
```
#### Update Task (full replace)
```bash
PUT /google-tasks/tasks/v1/lists/{tasklistId}/tasks/{taskId}
Content-Type: application/json
{
"title": "Replaced Task",
"notes": "New notes",
"status": "needsAction"
}
```
#### Delete Task
```bash
DELETE /google-tasks/tasks/v1/lists/{tasklistId}/tasks/{taskId}
```
#### Move Task
```bash
POST /google-tasks/tasks/v1/lists/{tasklistId}/tasks/{taskId}/move?previous={previousTaskId}
```
Make subtask:
```bash
POST /google-tasks/tasks/v1/lists/{tasklistId}/tasks/{taskId}/move?parent={parentTaskId}
```
#### Clear Completed Tasks
```bash
POST /google-tasks/tasks/v1/lists/{tasklistId}/clear
```
## Notes
- Authentication is automatic - the router injects the OAuth token
- Task list and task IDs are opaque base64-encoded strings
- Status values: "needsAction" or "completed"
- Dates must be in RFC 3339 format (e.g., `2026-01-15T00:00:00.000Z`)
- Maximum title length: 1024 characters
- Maximum notes length: 8192 characters
## Resources
- [Google Tasks API Overview](https://developers.google.com/workspace/tasks)
- [Tasks Reference](https://developers.google.com/workspace/tasks/reference/rest/v1/tasks)
- [TaskLists Reference](https://developers.google.com/workspace/tasks/reference/rest/v1/tasklists)

View File

@@ -0,0 +1,236 @@
# Google Workspace Admin Routing Reference
**App name:** `google-workspace-admin`
**Base URL proxied:** `admin.googleapis.com`
## API Path Pattern
```
/google-workspace-admin/admin/directory/v1/{endpoint}
```
## Common Endpoints
### Users
#### List Users
```bash
GET /google-workspace-admin/admin/directory/v1/users?customer=my_customer&maxResults=100
```
With search query:
```bash
GET /google-workspace-admin/admin/directory/v1/users?customer=my_customer&query=email:john*
```
#### Get User
```bash
GET /google-workspace-admin/admin/directory/v1/users/{userKey}
```
`userKey` can be the user's primary email or unique user ID.
#### Create User
```bash
POST /google-workspace-admin/admin/directory/v1/users
Content-Type: application/json
{
"primaryEmail": "newuser@example.com",
"name": {
"givenName": "Jane",
"familyName": "Smith"
},
"password": "temporaryPassword123!",
"changePasswordAtNextLogin": true,
"orgUnitPath": "/Engineering"
}
```
#### Update User
```bash
PUT /google-workspace-admin/admin/directory/v1/users/{userKey}
Content-Type: application/json
{
"name": {
"givenName": "Jane",
"familyName": "Smith-Johnson"
},
"suspended": false
}
```
#### Patch User (partial update)
```bash
PATCH /google-workspace-admin/admin/directory/v1/users/{userKey}
Content-Type: application/json
{
"suspended": true
}
```
#### Delete User
```bash
DELETE /google-workspace-admin/admin/directory/v1/users/{userKey}
```
#### Make User Admin
```bash
POST /google-workspace-admin/admin/directory/v1/users/{userKey}/makeAdmin
Content-Type: application/json
{
"status": true
}
```
### Groups
#### List Groups
```bash
GET /google-workspace-admin/admin/directory/v1/groups?customer=my_customer
```
#### Get Group
```bash
GET /google-workspace-admin/admin/directory/v1/groups/{groupKey}
```
#### Create Group
```bash
POST /google-workspace-admin/admin/directory/v1/groups
Content-Type: application/json
{
"email": "engineering@example.com",
"name": "Engineering Team",
"description": "All engineering staff"
}
```
#### Update Group
```bash
PUT /google-workspace-admin/admin/directory/v1/groups/{groupKey}
Content-Type: application/json
{
"name": "Engineering Department",
"description": "Updated description"
}
```
#### Delete Group
```bash
DELETE /google-workspace-admin/admin/directory/v1/groups/{groupKey}
```
### Group Members
#### List Members
```bash
GET /google-workspace-admin/admin/directory/v1/groups/{groupKey}/members
```
#### Add Member
```bash
POST /google-workspace-admin/admin/directory/v1/groups/{groupKey}/members
Content-Type: application/json
{
"email": "user@example.com",
"role": "MEMBER"
}
```
Roles: `OWNER`, `MANAGER`, `MEMBER`
#### Update Member Role
```bash
PATCH /google-workspace-admin/admin/directory/v1/groups/{groupKey}/members/{memberKey}
Content-Type: application/json
{
"role": "MANAGER"
}
```
#### Remove Member
```bash
DELETE /google-workspace-admin/admin/directory/v1/groups/{groupKey}/members/{memberKey}
```
### Organizational Units
#### List Org Units
```bash
GET /google-workspace-admin/admin/directory/v1/customer/my_customer/orgunits
```
#### Get Org Unit
```bash
GET /google-workspace-admin/admin/directory/v1/customer/my_customer/orgunits/{orgUnitPath}
```
#### Create Org Unit
```bash
POST /google-workspace-admin/admin/directory/v1/customer/my_customer/orgunits
Content-Type: application/json
{
"name": "Engineering",
"parentOrgUnitPath": "/",
"description": "Engineering department"
}
```
#### Delete Org Unit
```bash
DELETE /google-workspace-admin/admin/directory/v1/customer/my_customer/orgunits/{orgUnitPath}
```
### Domains
#### List Domains
```bash
GET /google-workspace-admin/admin/directory/v1/customer/my_customer/domains
```
#### Get Domain
```bash
GET /google-workspace-admin/admin/directory/v1/customer/my_customer/domains/{domainName}
```
### Roles
#### List Roles
```bash
GET /google-workspace-admin/admin/directory/v1/customer/my_customer/roles
```
#### List Role Assignments
```bash
GET /google-workspace-admin/admin/directory/v1/customer/my_customer/roleassignments
```
#### Create Role Assignment
```bash
POST /google-workspace-admin/admin/directory/v1/customer/my_customer/roleassignments
Content-Type: application/json
{
"roleId": "123456789",
"assignedTo": "user_id",
"scopeType": "CUSTOMER"
}
```
## Notes
- Use `my_customer` as the customer ID for your own domain
- User keys can be primary email or unique user ID
- Group keys can be group email or unique group ID
- Org unit paths start with `/` (e.g., `/Engineering/Frontend`)
- Admin privileges are required for most operations
- Password must meet Google's complexity requirements

View File

@@ -0,0 +1,147 @@
# Gumroad Routing Reference
**App name:** `gumroad`
**Base URL proxied:** `api.gumroad.com`
## API Path Pattern
```
/gumroad/v2/{resource}
```
## Common Endpoints
### Get Current User
```bash
GET /gumroad/v2/user
```
### List Products
```bash
GET /gumroad/v2/products
```
### Get Product
```bash
GET /gumroad/v2/products/{product_id}
```
### Update Product
```bash
PUT /gumroad/v2/products/{product_id}
Content-Type: application/x-www-form-urlencoded
name=Updated%20Name
```
### Delete Product
```bash
DELETE /gumroad/v2/products/{product_id}
```
### List Sales
```bash
GET /gumroad/v2/sales
GET /gumroad/v2/sales?after=2026-01-01&before=2026-12-31
```
### Get Sale
```bash
GET /gumroad/v2/sales/{sale_id}
```
### List Subscribers
```bash
GET /gumroad/v2/products/{product_id}/subscribers
```
### Get Subscriber
```bash
GET /gumroad/v2/subscribers/{subscriber_id}
```
### Verify License
```bash
POST /gumroad/v2/licenses/verify
Content-Type: application/x-www-form-urlencoded
product_id={product_id}&license_key={license_key}
```
### Enable/Disable License
```bash
PUT /gumroad/v2/licenses/enable
PUT /gumroad/v2/licenses/disable
```
### List Resource Subscriptions (Webhooks)
```bash
GET /gumroad/v2/resource_subscriptions?resource_name=sale
```
Resource names: `sale`, `refund`, `dispute`, `dispute_won`, `cancellation`, `subscription_updated`, `subscription_ended`, `subscription_restarted`
### Create Resource Subscription
```bash
PUT /gumroad/v2/resource_subscriptions
Content-Type: application/x-www-form-urlencoded
resource_name=sale&post_url=https://example.com/webhook
```
### Delete Resource Subscription
```bash
DELETE /gumroad/v2/resource_subscriptions/{resource_subscription_id}
```
### Offer Codes
```bash
GET /gumroad/v2/products/{product_id}/offer_codes
POST /gumroad/v2/products/{product_id}/offer_codes
PUT /gumroad/v2/products/{product_id}/offer_codes/{offer_code_id}
DELETE /gumroad/v2/products/{product_id}/offer_codes/{offer_code_id}
```
### Variant Categories
```bash
GET /gumroad/v2/products/{product_id}/variant_categories
POST /gumroad/v2/products/{product_id}/variant_categories
DELETE /gumroad/v2/products/{product_id}/variant_categories/{variant_category_id}
```
### Variants
```bash
GET /gumroad/v2/products/{product_id}/variant_categories/{variant_category_id}/variants
POST /gumroad/v2/products/{product_id}/variant_categories/{variant_category_id}/variants
PUT /gumroad/v2/products/{product_id}/variant_categories/{variant_category_id}/variants/{variant_id}
DELETE /gumroad/v2/products/{product_id}/variant_categories/{variant_category_id}/variants/{variant_id}
```
### Custom Fields
```bash
GET /gumroad/v2/products/{product_id}/custom_fields
POST /gumroad/v2/products/{product_id}/custom_fields
PUT /gumroad/v2/products/{product_id}/custom_fields/{name}
DELETE /gumroad/v2/products/{product_id}/custom_fields/{name}
```
## Pagination
Page-based pagination:
```bash
GET /gumroad/v2/sales?page=1
GET /gumroad/v2/sales?page=2
```
## Notes
- All responses include `success` boolean field
- Product creation not available via API
- POST/PUT use `application/x-www-form-urlencoded` (not JSON)
- Prices in cents (500 = $5.00)
- License keys are case-insensitive
## Resources
- [Gumroad API Documentation](https://gumroad.com/api)
- [Create API Application](https://help.gumroad.com/article/280-create-application-api)

View File

@@ -0,0 +1,357 @@
# HubSpot Routing Reference
**App name:** `hubspot`
**Base URL proxied:** `api.hubapi.com`
## API Path Pattern
```
/hubspot/crm/v3/objects/{objectType}/{endpoint}
```
## Common Endpoints
### Contacts
#### List Contacts
```bash
GET /hubspot/crm/v3/objects/contacts?limit=100
```
With properties:
```bash
GET /hubspot/crm/v3/objects/contacts?limit=100&properties=email,firstname,lastname,phone
```
With pagination:
```bash
GET /hubspot/crm/v3/objects/contacts?limit=100&properties=email,firstname&after={cursor}
```
#### Get Contact
```bash
GET /hubspot/crm/v3/objects/contacts/{contactId}?properties=email,firstname,lastname
```
#### Create Contact
```bash
POST /hubspot/crm/v3/objects/contacts
Content-Type: application/json
{
"properties": {
"email": "john@example.com",
"firstname": "John",
"lastname": "Doe",
"phone": "+1234567890"
}
}
```
#### Update Contact
```bash
PATCH /hubspot/crm/v3/objects/contacts/{contactId}
Content-Type: application/json
{
"properties": {
"phone": "+0987654321"
}
}
```
#### Delete Contact
```bash
DELETE /hubspot/crm/v3/objects/contacts/{contactId}
```
#### Search Contacts
```bash
POST /hubspot/crm/v3/objects/contacts/search
Content-Type: application/json
{
"filterGroups": [{
"filters": [{
"propertyName": "email",
"operator": "EQ",
"value": "john@example.com"
}]
}],
"properties": ["email", "firstname", "lastname"]
}
```
### Companies
#### List Companies
```bash
GET /hubspot/crm/v3/objects/companies?limit=100&properties=name,domain,industry
```
#### Get Company
```bash
GET /hubspot/crm/v3/objects/companies/{companyId}?properties=name,domain,industry
```
#### Create Company
```bash
POST /hubspot/crm/v3/objects/companies
Content-Type: application/json
{
"properties": {
"name": "Acme Corp",
"domain": "acme.com",
"industry": "COMPUTER_SOFTWARE"
}
}
```
**Note:** The `industry` property requires specific enum values (e.g., `COMPUTER_SOFTWARE`, `FINANCE`, `HEALTHCARE`), not free text like "Technology". Use the List Properties endpoint to get valid values.
#### Update Company
```bash
PATCH /hubspot/crm/v3/objects/companies/{companyId}
Content-Type: application/json
{
"properties": {
"industry": "COMPUTER_SOFTWARE",
"numberofemployees": "50"
}
}
```
#### Delete Company
```bash
DELETE /hubspot/crm/v3/objects/companies/{companyId}
```
#### Search Companies
```bash
POST /hubspot/crm/v3/objects/companies/search
Content-Type: application/json
{
"filterGroups": [{
"filters": [{
"propertyName": "domain",
"operator": "CONTAINS_TOKEN",
"value": "*"
}]
}],
"properties": ["name", "domain"],
"limit": 10
}
```
### Deals
#### List Deals
```bash
GET /hubspot/crm/v3/objects/deals?limit=100&properties=dealname,amount,dealstage
```
#### Get Deal
```bash
GET /hubspot/crm/v3/objects/deals/{dealId}?properties=dealname,amount,dealstage
```
#### Create Deal
```bash
POST /hubspot/crm/v3/objects/deals
Content-Type: application/json
{
"properties": {
"dealname": "New Deal",
"amount": "10000",
"dealstage": "appointmentscheduled"
}
}
```
#### Update Deal
```bash
PATCH /hubspot/crm/v3/objects/deals/{dealId}
Content-Type: application/json
{
"properties": {
"amount": "15000",
"dealstage": "qualifiedtobuy"
}
}
```
#### Delete Deal
```bash
DELETE /hubspot/crm/v3/objects/deals/{dealId}
```
#### Search Deals
```bash
POST /hubspot/crm/v3/objects/deals/search
Content-Type: application/json
{
"filterGroups": [{
"filters": [{
"propertyName": "amount",
"operator": "GTE",
"value": "1000"
}]
}],
"properties": ["dealname", "amount", "dealstage"],
"limit": 10
}
```
### Associations (v4 API)
#### Associate Objects
```bash
PUT /hubspot/crm/v4/objects/{fromObjectType}/{fromObjectId}/associations/{toObjectType}/{toObjectId}
Content-Type: application/json
[{"associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 279}]
```
Common association type IDs:
- `279` - Contact to Company
- `3` - Deal to Contact
- `341` - Deal to Company
#### List Associations
```bash
GET /hubspot/crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}
```
### Batch Operations
#### Batch Read
```bash
POST /hubspot/crm/v3/objects/{objectType}/batch/read
Content-Type: application/json
{
"properties": ["email", "firstname"],
"inputs": [{"id": "123"}, {"id": "456"}]
}
```
#### Batch Create
```bash
POST /hubspot/crm/v3/objects/{objectType}/batch/create
Content-Type: application/json
{
"inputs": [
{"properties": {"email": "one@example.com", "firstname": "One"}},
{"properties": {"email": "two@example.com", "firstname": "Two"}}
]
}
```
#### Batch Update
```bash
POST /hubspot/crm/v3/objects/{objectType}/batch/update
Content-Type: application/json
{
"inputs": [
{"id": "123", "properties": {"firstname": "Updated"}},
{"id": "456", "properties": {"firstname": "Also Updated"}}
]
}
```
#### Batch Archive
```bash
POST /hubspot/crm/v3/objects/{objectType}/batch/archive
Content-Type: application/json
{
"inputs": [{"id": "123"}, {"id": "456"}]
}
```
### Properties
#### List Properties
```bash
GET /hubspot/crm/v3/properties/{objectType}
```
## Search Operators
- `EQ` - Equal to
- `NEQ` - Not equal to
- `LT` - Less than
- `LTE` - Less than or equal to
- `GT` - Greater than
- `GTE` - Greater than or equal to
- `CONTAINS_TOKEN` - Contains token
- `NOT_CONTAINS_TOKEN` - Does not contain token
## Pagination
List endpoints return a `paging.next.after` cursor for pagination:
```json
{
"results": [...],
"paging": {
"next": {
"after": "12345",
"link": "https://api.hubapi.com/..."
}
}
}
```
Use the `after` query parameter to fetch the next page:
```bash
GET /hubspot/crm/v3/objects/contacts?limit=100&after=12345
```
## Notes
- Authentication is automatic - the router injects the OAuth token
- The `industry` property on companies requires specific enum values
- Batch operations support up to 100 records per request
- Archive/Delete is a soft delete - records can be restored within 90 days
- Delete endpoints return HTTP 204 (No Content) on success
## Resources
- [API Overview](https://developers.hubspot.com/docs/api/overview)
- [List Contacts](https://developers.hubspot.com/docs/api-reference/crm-contacts-v3/basic/get-crm-v3-objects-contacts.md)
- [Get Contact](https://developers.hubspot.com/docs/api-reference/crm-contacts-v3/basic/get-crm-v3-objects-contacts-contactId.md)
- [Create Contact](https://developers.hubspot.com/docs/api-reference/crm-contacts-v3/basic/post-crm-v3-objects-contacts.md)
- [Update Contact](https://developers.hubspot.com/docs/api-reference/crm-contacts-v3/basic/patch-crm-v3-objects-contacts-contactId.md)
- [Archive Contact](https://developers.hubspot.com/docs/api-reference/crm-contacts-v3/basic/delete-crm-v3-objects-contacts-contactId.md)
- [Merge Contacts](https://developers.hubspot.com/docs/api-reference/crm-contacts-v3/basic/post-crm-v3-objects-contacts-merge.md)
- [GDPR Delete Contact](https://developers.hubspot.com/docs/api-reference/crm-contacts-v3/basic/post-crm-v3-objects-contacts-gdpr-delete.md)
- [Search Contacts](https://developers.hubspot.com/docs/api-reference/crm-contacts-v3/search/post-crm-v3-objects-contacts-search.md)
- [List Companies](https://developers.hubspot.com/docs/api-reference/crm-companies-v3/basic/get-crm-v3-objects-companies.md)
- [Get Company](https://developers.hubspot.com/docs/api-reference/crm-companies-v3/basic/get-crm-v3-objects-companies-companyId.md)
- [Create Company](https://developers.hubspot.com/docs/api-reference/crm-companies-v3/basic/post-crm-v3-objects-companies.md)
- [Update Company](https://developers.hubspot.com/docs/api-reference/crm-companies-v3/basic/patch-crm-v3-objects-companies-companyId.md)
- [Archive Company](https://developers.hubspot.com/docs/api-reference/crm-companies-v3/basic/delete-crm-v3-objects-companies-companyId.md)
- [Merge Companies](https://developers.hubspot.com/docs/api-reference/crm-companies-v3/basic/post-crm-v3-objects-companies-merge.md)
- [Search Companies](https://developers.hubspot.com/docs/api-reference/crm-companies-v3/search/post-crm-v3-objects-companies-search.md)
- [List Deals](https://developers.hubspot.com/docs/api-reference/crm-deals-v3/basic/get-crm-v3-objects-0-3.md)
- [Get Deal](https://developers.hubspot.com/docs/api-reference/crm-deals-v3/basic/get-crm-v3-objects-0-3-dealId.md)
- [Create Deal](https://developers.hubspot.com/docs/api-reference/crm-deals-v3/basic/post-crm-v3-objects-0-3.md)
- [Update Deal](https://developers.hubspot.com/docs/api-reference/crm-deals-v3/basic/patch-crm-v3-objects-0-3-dealId.md)
- [Archive Deal](https://developers.hubspot.com/docs/api-reference/crm-deals-v3/basic/delete-crm-v3-objects-0-3-dealId.md)
- [Merge Deals](https://developers.hubspot.com/docs/api-reference/crm-deals-v3/basic/post-crm-v3-objects-0-3-merge.md)
- [Search Deals](https://developers.hubspot.com/docs/api-reference/crm-deals-v3/search/post-crm-v3-objects-0-3-search.md)
- [List Associations](https://developers.hubspot.com/docs/api-reference/crm-associations-v4/basic/get-crm-v4-objects-objectType-objectId-associations-toObjectType.md)
- [Create Association](https://developers.hubspot.com/docs/api-reference/crm-associations-v4/basic/put-crm-v4-objects-objectType-objectId-associations-toObjectType-toObjectId.md)
- [Delete Association](https://developers.hubspot.com/docs/api-reference/crm-associations-v4/basic/delete-crm-v4-objects-objectType-objectId-associations-toObjectType-toObjectId.md)
- [List Properties](https://developers.hubspot.com/docs/api-reference/crm-properties-v3/core/get-crm-v3-properties-objectType.md)
- [Get Property](https://developers.hubspot.com/docs/api-reference/crm-properties-v3/core/get-crm-v3-properties-objectType-propertyName.md)
- [Create Property](https://developers.hubspot.com/docs/api-reference/crm-properties-v3/core/post-crm-v3-properties-objectType.md)
- [Search Reference](https://developers.hubspot.com/docs/api/crm/search)

View File

@@ -0,0 +1,181 @@
# Jira Routing Reference
**App name:** `jira`
**Base URL proxied:** `api.atlassian.com`
## Getting Cloud ID
Jira Cloud requires a cloud ID in the API path. First, get accessible resources:
```bash
GET /jira/oauth/token/accessible-resources
```
Response:
```json
[{
"id": "62909843-b784-4c35-b770-e4e2a26f024b",
"url": "https://yoursite.atlassian.net",
"name": "yoursite",
"scopes": ["read:jira-user", "read:jira-work", "write:jira-work"]
}]
```
## API Path Pattern
```
/jira/ex/jira/{cloudId}/rest/api/3/{endpoint}
```
## Common Endpoints
### List Projects
```bash
GET /jira/ex/jira/{cloudId}/rest/api/3/project
```
### Get Project
```bash
GET /jira/ex/jira/{cloudId}/rest/api/3/project/{projectKeyOrId}
```
### Search Issues (JQL)
Note: The old `/search` endpoint is deprecated. Use `/search/jql` with a bounded query.
```bash
GET /jira/ex/jira/{cloudId}/rest/api/3/search/jql?jql=project%3DKEY%20order%20by%20created%20DESC&maxResults=20&fields=summary,status,assignee,created,priority
```
### Get Issue
```bash
GET /jira/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}
```
### Create Issue
```bash
POST /jira/ex/jira/{cloudId}/rest/api/3/issue
Content-Type: application/json
{
"fields": {
"project": {"key": "PROJ"},
"summary": "Issue summary",
"issuetype": {"name": "Task"}
}
}
```
### Update Issue
```bash
PUT /jira/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}
Content-Type: application/json
{
"fields": {
"summary": "Updated summary"
}
}
```
### Delete Issue
```bash
DELETE /jira/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}
```
### Assign Issue
```bash
PUT /jira/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/assignee
Content-Type: application/json
{
"accountId": "712020:5aff718e-6fe0-4548-82f4-f44ec481e5e7"
}
```
### Get Transitions
```bash
GET /jira/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/transitions
```
### Transition Issue (change status)
```bash
POST /jira/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/transitions
Content-Type: application/json
{
"transition": {"id": "31"}
}
```
### Add Comment
```bash
POST /jira/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/comment
Content-Type: application/json
{
"body": {
"type": "doc",
"version": 1,
"content": [{"type": "paragraph", "content": [{"type": "text", "text": "Comment text"}]}]
}
}
```
### Get Comments
```bash
GET /jira/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/comment
```
### Users
#### Get Current User
```bash
GET /jira/ex/jira/{cloudId}/rest/api/3/myself
```
#### Search Users
```bash
GET /jira/ex/jira/{cloudId}/rest/api/3/user/search?query=john
```
### Metadata
#### List Issue Types
```bash
GET /jira/ex/jira/{cloudId}/rest/api/3/issuetype
```
#### List Priorities
```bash
GET /jira/ex/jira/{cloudId}/rest/api/3/priority
```
#### List Statuses
```bash
GET /jira/ex/jira/{cloudId}/rest/api/3/status
```
#### List Fields
```bash
GET /jira/ex/jira/{cloudId}/rest/api/3/field
```
## Notes
- Always fetch cloud ID first using `/oauth/token/accessible-resources`
- JQL queries must be bounded (e.g., `project=KEY`) - unbounded queries are rejected
- Use URL encoding for JQL query parameters
- Update, Delete, Transition, and Assign endpoints return HTTP 204 (No Content) on success
- Agile API (`/rest/agile/1.0/...`) requires additional OAuth scopes beyond the basic Jira scopes
## Resources
- [API Introduction](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/)
- [Search Issues (JQL)](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-search/#api-rest-api-3-search-jql-get)
- [Get Issue](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issues/#api-rest-api-3-issue-issueidorkey-get)
- [Create Issue](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issues/#api-rest-api-3-issue-post)
- [Update Issue](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issues/#api-rest-api-3-issue-issueidorkey-put)
- [Transition Issue](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issues/#api-rest-api-3-issue-issueidorkey-transitions-post)
- [Add Comment](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-comments/#api-rest-api-3-issue-issueidorkey-comment-post)
- [Get Projects](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-projects/#api-rest-api-3-project-get)
- [JQL Reference](https://support.atlassian.com/jira-service-management-cloud/docs/use-advanced-search-with-jira-query-language-jql/)

View File

@@ -0,0 +1,168 @@
# Jobber Routing Reference
**App name:** `jobber`
**Base URL proxied:** `api.getjobber.com/api/`
## API Type
Jobber uses a GraphQL API exclusively. All requests are POST requests to the `/graphql` endpoint.
## API Path Pattern
```
/jobber/graphql
```
All operations use POST with a JSON body containing the `query` field.
## Version Header
The gateway automatically injects the `X-JOBBER-GRAPHQL-VERSION` header (currently `2025-04-16`).
## Common Operations
### Get Account
```bash
POST /jobber/graphql
Content-Type: application/json
{
"query": "{ account { id name } }"
}
```
### List Clients
```bash
POST /jobber/graphql
Content-Type: application/json
{
"query": "{ clients(first: 20) { nodes { id name emails { address } phones { number } } pageInfo { hasNextPage endCursor } } }"
}
```
### Get Client
```bash
POST /jobber/graphql
Content-Type: application/json
{
"query": "query($id: EncodedId!) { client(id: $id) { id name emails { address } } }",
"variables": { "id": "CLIENT_ID" }
}
```
### Create Client
```bash
POST /jobber/graphql
Content-Type: application/json
{
"query": "mutation($input: ClientCreateInput!) { clientCreate(input: $input) { client { id name } userErrors { message path } } }",
"variables": {
"input": {
"firstName": "John",
"lastName": "Doe",
"emails": [{"address": "john@example.com"}]
}
}
}
```
### List Jobs
```bash
POST /jobber/graphql
Content-Type: application/json
{
"query": "{ jobs(first: 20) { nodes { id title jobNumber jobStatus client { name } } pageInfo { hasNextPage endCursor } } }"
}
```
### Create Job
```bash
POST /jobber/graphql
Content-Type: application/json
{
"query": "mutation($input: JobCreateInput!) { jobCreate(input: $input) { job { id jobNumber } userErrors { message path } } }",
"variables": {
"input": {
"clientId": "CLIENT_ID",
"title": "Service Job"
}
}
}
```
### List Invoices
```bash
POST /jobber/graphql
Content-Type: application/json
{
"query": "{ invoices(first: 20) { nodes { id invoiceNumber total invoiceStatus } pageInfo { hasNextPage endCursor } } }"
}
```
### List Quotes
```bash
POST /jobber/graphql
Content-Type: application/json
{
"query": "{ quotes(first: 20) { nodes { id quoteNumber title quoteStatus } pageInfo { hasNextPage endCursor } } }"
}
```
### List Properties
```bash
POST /jobber/graphql
Content-Type: application/json
{
"query": "{ properties(first: 20) { nodes { id address { street city } client { name } } } }"
}
```
### List Users
```bash
POST /jobber/graphql
Content-Type: application/json
{
"query": "{ users(first: 50) { nodes { id name { full } email { raw } } } }"
}
```
## Pagination
Jobber uses Relay-style cursor-based pagination:
```bash
# First page
{
"query": "{ clients(first: 20) { nodes { id name } pageInfo { hasNextPage endCursor } } }"
}
# Next page
{
"query": "{ clients(first: 20, after: \"CURSOR\") { nodes { id name } pageInfo { hasNextPage endCursor } } }"
}
```
## Notes
- Jobber uses GraphQL exclusively (no REST API)
- Gateway injects version header automatically (`2025-04-16`)
- IDs use `EncodedId` type (base64 encoded) - pass as strings
- Field naming: `emails`/`phones` (arrays), `jobStatus`/`invoiceStatus`/`quoteStatus`
- Rate limits: 2,500 requests per 5 minutes, plus query cost limits (max 10,000 points)
- Old API versions supported for 12-18 months
- Available resources: Clients, Jobs, Invoices, Quotes, Requests, Properties, Users, Custom Fields
## Resources
- [Jobber Developer Documentation](https://developer.getjobber.com/docs/)
- [API Changelog](https://developer.getjobber.com/docs/changelog)
- [API Support](mailto:api-support@getjobber.com)

View File

@@ -0,0 +1,190 @@
# 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":"2024-01-01"}
```
#### 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)

View File

@@ -0,0 +1,190 @@
# Keap Routing Reference
**App name:** `keap`
**Base URL proxied:** `api.infusionsoft.com/crm/rest`
## API Path Pattern
```
/keap/crm/rest/v2/{resource}
```
Note: The `/crm/rest` prefix is required in the path.
## Common Endpoints
### Get Current User
```bash
GET /keap/crm/rest/v2/oauth/connect/userinfo
```
### List Contacts
```bash
GET /keap/crm/rest/v2/contacts
```
Query parameters: `page_size`, `page_token`, `filter`, `order_by`, `fields`
### Get Contact
```bash
GET /keap/crm/rest/v2/contacts/{contact_id}
```
### Create Contact
```bash
POST /keap/crm/rest/v2/contacts
Content-Type: application/json
{
"given_name": "John",
"family_name": "Doe",
"email_addresses": [{"email": "john@example.com", "field": "EMAIL1"}]
}
```
### Update Contact
```bash
PATCH /keap/crm/rest/v2/contacts/{contact_id}
Content-Type: application/json
{
"given_name": "Jane"
}
```
### Delete Contact
```bash
DELETE /keap/crm/rest/v2/contacts/{contact_id}
```
### List Companies
```bash
GET /keap/crm/rest/v2/companies
```
### List Tags
```bash
GET /keap/crm/rest/v2/tags
```
### Apply Tags to Contacts
```bash
POST /keap/crm/rest/v2/tags/{tag_id}/contacts:applyTags
Content-Type: application/json
{
"contact_ids": ["1", "2", "3"]
}
```
### List Tasks
```bash
GET /keap/crm/rest/v2/tasks
```
### Create Task
```bash
POST /keap/crm/rest/v2/tasks
Content-Type: application/json
{
"title": "Follow up call",
"due_date": "2026-02-15T10:00:00Z",
"contact": {"id": "9"}
}
```
### List Opportunities
```bash
GET /keap/crm/rest/v2/opportunities
```
### List Orders
```bash
GET /keap/crm/rest/v2/orders
```
### List Products
```bash
GET /keap/crm/rest/v2/products
```
### List Campaigns
```bash
GET /keap/crm/rest/v2/campaigns
```
### Add Contacts to Campaign Sequence
```bash
POST /keap/crm/rest/v2/campaigns/{campaign_id}/sequences/{sequence_id}:addContacts
Content-Type: application/json
{
"contact_ids": ["1", "2"]
}
```
### List Emails
```bash
GET /keap/crm/rest/v2/emails
```
### Send Email
```bash
POST /keap/crm/rest/v2/emails:send
Content-Type: application/json
{
"contacts": [{"id": "9"}],
"subject": "Hello",
"html_content": "<p>Email body</p>"
}
```
### List Automations
```bash
GET /keap/crm/rest/v2/automations
```
### List Affiliates
```bash
GET /keap/crm/rest/v2/affiliates
```
### List Subscriptions
```bash
GET /keap/crm/rest/v2/subscriptions
```
## Pagination
Uses token-based pagination:
```bash
GET /keap/crm/rest/v2/contacts?page_size=50
GET /keap/crm/rest/v2/contacts?page_size=50&page_token=NEXT_TOKEN
```
Response includes `next_page_token` (empty when no more pages).
## Filtering
Use the `filter` parameter:
```bash
GET /keap/crm/rest/v2/contacts?filter=given_name==John
GET /keap/crm/rest/v2/tasks?filter=completed==false
```
## Notes
- API version is v2 (v1 is deprecated)
- Path must include `/crm/rest` prefix
- IDs are returned as strings
- Maximum `page_size` is 1000
- Timestamps use ISO 8601 format
## Resources
- [Keap Developer Portal](https://developer.infusionsoft.com/)
- [Keap REST API V2 Documentation](https://developer.infusionsoft.com/docs/restv2/)

View File

@@ -0,0 +1,221 @@
# Kit Routing Reference
**App name:** `kit`
**Base URL proxied:** `api.kit.com`
## API Path Pattern
```
/kit/v4/{resource}
```
## Common Endpoints
### List Subscribers
```bash
GET /kit/v4/subscribers
```
Query parameters:
- `per_page` - Results per page (default: 500, max: 1000)
- `after` - Cursor for next page
- `before` - Cursor for previous page
- `status` - Filter by: `active`, `inactive`, `bounced`, `complained`, `cancelled`, or `all`
- `email_address` - Filter by specific email
### Get Subscriber
```bash
GET /kit/v4/subscribers/{id}
```
### Create Subscriber
```bash
POST /kit/v4/subscribers
Content-Type: application/json
{
"email_address": "user@example.com",
"first_name": "John"
}
```
### Update Subscriber
```bash
PUT /kit/v4/subscribers/{id}
Content-Type: application/json
{
"first_name": "Updated Name"
}
```
### List Tags
```bash
GET /kit/v4/tags
```
### Create Tag
```bash
POST /kit/v4/tags
Content-Type: application/json
{
"name": "new-tag"
}
```
### Update Tag
```bash
PUT /kit/v4/tags/{id}
Content-Type: application/json
{
"name": "updated-tag-name"
}
```
### Delete Tag
```bash
DELETE /kit/v4/tags/{id}
```
### Tag a Subscriber
```bash
POST /kit/v4/tags/{tag_id}/subscribers
Content-Type: application/json
{
"email_address": "user@example.com"
}
```
### Remove Tag from Subscriber
```bash
DELETE /kit/v4/tags/{tag_id}/subscribers/{subscriber_id}
```
### List Subscribers with Tag
```bash
GET /kit/v4/tags/{tag_id}/subscribers
```
### List Forms
```bash
GET /kit/v4/forms
```
### Add Subscriber to Form
```bash
POST /kit/v4/forms/{form_id}/subscribers
Content-Type: application/json
{
"email_address": "user@example.com"
}
```
### List Form Subscribers
```bash
GET /kit/v4/forms/{form_id}/subscribers
```
### List Sequences
```bash
GET /kit/v4/sequences
```
### Add Subscriber to Sequence
```bash
POST /kit/v4/sequences/{sequence_id}/subscribers
Content-Type: application/json
{
"email_address": "user@example.com"
}
```
### List Broadcasts
```bash
GET /kit/v4/broadcasts
```
### List Segments
```bash
GET /kit/v4/segments
```
### List Custom Fields
```bash
GET /kit/v4/custom_fields
```
### Create Custom Field
```bash
POST /kit/v4/custom_fields
Content-Type: application/json
{
"label": "Company"
}
```
### Update Custom Field
```bash
PUT /kit/v4/custom_fields/{id}
Content-Type: application/json
{
"label": "Company Name"
}
```
### Delete Custom Field
```bash
DELETE /kit/v4/custom_fields/{id}
```
### List Email Templates
```bash
GET /kit/v4/email_templates
```
### List Purchases
```bash
GET /kit/v4/purchases
```
### List Webhooks
```bash
GET /kit/v4/webhooks
```
### Create Webhook
```bash
POST /kit/v4/webhooks
Content-Type: application/json
{
"target_url": "https://example.com/webhook",
"event": {"name": "subscriber.subscriber_activate"}
}
```
### Delete Webhook
```bash
DELETE /kit/v4/webhooks/{id}
```
## Notes
- Kit API uses V4 (V3 is deprecated)
- Subscriber IDs are integers
- Custom field keys are auto-generated from labels
- Uses cursor-based pagination with `after` and `before` parameters
- Delete operations return 204 No Content
- Bulk operations (>100 items) are processed asynchronously
## Resources
- [Kit API Overview](https://developers.kit.com/api-reference/overview)
- [Kit API Reference](https://developers.kit.com/api-reference)
- [Kit Developer Documentation](https://developers.kit.com)

View File

@@ -0,0 +1,237 @@
# Klaviyo Routing Reference
**App name:** `klaviyo`
**Base URL proxied:** `a.klaviyo.com`
## API Path Pattern
```
/klaviyo/api/{resource}
```
## API Versioning
Include the `revision` header in all requests:
```
revision: 2024-10-15
```
## Common Endpoints
### Get Profiles
```bash
GET /klaviyo/api/profiles
```
Query parameters:
- `filter` - Filter profiles (e.g., `filter=equals(email,"test@example.com")`)
- `fields[profile]` - Comma-separated list of fields to include
- `page[size]` - Number of results per page (max 100)
### Get a Profile
```bash
GET /klaviyo/api/profiles/{profile_id}
```
### Create a Profile
```bash
POST /klaviyo/api/profiles
Content-Type: application/json
{
"data": {
"type": "profile",
"attributes": {
"email": "newuser@example.com",
"first_name": "John",
"last_name": "Doe"
}
}
}
```
### Update a Profile
```bash
PATCH /klaviyo/api/profiles/{profile_id}
Content-Type: application/json
{
"data": {
"type": "profile",
"id": "PROFILE_ID",
"attributes": {
"first_name": "Jane"
}
}
}
```
### Get Lists
```bash
GET /klaviyo/api/lists
```
### Create a List
```bash
POST /klaviyo/api/lists
Content-Type: application/json
{
"data": {
"type": "list",
"attributes": {
"name": "VIP Customers"
}
}
}
```
### Add Profiles to List
```bash
POST /klaviyo/api/lists/{list_id}/relationships/profiles
Content-Type: application/json
{
"data": [
{"type": "profile", "id": "PROFILE_ID"}
]
}
```
### Get Segments
```bash
GET /klaviyo/api/segments
```
### Get Campaigns
```bash
GET /klaviyo/api/campaigns
```
### Create a Campaign
```bash
POST /klaviyo/api/campaigns
Content-Type: application/json
{
"data": {
"type": "campaign",
"attributes": {
"name": "Summer Newsletter",
"audiences": {
"included": ["LIST_ID"]
}
}
}
}
```
### Get Flows
```bash
GET /klaviyo/api/flows
```
### Update Flow Status
```bash
PATCH /klaviyo/api/flows/{flow_id}
Content-Type: application/json
{
"data": {
"type": "flow",
"id": "FLOW_ID",
"attributes": {
"status": "live"
}
}
}
```
### Create an Event
```bash
POST /klaviyo/api/events
Content-Type: application/json
{
"data": {
"type": "event",
"attributes": {
"profile": {
"data": {
"type": "profile",
"attributes": {
"email": "customer@example.com"
}
}
},
"metric": {
"data": {
"type": "metric",
"attributes": {
"name": "Viewed Product"
}
}
},
"properties": {
"product_id": "SKU123",
"product_name": "Blue T-Shirt"
}
}
}
}
```
### Get Metrics
```bash
GET /klaviyo/api/metrics
```
### Get Templates
```bash
GET /klaviyo/api/templates
```
### Create Webhook
```bash
POST /klaviyo/api/webhooks
Content-Type: application/json
{
"data": {
"type": "webhook",
"attributes": {
"name": "Order Placed Webhook",
"endpoint_url": "https://example.com/webhooks/klaviyo",
"enabled": true
},
"relationships": {
"webhook-topics": {
"data": [
{"type": "webhook-topic", "id": "campaign:sent"}
]
}
}
}
}
```
### Delete Webhook
```bash
DELETE /klaviyo/api/webhooks/{webhook_id}
```
## Notes
- All requests use JSON:API specification
- Timestamps are in ISO 8601 RFC 3339 format
- Resource IDs are strings (often base64-encoded)
- Use sparse fieldsets to optimize response size (e.g., `fields[profile]=email,first_name`)
- Include `revision` header for API versioning
- Use cursor-based pagination with `page[cursor]` parameter
## Resources
- [Klaviyo API Documentation](https://developers.klaviyo.com)
- [API Reference](https://developers.klaviyo.com/en/reference/api_overview)
- [Klaviyo Developer Portal](https://developers.klaviyo.com/en)

View File

@@ -0,0 +1,203 @@
# Linear Routing Reference
**App name:** `linear`
**Base URL proxied:** `api.linear.app`
## API Type
Linear uses a GraphQL API exclusively. All requests are POST requests to the `/graphql` endpoint.
## API Path Pattern
```
/linear/graphql
```
All operations use POST with a JSON body containing the `query` field.
## Common Operations
### Get Current User (Viewer)
```bash
POST /linear/graphql
Content-Type: application/json
{
"query": "{ viewer { id name email } }"
}
```
### Get Organization
```bash
POST /linear/graphql
Content-Type: application/json
{
"query": "{ organization { id name urlKey } }"
}
```
### List Teams
```bash
POST /linear/graphql
Content-Type: application/json
{
"query": "{ teams { nodes { id name key } } }"
}
```
### List Issues
```bash
POST /linear/graphql
Content-Type: application/json
{
"query": "{ issues(first: 20) { nodes { id identifier title state { name } priority } pageInfo { hasNextPage endCursor } } }"
}
```
### Get Issue by Identifier
```bash
POST /linear/graphql
Content-Type: application/json
{
"query": "{ issue(id: \"MTN-527\") { id identifier title description state { name } priority assignee { name } team { key } createdAt } }"
}
```
### Filter Issues by State
```bash
POST /linear/graphql
Content-Type: application/json
{
"query": "{ issues(first: 20, filter: { state: { type: { eq: \"started\" } } }) { nodes { id identifier title state { name } } } }"
}
```
### Search Issues
```bash
POST /linear/graphql
Content-Type: application/json
{
"query": "{ searchIssues(first: 20, term: \"search term\") { nodes { id identifier title } } }"
}
```
### Create Issue
```bash
POST /linear/graphql
Content-Type: application/json
{
"query": "mutation { issueCreate(input: { teamId: \"TEAM_ID\", title: \"Issue title\", description: \"Description\" }) { success issue { id identifier title } } }"
}
```
### Update Issue
```bash
POST /linear/graphql
Content-Type: application/json
{
"query": "mutation { issueUpdate(id: \"ISSUE_ID\", input: { title: \"Updated title\", priority: 2 }) { success issue { id identifier title priority } } }"
}
```
### Create Comment
```bash
POST /linear/graphql
Content-Type: application/json
{
"query": "mutation { commentCreate(input: { issueId: \"ISSUE_ID\", body: \"Comment text\" }) { success comment { id body } } }"
}
```
### List Projects
```bash
POST /linear/graphql
Content-Type: application/json
{
"query": "{ projects(first: 20) { nodes { id name state createdAt } } }"
}
```
### List Labels
```bash
POST /linear/graphql
Content-Type: application/json
{
"query": "{ issueLabels(first: 50) { nodes { id name color } } }"
}
```
### List Workflow States
```bash
POST /linear/graphql
Content-Type: application/json
{
"query": "{ workflowStates(first: 50) { nodes { id name type team { key } } } }"
}
```
### List Users
```bash
POST /linear/graphql
Content-Type: application/json
{
"query": "{ users(first: 50) { nodes { id name email active } } }"
}
```
### List Cycles
```bash
POST /linear/graphql
Content-Type: application/json
{
"query": "{ cycles(first: 20) { nodes { id name number startsAt endsAt } } }"
}
```
## Pagination
Linear uses Relay-style cursor-based pagination:
```bash
# First page
POST /linear/graphql
{
"query": "{ issues(first: 20) { nodes { id identifier title } pageInfo { hasNextPage endCursor } } }"
}
# Next page
POST /linear/graphql
{
"query": "{ issues(first: 20, after: \"CURSOR_VALUE\") { nodes { id identifier title } pageInfo { hasNextPage endCursor } } }"
}
```
## Notes
- Linear uses GraphQL exclusively (no REST API)
- Issue identifiers (e.g., `MTN-527`) can be used in place of UUIDs for the `id` parameter
- Priority values: 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low
- Workflow state types: `backlog`, `unstarted`, `started`, `completed`, `canceled`
- Some mutations (delete, create labels/projects) may require additional OAuth scopes
- Use `searchIssues(term: "...")` for full-text search
- Filter operators: `eq`, `neq`, `in`, `nin`, `containsIgnoreCase`, etc.
## Resources
- [Linear API Overview](https://linear.app/developers)
- [Linear GraphQL Getting Started](https://linear.app/developers/graphql)
- [Linear GraphQL Schema (Apollo Studio)](https://studio.apollographql.com/public/Linear-API/schema/reference?variant=current)
- [Linear API and Webhooks](https://linear.app/docs/api-and-webhooks)

View File

@@ -0,0 +1,278 @@
# LinkedIn Routing Reference
**App name:** `linkedin`
**Base URL proxied:** `api.linkedin.com`
## API Path Pattern
```
/linkedin/v2/{resource}
```
## Required Headers
```
X-Restli-Protocol-Version: 2.0.0
```
## Common Endpoints
### Get User Info (OpenID Connect)
```bash
GET /linkedin/v2/userinfo
```
### Get Current User Profile
```bash
GET /linkedin/v2/me
```
With projection:
```bash
GET /linkedin/v2/me?projection=(id,firstName,lastName)
```
### Create Text Post
```bash
POST /linkedin/v2/ugcPosts
Content-Type: application/json
X-Restli-Protocol-Version: 2.0.0
{
"author": "urn:li:person:{personId}",
"lifecycleState": "PUBLISHED",
"specificContent": {
"com.linkedin.ugc.ShareContent": {
"shareCommentary": {"text": "Hello LinkedIn!"},
"shareMediaCategory": "NONE"
}
},
"visibility": {
"com.linkedin.ugc.MemberNetworkVisibility": "PUBLIC"
}
}
```
### Create Article/URL Share
```bash
POST /linkedin/v2/ugcPosts
Content-Type: application/json
X-Restli-Protocol-Version: 2.0.0
{
"author": "urn:li:person:{personId}",
"lifecycleState": "PUBLISHED",
"specificContent": {
"com.linkedin.ugc.ShareContent": {
"shareCommentary": {"text": "Check this out!"},
"shareMediaCategory": "ARTICLE",
"media": [{
"status": "READY",
"originalUrl": "https://example.com",
"title": {"text": "Title"},
"description": {"text": "Description"}
}]
}
},
"visibility": {
"com.linkedin.ugc.MemberNetworkVisibility": "PUBLIC"
}
}
```
### Register Image Upload
```bash
POST /linkedin/v2/assets?action=registerUpload
Content-Type: application/json
X-Restli-Protocol-Version: 2.0.0
{
"registerUploadRequest": {
"recipes": ["urn:li:digitalmediaRecipe:feedshare-image"],
"owner": "urn:li:person:{personId}",
"serviceRelationships": [{
"relationshipType": "OWNER",
"identifier": "urn:li:userGeneratedContent"
}]
}
}
```
### Ad Library - Search Ads
```bash
GET /linkedin/rest/adLibrary?q=criteria&keyword=linkedin
```
Required headers:
- `LinkedIn-Version: 202502`
### Job Library - Search Jobs
```bash
GET /linkedin/rest/jobLibrary?q=criteria&keyword=software
```
Required headers:
- `LinkedIn-Version: 202506`
## Marketing API (Advertising)
Required headers for all Marketing API calls:
```
X-Restli-Protocol-Version: 2.0.0
LinkedIn-Version: 202502
```
### List Ad Accounts
```bash
GET /linkedin/rest/adAccounts?q=search
```
### Get Ad Account
```bash
GET /linkedin/rest/adAccounts/{adAccountId}
```
### Create Ad Account
```bash
POST /linkedin/rest/adAccounts
Content-Type: application/json
{
"name": "Ad Account Name",
"currency": "USD",
"reference": "urn:li:organization:{orgId}",
"type": "BUSINESS"
}
```
### List Campaign Groups
```bash
GET /linkedin/rest/adAccounts/{adAccountId}/adCampaignGroups
```
### Create Campaign Group
```bash
POST /linkedin/rest/adAccounts/{adAccountId}/adCampaignGroups
Content-Type: application/json
{
"name": "Campaign Group Name",
"status": "DRAFT"
}
```
### Get Campaign Group
```bash
GET /linkedin/rest/adAccounts/{adAccountId}/adCampaignGroups/{campaignGroupId}
```
### List Campaigns
```bash
GET /linkedin/rest/adAccounts/{adAccountId}/adCampaigns
```
### Create Campaign
```bash
POST /linkedin/rest/adAccounts/{adAccountId}/adCampaigns
Content-Type: application/json
{
"campaignGroup": "urn:li:sponsoredCampaignGroup:{groupId}",
"name": "Campaign Name",
"status": "DRAFT",
"objectiveType": "BRAND_AWARENESS"
}
```
### Get Campaign
```bash
GET /linkedin/rest/adAccounts/{adAccountId}/adCampaigns/{campaignId}
```
### List Organization ACLs
```bash
GET /linkedin/v2/organizationAcls?q=roleAssignee
```
### Lookup Organization by Vanity Name
```bash
GET /linkedin/rest/organizations?q=vanityName&vanityName=microsoft
```
### Get Organization Share Statistics
```bash
GET /linkedin/rest/organizationalEntityShareStatistics?q=organizationalEntity&organizationalEntity=urn:li:organization:12345
```
### Get Organization Posts
```bash
GET /linkedin/rest/posts?q=author&author=urn:li:organization:12345
```
## Media Upload (REST API)
Required headers:
- `LinkedIn-Version: 202502`
### Initialize Image Upload
```bash
POST /linkedin/rest/images?action=initializeUpload
Content-Type: application/json
{"initializeUploadRequest": {"owner": "urn:li:person:{personId}"}}
```
### Initialize Video Upload
```bash
POST /linkedin/rest/videos?action=initializeUpload
Content-Type: application/json
{"initializeUploadRequest": {"owner": "urn:li:person:{personId}", "fileSizeBytes": 10000000}}
```
### Initialize Document Upload
```bash
POST /linkedin/rest/documents?action=initializeUpload
Content-Type: application/json
{"initializeUploadRequest": {"owner": "urn:li:person:{personId}"}}
```
## Ad Targeting
### Get Targeting Facets
```bash
GET /linkedin/rest/adTargetingFacets
```
Returns 31 targeting facets (skills, industries, titles, locations, etc.)
## Notes
- Authentication is automatic - the router injects the OAuth token
- Include `X-Restli-Protocol-Version: 2.0.0` header for all v2 API calls
- Author URN format: `urn:li:person:{personId}`
- Get person ID from `/v2/me` endpoint
- Image uploads are 3-step: register, upload binary, create post
- Rate limits: 150 requests/day per member, 100K/day per app
## Visibility Options
- `PUBLIC` - Viewable by anyone
- `CONNECTIONS` - 1st-degree connections only
## Share Media Categories
- `NONE` - Text only
- `ARTICLE` - URL share
- `IMAGE` - Image post
- `VIDEO` - Video post
## Resources
- [LinkedIn API Overview](https://learn.microsoft.com/en-us/linkedin/)
- [Share on LinkedIn](https://learn.microsoft.com/en-us/linkedin/consumer/integrations/self-serve/share-on-linkedin)
- [Profile API](https://learn.microsoft.com/en-us/linkedin/shared/integrations/people/profile-api)
- [Marketing API](https://learn.microsoft.com/en-us/linkedin/marketing/)
- [Ad Accounts](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/ads/account-structure/create-and-manage-accounts)
- [Campaigns](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/ads/account-structure/create-and-manage-campaigns)

View File

@@ -0,0 +1,213 @@
# Mailchimp Routing Reference
**App name:** `mailchimp`
**Base URL proxied:** `{dc}.api.mailchimp.com`
## API Path Pattern
```
/mailchimp/3.0/{resource}
```
## Common Endpoints
### Get All Lists (Audiences)
```bash
GET /mailchimp/3.0/lists
```
Query parameters:
- `count` - Number of records to return (default 10, max 1000)
- `offset` - Number of records to skip (for pagination)
### Get a List
```bash
GET /mailchimp/3.0/lists/{list_id}
```
### Create a List
```bash
POST /mailchimp/3.0/lists
Content-Type: application/json
{
"name": "Newsletter",
"contact": {
"company": "Acme Corp",
"address1": "123 Main St",
"city": "New York",
"state": "NY",
"zip": "10001",
"country": "US"
},
"permission_reminder": "You signed up for our newsletter",
"campaign_defaults": {
"from_name": "Acme Corp",
"from_email": "newsletter@acme.com",
"subject": "",
"language": "en"
},
"email_type_option": true
}
```
### Get List Members
```bash
GET /mailchimp/3.0/lists/{list_id}/members?status=subscribed&count=50
```
### Add a Member
```bash
POST /mailchimp/3.0/lists/{list_id}/members
Content-Type: application/json
{
"email_address": "newuser@example.com",
"status": "subscribed",
"merge_fields": {
"FNAME": "Jane",
"LNAME": "Smith"
}
}
```
### Update a Member
```bash
PATCH /mailchimp/3.0/lists/{list_id}/members/{subscriber_hash}
Content-Type: application/json
{
"merge_fields": {
"FNAME": "Jane",
"LNAME": "Doe"
}
}
```
### Add or Update a Member (Upsert)
```bash
PUT /mailchimp/3.0/lists/{list_id}/members/{subscriber_hash}
Content-Type: application/json
{
"email_address": "user@example.com",
"status_if_new": "subscribed",
"merge_fields": {
"FNAME": "Jane",
"LNAME": "Smith"
}
}
```
### Delete a Member
```bash
DELETE /mailchimp/3.0/lists/{list_id}/members/{subscriber_hash}
```
### Add or Remove Tags
```bash
POST /mailchimp/3.0/lists/{list_id}/members/{subscriber_hash}/tags
Content-Type: application/json
{
"tags": [
{"name": "VIP", "status": "active"},
{"name": "Old Tag", "status": "inactive"}
]
}
```
### Get Segments
```bash
GET /mailchimp/3.0/lists/{list_id}/segments
```
### Get All Campaigns
```bash
GET /mailchimp/3.0/campaigns?status=sent&count=20
```
### Create a Campaign
```bash
POST /mailchimp/3.0/campaigns
Content-Type: application/json
{
"type": "regular",
"recipients": {
"list_id": "LIST_ID"
},
"settings": {
"subject_line": "Your Monthly Update",
"from_name": "Acme Corp",
"reply_to": "hello@acme.com"
}
}
```
### Set Campaign Content
```bash
PUT /mailchimp/3.0/campaigns/{campaign_id}/content
Content-Type: application/json
{
"html": "<html><body><h1>Hello!</h1><p>Newsletter content here.</p></body></html>",
"plain_text": "Hello! Newsletter content here."
}
```
### Send a Campaign
```bash
POST /mailchimp/3.0/campaigns/{campaign_id}/actions/send
```
### Schedule a Campaign
```bash
POST /mailchimp/3.0/campaigns/{campaign_id}/actions/schedule
Content-Type: application/json
{
"schedule_time": "2025-03-01T10:00:00+00:00"
}
```
### Get All Templates
```bash
GET /mailchimp/3.0/templates?type=user
```
### Get All Automations
```bash
GET /mailchimp/3.0/automations
```
### Start an Automation
```bash
POST /mailchimp/3.0/automations/{workflow_id}/actions/start-all-emails
```
### Get Campaign Reports
```bash
GET /mailchimp/3.0/reports?count=20
```
### Get Campaign Report
```bash
GET /mailchimp/3.0/reports/{campaign_id}
```
## Notes
- List IDs are 10-character alphanumeric strings
- Subscriber hashes are MD5 hashes of lowercase email addresses
- Timestamps are in ISO 8601 format
- Maximum 1000 records per request for list endpoints
- "Audience" and "list" are used interchangeably (app vs API terminology)
- "Contact" and "member" are used interchangeably (app vs API terminology)
- Use offset-based pagination with `count` and `offset` parameters
## Resources
- [Mailchimp Marketing API Documentation](https://mailchimp.com/developer/marketing/)
- [API Reference](https://mailchimp.com/developer/marketing/api/)
- [Quick Start Guide](https://mailchimp.com/developer/marketing/guides/quick-start/)

View File

@@ -0,0 +1,238 @@
# MailerLite Routing Reference
**App name:** `mailerlite`
**Base URL proxied:** `connect.mailerlite.com`
## API Path Pattern
```
/mailerlite/api/{resource}
```
## Common Endpoints
### Subscribers
#### List Subscribers
```bash
GET /mailerlite/api/subscribers
```
Query parameters: `filter[status]`, `limit`, `cursor`, `include`
#### Get Subscriber
```bash
GET /mailerlite/api/subscribers/{subscriber_id_or_email}
```
#### Create/Upsert Subscriber
```bash
POST /mailerlite/api/subscribers
Content-Type: application/json
{
"email": "subscriber@example.com",
"fields": {"name": "John Doe"},
"groups": ["12345678901234567"],
"status": "active"
}
```
#### Update Subscriber
```bash
PUT /mailerlite/api/subscribers/{subscriber_id}
Content-Type: application/json
{
"fields": {"name": "Jane Doe"}
}
```
#### Delete Subscriber
```bash
DELETE /mailerlite/api/subscribers/{subscriber_id}
```
### Groups
#### List Groups
```bash
GET /mailerlite/api/groups
```
Query parameters: `limit`, `page`, `filter[name]`, `sort`
#### Create Group
```bash
POST /mailerlite/api/groups
Content-Type: application/json
{
"name": "Newsletter Subscribers"
}
```
#### Update Group
```bash
PUT /mailerlite/api/groups/{group_id}
Content-Type: application/json
{
"name": "Updated Group Name"
}
```
#### Delete Group
```bash
DELETE /mailerlite/api/groups/{group_id}
```
#### Get Group Subscribers
```bash
GET /mailerlite/api/groups/{group_id}/subscribers
```
### Campaigns
#### List Campaigns
```bash
GET /mailerlite/api/campaigns
```
Query parameters: `filter[status]`, `filter[type]`, `limit`, `page`
#### Get Campaign
```bash
GET /mailerlite/api/campaigns/{campaign_id}
```
#### Create Campaign
```bash
POST /mailerlite/api/campaigns
Content-Type: application/json
{
"name": "My Newsletter",
"type": "regular",
"emails": [
{
"subject": "Weekly Update",
"from_name": "Newsletter",
"from": "newsletter@example.com"
}
],
"groups": ["12345678901234567"]
}
```
#### Schedule Campaign
```bash
POST /mailerlite/api/campaigns/{campaign_id}/schedule
Content-Type: application/json
{
"delivery": "instant"
}
```
#### Delete Campaign
```bash
DELETE /mailerlite/api/campaigns/{campaign_id}
```
### Automations
#### List Automations
```bash
GET /mailerlite/api/automations
```
Query parameters: `filter[enabled]`, `filter[name]`, `page`, `limit`
#### Get Automation
```bash
GET /mailerlite/api/automations/{automation_id}
```
#### Delete Automation
```bash
DELETE /mailerlite/api/automations/{automation_id}
```
### Fields
#### List Fields
```bash
GET /mailerlite/api/fields
```
#### Create Field
```bash
POST /mailerlite/api/fields
Content-Type: application/json
{
"name": "Company",
"type": "text"
}
```
### Segments
#### List Segments
```bash
GET /mailerlite/api/segments
```
#### Get Segment Subscribers
```bash
GET /mailerlite/api/segments/{segment_id}/subscribers
```
### Forms
#### List Forms
```bash
GET /mailerlite/api/forms/{type}
```
Path parameters: `type` - `popup`, `embedded`, or `promotion`
#### Get Form Subscribers
```bash
GET /mailerlite/api/forms/{form_id}/subscribers
```
### Webhooks
#### List Webhooks
```bash
GET /mailerlite/api/webhooks
```
#### Create Webhook
```bash
POST /mailerlite/api/webhooks
Content-Type: application/json
{
"name": "Subscriber Updates",
"events": ["subscriber.created", "subscriber.updated"],
"url": "https://example.com/webhook"
}
```
## Notes
- Rate limit: 120 requests per minute
- Subscriber emails serve as unique identifiers (POST creates or updates existing)
- Only draft campaigns can be updated
- Pagination: cursor-based for subscribers, page-based for groups/campaigns
- API versioning can be overridden via `X-Version: YYYY-MM-DD` header
## Resources
- [MailerLite API Documentation](https://developers.mailerlite.com/docs/)
- [MailerLite Subscribers API](https://developers.mailerlite.com/docs/subscribers.html)
- [MailerLite Groups API](https://developers.mailerlite.com/docs/groups.html)
- [MailerLite Campaigns API](https://developers.mailerlite.com/docs/campaigns.html)

View File

@@ -0,0 +1,212 @@
# ManyChat Routing Reference
**App name:** `manychat`
**Base URL proxied:** `api.manychat.com`
## API Path Pattern
```
/manychat/fb/{category}/{action}
```
## Common Endpoints
### Page Operations
#### Get Page Info
```bash
GET /manychat/fb/page/getInfo
```
#### List Tags
```bash
GET /manychat/fb/page/getTags
```
#### Create Tag
```bash
POST /manychat/fb/page/createTag
Content-Type: application/json
{
"name": "New Tag"
}
```
#### Remove Tag
```bash
POST /manychat/fb/page/removeTag
Content-Type: application/json
{
"tag_id": 123
}
```
#### List Custom Fields
```bash
GET /manychat/fb/page/getCustomFields
```
#### Create Custom Field
```bash
POST /manychat/fb/page/createCustomField
Content-Type: application/json
{
"caption": "Phone Number",
"type": "text",
"description": "Customer phone number"
}
```
#### List Bot Fields
```bash
GET /manychat/fb/page/getBotFields
```
#### Set Bot Field
```bash
POST /manychat/fb/page/setBotField
Content-Type: application/json
{
"field_id": 123,
"field_value": 42
}
```
#### List Flows
```bash
GET /manychat/fb/page/getFlows
```
#### List Growth Tools
```bash
GET /manychat/fb/page/getGrowthTools
```
#### List OTN Topics
```bash
GET /manychat/fb/page/getOtnTopics
```
### Subscriber Operations
#### Get Subscriber Info
```bash
GET /manychat/fb/subscriber/getInfo?subscriber_id=123456789
```
#### Find Subscriber by Name
```bash
GET /manychat/fb/subscriber/findByName?name=John%20Doe
```
#### Find Subscriber by Email/Phone
```bash
GET /manychat/fb/subscriber/findBySystemField?email=john@example.com
```
#### Create Subscriber
```bash
POST /manychat/fb/subscriber/createSubscriber
Content-Type: application/json
{
"first_name": "John",
"last_name": "Doe",
"phone": "+1234567890",
"email": "john@example.com"
}
```
#### Update Subscriber
```bash
POST /manychat/fb/subscriber/updateSubscriber
Content-Type: application/json
{
"subscriber_id": 123456789,
"first_name": "John",
"last_name": "Smith"
}
```
#### Add Tag to Subscriber
```bash
POST /manychat/fb/subscriber/addTag
Content-Type: application/json
{
"subscriber_id": 123456789,
"tag_id": 1
}
```
#### Set Custom Field
```bash
POST /manychat/fb/subscriber/setCustomField
Content-Type: application/json
{
"subscriber_id": 123456789,
"field_id": 1,
"field_value": "value"
}
```
### Sending Operations
#### Send Content
```bash
POST /manychat/fb/sending/sendContent
Content-Type: application/json
{
"subscriber_id": 123456789,
"data": {
"version": "v2",
"content": {
"messages": [
{"type": "text", "text": "Hello!"}
]
}
}
}
```
#### Send Flow
```bash
POST /manychat/fb/sending/sendFlow
Content-Type: application/json
{
"subscriber_id": 123456789,
"flow_ns": "content123456"
}
```
## Rate Limits
| Endpoint Category | Rate Limit |
|------------------|------------|
| Page GET endpoints | 100 queries/second |
| Page POST endpoints | 10 queries/second |
| Subscriber operations | 10-50 queries/second |
| Sending content | 25 queries/second |
| Sending flows | 20 queries/second |
## Notes
- Subscriber IDs are integers unique within a page
- Flow namespaces (flow_ns) identify automation flows
- Message tags are required for sending outside the 24-hour window
- All responses include `{"status": "success"}` or `{"status": "error"}`
- Custom field types: `text`, `number`, `date`, `datetime`, `boolean`
## Resources
- [ManyChat API Documentation](https://api.manychat.com/swagger)
- [ManyChat API Key Generation](https://help.manychat.com/hc/en-us/articles/14959510331420)
- [ManyChat Dev Program](https://help.manychat.com/hc/en-us/articles/14281269835548)

View File

@@ -0,0 +1,174 @@
# Microsoft Excel Routing Reference
**App name:** `microsoft-excel`
**Base URL proxied:** `graph.microsoft.com`
## API Path Pattern
```
/microsoft-excel/v1.0/me/drive/items/{file-id}/workbook/{resource}
/microsoft-excel/v1.0/me/drive/root:/{path}:/workbook/{resource}
```
## Common Endpoints
### Drive Operations
#### Get Drive Info
```bash
GET /microsoft-excel/v1.0/me/drive
```
#### List Root Files
```bash
GET /microsoft-excel/v1.0/me/drive/root/children
```
#### Search Files
```bash
GET /microsoft-excel/v1.0/me/drive/root/search(q='.xlsx')
```
### Session Management
#### Create Session
```bash
POST /microsoft-excel/v1.0/me/drive/root:/{path}:/workbook/createSession
Content-Type: application/json
{
"persistChanges": true
}
```
### Worksheet Operations
#### List Worksheets
```bash
GET /microsoft-excel/v1.0/me/drive/root:/workbook.xlsx:/workbook/worksheets
```
#### Create Worksheet
```bash
POST /microsoft-excel/v1.0/me/drive/root:/workbook.xlsx:/workbook/worksheets
Content-Type: application/json
{
"name": "NewSheet"
}
```
#### Delete Worksheet
```bash
DELETE /microsoft-excel/v1.0/me/drive/root:/workbook.xlsx:/workbook/worksheets('{id}')
```
### Range Operations
#### Get Range
```bash
GET /microsoft-excel/v1.0/me/drive/root:/workbook.xlsx:/workbook/worksheets('Sheet1')/range(address='A1:B2')
```
#### Update Range
```bash
PATCH /microsoft-excel/v1.0/me/drive/root:/workbook.xlsx:/workbook/worksheets('Sheet1')/range(address='A1:B2')
Content-Type: application/json
{
"values": [
["Value1", "Value2"],
[100, 200]
]
}
```
#### Get Used Range
```bash
GET /microsoft-excel/v1.0/me/drive/root:/workbook.xlsx:/workbook/worksheets('Sheet1')/usedRange
```
### Table Operations
#### List Tables
```bash
GET /microsoft-excel/v1.0/me/drive/root:/workbook.xlsx:/workbook/worksheets('Sheet1')/tables
```
#### Create Table
```bash
POST /microsoft-excel/v1.0/me/drive/root:/workbook.xlsx:/workbook/worksheets('Sheet1')/tables/add
Content-Type: application/json
{
"address": "A1:C4",
"hasHeaders": true
}
```
#### Get Table Rows
```bash
GET /microsoft-excel/v1.0/me/drive/root:/workbook.xlsx:/workbook/tables('Table1')/rows
```
#### Add Table Row
```bash
POST /microsoft-excel/v1.0/me/drive/root:/workbook.xlsx:/workbook/tables('Table1')/rows
Content-Type: application/json
{
"values": [["Data1", "Data2", "Data3"]]
}
```
#### Delete Table Row
```bash
DELETE /microsoft-excel/v1.0/me/drive/root:/workbook.xlsx:/workbook/tables('Table1')/rows/itemAt(index=0)
```
#### Get Table Columns
```bash
GET /microsoft-excel/v1.0/me/drive/root:/workbook.xlsx:/workbook/tables('Table1')/columns
```
### Named Items
#### List Named Items
```bash
GET /microsoft-excel/v1.0/me/drive/root:/workbook.xlsx:/workbook/names
```
### Charts
#### List Charts
```bash
GET /microsoft-excel/v1.0/me/drive/root:/workbook.xlsx:/workbook/worksheets('Sheet1')/charts
```
#### Add Chart
```bash
POST /microsoft-excel/v1.0/me/drive/root:/workbook.xlsx:/workbook/worksheets('Sheet1')/charts/add
Content-Type: application/json
{
"type": "ColumnClustered",
"sourceData": "A1:C4",
"seriesBy": "Auto"
}
```
## Notes
- Only `.xlsx` files are supported (not legacy `.xls`)
- Use path-based access (`/drive/root:/{path}:`) or ID-based access (`/drive/items/{id}`)
- Table/worksheet IDs with `{` and `}` must be URL-encoded
- Sessions improve performance for multiple operations
- Sessions expire after ~5 minutes (persistent) or ~7 minutes (non-persistent)
- Range addresses use A1 notation
## Resources
- [Microsoft Graph Excel API](https://learn.microsoft.com/en-us/graph/api/resources/excel)
- [Excel Workbook Resource](https://learn.microsoft.com/en-us/graph/api/resources/workbook)
- [Excel Worksheet Resource](https://learn.microsoft.com/en-us/graph/api/resources/worksheet)
- [Excel Range Resource](https://learn.microsoft.com/en-us/graph/api/resources/range)

View File

@@ -0,0 +1,166 @@
# Microsoft To Do Routing Reference
**App name:** `microsoft-to-do`
**Base URL proxied:** `graph.microsoft.com`
## API Path Pattern
```
/microsoft-to-do/v1.0/me/todo/{resource}
```
All Microsoft To Do endpoints use the Microsoft Graph API under the `/me/todo/` path.
## Common Endpoints
### Task Lists
#### List All Task Lists
```bash
GET /microsoft-to-do/v1.0/me/todo/lists
```
#### Get Task List
```bash
GET /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}
```
#### Create Task List
```bash
POST /microsoft-to-do/v1.0/me/todo/lists
Content-Type: application/json
{
"displayName": "My New List"
}
```
#### Update Task List
```bash
PATCH /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}
Content-Type: application/json
{
"displayName": "Updated List Name"
}
```
#### Delete Task List
```bash
DELETE /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}
```
### Tasks
#### List Tasks
```bash
GET /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks
```
#### Get Task
```bash
GET /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks/{taskId}
```
#### Create Task
```bash
POST /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks
Content-Type: application/json
{
"title": "New Task",
"importance": "high",
"status": "notStarted",
"dueDateTime": {
"dateTime": "2024-12-31T17:00:00",
"timeZone": "UTC"
}
}
```
#### Update Task
```bash
PATCH /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks/{taskId}
Content-Type: application/json
{
"status": "completed"
}
```
#### Delete Task
```bash
DELETE /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks/{taskId}
```
### Checklist Items
#### List Checklist Items
```bash
GET /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks/{taskId}/checklistItems
```
#### Create Checklist Item
```bash
POST /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks/{taskId}/checklistItems
Content-Type: application/json
{
"displayName": "Subtask name"
}
```
#### Update Checklist Item
```bash
PATCH /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks/{taskId}/checklistItems/{checklistItemId}
Content-Type: application/json
{
"isChecked": true
}
```
#### Delete Checklist Item
```bash
DELETE /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks/{taskId}/checklistItems/{checklistItemId}
```
### Linked Resources
#### List Linked Resources
```bash
GET /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks/{taskId}/linkedResources
```
#### Create Linked Resource
```bash
POST /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks/{taskId}/linkedResources
Content-Type: application/json
{
"webUrl": "https://example.com/item",
"applicationName": "MyApp",
"displayName": "Related Item"
}
```
#### Delete Linked Resource
```bash
DELETE /microsoft-to-do/v1.0/me/todo/lists/{todoTaskListId}/tasks/{taskId}/linkedResources/{linkedResourceId}
```
## Notes
- Task list IDs and task IDs are opaque base64-encoded strings
- Timestamps use ISO 8601 format in UTC by default
- The `dateTimeTimeZone` type requires both `dateTime` and `timeZone` fields
- Task `status` values: `notStarted`, `inProgress`, `completed`, `waitingOnOthers`, `deferred`
- Task `importance` values: `low`, `normal`, `high`
- Supports OData query parameters: `$select`, `$filter`, `$orderby`, `$top`, `$skip`
- Pagination uses `@odata.nextLink` for continuation
## Resources
- [Microsoft To Do API Overview](https://learn.microsoft.com/en-us/graph/api/resources/todo-overview)
- [todoTaskList Resource](https://learn.microsoft.com/en-us/graph/api/resources/todotasklist)
- [todoTask Resource](https://learn.microsoft.com/en-us/graph/api/resources/todotask)

View File

@@ -0,0 +1,207 @@
# Monday.com Routing Reference
**App name:** `monday`
**Base URL proxied:** `api.monday.com`
## API Type
Monday.com uses a GraphQL API exclusively. All requests are POST requests to the `/v2` endpoint.
## API Path Pattern
```
/monday/v2
```
All operations use POST with a JSON body containing the `query` field.
## Common Operations
### Get Current User
```bash
POST /monday/v2
Content-Type: application/json
{
"query": "{ me { id name email } }"
}
```
### List Workspaces
```bash
POST /monday/v2
Content-Type: application/json
{
"query": "{ workspaces(limit: 20) { id name kind } }"
}
```
### List Boards
```bash
POST /monday/v2
Content-Type: application/json
{
"query": "{ boards(limit: 20) { id name state board_kind workspace { id name } } }"
}
```
### Get Board with Items
```bash
POST /monday/v2
Content-Type: application/json
{
"query": "{ boards(ids: [BOARD_ID]) { id name columns { id title type } groups { id title } items_page(limit: 50) { cursor items { id name state column_values { id text } } } } }"
}
```
### Create Board
```bash
POST /monday/v2
Content-Type: application/json
{
"query": "mutation { create_board(board_name: \"New Board\", board_kind: public) { id name } }"
}
```
### Update Board
```bash
POST /monday/v2
Content-Type: application/json
{
"query": "mutation { update_board(board_id: BOARD_ID, board_attribute: description, new_value: \"Description\") }"
}
```
### Delete Board
```bash
POST /monday/v2
Content-Type: application/json
{
"query": "mutation { delete_board(board_id: BOARD_ID) { id } }"
}
```
### Get Items by ID
```bash
POST /monday/v2
Content-Type: application/json
{
"query": "{ items(ids: [ITEM_ID]) { id name created_at state board { id name } group { id title } column_values { id text value } } }"
}
```
### Create Item
```bash
POST /monday/v2
Content-Type: application/json
{
"query": "mutation { create_item(board_id: BOARD_ID, group_id: \"GROUP_ID\", item_name: \"New item\") { id name } }"
}
```
### Create Item with Column Values
```bash
POST /monday/v2
Content-Type: application/json
{
"query": "mutation { create_item(board_id: BOARD_ID, group_id: \"GROUP_ID\", item_name: \"Task\", column_values: \"{\\\"status\\\": {\\\"label\\\": \\\"Working on it\\\"}}\") { id name } }"
}
```
### Update Item
```bash
POST /monday/v2
Content-Type: application/json
{
"query": "mutation { change_simple_column_value(board_id: BOARD_ID, item_id: ITEM_ID, column_id: \"name\", value: \"Updated name\") { id name } }"
}
```
### Delete Item
```bash
POST /monday/v2
Content-Type: application/json
{
"query": "mutation { delete_item(item_id: ITEM_ID) { id } }"
}
```
### Create Column
```bash
POST /monday/v2
Content-Type: application/json
{
"query": "mutation { create_column(board_id: BOARD_ID, title: \"Status\", column_type: status) { id title type } }"
}
```
### Create Group
```bash
POST /monday/v2
Content-Type: application/json
{
"query": "mutation { create_group(board_id: BOARD_ID, group_name: \"New Group\") { id title } }"
}
```
### List Users
```bash
POST /monday/v2
Content-Type: application/json
{
"query": "{ users(limit: 50) { id name email } }"
}
```
## Pagination
Monday.com uses cursor-based pagination for items:
```bash
# First page
POST /monday/v2
{
"query": "{ boards(ids: [BOARD_ID]) { items_page(limit: 50) { cursor items { id name } } } }"
}
# Next page
POST /monday/v2
{
"query": "{ next_items_page(cursor: \"CURSOR_VALUE\", limit: 50) { cursor items { id name } } }"
}
```
## Notes
- Monday.com uses GraphQL exclusively (no REST API)
- Board IDs, item IDs, and user IDs are numeric strings
- Column IDs are alphanumeric (e.g., `color_mm09e48w`)
- Group IDs are alphanumeric (e.g., `group_mm0939df`, `topics`)
- Column values must be passed as JSON strings
- Board kinds: `public`, `private`, `share`
- Board states: `active`, `archived`, `deleted`, `all`
- Column types: `status`, `text`, `numbers`, `date`, `people`, `dropdown`, `checkbox`, `email`, `phone`, `link`, `timeline`, `tags`, `rating`
- Default limit is 25, maximum is 100
- Cursors are valid for 60 minutes
## Resources
- [Monday.com API Basics](https://developer.monday.com/api-reference/docs/basics)
- [GraphQL Overview](https://developer.monday.com/api-reference/docs/introduction-to-graphql)
- [Boards Reference](https://developer.monday.com/api-reference/reference/boards)
- [Items Reference](https://developer.monday.com/api-reference/reference/items)
- [Columns Reference](https://developer.monday.com/api-reference/reference/columns)

View File

@@ -0,0 +1,345 @@
# Notion Routing Reference
**App name:** `notion`
**Base URL proxied:** `api.notion.com`
## Required Headers
All Notion API requests require:
```
Notion-Version: 2025-09-03
```
## API Path Pattern
```
/notion/v1/{endpoint}
```
## Key Concept: Databases vs Data Sources
In API version 2025-09-03, databases and data sources are separate concepts:
| Concept | Description | Use For |
|---------|-------------|---------|
| **Database** | Container that can hold multiple data sources | Creating databases, getting data_source IDs |
| **Data Source** | Schema and data within a database | Querying, updating schema, updating properties |
Most existing databases have one data source. Use `GET /databases/{id}` to get the `data_source_id`, then use `/data_sources/` endpoints for all operations.
## Common Endpoints
### Search
Search for pages:
```bash
POST /notion/v1/search
Content-Type: application/json
Notion-Version: 2025-09-03
{
"query": "meeting notes",
"filter": {"property": "object", "value": "page"}
}
```
Search for data sources:
```bash
POST /notion/v1/search
Content-Type: application/json
Notion-Version: 2025-09-03
{
"filter": {"property": "object", "value": "data_source"}
}
```
With pagination:
```bash
POST /notion/v1/search
Content-Type: application/json
Notion-Version: 2025-09-03
{
"page_size": 10,
"start_cursor": "CURSOR_FROM_PREVIOUS_RESPONSE"
}
```
### Data Sources
Use data source endpoints for querying, getting schema, and updates.
#### Get Data Source
```bash
GET /notion/v1/data_sources/{dataSourceId}
Notion-Version: 2025-09-03
```
Returns full schema with `properties` field.
#### Query Data Source
```bash
POST /notion/v1/data_sources/{dataSourceId}/query
Content-Type: application/json
Notion-Version: 2025-09-03
{
"filter": {
"property": "Status",
"select": {"equals": "Active"}
},
"sorts": [
{"property": "Created", "direction": "descending"}
],
"page_size": 100
}
```
#### Update Data Source (title, schema, properties)
```bash
PATCH /notion/v1/data_sources/{dataSourceId}
Content-Type: application/json
Notion-Version: 2025-09-03
{
"title": [{"type": "text", "text": {"content": "Updated Title"}}],
"properties": {
"NewColumn": {"rich_text": {}}
}
}
```
### Databases
Database endpoints are only needed for **creating** databases and **discovering** data source IDs.
#### Get Database (to find data_source_id)
```bash
GET /notion/v1/databases/{databaseId}
Notion-Version: 2025-09-03
```
Response includes `data_sources` array:
```json
{
"id": "database-id",
"object": "database",
"data_sources": [{"id": "data-source-id", "name": "Database Name"}]
}
```
**Note:** This endpoint returns `properties: null`. Use `GET /data_sources/{id}` to get the schema.
#### Create Database
```bash
POST /notion/v1/databases
Content-Type: application/json
Notion-Version: 2025-09-03
{
"parent": {"type": "page_id", "page_id": "PARENT_PAGE_ID"},
"title": [{"type": "text", "text": {"content": "New Database"}}],
"properties": {
"Name": {"title": {}},
"Status": {"select": {"options": [{"name": "Active"}, {"name": "Done"}]}}
}
}
```
**Important:** Cannot create databases via `/data_sources` endpoint.
### Pages
#### Get Page
```bash
GET /notion/v1/pages/{pageId}
Notion-Version: 2025-09-03
```
#### Create Page in Data Source
Use `data_source_id` (not `database_id`) as parent:
```bash
POST /notion/v1/pages
Content-Type: application/json
Notion-Version: 2025-09-03
{
"parent": {"data_source_id": "DATA_SOURCE_ID"},
"properties": {
"Name": {"title": [{"text": {"content": "New Page"}}]},
"Status": {"select": {"name": "Active"}}
}
}
```
#### Create Child Page (under another page)
```bash
POST /notion/v1/pages
Content-Type: application/json
Notion-Version: 2025-09-03
{
"parent": {"page_id": "PARENT_PAGE_ID"},
"properties": {
"title": {"title": [{"text": {"content": "Child Page"}}]}
}
}
```
#### Update Page Properties
```bash
PATCH /notion/v1/pages/{pageId}
Content-Type: application/json
Notion-Version: 2025-09-03
{
"properties": {
"Status": {"select": {"name": "Done"}}
}
}
```
#### Archive Page
```bash
PATCH /notion/v1/pages/{pageId}
Content-Type: application/json
Notion-Version: 2025-09-03
{
"archived": true
}
```
### Blocks
#### Get Block
```bash
GET /notion/v1/blocks/{blockId}
Notion-Version: 2025-09-03
```
#### Get Block Children
```bash
GET /notion/v1/blocks/{blockId}/children
Notion-Version: 2025-09-03
```
#### Append Block Children
```bash
PATCH /notion/v1/blocks/{blockId}/children
Content-Type: application/json
Notion-Version: 2025-09-03
{
"children": [
{
"object": "block",
"type": "paragraph",
"paragraph": {
"rich_text": [{"type": "text", "text": {"content": "New paragraph"}}]
}
},
{
"object": "block",
"type": "heading_2",
"heading_2": {
"rich_text": [{"type": "text", "text": {"content": "Heading"}}]
}
}
]
}
```
#### Update Block
```bash
PATCH /notion/v1/blocks/{blockId}
Content-Type: application/json
Notion-Version: 2025-09-03
{
"paragraph": {
"rich_text": [{"text": {"content": "Updated text"}}]
}
}
```
#### Delete Block
```bash
DELETE /notion/v1/blocks/{blockId}
Notion-Version: 2025-09-03
```
### Users
#### List Users
```bash
GET /notion/v1/users
Notion-Version: 2025-09-03
```
#### Get User by ID
```bash
GET /notion/v1/users/{userId}
Notion-Version: 2025-09-03
```
#### Get Current User (Bot)
```bash
GET /notion/v1/users/me
Notion-Version: 2025-09-03
```
## Filter Operators
- `equals`, `does_not_equal`
- `contains`, `does_not_contain`
- `starts_with`, `ends_with`
- `is_empty`, `is_not_empty`
- `greater_than`, `less_than`, `greater_than_or_equal_to`, `less_than_or_equal_to`
## Block Types
Common block types for appending:
- `paragraph` - Text paragraph
- `heading_1`, `heading_2`, `heading_3` - Headings
- `bulleted_list_item`, `numbered_list_item` - List items
- `to_do` - Checkbox item
- `code` - Code block
- `quote` - Quote block
- `divider` - Horizontal divider
## Migration from Older API Versions
| Old (2022-06-28) | New (2025-09-03) |
|------------------|------------------|
| `POST /databases/{id}/query` | `POST /data_sources/{id}/query` |
| `GET /databases/{id}` for schema | `GET /data_sources/{id}` for schema |
| `PATCH /databases/{id}` for schema | `PATCH /data_sources/{id}` for schema |
| Parent: `{"database_id": "..."}` | Parent: `{"data_source_id": "..."}` |
| Search filter: `"database"` | Search filter: `"data_source"` |
## Notes
- Use `GET /databases/{id}` to discover `data_source_id`, then use `/data_sources/` for all operations
- Creating databases still requires `POST /databases` endpoint
- Parent objects for create database require `type` field: `{"type": "page_id", "page_id": "..."}`
- All IDs are UUIDs (with or without hyphens)
- Delete blocks returns the block with `archived: true`
## Resources
- [API Introduction](https://developers.notion.com/reference/intro)
- [Search](https://developers.notion.com/reference/post-search.md)
- [Query Database](https://developers.notion.com/reference/post-database-query.md)
- [Get Database](https://developers.notion.com/reference/retrieve-a-database.md)
- [Create Database](https://developers.notion.com/reference/create-a-database.md)
- [Get Page](https://developers.notion.com/reference/retrieve-a-page.md)
- [Create Page](https://developers.notion.com/reference/post-page.md)
- [Update Page](https://developers.notion.com/reference/patch-page.md)
- [Get Block Children](https://developers.notion.com/reference/get-block-children.md)
- [Append Block Children](https://developers.notion.com/reference/patch-block-children.md)
- [List Users](https://developers.notion.com/reference/get-users.md)
- [Filter Reference](https://developers.notion.com/reference/post-database-query-filter.md)
- [LLM Reference](https://developers.notion.com/llms.txt)
- [Version Reference](https://developers.notion.com/guides/get-started/upgrade-guide-2025-09-03)

View File

@@ -0,0 +1,118 @@
# OneDrive Routing Reference
**App name:** `one-drive`
**Base URL proxied:** `graph.microsoft.com`
## API Path Pattern
```
/one-drive/v1.0/me/drive/{resource}
```
## Common Endpoints
### Get User's Drive
```bash
GET /one-drive/v1.0/me/drive
```
### List Drives
```bash
GET /one-drive/v1.0/me/drives
```
### Get Drive Root
```bash
GET /one-drive/v1.0/me/drive/root
```
### List Root Children
```bash
GET /one-drive/v1.0/me/drive/root/children
```
### Get Item by ID
```bash
GET /one-drive/v1.0/me/drive/items/{item-id}
```
### Get Item by Path
```bash
GET /one-drive/v1.0/me/drive/root:/Documents/file.txt
```
### List Folder Children by Path
```bash
GET /one-drive/v1.0/me/drive/root:/Documents:/children
```
### Create Folder
```bash
POST /one-drive/v1.0/me/drive/root/children
Content-Type: application/json
{
"name": "New Folder",
"folder": {}
}
```
### Upload File (Simple - up to 4MB)
```bash
PUT /one-drive/v1.0/me/drive/root:/filename.txt:/content
Content-Type: text/plain
{file content}
```
### Delete Item
```bash
DELETE /one-drive/v1.0/me/drive/items/{item-id}
```
### Create Sharing Link
```bash
POST /one-drive/v1.0/me/drive/items/{item-id}/createLink
Content-Type: application/json
{
"type": "view",
"scope": "anonymous"
}
```
### Search Files
```bash
GET /one-drive/v1.0/me/drive/root/search(q='query')
```
### Special Folders
```bash
GET /one-drive/v1.0/me/drive/special/documents
GET /one-drive/v1.0/me/drive/special/photos
```
### Recent Files
```bash
GET /one-drive/v1.0/me/drive/recent
```
### Shared With Me
```bash
GET /one-drive/v1.0/me/drive/sharedWithMe
```
## Notes
- Authentication is automatic - the router injects the OAuth token
- Uses Microsoft Graph API (`graph.microsoft.com`)
- Use colon (`:`) syntax for path-based addressing
- Simple uploads limited to 4MB; use resumable upload for larger files
- Download URLs in `@microsoft.graph.downloadUrl` are pre-authenticated
- Supports OData query parameters: `$select`, `$expand`, `$filter`, `$orderby`, `$top`
## Resources
- [OneDrive Developer Documentation](https://learn.microsoft.com/en-us/onedrive/developer/)
- [Microsoft Graph API Reference](https://learn.microsoft.com/en-us/graph/api/overview)
- [DriveItem Resource](https://learn.microsoft.com/en-us/graph/api/resources/driveitem)

View File

@@ -0,0 +1,238 @@
# Outlook Routing Reference
**App name:** `outlook`
**Base URL proxied:** `graph.microsoft.com`
## API Path Pattern
```
/outlook/v1.0/me/{resource}
```
## Common Endpoints
### User Profile
```bash
GET /outlook/v1.0/me
```
### Mail Folders
#### List Mail Folders
```bash
GET /outlook/v1.0/me/mailFolders
```
Well-known folder names: `Inbox`, `Drafts`, `SentItems`, `DeletedItems`, `Archive`, `JunkEmail`
#### Get Mail Folder
```bash
GET /outlook/v1.0/me/mailFolders/{folderId}
```
#### Create Mail Folder
```bash
POST /outlook/v1.0/me/mailFolders
Content-Type: application/json
{
"displayName": "My Folder"
}
```
### Messages
#### List Messages
```bash
GET /outlook/v1.0/me/messages
```
From specific folder:
```bash
GET /outlook/v1.0/me/mailFolders/Inbox/messages
```
With filter:
```bash
GET /outlook/v1.0/me/messages?$filter=isRead eq false&$top=10
```
#### Get Message
```bash
GET /outlook/v1.0/me/messages/{messageId}
```
#### Send Message
```bash
POST /outlook/v1.0/me/sendMail
Content-Type: application/json
{
"message": {
"subject": "Hello",
"body": {
"contentType": "Text",
"content": "This is the email body."
},
"toRecipients": [
{
"emailAddress": {
"address": "recipient@example.com"
}
}
]
},
"saveToSentItems": true
}
```
#### Create Draft
```bash
POST /outlook/v1.0/me/messages
Content-Type: application/json
{
"subject": "Hello",
"body": {
"contentType": "Text",
"content": "This is the email body."
},
"toRecipients": [
{
"emailAddress": {
"address": "recipient@example.com"
}
}
]
}
```
#### Send Existing Draft
```bash
POST /outlook/v1.0/me/messages/{messageId}/send
```
#### Update Message (Mark as Read)
```bash
PATCH /outlook/v1.0/me/messages/{messageId}
Content-Type: application/json
{
"isRead": true
}
```
#### Delete Message
```bash
DELETE /outlook/v1.0/me/messages/{messageId}
```
#### Move Message
```bash
POST /outlook/v1.0/me/messages/{messageId}/move
Content-Type: application/json
{
"destinationId": "{folderId}"
}
```
### Calendar
#### List Calendars
```bash
GET /outlook/v1.0/me/calendars
```
#### List Events
```bash
GET /outlook/v1.0/me/calendar/events
```
With filter:
```bash
GET /outlook/v1.0/me/calendar/events?$filter=start/dateTime ge '2024-01-01'&$top=10
```
#### Create Event
```bash
POST /outlook/v1.0/me/calendar/events
Content-Type: application/json
{
"subject": "Meeting",
"start": {
"dateTime": "2024-01-15T10:00:00",
"timeZone": "UTC"
},
"end": {
"dateTime": "2024-01-15T11:00:00",
"timeZone": "UTC"
},
"attendees": [
{
"emailAddress": {
"address": "attendee@example.com"
},
"type": "required"
}
]
}
```
#### Delete Event
```bash
DELETE /outlook/v1.0/me/events/{eventId}
```
### Contacts
#### List Contacts
```bash
GET /outlook/v1.0/me/contacts
```
#### Create Contact
```bash
POST /outlook/v1.0/me/contacts
Content-Type: application/json
{
"givenName": "John",
"surname": "Doe",
"emailAddresses": [
{
"address": "john.doe@example.com"
}
]
}
```
#### Delete Contact
```bash
DELETE /outlook/v1.0/me/contacts/{contactId}
```
## OData Query Parameters
- `$top=10` - Limit results
- `$skip=20` - Skip results (pagination)
- `$select=subject,from` - Select specific fields
- `$filter=isRead eq false` - Filter results
- `$orderby=receivedDateTime desc` - Sort results
- `$search="keyword"` - Search content
## Notes
- Use `me` as the user identifier for the authenticated user
- Message body content types: `Text` or `HTML`
- Well-known folder names work as folder IDs: `Inbox`, `Drafts`, `SentItems`, etc.
- Calendar events use ISO 8601 datetime format
## Resources
- [Microsoft Graph API Overview](https://learn.microsoft.com/en-us/graph/api/overview)
- [Mail API](https://learn.microsoft.com/en-us/graph/api/resources/mail-api-overview)
- [Calendar API](https://learn.microsoft.com/en-us/graph/api/resources/calendar)
- [Contacts API](https://learn.microsoft.com/en-us/graph/api/resources/contact)
- [Query Parameters](https://learn.microsoft.com/en-us/graph/query-parameters)

View File

@@ -0,0 +1,161 @@
# Pipedrive Routing Reference
**App name:** `pipedrive`
**Base URL proxied:** `api.pipedrive.com`
## API Path Pattern
```
/pipedrive/api/v1/{resource}
```
## Common Endpoints
### List Deals
```bash
GET /pipedrive/api/v1/deals?status=open&limit=50
```
### Get Deal
```bash
GET /pipedrive/api/v1/deals/{id}
```
### Create Deal
```bash
POST /pipedrive/api/v1/deals
Content-Type: application/json
{
"title": "New Enterprise Deal",
"value": 50000,
"currency": "USD",
"person_id": 123,
"org_id": 456,
"stage_id": 1,
"expected_close_date": "2025-06-30"
}
```
### Update Deal
```bash
PUT /pipedrive/api/v1/deals/{id}
Content-Type: application/json
{
"title": "Updated Deal Title",
"value": 75000,
"status": "won"
}
```
### Delete Deal
```bash
DELETE /pipedrive/api/v1/deals/{id}
```
### Search Deals
```bash
GET /pipedrive/api/v1/deals/search?term=enterprise
```
### List Persons
```bash
GET /pipedrive/api/v1/persons
```
### Create Person
```bash
POST /pipedrive/api/v1/persons
Content-Type: application/json
{
"name": "John Doe",
"email": ["john@example.com"],
"phone": ["+1234567890"],
"org_id": 456
}
```
### List Organizations
```bash
GET /pipedrive/api/v1/organizations
```
### Create Organization
```bash
POST /pipedrive/api/v1/organizations
Content-Type: application/json
{
"name": "Acme Corporation",
"address": "123 Main St, City, Country"
}
```
### List Activities
```bash
GET /pipedrive/api/v1/activities?type=call&done=0
```
### Create Activity
```bash
POST /pipedrive/api/v1/activities
Content-Type: application/json
{
"subject": "Follow-up call",
"type": "call",
"due_date": "2025-03-15",
"due_time": "14:00",
"deal_id": 789,
"person_id": 123
}
```
### List Pipelines
```bash
GET /pipedrive/api/v1/pipelines
```
### List Stages
```bash
GET /pipedrive/api/v1/stages?pipeline_id=1
```
### Create Note
```bash
POST /pipedrive/api/v1/notes
Content-Type: application/json
{
"content": "Meeting notes: Discussed pricing and timeline",
"deal_id": 789,
"pinned_to_deal_flag": 1
}
```
### Get Current User
```bash
GET /pipedrive/api/v1/users/me
```
## Notes
- IDs are integers
- Email and phone fields accept arrays for multiple values
- `visible_to` values: 1 (owner only), 3 (entire company), 5 (owner's visibility group), 7 (entire company and visibility group)
- Deal status: `open`, `won`, `lost`, `deleted`
- Use `start` and `limit` for pagination
- Custom fields are supported via their API key (e.g., `abc123_custom_field`)
## Resources
- [Pipedrive API Overview](https://developers.pipedrive.com/docs/api/v1)
- [Deals](https://developers.pipedrive.com/docs/api/v1/Deals)
- [Persons](https://developers.pipedrive.com/docs/api/v1/Persons)
- [Organizations](https://developers.pipedrive.com/docs/api/v1/Organizations)
- [Activities](https://developers.pipedrive.com/docs/api/v1/Activities)
- [Pipelines](https://developers.pipedrive.com/docs/api/v1/Pipelines)
- [Stages](https://developers.pipedrive.com/docs/api/v1/Stages)
- [Notes](https://developers.pipedrive.com/docs/api/v1/Notes)

View File

@@ -0,0 +1,384 @@
# QuickBooks Routing Reference
**App name:** `quickbooks`
**Base URL proxied:** `quickbooks.api.intuit.com`
## Special Handling
Use `:realmId` in the path and it will be automatically replaced with the connected company's realm ID.
## API Path Pattern
```
/quickbooks/v3/company/:realmId/{endpoint}
```
## Common Endpoints
### Company Info
#### Get Company Info
```bash
GET /quickbooks/v3/company/:realmId/companyinfo/:realmId
```
#### Get Preferences
```bash
GET /quickbooks/v3/company/:realmId/preferences
```
### Customers
#### Query Customers
```bash
GET /quickbooks/v3/company/:realmId/query?query=SELECT%20*%20FROM%20Customer%20MAXRESULTS%20100
```
With filter:
```bash
GET /quickbooks/v3/company/:realmId/query?query=SELECT%20*%20FROM%20Customer%20WHERE%20Active%3Dtrue
```
#### Get Customer
```bash
GET /quickbooks/v3/company/:realmId/customer/{customerId}
```
#### Create Customer
```bash
POST /quickbooks/v3/company/:realmId/customer
Content-Type: application/json
{
"DisplayName": "John Doe",
"PrimaryEmailAddr": {"Address": "john@example.com"},
"PrimaryPhone": {"FreeFormNumber": "555-1234"}
}
```
#### Update Customer
Requires `Id` and `SyncToken` from previous GET:
```bash
POST /quickbooks/v3/company/:realmId/customer
Content-Type: application/json
{
"Id": "123",
"SyncToken": "0",
"DisplayName": "John Doe Updated",
"PrimaryPhone": {"FreeFormNumber": "555-9999"}
}
```
#### Deactivate Customer (Soft Delete)
```bash
POST /quickbooks/v3/company/:realmId/customer
Content-Type: application/json
{
"Id": "123",
"SyncToken": "1",
"DisplayName": "John Doe",
"Active": false
}
```
### Vendors
#### Query Vendors
```bash
GET /quickbooks/v3/company/:realmId/query?query=SELECT%20*%20FROM%20Vendor%20MAXRESULTS%20100
```
#### Get Vendor
```bash
GET /quickbooks/v3/company/:realmId/vendor/{vendorId}
```
#### Create Vendor
```bash
POST /quickbooks/v3/company/:realmId/vendor
Content-Type: application/json
{
"DisplayName": "Acme Supplies",
"PrimaryEmailAddr": {"Address": "vendor@example.com"}
}
```
### Items (Products/Services)
#### Query Items
```bash
GET /quickbooks/v3/company/:realmId/query?query=SELECT%20*%20FROM%20Item%20MAXRESULTS%20100
```
#### Get Item
```bash
GET /quickbooks/v3/company/:realmId/item/{itemId}
```
#### Create Item
```bash
POST /quickbooks/v3/company/:realmId/item
Content-Type: application/json
{
"Name": "Consulting Services",
"Type": "Service",
"IncomeAccountRef": {"value": "1"}
}
```
### Invoices
#### Query Invoices
```bash
GET /quickbooks/v3/company/:realmId/query?query=SELECT%20*%20FROM%20Invoice%20MAXRESULTS%20100
```
#### Get Invoice
```bash
GET /quickbooks/v3/company/:realmId/invoice/{invoiceId}
```
#### Create Invoice
```bash
POST /quickbooks/v3/company/:realmId/invoice
Content-Type: application/json
{
"CustomerRef": {"value": "123"},
"Line": [
{
"Amount": 100.00,
"DetailType": "SalesItemLineDetail",
"SalesItemLineDetail": {
"ItemRef": {"value": "1"},
"Qty": 1
}
}
]
}
```
#### Void Invoice
```bash
POST /quickbooks/v3/company/:realmId/invoice?operation=void
Content-Type: application/json
{
"Id": "123",
"SyncToken": "0"
}
```
#### Delete Invoice
```bash
POST /quickbooks/v3/company/:realmId/invoice?operation=delete
Content-Type: application/json
{
"Id": "123",
"SyncToken": "0"
}
```
### Payments
#### Query Payments
```bash
GET /quickbooks/v3/company/:realmId/query?query=SELECT%20*%20FROM%20Payment%20MAXRESULTS%20100
```
#### Create Payment
Simple payment:
```bash
POST /quickbooks/v3/company/:realmId/payment
Content-Type: application/json
{
"CustomerRef": {"value": "123"},
"TotalAmt": 100.00
}
```
Payment linked to invoice:
```bash
POST /quickbooks/v3/company/:realmId/payment
Content-Type: application/json
{
"CustomerRef": {"value": "123"},
"TotalAmt": 100.00,
"Line": [
{
"Amount": 100.00,
"LinkedTxn": [{"TxnId": "456", "TxnType": "Invoice"}]
}
]
}
```
### Bills
#### Query Bills
```bash
GET /quickbooks/v3/company/:realmId/query?query=SELECT%20*%20FROM%20Bill%20MAXRESULTS%20100
```
#### Create Bill
```bash
POST /quickbooks/v3/company/:realmId/bill
Content-Type: application/json
{
"VendorRef": {"value": "123"},
"Line": [
{
"DetailType": "AccountBasedExpenseLineDetail",
"Amount": 250.00,
"AccountBasedExpenseLineDetail": {
"AccountRef": {"value": "1"}
}
}
]
}
```
### Bill Payments
#### Create Bill Payment
```bash
POST /quickbooks/v3/company/:realmId/billpayment
Content-Type: application/json
{
"VendorRef": {"value": "123"},
"TotalAmt": 250.00,
"PayType": "Check",
"CheckPayment": {
"BankAccountRef": {"value": "23"}
},
"Line": [
{
"Amount": 250.00,
"LinkedTxn": [{"TxnId": "456", "TxnType": "Bill"}]
}
]
}
```
**Note:** Use a Bank account (AccountType: "Bank") for `BankAccountRef`.
### Accounts
#### Query Accounts
```bash
GET /quickbooks/v3/company/:realmId/query?query=SELECT%20*%20FROM%20Account
```
Filter by type:
```bash
GET /quickbooks/v3/company/:realmId/query?query=SELECT%20*%20FROM%20Account%20WHERE%20AccountType%20%3D%20%27Bank%27
```
### Reports
#### Profit and Loss
```bash
GET /quickbooks/v3/company/:realmId/reports/ProfitAndLoss?start_date=2024-01-01&end_date=2024-12-31
```
#### Balance Sheet
```bash
GET /quickbooks/v3/company/:realmId/reports/BalanceSheet?date=2024-12-31
```
### Batch Operations
Execute multiple queries in a single request:
```bash
POST /quickbooks/v3/company/:realmId/batch
Content-Type: application/json
{
"BatchItemRequest": [
{"bId": "1", "Query": "SELECT * FROM Customer MAXRESULTS 2"},
{"bId": "2", "Query": "SELECT * FROM Vendor MAXRESULTS 2"}
]
}
```
## Query Language
QuickBooks uses a SQL-like query language:
```sql
SELECT * FROM Customer WHERE DisplayName LIKE 'John%' MAXRESULTS 100
```
Operators: `=`, `LIKE`, `<`, `>`, `<=`, `>=`, `IN`
## SyncToken for Updates
All update operations require the current `SyncToken` from the entity. The SyncToken is incremented after each successful update.
1. GET the entity to retrieve current `SyncToken`
2. Include `Id` and `SyncToken` in the POST body
3. If the SyncToken doesn't match, the update fails (optimistic locking)
## Void vs Delete
- **Void**: Sets transaction amount to 0, adds "Voided" note, keeps record. Use for audit trail.
- **Delete**: Permanently removes the transaction. Use `?operation=delete` query parameter.
Both require `Id` and `SyncToken` in the request body.
## Notes
- `:realmId` is automatically replaced by the router
- All queries must be URL-encoded
- Use `MAXRESULTS` to limit query results (default varies by entity)
- Include `SyncToken` when updating entities (for optimistic locking)
- Dates are in `YYYY-MM-DD` format
- Soft delete entities (Customer, Vendor, Item) by setting `Active: false`
- Transactions (Invoice, Payment, Bill) can be voided or deleted
## Resources
- [API Overview](https://developer.intuit.com/app/developer/qbo/docs/get-started)
- [Query Customers](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/customer#query-a-customer)
- [Get Customer](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/customer#read-a-customer)
- [Create Customer](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/customer#create-a-customer)
- [Update Customer](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/customer#full-update-a-customer)
- [Query Invoices](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/invoice#query-an-invoice)
- [Get Invoice](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/invoice#read-an-invoice)
- [Create Invoice](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/invoice#create-an-invoice)
- [Update Invoice](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/invoice#full-update-an-invoice)
- [Delete Invoice](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/invoice#delete-an-invoice)
- [Send Invoice](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/invoice#send-an-invoice)
- [Query Items](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/item#query-an-item)
- [Get Item](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/item#read-an-item)
- [Create Item](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/item#create-an-item)
- [Update Item](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/item#full-update-an-item)
- [Query Accounts](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/account#query-an-account)
- [Get Account](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/account#read-an-account)
- [Create Account](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/account#create-an-account)
- [Update Account](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/account#full-update-an-account)
- [Query Payments](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/payment#query-a-payment)
- [Get Payment](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/payment#read-a-payment)
- [Create Payment](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/payment#create-a-payment)
- [Update Payment](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/payment#full-update-a-payment)
- [Delete Payment](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/payment#delete-a-payment)
- [Query Vendors](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/vendor#query-a-vendor)
- [Get Vendor](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/vendor#read-a-vendor)
- [Create Vendor](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/vendor#create-a-vendor)
- [Update Vendor](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/vendor#full-update-a-vendor)
- [Query Bills](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/bill#query-a-bill)
- [Get Bill](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/bill#read-a-bill)
- [Create Bill](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/bill#create-a-bill)
- [Update Bill](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/bill#full-update-a-bill)
- [Delete Bill](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/bill#delete-a-bill)
- [Profit and Loss Report](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/report-entities/profitandloss)
- [Balance Sheet Report](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/report-entities/balancesheet)
- [Query Reference](https://developer.intuit.com/app/developer/qbdesktop/docs/develop/exploring-the-quickbooks-desktop-sdk/query-requests-and-responses)

View File

@@ -0,0 +1,188 @@
# Quo Routing Reference
**App name:** `quo`
**Base URL proxied:** `api.openphone.com`
## API Path Pattern
```
/quo/v1/{resource}
```
## Common Endpoints
### Phone Numbers
#### List Phone Numbers
```bash
GET /quo/v1/phone-numbers
```
### Users
#### List Users
```bash
GET /quo/v1/users?maxResults=50
```
#### Get User
```bash
GET /quo/v1/users/{userId}
```
### Messages
#### Send Text Message
```bash
POST /quo/v1/messages
Content-Type: application/json
{
"content": "Hello, world!",
"from": "PN123abc",
"to": ["+15555555555"]
}
```
#### List Messages
```bash
GET /quo/v1/messages?phoneNumberId=PN123abc&participants[]=+15555555555&maxResults=100
```
#### Get Message
```bash
GET /quo/v1/messages/{messageId}
```
### Calls
#### List Calls
```bash
GET /quo/v1/calls?phoneNumberId=PN123abc&participants[]=+15555555555&maxResults=100
```
#### Get Call
```bash
GET /quo/v1/calls/{callId}
```
#### Get Call Recordings
```bash
GET /quo/v1/call-recordings/{callId}
```
#### Get Call Summary
```bash
GET /quo/v1/call-summaries/{callId}
```
#### Get Call Transcript
```bash
GET /quo/v1/call-transcripts/{callId}
```
#### Get Call Voicemail
```bash
GET /quo/v1/call-voicemails/{callId}
```
### Contacts
#### List Contacts
```bash
GET /quo/v1/contacts?maxResults=50
```
#### Get Contact
```bash
GET /quo/v1/contacts/{contactId}
```
#### Create Contact
```bash
POST /quo/v1/contacts
Content-Type: application/json
{
"defaultFields": {
"firstName": "Jane",
"lastName": "Doe",
"phoneNumbers": [{"name": "mobile", "value": "+15555555555"}]
}
}
```
#### Update Contact
```bash
PATCH /quo/v1/contacts/{contactId}
Content-Type: application/json
{
"defaultFields": {
"company": "New Company"
}
}
```
#### Delete Contact
```bash
DELETE /quo/v1/contacts/{contactId}
```
#### Get Contact Custom Fields
```bash
GET /quo/v1/contact-custom-fields
```
### Conversations
#### List Conversations
```bash
GET /quo/v1/conversations?maxResults=100
```
### Webhooks
#### List Webhooks
```bash
GET /quo/v1/webhooks
```
#### Get Webhook
```bash
GET /quo/v1/webhooks/{webhookId}
```
#### Create Webhook
```bash
POST /quo/v1/webhooks
Content-Type: application/json
{
"url": "https://your-webhook-url.com/calls",
"resourceType": "call"
}
```
Resource types: `call`, `message`, `callSummary`, `callTranscript`
#### Delete Webhook
```bash
DELETE /quo/v1/webhooks/{webhookId}
```
## Notes
- Phone number IDs start with `PN`
- User IDs start with `US`
- Call/Message IDs start with `AC`
- Phone numbers must be in E.164 format (e.g., `+15555555555`)
- Uses token-based pagination with `pageToken` parameter
- Maximum 1600 characters per SMS message
- List calls requires exactly 1 participant (1:1 conversations only)
## Resources
- [Quo API Introduction](https://www.quo.com/docs/mdx/api-reference/introduction)
- [Quo API Authentication](https://www.quo.com/docs/mdx/api-reference/authentication)
- [Quo Support Center](https://support.quo.com/core-concepts/integrations/api)

View File

@@ -0,0 +1,193 @@
# Salesforce Routing Reference
**App name:** `salesforce`
**Base URL proxied:** `{instance}.salesforce.com`
The router automatically determines the instance URL from your OAuth credentials (`instance_url` from the token response).
## API Path Pattern
```
/salesforce/services/data/v59.0/{endpoint}
```
## Common Endpoints
### SOQL Query
```bash
GET /salesforce/services/data/v59.0/query?q=SELECT+Id,Name+FROM+Contact+LIMIT+10
```
Complex query:
```bash
GET /salesforce/services/data/v59.0/query?q=SELECT+Id,Name,Email+FROM+Contact+WHERE+Email+LIKE+'%example.com'+ORDER+BY+CreatedDate+DESC
```
### Get Object
```bash
GET /salesforce/services/data/v59.0/sobjects/{objectType}/{recordId}
```
Example:
```bash
GET /salesforce/services/data/v59.0/sobjects/Contact/003XXXXXXXXXXXXXXX
```
### Create Object
```bash
POST /salesforce/services/data/v59.0/sobjects/{objectType}
Content-Type: application/json
{
"FirstName": "John",
"LastName": "Doe",
"Email": "john@example.com"
}
```
### Update Object
```bash
PATCH /salesforce/services/data/v59.0/sobjects/{objectType}/{recordId}
Content-Type: application/json
{
"Phone": "+1234567890"
}
```
### Delete Object
```bash
DELETE /salesforce/services/data/v59.0/sobjects/{objectType}/{recordId}
```
### Describe Object (get schema)
```bash
GET /salesforce/services/data/v59.0/sobjects/{objectType}/describe
```
### List Objects
```bash
GET /salesforce/services/data/v59.0/sobjects
```
### Search (SOSL)
```bash
GET /salesforce/services/data/v59.0/search?q=FIND+{searchTerm}+IN+ALL+FIELDS+RETURNING+Contact(Id,Name)
```
### Composite Request (batch multiple operations)
```bash
POST /salesforce/services/data/v59.0/composite
Content-Type: application/json
{
"compositeRequest": [
{
"method": "GET",
"url": "/services/data/v59.0/sobjects/Contact/003XXXXXXX",
"referenceId": "contact1"
},
{
"method": "GET",
"url": "/services/data/v59.0/sobjects/Account/001XXXXXXX",
"referenceId": "account1"
}
]
}
```
### Composite Batch Request
```bash
POST /salesforce/services/data/v59.0/composite/batch
Content-Type: application/json
{
"batchRequests": [
{"method": "GET", "url": "v59.0/sobjects/Contact/003XXXXXXX"},
{"method": "GET", "url": "v59.0/sobjects/Account/001XXXXXXX"}
]
}
```
### sObject Collections Create (batch create)
```bash
POST /salesforce/services/data/v59.0/composite/sobjects
Content-Type: application/json
{
"allOrNone": true,
"records": [
{"attributes": {"type": "Contact"}, "FirstName": "John", "LastName": "Doe"},
{"attributes": {"type": "Contact"}, "FirstName": "Jane", "LastName": "Smith"}
]
}
```
### sObject Collections Delete (batch delete)
```bash
DELETE /salesforce/services/data/v59.0/composite/sobjects?ids=003XXXXX,003YYYYY&allOrNone=true
```
### Get Updated Records
```bash
GET /salesforce/services/data/v59.0/sobjects/{objectType}/updated/?start=2026-01-30T00:00:00Z&end=2026-02-01T00:00:00Z
```
### Get Deleted Records
```bash
GET /salesforce/services/data/v59.0/sobjects/{objectType}/deleted/?start=2026-01-30T00:00:00Z&end=2026-02-01T00:00:00Z
```
### Get API Limits
```bash
GET /salesforce/services/data/v59.0/limits
```
### List API Versions
```bash
GET /salesforce/services/data/
```
## Common Objects
- `Account` - Companies/Organizations
- `Contact` - People associated with accounts
- `Lead` - Potential customers
- `Opportunity` - Sales deals
- `Case` - Support cases
- `Task` - To-do items
- `Event` - Calendar events
## Notes
- Use URL encoding for SOQL queries (spaces become `+`)
- Record IDs are 15 or 18 character alphanumeric strings
- API version (v59.0) can be adjusted; latest is v65.0
- Update and Delete operations return HTTP 204 (no content) on success
- Dates for updated/deleted queries use ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`
- Use `allOrNone: true` in batch operations for atomic transactions
## Resources
- [REST API Developer Guide](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/intro_rest.htm)
- [List sObjects](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_describeGlobal.htm)
- [Describe sObject](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_sobject_describe.htm)
- [Get Record](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_sobject_retrieve_get.htm)
- [Get Record by External ID](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_sobject_upsert_get.htm)
- [Create Record](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_sobject_create.htm)
- [Update Record](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_update_fields.htm)
- [Delete Record](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_delete_record.htm)
- [Upsert Record](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_upsert.htm)
- [Query Records (SOQL)](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_query.htm)
- [Get Updated Records](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_getupdated.htm)
- [Get Deleted Records](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_getdeleted.htm)
- [Composite Request](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_composite_composite_post.htm)
- [Composite Batch Request](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/requests_composite_batch.htm)
- [Composite Batch Response](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/responses_composite_batch.htm)
- [Composite Graph](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_composite_graph.htm)
- [sObject Collections Create](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_composite_sobjects_collections_create.htm)
- [sObject Collections Update](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_composite_sobjects_collections_update.htm)
- [sObject Collections Delete](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_composite_sobjects_collections_delete.htm)
- [SOQL Reference](https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql.htm)
- [SOSL Reference](https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_sosl.htm)
- [API Resources List](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_list.htm)

View File

@@ -0,0 +1,96 @@
# SignNow Routing Reference
**App name:** `signnow`
**Base URL proxied:** `api.signnow.com`
## API Path Pattern
```
/signnow/{resource}
```
## Common Endpoints
### User
```bash
GET /signnow/user
GET /signnow/user/documents
```
### Documents
```bash
# Upload document (multipart form data)
POST /signnow/document
# Get document
GET /signnow/document/{document_id}
# Update document
PUT /signnow/document/{document_id}
# Download document
GET /signnow/document/{document_id}/download?type=collapsed
# Get document history
GET /signnow/document/{document_id}/historyfull
# Move document to folder
POST /signnow/document/{document_id}/move
# Merge documents (returns PDF)
POST /signnow/document/merge
# Delete document
DELETE /signnow/document/{document_id}
```
### Templates
```bash
# Create template from document
POST /signnow/template
# Create document from template
POST /signnow/template/{template_id}/copy
```
### Invites
```bash
# Send freeform invite
POST /signnow/document/{document_id}/invite
# Create signing link (requires document fields)
POST /signnow/link
```
### Folders
```bash
GET /signnow/folder
GET /signnow/folder/{folder_id}
```
### Webhooks (Event Subscriptions)
```bash
GET /signnow/event_subscription
POST /signnow/event_subscription
DELETE /signnow/event_subscription/{subscription_id}
```
## Notes
- Documents must be uploaded as multipart form data with PDF file
- Supported file types: PDF, DOC, DOCX, ODT, RTF, PNG, JPG
- System folders cannot be renamed or deleted
- Creating signing links requires documents to have signature fields
- Custom invite subject/message requires paid subscription
- Rate limit in development mode: 500 requests/hour per application
## Resources
- [SignNow API Reference](https://docs.signnow.com/docs/signnow/reference)
- [SignNow Developer Portal](https://www.signnow.com/developers)

View File

@@ -0,0 +1,178 @@
# Slack Routing Reference
**App name:** `slack`
**Base URL proxied:** `slack.com`
## API Path Pattern
```
/slack/api/{method}
```
## Common Endpoints
### Post Message
```bash
POST /slack/api/chat.postMessage
Content-Type: application/json
{
"channel": "C0123456789",
"text": "Hello, world!"
}
```
With blocks:
```bash
POST /slack/api/chat.postMessage
Content-Type: application/json
{
"channel": "C0123456789",
"blocks": [
{"type": "section", "text": {"type": "mrkdwn", "text": "*Bold* and _italic_"}}
]
}
```
### List Channels
```bash
GET /slack/api/conversations.list?types=public_channel,private_channel
```
### Get Channel Info
```bash
GET /slack/api/conversations.info?channel=C0123456789
```
### List Messages in Channel
```bash
GET /slack/api/conversations.history?channel=C0123456789&limit=100
```
### Get Thread Replies
```bash
GET /slack/api/conversations.replies?channel=C0123456789&ts=1234567890.123456
```
### List Users
```bash
GET /slack/api/users.list
```
### Get User Info
```bash
GET /slack/api/users.info?user=U0123456789
```
### Search Messages
```bash
GET /slack/api/search.messages?query=keyword
```
### Upload File
```bash
POST /slack/api/files.upload
Content-Type: multipart/form-data
channels=C0123456789
content=file content here
filename=example.txt
```
### Add Reaction
```bash
POST /slack/api/reactions.add
Content-Type: application/json
{
"channel": "C0123456789",
"name": "thumbsup",
"timestamp": "1234567890.123456"
}
```
### Update Message
```bash
POST /slack/api/chat.update
Content-Type: application/json
{
"channel": "C0123456789",
"ts": "1234567890.123456",
"text": "Updated message"
}
```
### Delete Message
```bash
POST /slack/api/chat.delete
Content-Type: application/json
{
"channel": "C0123456789",
"ts": "1234567890.123456"
}
```
### Post Thread Reply
```bash
POST /slack/api/chat.postMessage
Content-Type: application/json
{
"channel": "C0123456789",
"thread_ts": "1234567890.123456",
"text": "This is a reply in a thread"
}
```
### Get Channel Members
```bash
GET /slack/api/conversations.members?channel=C0123456789&limit=100
```
### Open DM Conversation
```bash
POST /slack/api/conversations.open
Content-Type: application/json
{
"users": "U0123456789"
}
```
### Auth Test (get current user/team)
```bash
GET /slack/api/auth.test
```
## Notes
- Authentication is automatic - the router uses the user's OAuth access token
- Channel IDs start with `C` (public), `G` (private/group), or `D` (DM)
- User IDs start with `U`, Team IDs start with `T`
- Message timestamps (`ts`) are used as unique identifiers
- Use `mrkdwn` type for Slack-flavored markdown formatting
- Thread replies use `thread_ts` to reference the parent message
## Resources
- [API Overview](https://api.slack.com/apis)
- [Post Message](https://api.slack.com/methods/chat.postMessage)
- [Update Message](https://api.slack.com/methods/chat.update)
- [Delete Message](https://api.slack.com/methods/chat.delete)
- [List Channels](https://api.slack.com/methods/conversations.list)
- [Get Channel Info](https://api.slack.com/methods/conversations.info)
- [Get Channel Members](https://api.slack.com/methods/conversations.members)
- [Open Conversation](https://api.slack.com/methods/conversations.open)
- [Channel History](https://api.slack.com/methods/conversations.history)
- [Thread Replies](https://api.slack.com/methods/conversations.replies)
- [List Users](https://api.slack.com/methods/users.list)
- [Get User Info](https://api.slack.com/methods/users.info)
- [Auth Test](https://api.slack.com/methods/auth.test)
- [Search Messages](https://api.slack.com/methods/search.messages)
- [Upload File](https://api.slack.com/methods/files.upload)
- [Add Reaction](https://api.slack.com/methods/reactions.add)
- [Block Kit Reference](https://api.slack.com/reference/block-kit)
- [LLM Reference](https://docs.slack.dev/llms.txt)

View File

@@ -0,0 +1,262 @@
# Square Routing Reference
**App name:** `squareup`
**Base URL proxied:** `connect.squareup.com`
## API Path Pattern
```
/squareup/v2/{resource}
```
## Common Endpoints
### Locations
#### List Locations
```bash
GET /squareup/v2/locations
```
#### Get Location
```bash
GET /squareup/v2/locations/{location_id}
```
#### Create Location
```bash
POST /squareup/v2/locations
Content-Type: application/json
{
"location": {
"name": "New Location",
"address": {...}
}
}
```
### Merchants
#### Get Current Merchant
```bash
GET /squareup/v2/merchants/me
```
### Payments
#### List Payments
```bash
GET /squareup/v2/payments
GET /squareup/v2/payments?location_id={location_id}&begin_time=2026-01-01T00:00:00Z
```
#### Get Payment
```bash
GET /squareup/v2/payments/{payment_id}
```
#### Create Payment
```bash
POST /squareup/v2/payments
Content-Type: application/json
{
"source_id": "cnon:card-nonce-ok",
"idempotency_key": "unique-key",
"amount_money": {"amount": 1000, "currency": "USD"},
"location_id": "{location_id}"
}
```
#### Complete Payment
```bash
POST /squareup/v2/payments/{payment_id}/complete
```
#### Cancel Payment
```bash
POST /squareup/v2/payments/{payment_id}/cancel
```
### Refunds
#### List Refunds
```bash
GET /squareup/v2/refunds
```
#### Create Refund
```bash
POST /squareup/v2/refunds
Content-Type: application/json
{
"idempotency_key": "unique-key",
"payment_id": "{payment_id}",
"amount_money": {"amount": 500, "currency": "USD"}
}
```
### Customers
#### List Customers
```bash
GET /squareup/v2/customers
```
#### Get Customer
```bash
GET /squareup/v2/customers/{customer_id}
```
#### Create Customer
```bash
POST /squareup/v2/customers
Content-Type: application/json
{
"given_name": "John",
"family_name": "Doe",
"email_address": "john@example.com"
}
```
#### Search Customers
```bash
POST /squareup/v2/customers/search
Content-Type: application/json
{
"query": {"filter": {"email_address": {"exact": "john@example.com"}}}
}
```
### Orders
#### Create Order
```bash
POST /squareup/v2/orders
Content-Type: application/json
{
"order": {
"location_id": "{location_id}",
"line_items": [{"name": "Item", "quantity": "1", "base_price_money": {"amount": 1000, "currency": "USD"}}]
},
"idempotency_key": "unique-key"
}
```
#### Search Orders
```bash
POST /squareup/v2/orders/search
Content-Type: application/json
{
"location_ids": ["{location_id}"]
}
```
### Catalog
#### List Catalog
```bash
GET /squareup/v2/catalog/list
GET /squareup/v2/catalog/list?types=ITEM,CATEGORY
```
#### Get Catalog Object
```bash
GET /squareup/v2/catalog/object/{object_id}
```
#### Upsert Catalog Object
```bash
POST /squareup/v2/catalog/object
Content-Type: application/json
{
"idempotency_key": "unique-key",
"object": {"type": "ITEM", "id": "#new-item", "item_data": {"name": "Coffee"}}
}
```
#### Search Catalog
```bash
POST /squareup/v2/catalog/search
Content-Type: application/json
{
"object_types": ["ITEM"],
"query": {"text_query": {"keywords": ["coffee"]}}
}
```
### Inventory
#### Get Inventory Count
```bash
GET /squareup/v2/inventory/{catalog_object_id}
```
#### Batch Change Inventory
```bash
POST /squareup/v2/inventory/changes/batch-create
Content-Type: application/json
{
"idempotency_key": "unique-key",
"changes": [...]
}
```
### Invoices
#### List Invoices
```bash
GET /squareup/v2/invoices?location_id={location_id}
```
#### Create Invoice
```bash
POST /squareup/v2/invoices
Content-Type: application/json
{
"invoice": {
"location_id": "{location_id}",
"order_id": "{order_id}",
"primary_recipient": {"customer_id": "{customer_id}"},
"payment_requests": [{"request_type": "BALANCE", "due_date": "2026-02-15"}]
},
"idempotency_key": "unique-key"
}
```
#### Publish Invoice
```bash
POST /squareup/v2/invoices/{invoice_id}/publish
Content-Type: application/json
{"version": 1, "idempotency_key": "unique-key"}
```
## Notes
- All amounts are in smallest currency unit (cents for USD: 1000 = $10.00)
- Most write operations require an `idempotency_key`
- Cursor-based pagination: use `cursor` parameter with value from response
- Timestamps are ISO 8601 format
- Some endpoints require specific OAuth scopes (CUSTOMERS_READ, ORDERS_READ, ITEMS_READ, INVOICES_READ, etc.)
## Resources
- [Square API Overview](https://developer.squareup.com/docs)
- [Square API Reference](https://developer.squareup.com/reference/square)
- [Payments API](https://developer.squareup.com/reference/square/payments-api)
- [Customers API](https://developer.squareup.com/reference/square/customers-api)
- [Orders API](https://developer.squareup.com/reference/square/orders-api)
- [Catalog API](https://developer.squareup.com/reference/square/catalog-api)
- [Inventory API](https://developer.squareup.com/reference/square/inventory-api)
- [Invoices API](https://developer.squareup.com/reference/square/invoices-api)

View File

@@ -0,0 +1,208 @@
# Stripe Routing Reference
**App name:** `stripe`
**Base URL proxied:** `api.stripe.com`
## API Path Pattern
```
/stripe/v1/{endpoint}
```
## Common Endpoints
### Customers
#### List Customers
```bash
GET /stripe/v1/customers?limit=10
```
#### Get Customer
```bash
GET /stripe/v1/customers/{customerId}
```
#### Create Customer
```bash
POST /stripe/v1/customers
Content-Type: application/x-www-form-urlencoded
email=customer@example.com&name=John%20Doe&description=New%20customer
```
#### Update Customer
```bash
POST /stripe/v1/customers/{customerId}
Content-Type: application/x-www-form-urlencoded
email=newemail@example.com
```
### Products
#### List Products
```bash
GET /stripe/v1/products?limit=10&active=true
```
#### Create Product
```bash
POST /stripe/v1/products
Content-Type: application/x-www-form-urlencoded
name=Premium%20Plan&description=Monthly%20subscription
```
### Prices
#### List Prices
```bash
GET /stripe/v1/prices?limit=10&active=true
```
#### Create Price
```bash
POST /stripe/v1/prices
Content-Type: application/x-www-form-urlencoded
unit_amount=1999&currency=usd&product=prod_XXX&recurring[interval]=month
```
### Subscriptions
#### List Subscriptions
```bash
GET /stripe/v1/subscriptions?limit=10&status=active
```
#### Get Subscription
```bash
GET /stripe/v1/subscriptions/{subscriptionId}
```
#### Create Subscription
```bash
POST /stripe/v1/subscriptions
Content-Type: application/x-www-form-urlencoded
customer=cus_XXX&items[0][price]=price_XXX
```
#### Cancel Subscription
```bash
DELETE /stripe/v1/subscriptions/{subscriptionId}
```
### Invoices
#### List Invoices
```bash
GET /stripe/v1/invoices?limit=10&customer=cus_XXX
```
#### Get Invoice
```bash
GET /stripe/v1/invoices/{invoiceId}
```
### Charges
#### List Charges
```bash
GET /stripe/v1/charges?limit=10
```
### Payment Intents
#### Create Payment Intent
```bash
POST /stripe/v1/payment_intents
Content-Type: application/x-www-form-urlencoded
amount=1999&currency=usd&customer=cus_XXX
```
### Balance
#### Get Balance
```bash
GET /stripe/v1/balance
```
### Events
#### List Events
```bash
GET /stripe/v1/events?limit=10&type=customer.created
```
## Notes
- Stripe API uses form-urlencoded data for POST requests
- IDs are prefixed: `cus_` (customer), `sub_` (subscription), `prod_` (product), `price_` (price), `in_` (invoice), `pi_` (payment intent)
- Amounts are in cents (1999 = $19.99)
- Use `expand[]` parameter to include related objects; for list endpoints use `expand[]=data.{field}` (e.g., `expand[]=data.customer`)
- List endpoints support pagination with `starting_after` and `ending_before`
- Delete returns `{id, deleted: true}` on success
- Products with prices cannot be deleted, only archived (`active=false`)
## Resources
- [API Overview](https://docs.stripe.com/api)
- [List Customers](https://docs.stripe.com/api/customers/list.md)
- [Get Customer](https://docs.stripe.com/api/customers/retrieve.md)
- [Create Customer](https://docs.stripe.com/api/customers/create.md)
- [Update Customer](https://docs.stripe.com/api/customers/update.md)
- [Delete Customer](https://docs.stripe.com/api/customers/delete.md)
- [Search Customers](https://docs.stripe.com/api/customers/search.md)
- [List Products](https://docs.stripe.com/api/products/list.md)
- [Get Product](https://docs.stripe.com/api/products/retrieve.md)
- [Create Product](https://docs.stripe.com/api/products/create.md)
- [Update Product](https://docs.stripe.com/api/products/update.md)
- [Delete Product](https://docs.stripe.com/api/products/delete.md)
- [Search Products](https://docs.stripe.com/api/products/search.md)
- [List Prices](https://docs.stripe.com/api/prices/list.md)
- [Get Price](https://docs.stripe.com/api/prices/retrieve.md)
- [Create Price](https://docs.stripe.com/api/prices/create.md)
- [Update Price](https://docs.stripe.com/api/prices/update.md)
- [Search Prices](https://docs.stripe.com/api/prices/search.md)
- [List Subscriptions](https://docs.stripe.com/api/subscriptions/list.md)
- [Get Subscription](https://docs.stripe.com/api/subscriptions/retrieve.md)
- [Create Subscription](https://docs.stripe.com/api/subscriptions/create.md)
- [Update Subscription](https://docs.stripe.com/api/subscriptions/update.md)
- [Cancel Subscription](https://docs.stripe.com/api/subscriptions/cancel.md)
- [Resume Subscription](https://docs.stripe.com/api/subscriptions/resume.md)
- [Search Subscriptions](https://docs.stripe.com/api/subscriptions/search.md)
- [List Invoices](https://docs.stripe.com/api/invoices/list.md)
- [Get Invoice](https://docs.stripe.com/api/invoices/retrieve.md)
- [Create Invoice](https://docs.stripe.com/api/invoices/create.md)
- [Update Invoice](https://docs.stripe.com/api/invoices/update.md)
- [Delete Invoice](https://docs.stripe.com/api/invoices/delete.md)
- [Finalize Invoice](https://docs.stripe.com/api/invoices/finalize.md)
- [Pay Invoice](https://docs.stripe.com/api/invoices/pay.md)
- [Send Invoice](https://docs.stripe.com/api/invoices/send.md)
- [Void Invoice](https://docs.stripe.com/api/invoices/void.md)
- [Search Invoices](https://docs.stripe.com/api/invoices/search.md)
- [List Charges](https://docs.stripe.com/api/charges/list.md)
- [Get Charge](https://docs.stripe.com/api/charges/retrieve.md)
- [Create Charge](https://docs.stripe.com/api/charges/create.md)
- [Update Charge](https://docs.stripe.com/api/charges/update.md)
- [Capture Charge](https://docs.stripe.com/api/charges/capture.md)
- [Search Charges](https://docs.stripe.com/api/charges/search.md)
- [List Payment Intents](https://docs.stripe.com/api/payment_intents/list.md)
- [Get Payment Intent](https://docs.stripe.com/api/payment_intents/retrieve.md)
- [Create Payment Intent](https://docs.stripe.com/api/payment_intents/create.md)
- [Update Payment Intent](https://docs.stripe.com/api/payment_intents/update.md)
- [Confirm Payment Intent](https://docs.stripe.com/api/payment_intents/confirm.md)
- [Capture Payment Intent](https://docs.stripe.com/api/payment_intents/capture.md)
- [Cancel Payment Intent](https://docs.stripe.com/api/payment_intents/cancel.md)
- [Search Payment Intents](https://docs.stripe.com/api/payment_intents/search.md)
- [Get Balance](https://docs.stripe.com/api/balance/balance_retrieve.md)
- [List Balance Transactions](https://docs.stripe.com/api/balance_transactions/list.md)
- [Get Balance Transaction](https://docs.stripe.com/api/balance_transactions/retrieve.md)
- [List Events](https://docs.stripe.com/api/events/list.md)
- [Get Event](https://docs.stripe.com/api/events/retrieve.md)
- [Pagination](https://docs.stripe.com/api/pagination.md)
- [Expanding Responses](https://docs.stripe.com/api/expanding_objects.md)
- [LLM Reference](https://docs.stripe.com/llms.txt)

View File

@@ -0,0 +1,214 @@
# Systeme.io Routing Reference
**App name:** `systeme`
**Base URL proxied:** `api.systeme.io`
## API Path Pattern
```
/systeme/api/{resource}
```
## Common Endpoints
### List Contacts
```bash
GET /systeme/api/contacts
```
Query parameters:
- `limit` - Results per page (10-100)
- `startingAfter` - ID of last item for pagination
- `order` - Sort order: `asc` or `desc` (default: `desc`)
### Get Contact
```bash
GET /systeme/api/contacts/{id}
```
### Create Contact
```bash
POST /systeme/api/contacts
Content-Type: application/json
{
"email": "user@example.com",
"firstName": "John",
"lastName": "Doe"
}
```
### Update Contact
```bash
PATCH /systeme/api/contacts/{id}
Content-Type: application/merge-patch+json
{
"firstName": "Jane"
}
```
### Delete Contact
```bash
DELETE /systeme/api/contacts/{id}
```
### List Tags
```bash
GET /systeme/api/tags
```
### Create Tag
```bash
POST /systeme/api/tags
Content-Type: application/json
{
"name": "VIP Customer"
}
```
### Update Tag
```bash
PUT /systeme/api/tags/{id}
Content-Type: application/json
{
"name": "Premium Customer"
}
```
### Delete Tag
```bash
DELETE /systeme/api/tags/{id}
```
### Assign Tag to Contact
```bash
POST /systeme/api/contacts/{id}/tags
Content-Type: application/json
{
"tagId": 12345
}
```
### Remove Tag from Contact
```bash
DELETE /systeme/api/contacts/{id}/tags/{tagId}
```
### List Contact Fields
```bash
GET /systeme/api/contact_fields
```
### List Courses
```bash
GET /systeme/api/school/courses
```
### Create Enrollment
```bash
POST /systeme/api/school/courses/{courseId}/enrollments
Content-Type: application/json
{
"contactId": 12345
}
```
### List Enrollments
```bash
GET /systeme/api/school/enrollments
```
### Delete Enrollment
```bash
DELETE /systeme/api/school/enrollments/{id}
```
### List Communities
```bash
GET /systeme/api/community/communities
```
### Create Membership
```bash
POST /systeme/api/community/communities/{communityId}/memberships
Content-Type: application/json
{
"contactId": 12345
}
```
### List Memberships
```bash
GET /systeme/api/community/memberships
```
### Delete Membership
```bash
DELETE /systeme/api/community/memberships/{id}
```
### List Subscriptions
```bash
GET /systeme/api/payment/subscriptions
```
### Cancel Subscription
```bash
POST /systeme/api/payment/subscriptions/{id}/cancel
```
### List Webhooks
```bash
GET /systeme/api/webhooks
```
### Create Webhook
```bash
POST /systeme/api/webhooks
Content-Type: application/json
{
"name": "My Webhook",
"url": "https://example.com/webhook",
"secret": "my-secret-key",
"subscriptions": ["CONTACT_CREATED"]
}
```
Available events: `CONTACT_CREATED`, `CONTACT_TAG_ADDED`, `CONTACT_TAG_REMOVED`, `CONTACT_OPT_IN`, `SALE_NEW`, `SALE_CANCELED`
### Update Webhook
```bash
PATCH /systeme/api/webhooks/{id}
Content-Type: application/merge-patch+json
{
"name": "Updated Webhook Name"
}
```
### Delete Webhook
```bash
DELETE /systeme/api/webhooks/{id}
```
## Notes
- Contact, tag, course, and enrollment IDs are numeric integers
- Webhook IDs are UUIDs
- Uses cursor-based pagination with `startingAfter` parameter
- PATCH requests require `Content-Type: application/merge-patch+json`
- Delete operations return 204 No Content
- Email addresses are validated for real MX records
- Payment/subscription endpoints may return 404 if not configured
## Resources
- [Systeme.io API Reference](https://developer.systeme.io/reference)
- [Systeme.io Developer Documentation](https://developer.systeme.io/)

View File

@@ -0,0 +1,174 @@
# Tally Routing Reference
**App name:** `tally`
**Base URL proxied:** `api.tally.so`
## API Path Pattern
```
/tally/{resource}
```
Tally's API does not use version prefixes in paths.
## Required Headers
THe `User-Agent` header is required to avoid Cloudflare blocks:
```
User-Agent: Maton/1.0
```
## Common Endpoints
### Get Current User
```bash
GET /tally/users/me
```
### List Forms
```bash
GET /tally/forms
```
**Query Parameters:**
- `page` - Page number (default: 1)
- `limit` - Items per page (default: 50)
### Get Form
```bash
GET /tally/forms/{formId}
```
### Create Form
```bash
POST /tally/forms
Content-Type: application/json
{
"status": "DRAFT",
"blocks": [
{
"type": "FORM_TITLE",
"uuid": "11111111-1111-1111-1111-111111111111",
"groupUuid": "22222222-2222-2222-2222-222222222222",
"groupType": "FORM_TITLE",
"title": "My Form",
"payload": {}
},
{
"type": "INPUT_TEXT",
"uuid": "33333333-3333-3333-3333-333333333333",
"groupUuid": "44444444-4444-4444-4444-444444444444",
"groupType": "INPUT_TEXT",
"title": "Your name",
"payload": {}
}
]
}
```
### Update Form
```bash
PATCH /tally/forms/{formId}
Content-Type: application/json
{
"name": "Updated Form Name",
"status": "PUBLISHED"
}
```
### Delete Form
```bash
DELETE /tally/forms/{formId}
```
### List Form Questions
```bash
GET /tally/forms/{formId}/questions
```
### List Form Submissions
```bash
GET /tally/forms/{formId}/submissions
```
**Query Parameters:**
- `page` - Page number
- `limit` - Items per page
- `startDate` - Filter by start date (ISO 8601)
- `endDate` - Filter by end date (ISO 8601)
- `afterId` - Cursor for pagination
### Get Submission
```bash
GET /tally/forms/{formId}/submissions/{submissionId}
```
### Delete Submission
```bash
DELETE /tally/forms/{formId}/submissions/{submissionId}
```
### List Workspaces
```bash
GET /tally/workspaces
```
### Get Workspace
```bash
GET /tally/workspaces/{workspaceId}
```
### Create Workspace
```bash
POST /tally/workspaces
Content-Type: application/json
{
"name": "New Workspace"
}
```
### List Organization Users
```bash
GET /tally/organizations/{organizationId}/users
```
### List Organization Invites
```bash
GET /tally/organizations/{organizationId}/invites
```
### List Webhooks
```bash
GET /tally/webhooks
```
### Create Webhook
```bash
POST /tally/webhooks
Content-Type: application/json
{
"formId": "GxdRaQ",
"url": "https://your-endpoint.com/webhook",
"eventTypes": ["FORM_RESPONSE"]
}
```
## Notes
- Form and workspace IDs are short alphanumeric strings (e.g., `GxdRaQ`, `3jW9Q1`)
- Block `uuid` and `groupUuid` fields must be valid UUIDs (GUIDs)
- Page-based pagination with `page` and `limit` parameters
- Rate limit: 100 requests per minute
- API is in public beta and subject to changes
- Creating workspaces requires a Pro subscription
## Resources
- [Tally API Introduction](https://developers.tally.so/api-reference/introduction)
- [Tally API Reference](https://developers.tally.so/llms.txt)
- [Tally Help Center](https://help.tally.so/)

View File

@@ -0,0 +1,195 @@
# Telegram Routing Reference
**App name:** `telegram`
**Base URL proxied:** `api.telegram.org`
## API Path Pattern
```
/telegram/:token/{method}
```
The `:token` placeholder is automatically replaced with the bot token from the connection configuration.
## Common Endpoints
### Get Bot Info
```bash
GET /telegram/:token/getMe
```
### Get Updates
```bash
POST /telegram/:token/getUpdates
Content-Type: application/json
{
"limit": 100,
"timeout": 30
}
```
### Send Message
```bash
POST /telegram/:token/sendMessage
Content-Type: application/json
{
"chat_id": 123456789,
"text": "Hello!",
"parse_mode": "HTML"
}
```
### Send Photo
```bash
POST /telegram/:token/sendPhoto
Content-Type: application/json
{
"chat_id": 123456789,
"photo": "https://example.com/image.jpg",
"caption": "Photo caption"
}
```
### Send Document
```bash
POST /telegram/:token/sendDocument
Content-Type: application/json
{
"chat_id": 123456789,
"document": "https://example.com/file.pdf"
}
```
### Send Location
```bash
POST /telegram/:token/sendLocation
Content-Type: application/json
{
"chat_id": 123456789,
"latitude": 37.7749,
"longitude": -122.4194
}
```
### Send Poll
```bash
POST /telegram/:token/sendPoll
Content-Type: application/json
{
"chat_id": 123456789,
"question": "What is your favorite?",
"options": [{"text": "Option 1"}, {"text": "Option 2"}]
}
```
### Edit Message
```bash
POST /telegram/:token/editMessageText
Content-Type: application/json
{
"chat_id": 123456789,
"message_id": 123,
"text": "Updated text"
}
```
### Delete Message
```bash
POST /telegram/:token/deleteMessage
Content-Type: application/json
{
"chat_id": 123456789,
"message_id": 123
}
```
### Forward Message
```bash
POST /telegram/:token/forwardMessage
Content-Type: application/json
{
"chat_id": 123456789,
"from_chat_id": 123456789,
"message_id": 123
}
```
### Get Chat
```bash
POST /telegram/:token/getChat
Content-Type: application/json
{
"chat_id": 123456789
}
```
### Set Bot Commands
```bash
POST /telegram/:token/setMyCommands
Content-Type: application/json
{
"commands": [
{"command": "start", "description": "Start the bot"},
{"command": "help", "description": "Get help"}
]
}
```
### Get File
```bash
POST /telegram/:token/getFile
Content-Type: application/json
{
"file_id": "AgACAgQAAxkDAAM..."
}
```
### Set Webhook
```bash
POST /telegram/:token/setWebhook
Content-Type: application/json
{
"url": "https://example.com/webhook",
"allowed_updates": ["message", "callback_query"]
}
```
### Answer Callback Query
```bash
POST /telegram/:token/answerCallbackQuery
Content-Type: application/json
{
"callback_query_id": "12345678901234567",
"text": "Button clicked!"
}
```
## Notes
- The `:token` placeholder is automatically replaced with the bot token
- Chat IDs are positive integers for private chats, negative for groups
- All methods support both GET and POST, but POST is recommended
- Text messages have a 4096 character limit
- Captions have a 1024 character limit
- Polls support 2-10 options
- Files can be sent via URL or file_id from previously uploaded files
## Resources
- [Telegram Bot API Documentation](https://core.telegram.org/bots/api)
- [Available Methods](https://core.telegram.org/bots/api#available-methods)
- [Formatting Options](https://core.telegram.org/bots/api#formatting-options)

View File

@@ -0,0 +1,117 @@
# TickTick Routing Reference
**App name:** `ticktick`
**Base URL proxied:** `api.ticktick.com`
## API Path Pattern
```
/ticktick/open/v1/{resource}
```
## Common Endpoints
### List Projects
```bash
GET /ticktick/open/v1/project
```
### Get Project with Tasks
```bash
GET /ticktick/open/v1/project/{projectId}/data
```
Returns project details along with tasks and columns.
### Create Project
```bash
POST /ticktick/open/v1/project
Content-Type: application/json
{
"name": "My Project",
"viewMode": "list"
}
```
**viewMode options:** `list`, `kanban`, `timeline`
### Delete Project
```bash
DELETE /ticktick/open/v1/project/{projectId}
```
### Get Task
```bash
GET /ticktick/open/v1/project/{projectId}/task/{taskId}
```
### Create Task
```bash
POST /ticktick/open/v1/task
Content-Type: application/json
{
"title": "New task",
"projectId": "PROJECT_ID",
"content": "Task description",
"priority": 0,
"dueDate": "2026-02-15T10:00:00+0000",
"isAllDay": false
}
```
**Priority values:** 0=None, 1=Low, 3=Medium, 5=High
### Update Task
```bash
POST /ticktick/open/v1/task/{taskId}
Content-Type: application/json
{
"id": "TASK_ID",
"projectId": "PROJECT_ID",
"title": "Updated title",
"priority": 1
}
```
### Complete Task
```bash
POST /ticktick/open/v1/project/{projectId}/task/{taskId}/complete
```
### Delete Task
```bash
DELETE /ticktick/open/v1/project/{projectId}/task/{taskId}
```
## Task Fields
| Field | Type | Description |
|-------|------|-------------|
| `id` | string | Task ID |
| `projectId` | string | Parent project ID |
| `title` | string | Task title |
| `content` | string | Task description (Markdown) |
| `priority` | integer | 0=None, 1=Low, 3=Medium, 5=High |
| `status` | integer | 0=Active, 2=Completed |
| `dueDate` | string | ISO 8601 format |
| `startDate` | string | ISO 8601 format |
| `isAllDay` | boolean | All-day task flag |
| `timeZone` | string | e.g., "America/Los_Angeles" |
| `tags` | array | List of tag names |
| `columnId` | string | Kanban column ID |
## Notes
- The Open API provides access to tasks and projects only
- Habits, focus/pomodoro, and tags endpoints are not available through the Open API
- Task `status` values: 0 = Active, 2 = Completed
- Dates use ISO 8601 format with timezone offset (e.g., `2026-02-15T10:00:00+0000`)
- The `columns` field in project data is used for Kanban board columns
## Resources
- [TickTick Developer Portal](https://developer.ticktick.com/)
- [TickTick Help Center](https://help.ticktick.com/)

View File

@@ -0,0 +1,176 @@
# Todoist Routing Reference
**App name:** `todoist`
**Base URL proxied:** `api.todoist.com`
## API Path Pattern
```
/todoist/rest/v2/{resource}
```
## Common Endpoints
### List Projects
```bash
GET /todoist/rest/v2/projects
```
### Get Project
```bash
GET /todoist/rest/v2/projects/{id}
```
### Create Project
```bash
POST /todoist/rest/v2/projects
Content-Type: application/json
{
"name": "My Project",
"color": "blue"
}
```
### Update Project
```bash
POST /todoist/rest/v2/projects/{id}
Content-Type: application/json
{
"name": "Updated Name"
}
```
### Delete Project
```bash
DELETE /todoist/rest/v2/projects/{id}
```
### List Tasks
```bash
GET /todoist/rest/v2/tasks
GET /todoist/rest/v2/tasks?project_id={project_id}
GET /todoist/rest/v2/tasks?filter={filter}
```
### Get Task
```bash
GET /todoist/rest/v2/tasks/{id}
```
### Create Task
```bash
POST /todoist/rest/v2/tasks
Content-Type: application/json
{
"content": "Buy groceries",
"priority": 2,
"due_string": "tomorrow"
}
```
### Update Task
```bash
POST /todoist/rest/v2/tasks/{id}
Content-Type: application/json
{
"content": "Updated content",
"priority": 4
}
```
### Close Task (Complete)
```bash
POST /todoist/rest/v2/tasks/{id}/close
```
### Reopen Task
```bash
POST /todoist/rest/v2/tasks/{id}/reopen
```
### Delete Task
```bash
DELETE /todoist/rest/v2/tasks/{id}
```
### List Sections
```bash
GET /todoist/rest/v2/sections
GET /todoist/rest/v2/sections?project_id={project_id}
```
### Create Section
```bash
POST /todoist/rest/v2/sections
Content-Type: application/json
{
"name": "In Progress",
"project_id": "123456"
}
```
### Delete Section
```bash
DELETE /todoist/rest/v2/sections/{id}
```
### List Labels
```bash
GET /todoist/rest/v2/labels
```
### Create Label
```bash
POST /todoist/rest/v2/labels
Content-Type: application/json
{
"name": "urgent",
"color": "red"
}
```
### Delete Label
```bash
DELETE /todoist/rest/v2/labels/{id}
```
### List Comments
```bash
GET /todoist/rest/v2/comments?task_id={task_id}
GET /todoist/rest/v2/comments?project_id={project_id}
```
### Create Comment
```bash
POST /todoist/rest/v2/comments
Content-Type: application/json
{
"task_id": "123456",
"content": "This is a comment"
}
```
### Delete Comment
```bash
DELETE /todoist/rest/v2/comments/{id}
```
## Notes
- Task and Project IDs are strings
- Priority values: 1 (normal) to 4 (urgent)
- Use only one due date format per request: `due_string`, `due_date`, or `due_datetime`
- Comments require either `task_id` or `project_id`
- Close/reopen/delete operations return 204 No Content
## Resources
- [Todoist REST API v2 Documentation](https://developer.todoist.com/rest/v2)
- [Todoist Filter Syntax](https://todoist.com/help/articles/introduction-to-filters)

View File

@@ -0,0 +1,192 @@
# Trello Routing Reference
**App name:** `trello`
**Base URL proxied:** `api.trello.com`
## API Path Pattern
```
/trello/1/{resource}
```
## Common Endpoints
### Get Current Member
```bash
GET /trello/1/members/me
```
### Get Member's Boards
```bash
GET /trello/1/members/me/boards?filter=open
```
### Get Board
```bash
GET /trello/1/boards/{id}?lists=open&cards=open
```
### Create Board
```bash
POST /trello/1/boards
Content-Type: application/json
{
"name": "Project Alpha",
"desc": "Main project board",
"defaultLists": false,
"prefs_permissionLevel": "private"
}
```
### Get Board Lists
```bash
GET /trello/1/boards/{id}/lists?filter=open
```
### Get Board Cards
```bash
GET /trello/1/boards/{id}/cards
```
### Create List
```bash
POST /trello/1/lists
Content-Type: application/json
{
"name": "To Do",
"idBoard": "BOARD_ID",
"pos": "top"
}
```
### Get Cards in List
```bash
GET /trello/1/lists/{id}/cards
```
### Get Card
```bash
GET /trello/1/cards/{id}?members=true&checklists=all
```
### Create Card
```bash
POST /trello/1/cards
Content-Type: application/json
{
"name": "Implement feature X",
"desc": "Description of the task",
"idList": "LIST_ID",
"pos": "bottom",
"due": "2025-03-30T12:00:00.000Z",
"idMembers": ["MEMBER_ID"],
"idLabels": ["LABEL_ID"]
}
```
### Update Card
```bash
PUT /trello/1/cards/{id}
Content-Type: application/json
{
"name": "Updated card name",
"desc": "Updated description",
"due": "2025-04-15T12:00:00.000Z"
}
```
### Move Card to List
```bash
PUT /trello/1/cards/{id}
Content-Type: application/json
{
"idList": "NEW_LIST_ID",
"pos": "top"
}
```
### Delete Card
```bash
DELETE /trello/1/cards/{id}
```
### Add Comment to Card
```bash
POST /trello/1/cards/{id}/actions/comments
Content-Type: application/json
{
"text": "This is a comment"
}
```
### Create Checklist
```bash
POST /trello/1/checklists
Content-Type: application/json
{
"idCard": "CARD_ID",
"name": "Task Checklist"
}
```
### Create Checklist Item
```bash
POST /trello/1/checklists/{id}/checkItems
Content-Type: application/json
{
"name": "Subtask 1",
"pos": "bottom",
"checked": false
}
```
### Get Board Labels
```bash
GET /trello/1/boards/{id}/labels
```
### Create Label
```bash
POST /trello/1/labels
Content-Type: application/json
{
"name": "High Priority",
"color": "red",
"idBoard": "BOARD_ID"
}
```
### Search
```bash
GET /trello/1/search?query=keyword&modelTypes=cards,boards
```
## Notes
- IDs are 24-character alphanumeric strings
- Use `me` to reference the authenticated user
- Dates are in ISO 8601 format
- `pos` can be `top`, `bottom`, or a positive number
- Label colors: `yellow`, `purple`, `blue`, `red`, `green`, `orange`, `black`, `sky`, `pink`, `lime`, `null`
- Use `fields` parameter to limit returned data and improve performance
- Archived items can be retrieved with `filter=closed`
## Resources
- [Trello API Overview](https://developer.atlassian.com/cloud/trello/rest/api-group-actions/)
- [Boards](https://developer.atlassian.com/cloud/trello/rest/api-group-boards/)
- [Lists](https://developer.atlassian.com/cloud/trello/rest/api-group-lists/)
- [Cards](https://developer.atlassian.com/cloud/trello/rest/api-group-cards/)
- [Checklists](https://developer.atlassian.com/cloud/trello/rest/api-group-checklists/)
- [Labels](https://developer.atlassian.com/cloud/trello/rest/api-group-labels/)
- [Members](https://developer.atlassian.com/cloud/trello/rest/api-group-members/)
- [Search](https://developer.atlassian.com/cloud/trello/rest/api-group-search/)

View File

@@ -0,0 +1,170 @@
# Twilio Routing Reference
**App name:** `twilio`
**Base URL proxied:** `api.twilio.com`
## API Path Pattern
```
/twilio/2010-04-01/Accounts/{AccountSid}/{resource}.json
```
**Important:** Most Twilio endpoints require your Account SID in the path. Get it from `/Accounts.json`.
## Common Endpoints
### Accounts
#### List Accounts
```bash
GET /twilio/2010-04-01/Accounts.json
```
#### Get Account
```bash
GET /twilio/2010-04-01/Accounts/{AccountSid}.json
```
### Messages (SMS/MMS)
#### List Messages
```bash
GET /twilio/2010-04-01/Accounts/{AccountSid}/Messages.json
```
#### Send Message
```bash
POST /twilio/2010-04-01/Accounts/{AccountSid}/Messages.json
Content-Type: application/x-www-form-urlencoded
To=+15559876543&From=+15551234567&Body=Hello%20from%20Twilio!
```
#### Get Message
```bash
GET /twilio/2010-04-01/Accounts/{AccountSid}/Messages/{MessageSid}.json
```
#### Delete Message
```bash
DELETE /twilio/2010-04-01/Accounts/{AccountSid}/Messages/{MessageSid}.json
```
### Calls (Voice)
#### List Calls
```bash
GET /twilio/2010-04-01/Accounts/{AccountSid}/Calls.json
```
#### Make Call
```bash
POST /twilio/2010-04-01/Accounts/{AccountSid}/Calls.json
Content-Type: application/x-www-form-urlencoded
To=+15559876543&From=+15551234567&Url=https://example.com/twiml
```
#### Get Call
```bash
GET /twilio/2010-04-01/Accounts/{AccountSid}/Calls/{CallSid}.json
```
#### End Call
```bash
POST /twilio/2010-04-01/Accounts/{AccountSid}/Calls/{CallSid}.json
Content-Type: application/x-www-form-urlencoded
Status=completed
```
### Phone Numbers
#### List Incoming Phone Numbers
```bash
GET /twilio/2010-04-01/Accounts/{AccountSid}/IncomingPhoneNumbers.json
```
#### Get Phone Number
```bash
GET /twilio/2010-04-01/Accounts/{AccountSid}/IncomingPhoneNumbers/{PhoneNumberSid}.json
```
#### Update Phone Number
```bash
POST /twilio/2010-04-01/Accounts/{AccountSid}/IncomingPhoneNumbers/{PhoneNumberSid}.json
Content-Type: application/x-www-form-urlencoded
FriendlyName=Updated%20Name
```
### Applications
#### List Applications
```bash
GET /twilio/2010-04-01/Accounts/{AccountSid}/Applications.json
```
#### Create Application
```bash
POST /twilio/2010-04-01/Accounts/{AccountSid}/Applications.json
Content-Type: application/x-www-form-urlencoded
FriendlyName=My%20App&VoiceUrl=https://example.com/voice
```
#### Delete Application
```bash
DELETE /twilio/2010-04-01/Accounts/{AccountSid}/Applications/{ApplicationSid}.json
```
### Queues
#### List Queues
```bash
GET /twilio/2010-04-01/Accounts/{AccountSid}/Queues.json
```
#### Create Queue
```bash
POST /twilio/2010-04-01/Accounts/{AccountSid}/Queues.json
Content-Type: application/x-www-form-urlencoded
FriendlyName=Support%20Queue&MaxSize=100
```
### Usage Records
#### List Usage Records
```bash
GET /twilio/2010-04-01/Accounts/{AccountSid}/Usage/Records.json
```
## Pagination
Uses page-based pagination:
```bash
GET /twilio/2010-04-01/Accounts/{AccountSid}/Messages.json?PageSize=50&Page=0
```
**Parameters:**
- `PageSize` - Results per page (default: 50)
- `Page` - Page number (0-indexed)
Response includes `next_page_uri` for fetching next page.
## Notes
- All endpoints require `/2010-04-01/` API version prefix
- Request bodies use `application/x-www-form-urlencoded` (not JSON)
- Phone numbers must be in E.164 format (+15551234567)
- SID prefixes: AC (account), SM/MM (messages), CA (calls), PN (phone numbers), AP (applications), QU (queues)
- POST is used for both creating and updating resources
- DELETE returns 204 No Content on success
## Resources
- [Twilio API Overview](https://www.twilio.com/docs/usage/api)
- [Messages API](https://www.twilio.com/docs/messaging/api/message-resource)
- [Calls API](https://www.twilio.com/docs/voice/api/call-resource)

View File

@@ -0,0 +1,186 @@
# Typeform Routing Reference
**App name:** `typeform`
**Base URL proxied:** `api.typeform.com`
## API Path Pattern
```
/typeform/{endpoint}
```
## Common Endpoints
### User
#### Get Current User
```bash
GET /typeform/me
```
### Forms
#### List Forms
```bash
GET /typeform/forms?page_size=10
```
#### Get Form
```bash
GET /typeform/forms/{formId}
```
#### Create Form
```bash
POST /typeform/forms
Content-Type: application/json
{
"title": "Customer Survey",
"fields": [
{
"type": "short_text",
"title": "What is your name?"
},
{
"type": "email",
"title": "What is your email?"
}
]
}
```
#### Update Form (Full Replace)
```bash
PUT /typeform/forms/{formId}
Content-Type: application/json
{
"title": "Updated Survey Title",
"fields": [...]
}
```
#### Update Form (Partial - PATCH)
```bash
PATCH /typeform/forms/{formId}
Content-Type: application/json
[
{"op": "replace", "path": "/title", "value": "New Title"}
]
```
#### Delete Form
```bash
DELETE /typeform/forms/{formId}
```
### Responses
#### List Responses
```bash
GET /typeform/forms/{formId}/responses?page_size=25
```
With filters:
```bash
GET /typeform/forms/{formId}/responses?since=2024-01-01T00:00:00Z&until=2024-12-31T23:59:59Z
```
Completed only:
```bash
GET /typeform/forms/{formId}/responses?completed=true
```
#### Delete Response
```bash
DELETE /typeform/forms/{formId}/responses?included_response_ids={responseId}
```
### Insights
#### Get Form Insights
```bash
GET /typeform/insights/{formId}/summary
```
### Workspaces
#### List Workspaces
```bash
GET /typeform/workspaces
```
#### Get Workspace
```bash
GET /typeform/workspaces/{workspaceId}
```
### Themes
#### List Themes
```bash
GET /typeform/themes
```
### Images
#### List Images
```bash
GET /typeform/images
```
## Field Types
- `short_text` - Single line text
- `long_text` - Multi-line text
- `email` - Email address
- `number` - Numeric input
- `rating` - Star rating
- `opinion_scale` - 0-10 scale
- `multiple_choice` - Single or multiple selection
- `yes_no` - Boolean
- `date` - Date picker
- `file_upload` - File attachment
- `dropdown` - Dropdown selection
## Notes
- Form IDs are alphanumeric strings (e.g., `JiLEvIgv`)
- Response pagination uses `before` token for cursor-based pagination
- Timestamps are in ISO 8601 format (e.g., `2026-01-01T00:00:00Z`)
- Responses include `answers` array with field references
- DELETE operations return HTTP 204 (no content) on success
- PATCH uses JSON Patch format (array of operations with `op`, `path`, `value`)
## Resources
- [API Overview](https://www.typeform.com/developers/get-started)
- [List Forms](https://www.typeform.com/developers/create/reference/retrieve-forms)
- [Get Form](https://www.typeform.com/developers/create/reference/retrieve-form)
- [Create Form](https://www.typeform.com/developers/create/reference/create-form)
- [Update Form](https://www.typeform.com/developers/create/reference/update-form)
- [Update Form Patch](https://www.typeform.com/developers/create/reference/update-form-patch)
- [Delete Form](https://www.typeform.com/developers/create/reference/delete-form)
- [Get Form Messages](https://www.typeform.com/developers/create/reference/retrieve-custom-form-messages)
- [Update Form Messages](https://www.typeform.com/developers/create/reference/update-custom-messages)
- [List Responses](https://www.typeform.com/developers/responses/reference/retrieve-responses)
- [Delete Responses](https://www.typeform.com/developers/responses/reference/delete-responses)
- [List Workspaces](https://www.typeform.com/developers/create/reference/retrieve-workspaces)
- [Get Workspace](https://www.typeform.com/developers/create/reference/retrieve-workspace)
- [Create Workspace](https://www.typeform.com/developers/create/reference/create-workspace)
- [Update Workspace](https://www.typeform.com/developers/create/reference/update-workspace)
- [Delete Workspace](https://www.typeform.com/developers/create/reference/delete-workspace)
- [List Themes](https://www.typeform.com/developers/create/reference/retrieve-themes)
- [Get Theme](https://www.typeform.com/developers/create/reference/retrieve-theme)
- [Create Theme](https://www.typeform.com/developers/create/reference/create-theme)
- [Update Theme](https://www.typeform.com/developers/create/reference/update-theme-partial-update)
- [Delete Theme](https://www.typeform.com/developers/create/reference/delete-theme)
- [Get Image](https://www.typeform.com/developers/create/reference/retrieve-image)
- [Get Image By Size](https://www.typeform.com/developers/create/reference/retrieve-image-by-size)
- [Create Image](https://www.typeform.com/developers/create/reference/create-image)
- [Delete Image](https://www.typeform.com/developers/create/reference/delete-image)
- [Create Or Update Webhook](https://www.typeform.com/developers/webhooks/reference/create-or-update-webhook)
- [Get Webhook](https://www.typeform.com/developers/webhooks/reference/retrieve-single-webhook)
- [Delete Webhook](https://www.typeform.com/developers/webhooks/reference/delete-webhook)

View File

@@ -0,0 +1,123 @@
# Vimeo Routing Reference
**App name:** `vimeo`
**Base URL proxied:** `api.vimeo.com`
## API Path Pattern
```
/vimeo/{resource}
```
## Common Endpoints
### User
```bash
GET /vimeo/me
GET /vimeo/users/{user_id}
GET /vimeo/me/feed
```
### Videos
```bash
# List user videos
GET /vimeo/me/videos
# Search videos
GET /vimeo/videos?query=nature
# Get video
GET /vimeo/videos/{video_id}
# Update video
PATCH /vimeo/videos/{video_id}
# Delete video
DELETE /vimeo/videos/{video_id}
```
### Folders (Projects)
```bash
GET /vimeo/me/folders
POST /vimeo/me/folders
PATCH /vimeo/me/projects/{project_id}
DELETE /vimeo/me/projects/{project_id}
# Folder videos
GET /vimeo/me/projects/{project_id}/videos
PUT /vimeo/me/projects/{project_id}/videos/{video_id}
DELETE /vimeo/me/projects/{project_id}/videos/{video_id}
```
### Albums (Showcases)
```bash
GET /vimeo/me/albums
POST /vimeo/me/albums
PATCH /vimeo/me/albums/{album_id}
DELETE /vimeo/me/albums/{album_id}
# Album videos
GET /vimeo/me/albums/{album_id}/videos
PUT /vimeo/me/albums/{album_id}/videos/{video_id}
DELETE /vimeo/me/albums/{album_id}/videos/{video_id}
```
### Comments
```bash
GET /vimeo/videos/{video_id}/comments
POST /vimeo/videos/{video_id}/comments
DELETE /vimeo/videos/{video_id}/comments/{comment_id}
```
### Likes
```bash
GET /vimeo/me/likes
PUT /vimeo/me/likes/{video_id}
DELETE /vimeo/me/likes/{video_id}
```
### Watch Later
```bash
GET /vimeo/me/watchlater
PUT /vimeo/me/watchlater/{video_id}
DELETE /vimeo/me/watchlater/{video_id}
```
### Following
```bash
GET /vimeo/me/followers
GET /vimeo/me/following
PUT /vimeo/me/following/{user_id}
DELETE /vimeo/me/following/{user_id}
```
### Channels and Categories
```bash
GET /vimeo/channels
GET /vimeo/channels/{channel_id}
GET /vimeo/categories
GET /vimeo/categories/{category}/videos
```
## Notes
- Video and user IDs are numeric
- Folders are called "projects" in API paths
- Albums are "Showcases" in the Vimeo UI
- DELETE and PUT operations return 204 No Content
- Video uploads require TUS protocol
- Page-based pagination with `page` and `per_page` parameters
## Resources
- [Vimeo API Reference](https://developer.vimeo.com/api/reference)
- [Vimeo Developer Portal](https://developer.vimeo.com)

View File

@@ -0,0 +1,212 @@
# WhatsApp Business Routing Reference
**App name:** `whatsapp-business`
**Base URL proxied:** `graph.facebook.com`
## API Path Pattern
```
/whatsapp-business/v21.0/{resource}
```
## Common Endpoints
### Send Text Message
```bash
POST /whatsapp-business/v21.0/{phone_number_id}/messages
Content-Type: application/json
{
"messaging_product": "whatsapp",
"to": "1234567890",
"type": "text",
"text": {"body": "Hello from WhatsApp!"}
}
```
### Send Template Message
```bash
POST /whatsapp-business/v21.0/{phone_number_id}/messages
Content-Type: application/json
{
"messaging_product": "whatsapp",
"to": "1234567890",
"type": "template",
"template": {
"name": "hello_world",
"language": {"code": "en_US"},
"components": [
{
"type": "body",
"parameters": [{"type": "text", "text": "John"}]
}
]
}
}
```
### Send Image Message
```bash
POST /whatsapp-business/v21.0/{phone_number_id}/messages
Content-Type: application/json
{
"messaging_product": "whatsapp",
"to": "1234567890",
"type": "image",
"image": {
"link": "https://example.com/image.jpg",
"caption": "Check out this image!"
}
}
```
### Send Document Message
```bash
POST /whatsapp-business/v21.0/{phone_number_id}/messages
Content-Type: application/json
{
"messaging_product": "whatsapp",
"to": "1234567890",
"type": "document",
"document": {
"link": "https://example.com/document.pdf",
"filename": "report.pdf"
}
}
```
### Send Interactive Button Message
```bash
POST /whatsapp-business/v21.0/{phone_number_id}/messages
Content-Type: application/json
{
"messaging_product": "whatsapp",
"to": "1234567890",
"type": "interactive",
"interactive": {
"type": "button",
"body": {"text": "Would you like to proceed?"},
"action": {
"buttons": [
{"type": "reply", "reply": {"id": "yes", "title": "Yes"}},
{"type": "reply", "reply": {"id": "no", "title": "No"}}
]
}
}
}
```
### Send Interactive List Message
```bash
POST /whatsapp-business/v21.0/{phone_number_id}/messages
Content-Type: application/json
{
"messaging_product": "whatsapp",
"to": "1234567890",
"type": "interactive",
"interactive": {
"type": "list",
"body": {"text": "Choose from the list below"},
"action": {
"button": "View Options",
"sections": [
{
"title": "Products",
"rows": [
{"id": "prod1", "title": "Product 1"},
{"id": "prod2", "title": "Product 2"}
]
}
]
}
}
}
```
### Mark Message as Read
```bash
POST /whatsapp-business/v21.0/{phone_number_id}/messages
Content-Type: application/json
{
"messaging_product": "whatsapp",
"status": "read",
"message_id": "wamid.xxxxx"
}
```
### Upload Media
```bash
POST /whatsapp-business/v21.0/{phone_number_id}/media
Content-Type: multipart/form-data
file=@/path/to/file.jpg
type=image/jpeg
messaging_product=whatsapp
```
### Get Media URL
```bash
GET /whatsapp-business/v21.0/{media_id}
```
### List Message Templates
```bash
GET /whatsapp-business/v21.0/{whatsapp_business_account_id}/message_templates
```
### Create Message Template
```bash
POST /whatsapp-business/v21.0/{whatsapp_business_account_id}/message_templates
Content-Type: application/json
{
"name": "order_confirmation",
"language": "en_US",
"category": "UTILITY",
"components": [
{"type": "BODY", "text": "Hi {{1}}, your order #{{2}} has been confirmed!"}
]
}
```
### Get Business Profile
```bash
GET /whatsapp-business/v21.0/{phone_number_id}/whatsapp_business_profile?fields=about,address,description,email,websites
```
### Update Business Profile
```bash
POST /whatsapp-business/v21.0/{phone_number_id}/whatsapp_business_profile
Content-Type: application/json
{
"messaging_product": "whatsapp",
"about": "Your trusted partner",
"description": "We provide excellent services"
}
```
## Notes
- Phone numbers must be in international format without `+` (e.g., `1234567890`)
- `messaging_product` must always be set to `whatsapp`
- Template messages are required for initiating conversations (24-hour messaging window)
- Media files must be publicly accessible URLs or uploaded via the Media API
- Interactive messages support up to 3 buttons or 10 list items
- Template categories: `AUTHENTICATION`, `MARKETING`, `UTILITY`
## Resources
- [WhatsApp Business API Overview](https://developers.facebook.com/docs/whatsapp/cloud-api/overview)
- [Send Messages](https://developers.facebook.com/docs/whatsapp/cloud-api/guides/send-messages)
- [Message Templates](https://developers.facebook.com/docs/whatsapp/cloud-api/guides/send-message-templates)
- [Media](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media)
- [Business Profiles](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/business-profiles)
- [Webhooks](https://developers.facebook.com/docs/whatsapp/cloud-api/webhooks)
- [Error Codes](https://developers.facebook.com/docs/whatsapp/cloud-api/support/error-codes)

View File

@@ -0,0 +1,277 @@
# WooCommerce Routing Reference
**App name:** `woocommerce`
**Base URL proxied:** `{store-url}/wp-json/wc/v3`
## API Path Pattern
```
/woocommerce/wp-json/wc/v3/{endpoint}
```
## Common Endpoints
### Products
#### List Products
```bash
GET /woocommerce/wp-json/wc/v3/products?per_page=20&status=publish
```
#### Get Product
```bash
GET /woocommerce/wp-json/wc/v3/products/{id}
```
#### Create Product
```bash
POST /woocommerce/wp-json/wc/v3/products
Content-Type: application/json
{"name": "Premium Widget", "type": "simple", "regular_price": "19.99", "sku": "WDG-001"}
```
#### Update Product
```bash
PUT /woocommerce/wp-json/wc/v3/products/{id}
Content-Type: application/json
{"regular_price": "24.99", "sale_price": "19.99"}
```
#### Delete Product
```bash
DELETE /woocommerce/wp-json/wc/v3/products/{id}?force=true
```
### Product Variations
#### List Variations
```bash
GET /woocommerce/wp-json/wc/v3/products/{product_id}/variations
```
#### Create Variation
```bash
POST /woocommerce/wp-json/wc/v3/products/{product_id}/variations
Content-Type: application/json
{"regular_price": "29.99", "sku": "TSH-001-RED-M", "attributes": [{"id": 1, "option": "Red"}]}
```
### Product Categories
#### List Categories
```bash
GET /woocommerce/wp-json/wc/v3/products/categories
```
#### Create Category
```bash
POST /woocommerce/wp-json/wc/v3/products/categories
Content-Type: application/json
{"name": "Electronics", "description": "Electronic products"}
```
### Orders
#### List Orders
```bash
GET /woocommerce/wp-json/wc/v3/orders?status=processing&per_page=50
```
#### Get Order
```bash
GET /woocommerce/wp-json/wc/v3/orders/{id}
```
#### Create Order
```bash
POST /woocommerce/wp-json/wc/v3/orders
Content-Type: application/json
{"payment_method": "stripe", "set_paid": true, "billing": {"first_name": "John", "last_name": "Doe", "email": "john@example.com"}, "line_items": [{"product_id": 123, "quantity": 2}]}
```
#### Update Order Status
```bash
PUT /woocommerce/wp-json/wc/v3/orders/{id}
Content-Type: application/json
{"status": "completed"}
```
### Order Notes
#### List Order Notes
```bash
GET /woocommerce/wp-json/wc/v3/orders/{order_id}/notes
```
#### Create Order Note
```bash
POST /woocommerce/wp-json/wc/v3/orders/{order_id}/notes
Content-Type: application/json
{"note": "Order shipped via FedEx", "customer_note": true}
```
### Order Refunds
#### Create Refund
```bash
POST /woocommerce/wp-json/wc/v3/orders/{order_id}/refunds
Content-Type: application/json
{"amount": "25.00", "reason": "Product damaged", "api_refund": true}
```
### Customers
#### List Customers
```bash
GET /woocommerce/wp-json/wc/v3/customers?per_page=25
```
#### Get Customer
```bash
GET /woocommerce/wp-json/wc/v3/customers/{id}
```
#### Create Customer
```bash
POST /woocommerce/wp-json/wc/v3/customers
Content-Type: application/json
{"email": "jane@example.com", "first_name": "Jane", "last_name": "Smith", "username": "janesmith"}
```
### Coupons
#### List Coupons
```bash
GET /woocommerce/wp-json/wc/v3/coupons
```
#### Create Coupon
```bash
POST /woocommerce/wp-json/wc/v3/coupons
Content-Type: application/json
{"code": "SUMMER2024", "discount_type": "percent", "amount": "15", "usage_limit": 100}
```
### Taxes
#### List Tax Rates
```bash
GET /woocommerce/wp-json/wc/v3/taxes
```
#### Create Tax Rate
```bash
POST /woocommerce/wp-json/wc/v3/taxes
Content-Type: application/json
{"country": "US", "state": "CA", "rate": "7.25", "name": "CA State Tax"}
```
### Shipping
#### List Shipping Zones
```bash
GET /woocommerce/wp-json/wc/v3/shipping/zones
```
#### List Shipping Zone Methods
```bash
GET /woocommerce/wp-json/wc/v3/shipping/zones/{zone_id}/methods
```
### Webhooks
#### List Webhooks
```bash
GET /woocommerce/wp-json/wc/v3/webhooks
```
#### Create Webhook
```bash
POST /woocommerce/wp-json/wc/v3/webhooks
Content-Type: application/json
{"name": "Order Created", "topic": "order.created", "delivery_url": "https://example.com/webhook", "status": "active"}
```
### Reports
#### Sales Report
```bash
GET /woocommerce/wp-json/wc/v3/reports/sales?period=month
```
#### Top Sellers
```bash
GET /woocommerce/wp-json/wc/v3/reports/top_sellers
```
#### Orders Totals
```bash
GET /woocommerce/wp-json/wc/v3/reports/orders/totals
```
### Settings
#### List Settings Groups
```bash
GET /woocommerce/wp-json/wc/v3/settings
```
#### Get Settings in Group
```bash
GET /woocommerce/wp-json/wc/v3/settings/{group}
```
### System Status
#### Get System Status
```bash
GET /woocommerce/wp-json/wc/v3/system_status
```
## Notes
- All monetary amounts are returned as strings with two decimal places
- Dates are in ISO8601 format: `YYYY-MM-DDTHH:MM:SS`
- Resource IDs are integers
- Pagination uses `page` and `per_page` parameters (max 100 per page)
- Response headers include `X-WP-Total` and `X-WP-TotalPages`
- Order statuses: `pending`, `processing`, `on-hold`, `completed`, `cancelled`, `refunded`, `failed`
- Discount types: `percent`, `fixed_cart`, `fixed_product`
- Use `force=true` query parameter to permanently delete (otherwise moves to trash)
- Batch operations supported via `POST /{resource}/batch` with `create`, `update`, `delete` arrays
## Resources
- [WooCommerce REST API Documentation](https://woocommerce.github.io/woocommerce-rest-api-docs/)
- [Products](https://woocommerce.github.io/woocommerce-rest-api-docs/#products)
- [Product Variations](https://woocommerce.github.io/woocommerce-rest-api-docs/#product-variations)
- [Product Attributes](https://woocommerce.github.io/woocommerce-rest-api-docs/#product-attributes)
- [Product Categories](https://woocommerce.github.io/woocommerce-rest-api-docs/#product-categories)
- [Product Tags](https://woocommerce.github.io/woocommerce-rest-api-docs/#product-tags)
- [Product Reviews](https://woocommerce.github.io/woocommerce-rest-api-docs/#product-reviews)
- [Orders](https://woocommerce.github.io/woocommerce-rest-api-docs/#orders)
- [Order Notes](https://woocommerce.github.io/woocommerce-rest-api-docs/#order-notes)
- [Refunds](https://woocommerce.github.io/woocommerce-rest-api-docs/#refunds)
- [Customers](https://woocommerce.github.io/woocommerce-rest-api-docs/#customers)
- [Coupons](https://woocommerce.github.io/woocommerce-rest-api-docs/#coupons)
- [Tax Rates](https://woocommerce.github.io/woocommerce-rest-api-docs/#tax-rates)
- [Tax Classes](https://woocommerce.github.io/woocommerce-rest-api-docs/#tax-classes)
- [Shipping Zones](https://woocommerce.github.io/woocommerce-rest-api-docs/#shipping-zones)
- [Shipping Methods](https://woocommerce.github.io/woocommerce-rest-api-docs/#shipping-methods)
- [Payment Gateways](https://woocommerce.github.io/woocommerce-rest-api-docs/#payment-gateways)
- [Settings](https://woocommerce.github.io/woocommerce-rest-api-docs/#settings)
- [Webhooks](https://woocommerce.github.io/woocommerce-rest-api-docs/#webhooks)
- [Reports](https://woocommerce.github.io/woocommerce-rest-api-docs/#reports)
- [System Status](https://woocommerce.github.io/woocommerce-rest-api-docs/#system-status)

View File

@@ -0,0 +1,168 @@
# WordPress.com Routing Reference
**App name:** `wordpress`
**Base URL proxied:** `public-api.wordpress.com`
## API Path Pattern
```
/wordpress/rest/v1.1/{endpoint}
```
**Important:** WordPress.com uses REST API v1.1. Site-specific endpoints use `/sites/{site_id_or_domain}/{resource}`.
## Site Identifiers
Sites can be identified by:
- Numeric site ID (e.g., `252505333`)
- Domain name (e.g., `myblog.wordpress.com`)
## Common Endpoints
### Sites
#### Get Site Information
```bash
GET /wordpress/rest/v1.1/sites/{site}
```
### Posts
#### List Posts
```bash
GET /wordpress/rest/v1.1/sites/{site}/posts
```
Query parameters: `number`, `offset`, `page_handle`, `status`, `search`, `category`, `tag`, `author`
#### Get Post
```bash
GET /wordpress/rest/v1.1/sites/{site}/posts/{post_id}
```
#### Create Post
```bash
POST /wordpress/rest/v1.1/sites/{site}/posts/new
Content-Type: application/json
{
"title": "Post Title",
"content": "<p>Post content...</p>",
"status": "draft",
"categories": "news",
"tags": "featured"
}
```
#### Update Post
```bash
POST /wordpress/rest/v1.1/sites/{site}/posts/{post_id}
Content-Type: application/json
{
"title": "Updated Title",
"content": "<p>Updated content...</p>"
}
```
#### Delete Post
```bash
POST /wordpress/rest/v1.1/sites/{site}/posts/{post_id}/delete
```
### Pages
#### List Pages
```bash
GET /wordpress/rest/v1.1/sites/{site}/posts?type=page
```
#### Create Page
```bash
POST /wordpress/rest/v1.1/sites/{site}/posts/new?type=page
Content-Type: application/json
{
"title": "Page Title",
"content": "<p>Page content...</p>",
"status": "publish"
}
```
### Post Likes
#### Get Post Likes
```bash
GET /wordpress/rest/v1.1/sites/{site}/posts/{post_id}/likes
```
#### Like Post
```bash
POST /wordpress/rest/v1.1/sites/{site}/posts/{post_id}/likes/new
```
### Users
#### List Site Users
```bash
GET /wordpress/rest/v1.1/sites/{site}/users
```
### User Settings
#### Get My Settings
```bash
GET /wordpress/rest/v1.1/me/settings
```
#### Update My Settings
```bash
POST /wordpress/rest/v1.1/me/settings/
Content-Type: application/json
{
"enable_translator": false
}
```
### Post Types
#### List Post Types
```bash
GET /wordpress/rest/v1.1/sites/{site}/post-types
```
### Post Counts
#### Get Post Counts
```bash
GET /wordpress/rest/v1.1/sites/{site}/post-counts/{post_type}
```
## Pagination
WordPress.com uses cursor-based pagination with `page_handle`:
```bash
GET /wordpress/rest/v1.1/sites/{site}/posts?number=20
# Response includes "meta": {"next_page": "..."}
GET /wordpress/rest/v1.1/sites/{site}/posts?number=20&page_handle={next_page}
```
Alternatively, use `offset` for simple pagination.
## Notes
- API version is v1.1 (not v2)
- POST is used for updates (not PUT/PATCH)
- POST to `/delete` endpoint is used for deletes (not HTTP DELETE)
- Categories and tags are created automatically when referenced in posts
- Content is HTML-formatted
- Date/time values are in ISO 8601 format
## Resources
- [WordPress.com REST API Overview](https://developer.wordpress.com/docs/api/)
- [Getting Started Guide](https://developer.wordpress.com/docs/api/getting-started/)
- [API Reference](https://developer.wordpress.com/docs/api/rest-api-reference/)

View File

@@ -0,0 +1,203 @@
# Xero Routing Reference
**App name:** `xero`
**Base URL proxied:** `api.xero.com`
## Automatic Tenant ID Injection
The router automatically injects the `Xero-Tenant-Id` header from your connection config. You do not need to provide it manually.
## API Path Pattern
```
/xero/api.xro/2.0/{endpoint}
```
## Common Endpoints
### Contacts
#### List Contacts
```bash
GET /xero/api.xro/2.0/Contacts
```
#### Get Contact
```bash
GET /xero/api.xro/2.0/Contacts/{contactId}
```
#### Create Contact
```bash
POST /xero/api.xro/2.0/Contacts
Content-Type: application/json
{
"Contacts": [{
"Name": "John Doe",
"EmailAddress": "john@example.com",
"Phones": [{"PhoneType": "DEFAULT", "PhoneNumber": "555-1234"}]
}]
}
```
### Invoices
#### List Invoices
```bash
GET /xero/api.xro/2.0/Invoices
```
#### Get Invoice
```bash
GET /xero/api.xro/2.0/Invoices/{invoiceId}
```
#### Create Invoice
```bash
POST /xero/api.xro/2.0/Invoices
Content-Type: application/json
{
"Invoices": [{
"Type": "ACCREC",
"Contact": {"ContactID": "xxx"},
"LineItems": [{
"Description": "Service",
"Quantity": 1,
"UnitAmount": 100.00,
"AccountCode": "200"
}]
}]
}
```
### Accounts
#### List Accounts
```bash
GET /xero/api.xro/2.0/Accounts
```
### Items
#### List Items
```bash
GET /xero/api.xro/2.0/Items
```
### Payments
#### List Payments
```bash
GET /xero/api.xro/2.0/Payments
```
### Bank Transactions
#### List Bank Transactions
```bash
GET /xero/api.xro/2.0/BankTransactions
```
### Reports
#### Profit and Loss
```bash
GET /xero/api.xro/2.0/Reports/ProfitAndLoss?fromDate=2024-01-01&toDate=2024-12-31
```
#### Balance Sheet
```bash
GET /xero/api.xro/2.0/Reports/BalanceSheet?date=2024-12-31
```
#### Trial Balance
```bash
GET /xero/api.xro/2.0/Reports/TrialBalance?date=2024-12-31
```
### Currencies
#### List Currencies
```bash
GET /xero/api.xro/2.0/Currencies
```
### Tax Rates
#### List Tax Rates
```bash
GET /xero/api.xro/2.0/TaxRates
```
### Credit Notes
#### List Credit Notes
```bash
GET /xero/api.xro/2.0/CreditNotes
```
### Purchase Orders
#### List Purchase Orders
```bash
GET /xero/api.xro/2.0/PurchaseOrders
```
### Organisation
#### Get Organisation
```bash
GET /xero/api.xro/2.0/Organisation
```
## Invoice Types
- `ACCREC` - Accounts Receivable (sales invoice)
- `ACCPAY` - Accounts Payable (bill)
## Notes
- `Xero-Tenant-Id` header is automatically injected by the router
- Dates are in `YYYY-MM-DD` format
- Multiple records can be created in a single request using arrays
- Updates use POST method with the record ID in the URL
- Draft invoices can be deleted by setting `Status` to `DELETED`
- Use `where` query parameter for filtering (e.g., `where=Status=="VOIDED"`)
## Resources
- [API Overview](https://developer.xero.com/documentation/api/accounting/overview)
- [List Contacts](https://developer.xero.com/documentation/api/accounting/contacts#get-contacts)
- [Get Contact](https://developer.xero.com/documentation/api/accounting/contacts#get-contacts)
- [Create Contact](https://developer.xero.com/documentation/api/accounting/contacts#put-contacts)
- [Update Contact](https://developer.xero.com/documentation/api/accounting/contacts#post-contacts)
- [List Invoices](https://developer.xero.com/documentation/api/accounting/invoices#get-invoices)
- [Get Invoice](https://developer.xero.com/documentation/api/accounting/invoices#get-invoices)
- [Create Invoice](https://developer.xero.com/documentation/api/accounting/invoices#put-invoices)
- [Update Invoice](https://developer.xero.com/documentation/api/accounting/invoices#post-invoices)
- [Email Invoice](https://developer.xero.com/documentation/api/accounting/invoices#emailing-an-invoice)
- [List Accounts](https://developer.xero.com/documentation/api/accounting/accounts#get-accounts)
- [Get Account](https://developer.xero.com/documentation/api/accounting/accounts#get-accounts)
- [Create Account](https://developer.xero.com/documentation/api/accounting/accounts#put-accounts)
- [Update Account](https://developer.xero.com/documentation/api/accounting/accounts#post-accounts)
- [Delete Account](https://developer.xero.com/documentation/api/accounting/accounts#delete-accounts)
- [List Items](https://developer.xero.com/documentation/api/accounting/items#get-items)
- [Get Item](https://developer.xero.com/documentation/api/accounting/items#get-items)
- [Create Item](https://developer.xero.com/documentation/api/accounting/items#put-items)
- [Update Item](https://developer.xero.com/documentation/api/accounting/items#post-items)
- [Delete Item](https://developer.xero.com/documentation/api/accounting/items#delete-items)
- [List Payments](https://developer.xero.com/documentation/api/accounting/payments#get-payments)
- [Get Payment](https://developer.xero.com/documentation/api/accounting/payments#get-payments)
- [Create Payment](https://developer.xero.com/documentation/api/accounting/payments#put-payments)
- [Update Payment](https://developer.xero.com/documentation/api/accounting/payments#post-payments)
- [List Bank Transactions](https://developer.xero.com/documentation/api/accounting/banktransactions#get-banktransactions)
- [Get Bank Transaction](https://developer.xero.com/documentation/api/accounting/banktransactions#get-banktransactions)
- [Create Bank Transaction](https://developer.xero.com/documentation/api/accounting/banktransactions#put-banktransactions)
- [Update Bank Transaction](https://developer.xero.com/documentation/api/accounting/banktransactions#post-banktransactions)
- [Profit and Loss Report](https://developer.xero.com/documentation/api/accounting/reports#profitandloss)
- [Balance Sheet Report](https://developer.xero.com/documentation/api/accounting/reports#balancesheet)
- [Trial Balance Report](https://developer.xero.com/documentation/api/accounting/reports#trialbalance)
- [Bank Summary Report](https://developer.xero.com/documentation/api/accounting/reports#banksummary)
- [Get Organisation](https://developer.xero.com/documentation/api/accounting/organisation#get-organisation)

View File

@@ -0,0 +1,167 @@
# YouTube Routing Reference
**App name:** `youtube`
**Base URL proxied:** `www.googleapis.com`
## API Path Pattern
```
/youtube/youtube/v3/{resource}
```
## Common Endpoints
### Search Videos
```bash
GET /youtube/youtube/v3/search?part=snippet&q=coding+tutorial&type=video&maxResults=10
```
Query parameters:
- `part` - Required: `snippet`
- `q` - Search query
- `type` - Filter: `video`, `channel`, `playlist`
- `maxResults` - Results per page (1-50)
- `order` - Sort: `date`, `rating`, `relevance`, `title`, `viewCount`
- `videoDuration` - `short` (<4min), `medium` (4-20min), `long` (>20min)
### Get Video Details
```bash
GET /youtube/youtube/v3/videos?part=snippet,statistics,contentDetails&id={videoId}
```
Parts available: `snippet`, `statistics`, `contentDetails`, `status`, `player`
### Get Trending Videos
```bash
GET /youtube/youtube/v3/videos?part=snippet,statistics&chart=mostPopular&regionCode=US&maxResults=10
```
### Rate Video
```bash
POST /youtube/youtube/v3/videos/rate?id={videoId}&rating=like
```
Rating values: `like`, `dislike`, `none`
### Get My Channel
```bash
GET /youtube/youtube/v3/channels?part=snippet,statistics,contentDetails&mine=true
```
### Get Channel Details
```bash
GET /youtube/youtube/v3/channels?part=snippet,statistics&id={channelId}
```
### List My Playlists
```bash
GET /youtube/youtube/v3/playlists?part=snippet,contentDetails&mine=true&maxResults=25
```
### Create Playlist
```bash
POST /youtube/youtube/v3/playlists?part=snippet,status
Content-Type: application/json
{
"snippet": {
"title": "My New Playlist",
"description": "A collection of videos"
},
"status": {
"privacyStatus": "private"
}
}
```
Privacy values: `public`, `private`, `unlisted`
### Delete Playlist
```bash
DELETE /youtube/youtube/v3/playlists?id={playlistId}
```
### List Playlist Items
```bash
GET /youtube/youtube/v3/playlistItems?part=snippet,contentDetails&playlistId={playlistId}&maxResults=50
```
### Add Video to Playlist
```bash
POST /youtube/youtube/v3/playlistItems?part=snippet
Content-Type: application/json
{
"snippet": {
"playlistId": "PLxyz123",
"resourceId": {
"kind": "youtube#video",
"videoId": "abc123xyz"
},
"position": 0
}
}
```
### List My Subscriptions
```bash
GET /youtube/youtube/v3/subscriptions?part=snippet&mine=true&maxResults=50
```
### Subscribe to Channel
```bash
POST /youtube/youtube/v3/subscriptions?part=snippet
Content-Type: application/json
{
"snippet": {
"resourceId": {
"kind": "youtube#channel",
"channelId": "UCxyz123"
}
}
}
```
### List Video Comments
```bash
GET /youtube/youtube/v3/commentThreads?part=snippet,replies&videoId={videoId}&maxResults=100
```
### Add Comment to Video
```bash
POST /youtube/youtube/v3/commentThreads?part=snippet
Content-Type: application/json
{
"snippet": {
"videoId": "abc123xyz",
"topLevelComment": {
"snippet": {
"textOriginal": "Great video!"
}
}
}
}
```
## Notes
- Video IDs are 11 characters (e.g., `dQw4w9WgXcQ`)
- Channel IDs start with `UC` (e.g., `UCxyz123`)
- Playlist IDs start with `PL` (user) or `UU` (uploads)
- Use `pageToken` for pagination through large result sets
- The `part` parameter is required and determines what data is returned
- Quota costs vary by endpoint - search is expensive (100 units), reads are cheap (1 unit)
## Resources
- [YouTube Data API Overview](https://developers.google.com/youtube/v3)
- [Search](https://developers.google.com/youtube/v3/docs/search/list)
- [Videos](https://developers.google.com/youtube/v3/docs/videos)
- [Channels](https://developers.google.com/youtube/v3/docs/channels)
- [Playlists](https://developers.google.com/youtube/v3/docs/playlists)
- [PlaylistItems](https://developers.google.com/youtube/v3/docs/playlistItems)
- [Subscriptions](https://developers.google.com/youtube/v3/docs/subscriptions)
- [Comments](https://developers.google.com/youtube/v3/docs/comments)
- [Quota Calculator](https://developers.google.com/youtube/v3/determine_quota_cost)

View File

@@ -0,0 +1,104 @@
# Zoho Bigin Routing Reference
**App name:** `zoho-bigin`
**Base URL proxied:** `www.zohoapis.com`
## API Path Pattern
```
/zoho-bigin/bigin/v2/{resource}
```
## Common Endpoints
### List Contacts
```bash
GET /zoho-bigin/bigin/v2/Contacts?fields=First_Name,Last_Name,Email
```
### Get Contact
```bash
GET /zoho-bigin/bigin/v2/Contacts/{id}
```
### Create Contact
```bash
POST /zoho-bigin/bigin/v2/Contacts
Content-Type: application/json
{
"data": [{
"Last_Name": "Smith",
"First_Name": "John",
"Email": "john@example.com"
}]
}
```
### Update Contact
```bash
PUT /zoho-bigin/bigin/v2/Contacts
Content-Type: application/json
{
"data": [{
"id": "{record_id}",
"Phone": "+1-555-1234"
}]
}
```
### Delete Contact
```bash
DELETE /zoho-bigin/bigin/v2/Contacts?ids={id1},{id2}
```
### Search Contacts
```bash
GET /zoho-bigin/bigin/v2/Contacts/search?email=john@example.com
GET /zoho-bigin/bigin/v2/Contacts/search?criteria=(Last_Name:equals:Smith)
```
### List Companies (Accounts)
```bash
GET /zoho-bigin/bigin/v2/Accounts?fields=Account_Name,Website
```
### Get Users
```bash
GET /zoho-bigin/bigin/v2/users?type=ActiveUsers
```
### Get Modules
```bash
GET /zoho-bigin/bigin/v2/settings/modules
```
## Available Modules
| Module | API Name | Description |
|--------|----------|-------------|
| Contacts | `Contacts` | Individual people |
| Companies | `Accounts` | Organizations/businesses |
| Pipelines | `Pipelines` | Sales opportunities/deals |
| Products | `Products` | Items you sell |
| Tasks | `Tasks` | To-do items |
| Events | `Events` | Calendar appointments |
| Calls | `Calls` | Phone call logs |
| Notes | `Notes` | Notes attached to records |
## Notes
- The `fields` query parameter is **required** for list operations
- Module API names are case-sensitive (e.g., `Contacts`, not `contacts`)
- Companies are accessed via the `Accounts` module
- Sales opportunities are in the `Pipelines` module (not `Deals`)
- Record IDs are numeric strings (e.g., `7255024000000596045`)
- Maximum 200 records per page, 100 per create/update/delete
- Some modules (Tasks, Events, Calls, Notes) require additional OAuth scopes
## Resources
- [Bigin API Overview](https://www.bigin.com/developer/docs/apis/v2/)
- [Bigin REST API Documentation](https://www.bigin.com/developer/docs/apis/)
- [Modules API](https://www.bigin.com/developer/docs/apis/modules-api.html)

View File

@@ -0,0 +1,151 @@
# Zoho Books Routing Reference
**App name:** `zoho-books`
**Base URL proxied:** `www.zohoapis.com`
## API Path Pattern
```
/zoho-books/books/v3/{resource}
```
## Common Endpoints
### Contacts
```bash
# List contacts
GET /zoho-books/books/v3/contacts
# Get contact
GET /zoho-books/books/v3/contacts/{contact_id}
# Create contact
POST /zoho-books/books/v3/contacts
Content-Type: application/json
{
"contact_name": "Customer Name",
"contact_type": "customer"
}
# Update contact
PUT /zoho-books/books/v3/contacts/{contact_id}
# Delete contact
DELETE /zoho-books/books/v3/contacts/{contact_id}
```
### Invoices
```bash
# List invoices
GET /zoho-books/books/v3/invoices
# Get invoice
GET /zoho-books/books/v3/invoices/{invoice_id}
# Create invoice
POST /zoho-books/books/v3/invoices
# Mark as sent
POST /zoho-books/books/v3/invoices/{invoice_id}/status/sent
# Email invoice
POST /zoho-books/books/v3/invoices/{invoice_id}/email
```
### Bills
```bash
# List bills
GET /zoho-books/books/v3/bills
# Create bill
POST /zoho-books/books/v3/bills
# Update bill
PUT /zoho-books/books/v3/bills/{bill_id}
# Delete bill
DELETE /zoho-books/books/v3/bills/{bill_id}
```
### Expenses
```bash
# List expenses
GET /zoho-books/books/v3/expenses
# Create expense
POST /zoho-books/books/v3/expenses
# Update expense
PUT /zoho-books/books/v3/expenses/{expense_id}
# Delete expense
DELETE /zoho-books/books/v3/expenses/{expense_id}
```
### Sales Orders
```bash
GET /zoho-books/books/v3/salesorders
POST /zoho-books/books/v3/salesorders
```
### Purchase Orders
```bash
GET /zoho-books/books/v3/purchaseorders
POST /zoho-books/books/v3/purchaseorders
```
### Credit Notes
```bash
GET /zoho-books/books/v3/creditnotes
```
### Recurring Invoices
```bash
GET /zoho-books/books/v3/recurringinvoices
```
### Recurring Bills
```bash
GET /zoho-books/books/v3/recurringbills
```
## Available Modules
| Module | Endpoint | Description |
|--------|----------|-------------|
| Contacts | `/contacts` | Customers and vendors |
| Invoices | `/invoices` | Sales invoices |
| Bills | `/bills` | Vendor bills |
| Expenses | `/expenses` | Business expenses |
| Sales Orders | `/salesorders` | Sales orders |
| Purchase Orders | `/purchaseorders` | Purchase orders |
| Credit Notes | `/creditnotes` | Customer credit notes |
| Recurring Invoices | `/recurringinvoices` | Recurring invoices |
| Recurring Bills | `/recurringbills` | Recurring bills |
## Notes
- All successful responses have `code: 0`
- Dates should be in `yyyy-mm-dd` format
- Contact types are `customer` or `vendor`
- Some modules (items, chart of accounts, bank accounts, projects) require additional OAuth scopes
- Rate limits: 100 requests/minute per organization
- Pagination uses `page` and `per_page` parameters with `has_more_page` in response
## Resources
- [Zoho Books API v3 Introduction](https://www.zoho.com/books/api/v3/introduction/)
- [Zoho Books Invoices API](https://www.zoho.com/books/api/v3/invoices/)
- [Zoho Books Contacts API](https://www.zoho.com/books/api/v3/contacts/)
- [Zoho Books Bills API](https://www.zoho.com/books/api/v3/bills/)
- [Zoho Books Expenses API](https://www.zoho.com/books/api/v3/expenses/)

View File

@@ -0,0 +1,118 @@
# Zoho Calendar Routing Reference
**App name:** `zoho-calendar`
**Base URL proxied:** `calendar.zoho.com`
## API Path Pattern
```
/zoho-calendar/api/v1/{resource}
```
## Common Endpoints
### Calendars
```bash
# List calendars
GET /zoho-calendar/api/v1/calendars
# Get calendar details
GET /zoho-calendar/api/v1/calendars/{calendar_uid}
# Create calendar
POST /zoho-calendar/api/v1/calendars?calendarData={json}
# Delete calendar
DELETE /zoho-calendar/api/v1/calendars/{calendar_uid}
```
### Events
```bash
# List events (range required, max 31 days)
GET /zoho-calendar/api/v1/calendars/{calendar_uid}/events?range={"start":"yyyyMMdd","end":"yyyyMMdd"}
# Get event details
GET /zoho-calendar/api/v1/calendars/{calendar_uid}/events/{event_uid}
# Create event
POST /zoho-calendar/api/v1/calendars/{calendar_uid}/events?eventdata={json}
# Update event (etag required in eventdata)
PUT /zoho-calendar/api/v1/calendars/{calendar_uid}/events/{event_uid}?eventdata={json}
# Delete event (etag required as HEADER)
DELETE /zoho-calendar/api/v1/calendars/{calendar_uid}/events/{event_uid}
Header: etag: {etag_value}
```
## Event Data Format
### Create/Update Event
```json
{
"title": "Meeting Title",
"dateandtime": {
"timezone": "America/Los_Angeles",
"start": "yyyyMMdd'T'HHmmss'Z'",
"end": "yyyyMMdd'T'HHmmss'Z'"
},
"description": "Event description",
"location": "Meeting room",
"isallday": false,
"attendees": [
{
"email": "user@example.com",
"permission": 1,
"attendance": 1
}
],
"reminders": [
{
"action": "popup",
"minutes": 30
}
],
"rrule": "FREQ=DAILY;COUNT=5"
}
```
### Update Event (etag required)
```json
{
"title": "Updated Title",
"dateandtime": {...},
"etag": 1770368451507
}
```
## Calendar Data Format
```json
{
"name": "Calendar Name",
"color": "#FF5733",
"textcolor": "#FFFFFF",
"description": "Calendar description"
}
```
## Notes
- Event and calendar data is passed as JSON in query parameters (`eventdata`, `calendarData`)
- Date/time format: `yyyyMMdd'T'HHmmss'Z'` (GMT) for timed events, `yyyyMMdd` for all-day
- The `range` parameter for listing events cannot exceed 31 days
- **IMPORTANT:** For delete operations, `etag` must be passed as an HTTP header, not a query parameter
- The `etag` is required for update and delete operations - always get the latest etag before modifying
- Permission levels for attendees: 0 (Guest), 1 (View), 2 (Invite), 3 (Edit)
- Attendance: 0 (Non-participant), 1 (Required), 2 (Optional)
- Reminder actions: `email`, `popup`, `notification`
## Resources
- [Zoho Calendar API Introduction](https://www.zoho.com/calendar/help/api/introduction.html)
- [Zoho Calendar Events API](https://www.zoho.com/calendar/help/api/events-api.html)
- [Zoho Calendar Calendars API](https://www.zoho.com/calendar/help/api/calendars-api.html)

View File

@@ -0,0 +1,112 @@
# Zoho CRM Routing Reference
**App name:** `zoho-crm`
**Base URL proxied:** `www.zohoapis.com`
## API Path Pattern
```
/zoho-crm/crm/v8/{resource}
```
## Common Endpoints
### Records
```bash
# List records (fields required)
GET /zoho-crm/crm/v8/{module_api_name}?fields={field1},{field2}
# Get record
GET /zoho-crm/crm/v8/{module_api_name}/{record_id}
# Create records
POST /zoho-crm/crm/v8/{module_api_name}
Content-Type: application/json
{
"data": [
{
"field_api_name": "value"
}
]
}
# Update records
PUT /zoho-crm/crm/v8/{module_api_name}
Content-Type: application/json
{
"data": [
{
"id": "record_id",
"field_api_name": "updated_value"
}
]
}
# Delete records
DELETE /zoho-crm/crm/v8/{module_api_name}?ids={id1},{id2}
```
### Search
```bash
# Search by criteria
GET /zoho-crm/crm/v8/{module_api_name}/search?criteria=(Last_Name:equals:Smith)
# Search by email
GET /zoho-crm/crm/v8/{module_api_name}/search?email=user@example.com
# Search by phone
GET /zoho-crm/crm/v8/{module_api_name}/search?phone=555-1234
# Global text search
GET /zoho-crm/crm/v8/{module_api_name}/search?word=searchterm
```
## Available Modules
| Module | API Name | Description |
|--------|----------|-------------|
| Leads | `Leads` | Potential customers |
| Contacts | `Contacts` | Individual people |
| Accounts | `Accounts` | Organizations/companies |
| Deals | `Deals` | Sales opportunities |
| Campaigns | `Campaigns` | Marketing campaigns |
| Tasks | `Tasks` | To-do items |
| Calls | `Calls` | Phone call logs |
| Events | `Events` | Calendar appointments |
| Products | `Products` | Items for sale |
## Mandatory Fields
| Module | Required Fields |
|--------|-----------------|
| Leads | `Last_Name` |
| Contacts | `Last_Name` |
| Accounts | `Account_Name` |
| Deals | `Deal_Name`, `Stage` |
| Tasks | `Subject` |
## Search Operators
- Text: `equals`, `not_equal`, `starts_with`, `in`
- Date/Number: `equals`, `not_equal`, `greater_than`, `less_than`, `between`, `in`
- Boolean: `equals`, `not_equal`
## Notes
- The `fields` parameter is **required** for list operations (max 50 fields)
- Module API names are case-sensitive (e.g., `Leads`, not `leads`)
- Maximum 100 records per create/update/delete request
- Maximum 200 records returned per GET request
- Use `page_token` for >2,000 records (expires after 24 hours)
- Some modules require additional OAuth scopes (Tasks, Events, Calls, Products)
- Empty datasets return HTTP 204 (No Content)
## Resources
- [Zoho CRM API v8 Documentation](https://www.zoho.com/crm/developer/docs/api/v8/)
- [Get Records API](https://www.zoho.com/crm/developer/docs/api/v8/get-records.html)
- [Search Records API](https://www.zoho.com/crm/developer/docs/api/v8/search-records.html)

View File

@@ -0,0 +1,214 @@
# Zoho Inventory Routing Reference
**App name:** `zoho-inventory`
**Base URL proxied:** `www.zohoapis.com`
## API Path Pattern
```
/zoho-inventory/inventory/v1/{resource}
```
## Common Endpoints
### Items
```bash
# List items
GET /zoho-inventory/inventory/v1/items
# Get item
GET /zoho-inventory/inventory/v1/items/{item_id}
# Create item
POST /zoho-inventory/inventory/v1/items
Content-Type: application/json
{
"name": "Widget",
"rate": 25.00,
"purchase_rate": 10.00,
"sku": "WDG-001",
"item_type": "inventory",
"product_type": "goods",
"unit": "pcs"
}
# Update item
PUT /zoho-inventory/inventory/v1/items/{item_id}
# Delete item
DELETE /zoho-inventory/inventory/v1/items/{item_id}
# Mark as active/inactive
POST /zoho-inventory/inventory/v1/items/{item_id}/active
POST /zoho-inventory/inventory/v1/items/{item_id}/inactive
```
### Contacts
```bash
# List contacts
GET /zoho-inventory/inventory/v1/contacts
# Get contact
GET /zoho-inventory/inventory/v1/contacts/{contact_id}
# Create contact
POST /zoho-inventory/inventory/v1/contacts
Content-Type: application/json
{
"contact_name": "Customer Name",
"contact_type": "customer"
}
# Update contact
PUT /zoho-inventory/inventory/v1/contacts/{contact_id}
# Delete contact
DELETE /zoho-inventory/inventory/v1/contacts/{contact_id}
```
### Sales Orders
```bash
# List sales orders
GET /zoho-inventory/inventory/v1/salesorders
# Get sales order
GET /zoho-inventory/inventory/v1/salesorders/{salesorder_id}
# Create sales order
POST /zoho-inventory/inventory/v1/salesorders
# Update sales order
PUT /zoho-inventory/inventory/v1/salesorders/{salesorder_id}
# Delete sales order
DELETE /zoho-inventory/inventory/v1/salesorders/{salesorder_id}
# Status actions
POST /zoho-inventory/inventory/v1/salesorders/{salesorder_id}/status/confirmed
POST /zoho-inventory/inventory/v1/salesorders/{salesorder_id}/status/void
```
### Invoices
```bash
# List invoices
GET /zoho-inventory/inventory/v1/invoices
# Get invoice
GET /zoho-inventory/inventory/v1/invoices/{invoice_id}
# Create invoice
POST /zoho-inventory/inventory/v1/invoices
# Update invoice
PUT /zoho-inventory/inventory/v1/invoices/{invoice_id}
# Delete invoice
DELETE /zoho-inventory/inventory/v1/invoices/{invoice_id}
# Status actions
POST /zoho-inventory/inventory/v1/invoices/{invoice_id}/status/sent
POST /zoho-inventory/inventory/v1/invoices/{invoice_id}/status/draft
POST /zoho-inventory/inventory/v1/invoices/{invoice_id}/status/void
# Email
POST /zoho-inventory/inventory/v1/invoices/{invoice_id}/email
```
### Purchase Orders
```bash
# List purchase orders
GET /zoho-inventory/inventory/v1/purchaseorders
# Create purchase order
POST /zoho-inventory/inventory/v1/purchaseorders
# Update purchase order
PUT /zoho-inventory/inventory/v1/purchaseorders/{purchaseorder_id}
# Delete purchase order
DELETE /zoho-inventory/inventory/v1/purchaseorders/{purchaseorder_id}
# Status actions
POST /zoho-inventory/inventory/v1/purchaseorders/{purchaseorder_id}/status/issued
POST /zoho-inventory/inventory/v1/purchaseorders/{purchaseorder_id}/status/cancelled
```
### Bills
```bash
# List bills
GET /zoho-inventory/inventory/v1/bills
# Create bill
POST /zoho-inventory/inventory/v1/bills
# Update bill
PUT /zoho-inventory/inventory/v1/bills/{bill_id}
# Delete bill
DELETE /zoho-inventory/inventory/v1/bills/{bill_id}
# Status actions
POST /zoho-inventory/inventory/v1/bills/{bill_id}/status/open
POST /zoho-inventory/inventory/v1/bills/{bill_id}/status/void
```
### Item Groups
```bash
GET /zoho-inventory/inventory/v1/itemgroups
GET /zoho-inventory/inventory/v1/itemgroups/{itemgroup_id}
POST /zoho-inventory/inventory/v1/itemgroups
PUT /zoho-inventory/inventory/v1/itemgroups/{itemgroup_id}
DELETE /zoho-inventory/inventory/v1/itemgroups/{itemgroup_id}
```
### Shipment Orders
```bash
POST /zoho-inventory/inventory/v1/shipmentorders
GET /zoho-inventory/inventory/v1/shipmentorders/{shipmentorder_id}
PUT /zoho-inventory/inventory/v1/shipmentorders/{shipmentorder_id}
DELETE /zoho-inventory/inventory/v1/shipmentorders/{shipmentorder_id}
POST /zoho-inventory/inventory/v1/shipmentorders/{shipmentorder_id}/status/delivered
```
## Available Modules
| Module | Endpoint | Description |
|--------|----------|-------------|
| Items | `/items` | Products and services |
| Item Groups | `/itemgroups` | Grouped product variants |
| Contacts | `/contacts` | Customers and vendors |
| Sales Orders | `/salesorders` | Sales orders |
| Invoices | `/invoices` | Sales invoices |
| Purchase Orders | `/purchaseorders` | Purchase orders |
| Bills | `/bills` | Vendor bills |
| Shipment Orders | `/shipmentorders` | Shipment tracking |
## Notes
- All successful responses have `code: 0`
- Dates should be in `yyyy-mm-dd` format
- Contact types are `customer` or `vendor`
- The `organization_id` parameter is automatically handled by the gateway
- Sales order and purchase order numbers are auto-generated by default
- Pagination uses `page` and `per_page` parameters with `has_more_page` in response
- Rate limits: 100 requests/minute per organization
## Resources
- [Zoho Inventory API v1 Introduction](https://www.zoho.com/inventory/api/v1/introduction/)
- [Zoho Inventory Items API](https://www.zoho.com/inventory/api/v1/items/)
- [Zoho Inventory Contacts API](https://www.zoho.com/inventory/api/v1/contacts/)
- [Zoho Inventory Sales Orders API](https://www.zoho.com/inventory/api/v1/salesorders/)
- [Zoho Inventory Invoices API](https://www.zoho.com/inventory/api/v1/invoices/)
- [Zoho Inventory Purchase Orders API](https://www.zoho.com/inventory/api/v1/purchaseorders/)
- [Zoho Inventory Bills API](https://www.zoho.com/inventory/api/v1/bills/)

View File

@@ -0,0 +1,173 @@
# Zoho Mail Routing Reference
**App name:** `zoho-mail`
**Base URL proxied:** `mail.zoho.com`
## API Path Pattern
```
/zoho-mail/api/{resource}
```
## Common Endpoints
### Accounts
```bash
# Get all accounts
GET /zoho-mail/api/accounts
# Get account details
GET /zoho-mail/api/accounts/{accountId}
```
### Folders
```bash
# List all folders
GET /zoho-mail/api/accounts/{accountId}/folders
# Create folder
POST /zoho-mail/api/accounts/{accountId}/folders
Content-Type: application/json
{
"folderName": "My Folder"
}
# Rename folder
PUT /zoho-mail/api/accounts/{accountId}/folders/{folderId}
Content-Type: application/json
{
"folderName": "Renamed Folder"
}
# Delete folder
DELETE /zoho-mail/api/accounts/{accountId}/folders/{folderId}
```
### Labels
```bash
# List labels
GET /zoho-mail/api/accounts/{accountId}/labels
# Create label
POST /zoho-mail/api/accounts/{accountId}/labels
Content-Type: application/json
{
"labelName": "Important"
}
# Update label
PUT /zoho-mail/api/accounts/{accountId}/labels/{labelId}
# Delete label
DELETE /zoho-mail/api/accounts/{accountId}/labels/{labelId}
```
### Messages
```bash
# List emails in folder
GET /zoho-mail/api/accounts/{accountId}/messages/view?folderId={folderId}&limit=50
# Search emails
GET /zoho-mail/api/accounts/{accountId}/messages/search?searchKey={query}
# Get email content
GET /zoho-mail/api/accounts/{accountId}/folders/{folderId}/messages/{messageId}/content
# Get email headers
GET /zoho-mail/api/accounts/{accountId}/folders/{folderId}/messages/{messageId}/header
# Get email metadata
GET /zoho-mail/api/accounts/{accountId}/folders/{folderId}/messages/{messageId}/details
# Get original MIME message
GET /zoho-mail/api/accounts/{accountId}/messages/{messageId}/originalmessage
# Send email
POST /zoho-mail/api/accounts/{accountId}/messages
Content-Type: application/json
{
"fromAddress": "sender@yourdomain.com",
"toAddress": "recipient@example.com",
"subject": "Subject",
"content": "Email body",
"mailFormat": "html"
}
# Reply to email
POST /zoho-mail/api/accounts/{accountId}/messages/{messageId}
# Update message (mark read, move, flag, archive, spam)
PUT /zoho-mail/api/accounts/{accountId}/updatemessage
Content-Type: application/json
{
"messageId": ["messageId1"],
"folderId": "folderId",
"mode": "markAsRead"
}
# Delete email
DELETE /zoho-mail/api/accounts/{accountId}/folders/{folderId}/messages/{messageId}
```
### Attachments
```bash
# Upload attachment
POST /zoho-mail/api/accounts/{accountId}/messages/attachments
Content-Type: multipart/form-data
# Get attachment info
GET /zoho-mail/api/accounts/{accountId}/folders/{folderId}/messages/{messageId}/attachmentinfo
# Download attachment
GET /zoho-mail/api/accounts/{accountId}/folders/{folderId}/messages/{messageId}/attachments/{attachmentId}
```
## Update Message Modes
| Mode | Description |
|------|-------------|
| `markAsRead` | Mark messages as read |
| `markAsUnread` | Mark messages as unread |
| `moveMessage` | Move messages (requires `destfolderId`) |
| `flag` | Set flag (requires `flagid`: 1-4) |
| `archive` | Archive messages |
| `unArchive` | Unarchive messages |
| `spam` | Mark as spam |
| `notSpam` | Mark as not spam |
## Default Folders
| Folder | Type |
|--------|------|
| Inbox | `Inbox` |
| Drafts | `Drafts` |
| Templates | `Templates` |
| Snoozed | `Snoozed` |
| Sent | `Sent` |
| Spam | `Spam` |
| Trash | `Trash` |
| Outbox | `Outbox` |
## Notes
- Account IDs are required for most operations - get via `/api/accounts`
- Message IDs and Folder IDs are numeric strings
- The `fromAddress` must be associated with the authenticated account
- Uses offset-based pagination with `start` and `limit` parameters
- Some operations require additional OAuth scopes
## Resources
- [Zoho Mail API Overview](https://www.zoho.com/mail/help/api/overview.html)
- [Email Messages API](https://www.zoho.com/mail/help/api/email-api.html)
- [Folders API](https://www.zoho.com/mail/help/api/get-all-folder-details.html)

View File

@@ -0,0 +1,153 @@
# Zoho People Routing Reference
**App name:** `zoho-people`
**Base URL proxied:** `people.zoho.com`
## API Path Pattern
```
/zoho-people/people/api/{resource}
```
or for view-based endpoints:
```
/zoho-people/api/forms/{viewName}/records
```
## Common Endpoints
### Forms
```bash
# List all forms
GET /zoho-people/people/api/forms
```
### Records (Bulk)
```bash
# Get records from any form
GET /zoho-people/people/api/forms/{formLinkName}/getRecords?sIndex=1&limit=200
# Common form link names:
# - employee
# - department
# - designation
# - leave
# - P_ClientDetails
```
### Records (View-based)
```bash
# Get records using a view
GET /zoho-people/api/forms/{viewName}/records?rec_limit=200
# Common view names:
# - P_EmployeeView
# - P_DepartmentView
# - P_DesignationView
```
### Search
```bash
# Search by Employee ID
GET /zoho-people/people/api/forms/employee/getRecords?SearchColumn=EMPLOYEEID&SearchValue={empId}
# Search by Email
GET /zoho-people/people/api/forms/employee/getRecords?SearchColumn=EMPLOYEEMAILALIAS&SearchValue={email}
# Get modified records
GET /zoho-people/people/api/forms/{formLinkName}/getRecords?modifiedtime={timestamp_ms}
```
### Insert Record
```bash
POST /zoho-people/people/api/forms/json/{formLinkName}/insertRecord
Content-Type: application/x-www-form-urlencoded
inputData={"field1":"value1","field2":"value2"}
```
### Update Record
```bash
POST /zoho-people/people/api/forms/json/{formLinkName}/updateRecord
Content-Type: application/x-www-form-urlencoded
inputData={"field1":"newValue"}&recordId={recordId}
```
### Attendance
```bash
# Get attendance entries (requires additional scope)
GET /zoho-people/people/api/attendance/getAttendanceEntries?date={date}&dateFormat={format}
# Check-in/Check-out (requires additional scope)
POST /zoho-people/people/api/attendance
Content-Type: application/x-www-form-urlencoded
dateFormat=dd/MM/yyyy HH:mm:ss&checkIn={datetime}&checkOut={datetime}&empId={empId}
```
### Leave
```bash
# Get leave records
GET /zoho-people/people/api/forms/leave/getRecords?sIndex=1&limit=200
# Add leave
POST /zoho-people/people/api/forms/json/leave/insertRecord
Content-Type: application/x-www-form-urlencoded
inputData={"Employee_ID":"EMP001","Leavetype":"123456","From":"01-Feb-2026","To":"02-Feb-2026"}
```
## Common Form Link Names
| Form | formLinkName |
|------|--------------|
| Employee | `employee` |
| Department | `department` |
| Designation | `designation` |
| Leave | `leave` |
| Clients | `P_ClientDetails` |
## Pagination
Uses index-based pagination:
- `sIndex`: Starting index (1-based)
- `limit`: Max records per request (max 200)
For page 2: `sIndex=201&limit=200`
## Notes
- Record IDs are numeric strings (e.g., `943596000000294355`)
- Insert/Update use `application/x-www-form-urlencoded` content type
- `inputData` parameter contains JSON object as string
- Attendance endpoints require additional OAuth scopes
- Maximum 200 records per request
- Response wraps data in `response.result[]` array
## Error Codes
| Code | Description |
|------|-------------|
| 7011 | Invalid form name |
| 7012 | Invalid view name |
| 7021 | Max limit exceeded (200) |
| 7024 | No records found |
| 7042 | Invalid search value |
| 7218 | Invalid OAuth scope |
## Resources
- [Zoho People API Overview](https://www.zoho.com/people/api/overview.html)
- [Get Bulk Records API](https://www.zoho.com/people/api/bulk-records.html)
- [Insert Record API](https://www.zoho.com/people/api/insert-records.html)
- [Update Record API](https://www.zoho.com/people/api/update-records.html)

View File

@@ -0,0 +1,153 @@
# Zoho Recruit Routing Reference
**App name:** `zoho-recruit`
**Base URL proxied:** `recruit.zoho.com`
## API Path Pattern
```
/zoho-recruit/recruit/v2/{module_api_name}
```
## Common Endpoints
### Modules
```bash
# List all modules
GET /zoho-recruit/recruit/v2/settings/modules
# Get specific module
GET /zoho-recruit/recruit/v2/settings/modules/{module_api_name}
```
### Records
```bash
# List records
GET /zoho-recruit/recruit/v2/{module_api_name}?page=1&per_page=200
# Get single record
GET /zoho-recruit/recruit/v2/{module_api_name}/{record_id}
# Create records (max 100)
POST /zoho-recruit/recruit/v2/{module_api_name}
Content-Type: application/json
{
"data": [
{"field_api_name": "value"}
]
}
# Update single record
PUT /zoho-recruit/recruit/v2/{module_api_name}/{record_id}
Content-Type: application/json
{
"data": [
{"field_api_name": "new_value"}
]
}
# Update multiple records (max 100)
PUT /zoho-recruit/recruit/v2/{module_api_name}
Content-Type: application/json
{
"data": [
{"id": "record_id", "field_api_name": "value"}
]
}
# Delete records (max 100)
DELETE /zoho-recruit/recruit/v2/{module_api_name}?ids={id1},{id2}
```
### Search
```bash
# Search by criteria
GET /zoho-recruit/recruit/v2/{module_api_name}/search?criteria=(field:operator:value)
# Search by email
GET /zoho-recruit/recruit/v2/{module_api_name}/search?email=user@example.com
# Search by phone
GET /zoho-recruit/recruit/v2/{module_api_name}/search?phone=555-1234
# Global word search
GET /zoho-recruit/recruit/v2/{module_api_name}/search?word=keyword
```
## Available Modules
| Module | API Name |
|--------|----------|
| Candidates | `Candidates` |
| Job Openings | `Job_Openings` |
| Applications | `Applications` |
| Interviews | `Interviews` |
| Departments | `Departments` |
| Clients | `Clients` |
| Contacts | `Contacts` |
| Campaigns | `Campaigns` |
| Referrals | `Referrals` |
| Tasks | `Tasks` |
| Events | `Events` |
| Vendors | `Vendors` |
## Query Parameters
| Parameter | Type | Description |
|-----------|------|-------------|
| `fields` | string | Comma-separated field API names |
| `sort_order` | string | `asc` or `desc` |
| `sort_by` | string | Field API name |
| `converted` | string | `true`, `false`, or `both` |
| `approved` | string | `true`, `false`, or `both` |
| `page` | integer | Page number (default: 1) |
| `per_page` | integer | Records per page (max 200) |
## Search Operators
**Text fields:**
- `equals`, `not_equal`, `starts_with`, `ends_with`, `contains`, `not_contains`, `in`
**Date/Number fields:**
- `equals`, `not_equal`, `greater_than`, `less_than`, `greater_equal`, `less_equal`, `between`
## Pagination
Uses page-based pagination:
- `page`: Page number (default: 1)
- `per_page`: Records per page (max: 200)
Response includes:
```json
{
"data": [...],
"info": {
"per_page": 200,
"count": 50,
"page": 1,
"more_records": false
}
}
```
## Notes
- Module API names are case-sensitive (e.g., `Job_Openings`)
- Maximum 200 records per GET request
- Maximum 100 records per POST/PUT/DELETE request
- `Last_Name` is mandatory for Candidates
- Date format: `yyyy-MM-dd`
- DateTime format: `yyyy-MM-ddTHH:mm:ss±HH:mm` (ISO 8601)
- Lookup fields use JSON objects with `id`
## Resources
- [Zoho Recruit API v2 Overview](https://www.zoho.com/recruit/developer-guide/apiv2/)
- [Get Records API](https://www.zoho.com/recruit/developer-guide/apiv2/get-records.html)
- [Search Records API](https://www.zoho.com/recruit/developer-guide/apiv2/search-records.html)