Auto backup: 2026-02-19 12:11

This commit is contained in:
Krilly
2026-02-19 12:11:01 +00:00
parent ad3bcbcc45
commit b33a4d2390
178 changed files with 26760 additions and 48 deletions
@@ -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)
@@ -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)
+149
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)
+213
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)
+154
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)
+122
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)
+148
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)
+133
View File
@@ -0,0 +1,133 @@
# beehiiv Routing Reference
**App name:** `beehiiv`
**Base URL proxied:** `api.beehiiv.com`
## API Path Pattern
```
/beehiiv/v2/{resource}
```
## Common Endpoints
### Publications
#### List Publications
```bash
GET /beehiiv/v2/publications
```
#### Get Publication
```bash
GET /beehiiv/v2/publications/{publication_id}
```
### Subscriptions
#### List Subscriptions
```bash
GET /beehiiv/v2/publications/{publication_id}/subscriptions
```
#### Get Subscription by ID
```bash
GET /beehiiv/v2/publications/{publication_id}/subscriptions/{subscription_id}
```
#### Get Subscription by Email
```bash
GET /beehiiv/v2/publications/{publication_id}/subscriptions/by_email/{email}
```
#### Create Subscription
```bash
POST /beehiiv/v2/publications/{publication_id}/subscriptions
Content-Type: application/json
{
"email": "subscriber@example.com",
"utm_source": "api"
}
```
#### Update Subscription
```bash
PATCH /beehiiv/v2/publications/{publication_id}/subscriptions/{subscription_id}
```
#### Delete Subscription
```bash
DELETE /beehiiv/v2/publications/{publication_id}/subscriptions/{subscription_id}
```
### Posts
#### List Posts
```bash
GET /beehiiv/v2/publications/{publication_id}/posts
```
#### Get Post
```bash
GET /beehiiv/v2/publications/{publication_id}/posts/{post_id}
```
### Custom Fields
#### List Custom Fields
```bash
GET /beehiiv/v2/publications/{publication_id}/custom_fields
```
#### Create Custom Field
```bash
POST /beehiiv/v2/publications/{publication_id}/custom_fields
```
### Segments
```bash
GET /beehiiv/v2/publications/{publication_id}/segments
GET /beehiiv/v2/publications/{publication_id}/segments/{segment_id}
```
### Tiers
```bash
GET /beehiiv/v2/publications/{publication_id}/tiers
POST /beehiiv/v2/publications/{publication_id}/tiers
PATCH /beehiiv/v2/publications/{publication_id}/tiers/{tier_id}
```
### Automations
```bash
GET /beehiiv/v2/publications/{publication_id}/automations
GET /beehiiv/v2/publications/{publication_id}/automations/{automation_id}
```
## Pagination
Cursor-based (recommended) or page-based (deprecated):
```bash
# Cursor-based
GET /beehiiv/v2/publications/{pub_id}/subscriptions?limit=10&cursor={next_cursor}
# Page-based (max 100 pages)
GET /beehiiv/v2/publications?page=2&limit=10
```
## Notes
- Publication IDs start with `pub_`
- Subscription IDs start with `sub_`
- Timestamps are Unix timestamps
- Cursor-based pagination is recommended
- Page-based pagination limited to 100 pages
## Resources
- [beehiiv Developer Documentation](https://developers.beehiiv.com/)
- [beehiiv API Reference](https://developers.beehiiv.com/api-reference)
+191
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)
+229
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)
+216
View File
@@ -0,0 +1,216 @@
# Cal.com Routing Reference
**App name:** `cal-com`
**Base URL proxied:** `api.cal.com`
## API Path Pattern
```
/cal-com/v2/{resource}
```
## Common Endpoints
### User Profile
#### Get Profile
```bash
GET /cal-com/v2/me
```
#### Update Profile
```bash
PATCH /cal-com/v2/me
```
### Event Types
#### List Event Types
```bash
GET /cal-com/v2/event-types
```
#### Get Event Type
```bash
GET /cal-com/v2/event-types/{eventTypeId}
```
#### Create Event Type
```bash
POST /cal-com/v2/event-types
```
#### Update Event Type
```bash
PATCH /cal-com/v2/event-types/{eventTypeId}
```
#### Delete Event Type
```bash
DELETE /cal-com/v2/event-types/{eventTypeId}
```
### Event Type Webhooks
#### List Webhooks
```bash
GET /cal-com/v2/event-types/{eventTypeId}/webhooks
```
#### Create Webhook
```bash
POST /cal-com/v2/event-types/{eventTypeId}/webhooks
```
#### Get Webhook
```bash
GET /cal-com/v2/event-types/{eventTypeId}/webhooks/{webhookId}
```
#### Update Webhook
```bash
PATCH /cal-com/v2/event-types/{eventTypeId}/webhooks/{webhookId}
```
#### Delete Webhook
```bash
DELETE /cal-com/v2/event-types/{eventTypeId}/webhooks/{webhookId}
```
### Bookings
#### List Bookings
```bash
GET /cal-com/v2/bookings
GET /cal-com/v2/bookings?status=upcoming
GET /cal-com/v2/bookings?status=past
GET /cal-com/v2/bookings?status=cancelled
GET /cal-com/v2/bookings?take=10
```
#### Get Booking
```bash
GET /cal-com/v2/bookings/{bookingUid}
```
#### Create Booking
```bash
POST /cal-com/v2/bookings
```
#### Cancel Booking
```bash
POST /cal-com/v2/bookings/{bookingUid}/cancel
```
### Schedules
#### Get Default Schedule
```bash
GET /cal-com/v2/schedules/default
```
#### Get Schedule
```bash
GET /cal-com/v2/schedules/{scheduleId}
```
#### Create Schedule
```bash
POST /cal-com/v2/schedules
```
#### Update Schedule
```bash
PATCH /cal-com/v2/schedules/{scheduleId}
```
#### Delete Schedule
```bash
DELETE /cal-com/v2/schedules/{scheduleId}
```
### Availability Slots
#### Get Available Slots
```bash
GET /cal-com/v2/slots/available?eventTypeId={id}&startTime={iso8601}&endTime={iso8601}
```
#### Reserve Slot
```bash
POST /cal-com/v2/slots/reserve
```
### Calendars
#### List Connected Calendars
```bash
GET /cal-com/v2/calendars
```
### Conferencing
#### List Conferencing Apps
```bash
GET /cal-com/v2/conferencing
```
#### Get Default Conferencing App
```bash
GET /cal-com/v2/conferencing/default
```
### Webhooks (User-level)
#### List Webhooks
```bash
GET /cal-com/v2/webhooks
```
#### Create Webhook
```bash
POST /cal-com/v2/webhooks
```
#### Get Webhook
```bash
GET /cal-com/v2/webhooks/{webhookId}
```
#### Update Webhook
```bash
PATCH /cal-com/v2/webhooks/{webhookId}
```
#### Delete Webhook
```bash
DELETE /cal-com/v2/webhooks/{webhookId}
```
### Teams
#### List Teams
```bash
GET /cal-com/v2/teams
```
### Verified Resources
#### List Verified Emails
```bash
GET /cal-com/v2/verified-resources/emails
```
## Notes
- All API endpoints are v2
- All times are in UTC (ISO 8601 format)
- Booking creation requires an available slot - check `/v2/slots/available` first
- Required fields for booking: `eventTypeId`, `start`, `timeZone`, `language`, `responses.name`, `responses.email`
- `GET /v2/schedules` may return 500 errors; use `GET /v2/schedules/{id}` instead
- Event type creation requires: `title`, `slug`, `length` (in minutes)
## Resources
- [Cal.com API Documentation](https://cal.com/docs/api-reference/v2/introduction)
+108
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)
+178
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)
+203
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)
@@ -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)
+152
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)
+155
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)
+353
View File
@@ -0,0 +1,353 @@
# Clio Routing Reference
**App name:** `clio`
**Base URL proxied:** `app.clio.com`
## API Path Pattern
```
/clio/api/v4/{resource}
```
## Field Selection
By default, Clio returns minimal fields (`id`, `etag`). Always specify fields:
```bash
GET /clio/api/v4/matters?fields=id,display_number,description,status
```
Nested resources use curly bracket syntax:
```bash
GET /clio/api/v4/activities?fields=id,type,matter{id,description}
```
## Common Endpoints
### Matters
#### List Matters
```bash
GET /clio/api/v4/matters?fields=id,display_number,description,status
```
#### Get Matter
```bash
GET /clio/api/v4/matters/{id}?fields=id,display_number,description,status,open_date
```
#### Create Matter
```bash
POST /clio/api/v4/matters
Content-Type: application/json
{
"data": {
"description": "New Legal Matter",
"status": "open",
"client": {"id": 12345}
}
}
```
#### Update Matter
```bash
PATCH /clio/api/v4/matters/{id}
Content-Type: application/json
{
"data": {
"description": "Updated Description"
}
}
```
#### Delete Matter
```bash
DELETE /clio/api/v4/matters/{id}
```
### Contacts
#### List Contacts
```bash
GET /clio/api/v4/contacts?fields=id,name,type,primary_email_address
```
#### Get Contact
```bash
GET /clio/api/v4/contacts/{id}?fields=id,name,type,first_name,last_name
```
#### Create Contact (Person)
```bash
POST /clio/api/v4/contacts
Content-Type: application/json
{
"data": {
"type": "Person",
"first_name": "John",
"last_name": "Doe"
}
}
```
#### Create Contact (Company)
```bash
POST /clio/api/v4/contacts
Content-Type: application/json
{
"data": {
"type": "Company",
"name": "Acme Corporation"
}
}
```
#### Update Contact
```bash
PATCH /clio/api/v4/contacts/{id}
Content-Type: application/json
{
"data": {
"first_name": "Jane"
}
}
```
#### Delete Contact
```bash
DELETE /clio/api/v4/contacts/{id}
```
### Activities
#### List Activities
```bash
GET /clio/api/v4/activities?fields=id,type,date,quantity,matter{id,description}
```
#### Get Activity
```bash
GET /clio/api/v4/activities/{id}?fields=id,type,date,quantity,note
```
#### Create Activity
```bash
POST /clio/api/v4/activities
Content-Type: application/json
{
"data": {
"type": "TimeEntry",
"date": "2026-02-11",
"quantity": 3600,
"matter": {"id": 12345}
}
}
```
#### Update Activity
```bash
PATCH /clio/api/v4/activities/{id}
Content-Type: application/json
{
"data": {
"note": "Updated note"
}
}
```
#### Delete Activity
```bash
DELETE /clio/api/v4/activities/{id}
```
### Tasks
#### List Tasks
```bash
GET /clio/api/v4/tasks?fields=id,name,status,due_at,priority
```
#### Get Task
```bash
GET /clio/api/v4/tasks/{id}?fields=id,name,description,status,due_at
```
#### Create Task
Requires `assignee` with `id` and `type`:
```bash
POST /clio/api/v4/tasks
Content-Type: application/json
{
"data": {
"name": "Review contract",
"due_at": "2026-02-15T17:00:00Z",
"priority": "Normal",
"assignee": {"id": 12345, "type": "User"},
"matter": {"id": 67890}
}
}
```
#### Update Task
```bash
PATCH /clio/api/v4/tasks/{id}
Content-Type: application/json
{
"data": {
"status": "complete"
}
}
```
#### Delete Task
```bash
DELETE /clio/api/v4/tasks/{id}
```
### Calendar Entries
#### List Calendar Entries
```bash
GET /clio/api/v4/calendar_entries?fields=id,summary,start_at,end_at
```
#### Get Calendar Entry
```bash
GET /clio/api/v4/calendar_entries/{id}?fields=id,summary,description,start_at,end_at
```
#### Create Calendar Entry
Requires `calendar_owner` with `id` and `type`:
```bash
POST /clio/api/v4/calendar_entries
Content-Type: application/json
{
"data": {
"summary": "Client Meeting",
"start_at": "2026-02-15T10:00:00Z",
"end_at": "2026-02-15T11:00:00Z",
"calendar_owner": {"id": 12345, "type": "User"}
}
}
```
**Note:** Associating a matter during creation may return 404. Use PATCH to link matters after creation.
#### Update Calendar Entry
```bash
PATCH /clio/api/v4/calendar_entries/{id}
Content-Type: application/json
{
"data": {
"summary": "Updated Meeting"
}
}
```
#### Delete Calendar Entry
```bash
DELETE /clio/api/v4/calendar_entries/{id}
```
### Documents
#### List Documents
```bash
GET /clio/api/v4/documents?fields=id,name,content_type,size
```
#### Get Document
```bash
GET /clio/api/v4/documents/{id}?fields=id,name,content_type,size,created_at
```
#### Download Document
```bash
GET /clio/api/v4/documents/{id}/download
```
### Users
#### Get Current User
```bash
GET /clio/api/v4/users/who_am_i?fields=id,name,email,enabled
```
#### List Users
```bash
GET /clio/api/v4/users?fields=id,name,email,enabled
```
### Bills
#### List Bills
```bash
GET /clio/api/v4/bills?fields=id,number,issued_at,due_at,total,balance,state
```
#### Get Bill
```bash
GET /clio/api/v4/bills/{id}?fields=id,number,total,balance,state
```
## Pagination
Clio uses cursor-based pagination:
```bash
GET /clio/api/v4/matters?fields=id,description&limit=50
```
Response includes pagination in `meta`:
```json
{
"data": [...],
"meta": {
"paging": {
"next": "https://app.clio.com/api/v4/matters?page_token=xyz123"
}
}
}
```
Use `page_token` for next page:
```bash
GET /clio/api/v4/matters?page_token=xyz123
```
## Notes
- Always specify `fields` parameter - defaults are minimal (`id`, `etag` only)
- Nested resources use curly brackets: `matter{id,description}`
- Only one level of nesting supported
- Contact types: `Person` or `Company`
- Task assignees require both `id` and `type` ("User" or "Contact")
- Calendar entries require `calendar_owner` with `id` and `type`; linking matters during creation may fail - use PATCH after creation
- Activity quantity is in seconds (3600 = 1 hour)
- Rate limit: 50 requests/minute during peak hours
- Contact limits: max 20 emails, phones, and addresses each
- Activities, Documents, and Bills endpoints require additional OAuth scopes
## Resources
- [Clio API Documentation](https://docs.developers.clio.com/api-reference/)
- [Clio Fields Guide](https://docs.developers.clio.com/api-docs/clio-manage/fields/)
- [Clio Rate Limits](https://docs.developers.clio.com/api-docs/clio-manage/rate-limits/)
+190
View File
@@ -0,0 +1,190 @@
# Clockify Routing Reference
**App name:** `clockify`
**Base URL proxied:** `api.clockify.me`
## API Path Pattern
```
/clockify/api/v1/{resource}
```
## Common Endpoints
### Get Current User
```bash
GET /clockify/api/v1/user
```
### List Workspaces
```bash
GET /clockify/api/v1/workspaces
```
### Get Workspace
```bash
GET /clockify/api/v1/workspaces/{workspaceId}
```
### List Workspace Users
```bash
GET /clockify/api/v1/workspaces/{workspaceId}/users
```
### List Projects
```bash
GET /clockify/api/v1/workspaces/{workspaceId}/projects
```
### Get Project
```bash
GET /clockify/api/v1/workspaces/{workspaceId}/projects/{projectId}
```
### Create Project
```bash
POST /clockify/api/v1/workspaces/{workspaceId}/projects
Content-Type: application/json
{
"name": "My Project",
"isPublic": true,
"clientId": "optional-client-id"
}
```
### Update Project
```bash
PUT /clockify/api/v1/workspaces/{workspaceId}/projects/{projectId}
Content-Type: application/json
{
"name": "Updated Project Name",
"archived": true
}
```
### Delete Project
```bash
DELETE /clockify/api/v1/workspaces/{workspaceId}/projects/{projectId}
```
### List Clients
```bash
GET /clockify/api/v1/workspaces/{workspaceId}/clients
```
### Create Client
```bash
POST /clockify/api/v1/workspaces/{workspaceId}/clients
Content-Type: application/json
{
"name": "Client Name",
"address": "123 Main St",
"note": "Client notes"
}
```
### List Tags
```bash
GET /clockify/api/v1/workspaces/{workspaceId}/tags
```
### Create Tag
```bash
POST /clockify/api/v1/workspaces/{workspaceId}/tags
Content-Type: application/json
{
"name": "urgent"
}
```
### List Tasks on Project
```bash
GET /clockify/api/v1/workspaces/{workspaceId}/projects/{projectId}/tasks
```
### Create Task
```bash
POST /clockify/api/v1/workspaces/{workspaceId}/projects/{projectId}/tasks
Content-Type: application/json
{
"name": "Task Name",
"assigneeIds": ["user-id"],
"estimate": "PT2H",
"billable": true
}
```
### Get User's Time Entries
```bash
GET /clockify/api/v1/workspaces/{workspaceId}/user/{userId}/time-entries
```
### Create Time Entry
```bash
POST /clockify/api/v1/workspaces/{workspaceId}/time-entries
Content-Type: application/json
{
"start": "2026-02-13T09:00:00Z",
"end": "2026-02-13T10:00:00Z",
"description": "Working on task",
"projectId": "project-id",
"taskId": "task-id",
"tagIds": ["tag-id"],
"billable": true
}
```
### Get Time Entry
```bash
GET /clockify/api/v1/workspaces/{workspaceId}/time-entries/{timeEntryId}
```
### Update Time Entry
```bash
PUT /clockify/api/v1/workspaces/{workspaceId}/time-entries/{timeEntryId}
Content-Type: application/json
{
"description": "Updated description",
"end": "2026-02-13T11:00:00Z"
}
```
### Delete Time Entry
```bash
DELETE /clockify/api/v1/workspaces/{workspaceId}/time-entries/{timeEntryId}
```
### Stop Running Timer
```bash
PATCH /clockify/api/v1/workspaces/{workspaceId}/user/{userId}/time-entries
Content-Type: application/json
{
"end": "2026-02-13T17:00:00Z"
}
```
## Notes
- All IDs are strings
- Timestamps must be in ISO 8601 format with UTC timezone (e.g., `2026-02-13T09:00:00Z`)
- Duration format uses ISO 8601 duration (e.g., `PT1H` for 1 hour, `PT30M` for 30 minutes)
- Cannot delete active projects or tasks - must archive them first
- Page-based pagination with `page` and `page-size` query parameters
- Response includes `Last-Page` header indicating if more pages exist
- Rate limit: 50 requests per second per workspace
## Resources
- [Clockify API Documentation](https://docs.clockify.me/)
- [Time Entry API](https://docs.clockify.me/#tag/Time-entry)
- [Project API](https://docs.clockify.me/#tag/Project)
- [Workspace API](https://docs.clockify.me/#tag/Workspace)
- [User API](https://docs.clockify.me/#tag/User)
+223
View File
@@ -0,0 +1,223 @@
# Coda Routing Reference
**App name:** `coda`
**Base URL proxied:** `coda.io/apis/v1`
## API Path Pattern
```
/coda/apis/v1/{resource}
```
## Common Endpoints
### Account
#### Get Current User
```bash
GET /coda/apis/v1/whoami
```
### Docs
#### List Docs
```bash
GET /coda/apis/v1/docs
```
#### Create Doc
```bash
POST /coda/apis/v1/docs
```
#### Get Doc
```bash
GET /coda/apis/v1/docs/{docId}
```
#### Delete Doc
```bash
DELETE /coda/apis/v1/docs/{docId}
```
### Pages
#### List Pages
```bash
GET /coda/apis/v1/docs/{docId}/pages
```
#### Create Page
```bash
POST /coda/apis/v1/docs/{docId}/pages
```
#### Get Page
```bash
GET /coda/apis/v1/docs/{docId}/pages/{pageIdOrName}
```
#### Update Page
```bash
PUT /coda/apis/v1/docs/{docId}/pages/{pageIdOrName}
```
#### Delete Page
```bash
DELETE /coda/apis/v1/docs/{docId}/pages/{pageIdOrName}
```
### Tables
#### List Tables
```bash
GET /coda/apis/v1/docs/{docId}/tables
```
#### Get Table
```bash
GET /coda/apis/v1/docs/{docId}/tables/{tableIdOrName}
```
### Columns
#### List Columns
```bash
GET /coda/apis/v1/docs/{docId}/tables/{tableIdOrName}/columns
```
#### Get Column
```bash
GET /coda/apis/v1/docs/{docId}/tables/{tableIdOrName}/columns/{columnIdOrName}
```
### Rows
#### List Rows
```bash
GET /coda/apis/v1/docs/{docId}/tables/{tableIdOrName}/rows
```
#### Get Row
```bash
GET /coda/apis/v1/docs/{docId}/tables/{tableIdOrName}/rows/{rowIdOrName}
```
#### Insert/Upsert Rows
```bash
POST /coda/apis/v1/docs/{docId}/tables/{tableIdOrName}/rows
```
#### Update Row
```bash
PUT /coda/apis/v1/docs/{docId}/tables/{tableIdOrName}/rows/{rowIdOrName}
```
#### Delete Row
```bash
DELETE /coda/apis/v1/docs/{docId}/tables/{tableIdOrName}/rows/{rowIdOrName}
```
### Formulas
#### List Formulas
```bash
GET /coda/apis/v1/docs/{docId}/formulas
```
#### Get Formula
```bash
GET /coda/apis/v1/docs/{docId}/formulas/{formulaIdOrName}
```
### Controls
#### List Controls
```bash
GET /coda/apis/v1/docs/{docId}/controls
```
#### Get Control
```bash
GET /coda/apis/v1/docs/{docId}/controls/{controlIdOrName}
```
### Permissions
#### Get Sharing Metadata
```bash
GET /coda/apis/v1/docs/{docId}/acl/metadata
```
#### List Permissions
```bash
GET /coda/apis/v1/docs/{docId}/acl/permissions
```
#### Add Permission
```bash
POST /coda/apis/v1/docs/{docId}/acl/permissions
```
#### Delete Permission
```bash
DELETE /coda/apis/v1/docs/{docId}/acl/permissions/{permissionId}
```
### Categories
#### List Categories
```bash
GET /coda/apis/v1/categories
```
### Utilities
#### Resolve Browser Link
```bash
GET /coda/apis/v1/resolveBrowserLink?url={encodedUrl}
```
#### Get Mutation Status
```bash
GET /coda/apis/v1/mutationStatus/{requestId}
```
### Analytics
#### List Doc Analytics
```bash
GET /coda/apis/v1/analytics/docs
```
#### List Pack Analytics
```bash
GET /coda/apis/v1/analytics/packs
```
#### Get Analytics Update Time
```bash
GET /coda/apis/v1/analytics/updated
```
## Query Parameters
Common parameters across endpoints:
- `limit` - Page size (max: 200)
- `pageToken` - Cursor for pagination
- `query` - Search filter
- `useColumnNames` - Use column names vs IDs (rows)
- `valueFormat` - simple, simpleWithArrays, rich (rows)
## Notes
- Mutations (create/update/delete) return HTTP 202 with requestId
- Use `/mutationStatus/{requestId}` to check completion
- Newly created docs need a moment before child resources are accessible
- Table/column names can be used instead of IDs
- Row operations require base tables, not views
- Page-level analytics require Enterprise plan
## Resources
- [Coda API Documentation](https://coda.io/developers/apis/v1)
@@ -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)
+266
View File
@@ -0,0 +1,266 @@
# CompanyCam Routing Reference
**App name:** `companycam`
**Base URL proxied:** `api.companycam.com`
## API Path Pattern
```
/companycam/v2/{resource}
```
## Common Endpoints
### Company
#### Get Company
```bash
GET /companycam/v2/company
```
### Users
#### Get Current User
```bash
GET /companycam/v2/users/current
```
#### List Users
```bash
GET /companycam/v2/users
```
#### Create User
```bash
POST /companycam/v2/users
```
#### Get User
```bash
GET /companycam/v2/users/{id}
```
#### Update User
```bash
PUT /companycam/v2/users/{id}
```
#### Delete User
```bash
DELETE /companycam/v2/users/{id}
```
### Projects
#### List Projects
```bash
GET /companycam/v2/projects
```
#### Create Project
```bash
POST /companycam/v2/projects
```
#### Get Project
```bash
GET /companycam/v2/projects/{id}
```
#### Update Project
```bash
PUT /companycam/v2/projects/{id}
```
#### Delete Project
```bash
DELETE /companycam/v2/projects/{id}
```
#### Archive Project
```bash
PATCH /companycam/v2/projects/{id}/archive
```
#### Restore Project
```bash
PUT /companycam/v2/projects/{id}/restore
```
### Project Photos
#### List Project Photos
```bash
GET /companycam/v2/projects/{project_id}/photos
```
#### Add Photo to Project
```bash
POST /companycam/v2/projects/{project_id}/photos
```
### Project Comments
#### List Project Comments
```bash
GET /companycam/v2/projects/{project_id}/comments
```
#### Add Project Comment
```bash
POST /companycam/v2/projects/{project_id}/comments
```
### Project Labels
#### List Project Labels
```bash
GET /companycam/v2/projects/{project_id}/labels
```
#### Add Labels
```bash
POST /companycam/v2/projects/{project_id}/labels
```
### Project Documents
#### List Documents
```bash
GET /companycam/v2/projects/{project_id}/documents
```
#### Upload Document
```bash
POST /companycam/v2/projects/{project_id}/documents
```
### Photos
#### List All Photos
```bash
GET /companycam/v2/photos
```
#### Get Photo
```bash
GET /companycam/v2/photos/{id}
```
#### Update Photo
```bash
PUT /companycam/v2/photos/{id}
```
#### Delete Photo
```bash
DELETE /companycam/v2/photos/{id}
```
### Tags
#### List Tags
```bash
GET /companycam/v2/tags
```
#### Create Tag
```bash
POST /companycam/v2/tags
```
#### Get Tag
```bash
GET /companycam/v2/tags/{id}
```
#### Update Tag
```bash
PUT /companycam/v2/tags/{id}
```
#### Delete Tag
```bash
DELETE /companycam/v2/tags/{id}
```
### Groups
#### List Groups
```bash
GET /companycam/v2/groups
```
#### Create Group
```bash
POST /companycam/v2/groups
```
#### Get Group
```bash
GET /companycam/v2/groups/{id}
```
#### Update Group
```bash
PUT /companycam/v2/groups/{id}
```
#### Delete Group
```bash
DELETE /companycam/v2/groups/{id}
```
### Checklists
#### List Checklists
```bash
GET /companycam/v2/checklists
```
### Webhooks
#### List Webhooks
```bash
GET /companycam/v2/webhooks
```
#### Create Webhook
```bash
POST /companycam/v2/webhooks
```
#### Get Webhook
```bash
GET /companycam/v2/webhooks/{id}
```
#### Update Webhook
```bash
PUT /companycam/v2/webhooks/{id}
```
#### Delete Webhook
```bash
DELETE /companycam/v2/webhooks/{id}
```
## Query Parameters
- `page` - Page number (default: 1)
- `per_page` - Results per page (default: 25)
- `query` - Search query (projects)
- `status` - Filter by status
- `modified_since` - Unix timestamp for filtering
## Notes
- IDs are returned as strings
- Timestamps are Unix timestamps (seconds since epoch)
- Comments must be wrapped in a `comment` object
- Webhooks use `scopes` parameter (not `events`)
- Rate limits: 240 GET/min, 100 POST/PUT/DELETE/min
## Resources
- [CompanyCam API Documentation](https://docs.companycam.com)
+208
View File
@@ -0,0 +1,208 @@
# Confluence Routing Reference
**App name:** `confluence`
**Base URL proxied:** `api.atlassian.com`
## Getting Cloud ID
Confluence Cloud requires a cloud ID in the API path. First, get accessible resources:
```bash
GET /confluence/oauth/token/accessible-resources
```
Response:
```json
[{
"id": "62909843-b784-4c35-b770-e4e2a26f024b",
"url": "https://yoursite.atlassian.net",
"name": "yoursite",
"scopes": ["read:confluence-content.all", "write:confluence-content", ...]
}]
```
## API Path Pattern
V2 API (recommended):
```
/confluence/ex/confluence/{cloudId}/wiki/api/v2/{endpoint}
```
V1 REST API (limited):
```
/confluence/ex/confluence/{cloudId}/wiki/rest/api/{endpoint}
```
## Common Endpoints (V2 API)
### Pages
#### List Pages
```bash
GET /confluence/ex/confluence/{cloudId}/wiki/api/v2/pages
GET /confluence/ex/confluence/{cloudId}/wiki/api/v2/pages?space-id={spaceId}
GET /confluence/ex/confluence/{cloudId}/wiki/api/v2/pages?limit=25
```
#### Get Page
```bash
GET /confluence/ex/confluence/{cloudId}/wiki/api/v2/pages/{pageId}
GET /confluence/ex/confluence/{cloudId}/wiki/api/v2/pages/{pageId}?body-format=storage
```
#### Create Page
```bash
POST /confluence/ex/confluence/{cloudId}/wiki/api/v2/pages
Content-Type: application/json
{
"spaceId": "98306",
"status": "current",
"title": "Page Title",
"body": {
"representation": "storage",
"value": "<p>Page content</p>"
}
}
```
#### Update Page
```bash
PUT /confluence/ex/confluence/{cloudId}/wiki/api/v2/pages/{pageId}
Content-Type: application/json
{
"id": "98391",
"status": "current",
"title": "Updated Title",
"body": {
"representation": "storage",
"value": "<p>Updated content</p>"
},
"version": {"number": 2}
}
```
#### Delete Page
```bash
DELETE /confluence/ex/confluence/{cloudId}/wiki/api/v2/pages/{pageId}
```
#### Get Page Children
```bash
GET /confluence/ex/confluence/{cloudId}/wiki/api/v2/pages/{pageId}/children
```
#### Get Page Labels
```bash
GET /confluence/ex/confluence/{cloudId}/wiki/api/v2/pages/{pageId}/labels
```
#### Get Page Comments
```bash
GET /confluence/ex/confluence/{cloudId}/wiki/api/v2/pages/{pageId}/footer-comments
```
### Spaces
#### List Spaces
```bash
GET /confluence/ex/confluence/{cloudId}/wiki/api/v2/spaces
```
#### Get Space
```bash
GET /confluence/ex/confluence/{cloudId}/wiki/api/v2/spaces/{spaceId}
```
#### Get Space Pages
```bash
GET /confluence/ex/confluence/{cloudId}/wiki/api/v2/spaces/{spaceId}/pages
```
### Blogposts
#### List Blogposts
```bash
GET /confluence/ex/confluence/{cloudId}/wiki/api/v2/blogposts
```
#### Create Blogpost
```bash
POST /confluence/ex/confluence/{cloudId}/wiki/api/v2/blogposts
Content-Type: application/json
{
"spaceId": "98306",
"title": "Blog Post Title",
"body": {
"representation": "storage",
"value": "<p>Blog content</p>"
}
}
```
### Comments
#### List Footer Comments
```bash
GET /confluence/ex/confluence/{cloudId}/wiki/api/v2/footer-comments
```
#### Create Footer Comment
```bash
POST /confluence/ex/confluence/{cloudId}/wiki/api/v2/footer-comments
Content-Type: application/json
{
"pageId": "98391",
"body": {
"representation": "storage",
"value": "<p>Comment text</p>"
}
}
```
### Attachments
#### List Attachments
```bash
GET /confluence/ex/confluence/{cloudId}/wiki/api/v2/attachments
```
#### Get Page Attachments
```bash
GET /confluence/ex/confluence/{cloudId}/wiki/api/v2/pages/{pageId}/attachments
```
### Tasks
#### List Tasks
```bash
GET /confluence/ex/confluence/{cloudId}/wiki/api/v2/tasks
```
### User (V1 API)
#### Get Current User
```bash
GET /confluence/ex/confluence/{cloudId}/wiki/rest/api/user/current
```
## Notes
- Always fetch cloud ID first using `/oauth/token/accessible-resources`
- V2 API is recommended for most operations
- Content uses Confluence storage format (XML-like): `<p>Paragraph</p>`
- When updating pages, you must increment the version number
- DELETE operations return 204 No Content
- Pagination uses cursor-based approach with `_links.next` containing the cursor value
## Resources
- [Confluence REST API V2 Introduction](https://developer.atlassian.com/cloud/confluence/rest/v2/intro/)
- [Page Operations](https://developer.atlassian.com/cloud/confluence/rest/v2/api-group-page/)
- [Space Operations](https://developer.atlassian.com/cloud/confluence/rest/v2/api-group-space/)
- [Blogpost Operations](https://developer.atlassian.com/cloud/confluence/rest/v2/api-group-blog-post/)
- [Comment Operations](https://developer.atlassian.com/cloud/confluence/rest/v2/api-group-comment/)
- [Confluence Storage Format](https://confluence.atlassian.com/doc/confluence-storage-format-790796544.html)
@@ -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)
@@ -0,0 +1,162 @@
# Dropbox Business Routing Reference
**App name:** `dropbox-business`
**Base URL proxied:** `api.dropboxapi.com`
## API Path Pattern
```
/dropbox-business/2/{endpoint}
```
**Note:** Dropbox Business API uses POST for almost all endpoints, including read operations. Request bodies should be JSON (use `null` for endpoints with no parameters).
## Common Endpoints
### Team Information
#### Get Team Info
```bash
POST /dropbox-business/2/team/get_info
Content-Type: application/json
null
```
#### Get Team Features
```bash
POST /dropbox-business/2/team/features/get_values
Content-Type: application/json
{
"features": [{".tag": "upload_api_rate_limit"}]
}
```
### Team Members
#### List Members
```bash
POST /dropbox-business/2/team/members/list
Content-Type: application/json
{
"limit": 100
}
```
#### Get Member Info
```bash
POST /dropbox-business/2/team/members/get_info
Content-Type: application/json
{
"members": [{".tag": "email", "email": "user@company.com"}]
}
```
#### Add Member
```bash
POST /dropbox-business/2/team/members/add
Content-Type: application/json
{
"new_members": [{
"member_email": "user@company.com",
"member_given_name": "John",
"member_surname": "Doe"
}]
}
```
### Groups
#### List Groups
```bash
POST /dropbox-business/2/team/groups/list
Content-Type: application/json
{
"limit": 100
}
```
#### Create Group
```bash
POST /dropbox-business/2/team/groups/create
Content-Type: application/json
{
"group_name": "Team Name",
"group_management_type": {".tag": "company_managed"}
}
```
### Team Folders
#### List Team Folders
```bash
POST /dropbox-business/2/team/team_folder/list
Content-Type: application/json
{
"limit": 100
}
```
#### Create Team Folder
```bash
POST /dropbox-business/2/team/team_folder/create
Content-Type: application/json
{
"name": "Folder Name"
}
```
### Namespaces
#### List Namespaces
```bash
POST /dropbox-business/2/team/namespaces/list
Content-Type: application/json
{
"limit": 100
}
```
### Devices
#### List Members' Devices
```bash
POST /dropbox-business/2/team/devices/list_members_devices
Content-Type: application/json
{}
```
### Audit Log
#### Get Events
```bash
POST /dropbox-business/2/team_log/get_events
Content-Type: application/json
{
"limit": 100
}
```
## Notes
- All endpoints use POST method (even read operations)
- Request bodies must be JSON (use `null` for no-parameter endpoints)
- Many fields use `.tag` format for type indication
- Pagination uses `cursor` and `has_more` fields
- Requires team admin OAuth authorization
## Resources
- [Dropbox Business API Documentation](https://www.dropbox.com/developers/documentation/http/teams)
- [Team Administration Guide](https://developers.dropbox.com/dbx-team-administration-guide)
+204
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)
+117
View File
@@ -0,0 +1,117 @@
# ElevenLabs Routing Reference
**App name:** `elevenlabs`
**Base URL proxied:** `api.elevenlabs.io`
## API Path Pattern
```
/elevenlabs/v1/{resource}
```
## Common Endpoints
### Text-to-Speech
#### Convert Text to Speech
```bash
POST /elevenlabs/v1/text-to-speech/{voice_id}
```
#### Stream Text to Speech
```bash
POST /elevenlabs/v1/text-to-speech/{voice_id}/stream
```
### Voices
#### List Voices
```bash
GET /elevenlabs/v1/voices
```
#### Get Voice
```bash
GET /elevenlabs/v1/voices/{voice_id}
```
#### Create Voice Clone
```bash
POST /elevenlabs/v1/voices/add
```
#### Delete Voice
```bash
DELETE /elevenlabs/v1/voices/{voice_id}
```
### Models
#### List Models
```bash
GET /elevenlabs/v1/models
```
### User
#### Get User Info
```bash
GET /elevenlabs/v1/user
```
#### Get Subscription Info
```bash
GET /elevenlabs/v1/user/subscription
```
### History
#### List History
```bash
GET /elevenlabs/v1/history?page_size=100
```
#### Get Audio from History
```bash
GET /elevenlabs/v1/history/{history_item_id}/audio
```
### Sound Effects
#### Generate Sound Effect
```bash
POST /elevenlabs/v1/sound-generation
```
### Audio Isolation
#### Remove Background Noise
```bash
POST /elevenlabs/v1/audio-isolation
```
### Speech-to-Text
#### Transcribe Audio
```bash
POST /elevenlabs/v1/speech-to-text
```
### Speech-to-Speech
#### Convert Voice
```bash
POST /elevenlabs/v1/speech-to-speech/{voice_id}
```
## Notes
- Text-to-Speech returns audio/mpeg data
- Sound Effects returns audio/mpeg data
- Cursor-based pagination with `page_size` and `start_after_history_item_id`
- Response headers include `x-character-count` for usage tracking
- Models available: `eleven_multilingual_v2`, `eleven_turbo_v2_5`
## Resources
- [ElevenLabs API Documentation](https://elevenlabs.io/docs/api-reference)
+214
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)
+85
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)
+139
View File
@@ -0,0 +1,139 @@
# Firebase Routing Reference
**App name:** `firebase`
**Base URL proxied:** `firebase.googleapis.com`
## API Path Pattern
```
/firebase/v1beta1/{resource}
```
## Common Endpoints
### List Projects
```bash
GET /firebase/v1beta1/projects
```
### Get Project
```bash
GET /firebase/v1beta1/projects/{projectId}
```
### Update Project
```bash
PATCH /firebase/v1beta1/projects/{projectId}
Content-Type: application/json
{
"displayName": "Updated Project Name"
}
```
### List Available Projects
```bash
GET /firebase/v1beta1/availableProjects
```
### Add Firebase to Project
```bash
POST /firebase/v1beta1/projects/{projectId}:addFirebase
Content-Type: application/json
{}
```
### Get Admin SDK Config
```bash
GET /firebase/v1beta1/projects/{projectId}/adminSdkConfig
```
### List Web Apps
```bash
GET /firebase/v1beta1/projects/{projectId}/webApps
```
### Get Web App
```bash
GET /firebase/v1beta1/projects/{projectId}/webApps/{appId}
```
### Create Web App
```bash
POST /firebase/v1beta1/projects/{projectId}/webApps
Content-Type: application/json
{
"displayName": "My Web App"
}
```
### Get Web App Config
```bash
GET /firebase/v1beta1/projects/{projectId}/webApps/{appId}/config
```
### List Android Apps
```bash
GET /firebase/v1beta1/projects/{projectId}/androidApps
```
### Create Android App
```bash
POST /firebase/v1beta1/projects/{projectId}/androidApps
Content-Type: application/json
{
"displayName": "My Android App",
"packageName": "com.example.myapp"
}
```
### Get Android App Config
```bash
GET /firebase/v1beta1/projects/{projectId}/androidApps/{appId}/config
```
### List iOS Apps
```bash
GET /firebase/v1beta1/projects/{projectId}/iosApps
```
### Create iOS App
```bash
POST /firebase/v1beta1/projects/{projectId}/iosApps
Content-Type: application/json
{
"displayName": "My iOS App",
"bundleId": "com.example.myapp"
}
```
### Get iOS App Config
```bash
GET /firebase/v1beta1/projects/{projectId}/iosApps/{appId}/config
```
### Check Operation Status
```bash
GET /firebase/v1beta1/operations/{operationId}
```
## Notes
- Project IDs are globally unique identifiers for Firebase projects
- App IDs follow the format `1:PROJECT_NUMBER:PLATFORM:HASH`
- Create operations are asynchronous and return an Operation object
- Deleted apps can be restored within 30 days using the undelete endpoint
- Use `availableProjects` to list GCP projects that can have Firebase added
## Resources
- [Firebase Management API Overview](https://firebase.google.com/docs/projects/api/workflow_set-up-and-manage-project)
- [Firebase Management REST API Reference](https://firebase.google.com/docs/reference/firebase-management/rest)
- [Projects Resource](https://firebase.google.com/docs/reference/firebase-management/rest/v1beta1/projects)
- [Web Apps Resource](https://firebase.google.com/docs/reference/firebase-management/rest/v1beta1/projects.webApps)
- [Android Apps Resource](https://firebase.google.com/docs/reference/firebase-management/rest/v1beta1/projects.androidApps)
- [iOS Apps Resource](https://firebase.google.com/docs/reference/firebase-management/rest/v1beta1/projects.iosApps)
+103
View File
@@ -0,0 +1,103 @@
# Fireflies Routing Reference
**App name:** `fireflies`
**Base URL proxied:** `api.fireflies.ai`
## API Path Pattern
```
/fireflies/graphql
```
Fireflies uses GraphQL. All requests are POST to a single `/graphql` endpoint.
## GraphQL Queries
### User
```graphql
{ user { user_id name email is_admin } }
```
### Users
```graphql
{ users { user_id name email is_admin } }
```
### Transcripts
```graphql
{ transcripts { id title date duration host_email privacy } }
```
### Transcript by ID
```graphql
query($id: String!) {
transcript(id: $id) {
id title date duration
summary { overview action_items }
sentences { text speaker_name }
}
}
```
### Channels
```graphql
{ channels { id title created_at is_private } }
```
### Contacts
```graphql
{ contacts { email name picture last_meeting_date } }
```
### Bites
```graphql
{ bites { id name transcript_id summary status } }
```
### AskFred Threads
```graphql
{ askfred_threads { id title created_at } }
```
## GraphQL Mutations
### Upload Audio
```graphql
mutation($input: AudioUploadInput!) {
uploadAudio(input: $input) { success message }
}
```
### Delete Transcript
```graphql
mutation($id: String!) {
deleteTranscript(id: $id) { success }
}
```
### Update Meeting Title
```graphql
mutation($id: String!, $title: String!) {
updateMeetingTitle(id: $id, title: $title) { success }
}
```
### AskFred
```graphql
mutation($input: CreateAskFredThreadInput!) {
createAskFredThread(input: $input) { id title }
}
```
## Notes
- All requests are POST with Content-Type: application/json
- Request body: `{ "query": "...", "variables": {...} }`
- User IDs are ULIDs
- Rate limits: 50 calls/day (free), more on Business plan
- Summary field contains AI-generated content
## Resources
- [Fireflies API Documentation](https://docs.fireflies.ai/)
- [Fireflies GraphQL API](https://docs.fireflies.ai/graphql-api)
@@ -0,0 +1,160 @@
# GetResponse Routing Reference
**App name:** `getresponse`
**Base URL proxied:** `api.getresponse.com`
## API Path Pattern
```
/getresponse/v3/{resource}
```
## Common Endpoints
### Get Account Details
```bash
GET /getresponse/v3/accounts
```
### List Campaigns
```bash
GET /getresponse/v3/campaigns
```
Query parameters:
- `page` - Page number (starts at 1)
- `perPage` - Records per page (max 1000)
### Get Campaign
```bash
GET /getresponse/v3/campaigns/{campaignId}
```
### Create Campaign
```bash
POST /getresponse/v3/campaigns
Content-Type: application/json
{
"name": "My Campaign"
}
```
### List Contacts
```bash
GET /getresponse/v3/contacts?page=1&perPage=100
```
Query parameters:
- `query[campaignId]` - Filter by campaign
- `query[email]` - Filter by email
- `sort[createdOn]` - Sort by creation date (asc/desc)
### Get Contact
```bash
GET /getresponse/v3/contacts/{contactId}
```
### Create Contact
```bash
POST /getresponse/v3/contacts
Content-Type: application/json
{
"email": "user@example.com",
"name": "John Doe",
"campaign": {
"campaignId": "abc123"
}
}
```
### Update Contact
```bash
POST /getresponse/v3/contacts/{contactId}
Content-Type: application/json
{
"name": "Jane Doe"
}
```
### Delete Contact
```bash
DELETE /getresponse/v3/contacts/{contactId}
```
### List Custom Fields
```bash
GET /getresponse/v3/custom-fields
```
### List Tags
```bash
GET /getresponse/v3/tags
```
### Create Tag
```bash
POST /getresponse/v3/tags
Content-Type: application/json
{
"name": "VIP Customer"
}
```
### List Segments
```bash
GET /getresponse/v3/search-contacts
```
### Get Contacts from Segment
```bash
GET /getresponse/v3/search-contacts/{searchContactId}/contacts
```
### Send Newsletter
```bash
POST /getresponse/v3/newsletters
Content-Type: application/json
{
"subject": "Newsletter Subject",
"name": "Internal Name",
"campaign": {
"campaignId": "abc123"
},
"content": {
"html": "<html><body>Content</body></html>",
"plain": "Content"
},
"sendOn": "2026-02-15T10:00:00Z"
}
```
### List Autoresponders
```bash
GET /getresponse/v3/autoresponders
```
### List From Fields
```bash
GET /getresponse/v3/from-fields
```
## Notes
- Campaign IDs and Contact IDs are alphanumeric strings (e.g., "fZ0Xg", "VZ4Sa5g")
- Timestamps are in ISO 8601 format
- Field names use camelCase
- Use page-based pagination with `page` and `perPage` parameters
- Rate limits: 30,000 requests per 10 minutes, 80 requests per second
- "Campaigns" in GetResponse are equivalent to email lists/audiences
- "Search contacts" and "segments" refer to the same resource
## Resources
- [GetResponse API Documentation](https://apidocs.getresponse.com/v3)
- [GetResponse OpenAPI Spec](https://apireference.getresponse.com/open-api.json)
- [GetResponse Help Center](https://www.getresponse.com/help)
+125
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)
+172
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)
@@ -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)
@@ -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)
@@ -0,0 +1,180 @@
# Google BigQuery Routing Reference
**App name:** `google-bigquery`
**Base URL proxied:** `bigquery.googleapis.com`
## API Path Pattern
```
/google-bigquery/bigquery/v2/{resource}
```
## Common Endpoints
### List Projects
```bash
GET /google-bigquery/bigquery/v2/projects
```
### List Datasets
```bash
GET /google-bigquery/bigquery/v2/projects/{projectId}/datasets
```
### Get Dataset
```bash
GET /google-bigquery/bigquery/v2/projects/{projectId}/datasets/{datasetId}
```
### Create Dataset
```bash
POST /google-bigquery/bigquery/v2/projects/{projectId}/datasets
Content-Type: application/json
{
"datasetReference": {
"datasetId": "my_dataset",
"projectId": "{projectId}"
},
"location": "US"
}
```
### Delete Dataset
```bash
DELETE /google-bigquery/bigquery/v2/projects/{projectId}/datasets/{datasetId}
```
### List Tables
```bash
GET /google-bigquery/bigquery/v2/projects/{projectId}/datasets/{datasetId}/tables
```
### Get Table
```bash
GET /google-bigquery/bigquery/v2/projects/{projectId}/datasets/{datasetId}/tables/{tableId}
```
### Create Table
```bash
POST /google-bigquery/bigquery/v2/projects/{projectId}/datasets/{datasetId}/tables
Content-Type: application/json
{
"tableReference": {
"projectId": "{projectId}",
"datasetId": "{datasetId}",
"tableId": "my_table"
},
"schema": {
"fields": [
{"name": "id", "type": "INTEGER"},
{"name": "name", "type": "STRING"}
]
}
}
```
### Delete Table
```bash
DELETE /google-bigquery/bigquery/v2/projects/{projectId}/datasets/{datasetId}/tables/{tableId}
```
### List Table Data
```bash
GET /google-bigquery/bigquery/v2/projects/{projectId}/datasets/{datasetId}/tables/{tableId}/data
```
### Run Query (Synchronous)
```bash
POST /google-bigquery/bigquery/v2/projects/{projectId}/queries
Content-Type: application/json
{
"query": "SELECT * FROM `dataset.table` LIMIT 10",
"useLegacySql": false
}
```
### List Jobs
```bash
GET /google-bigquery/bigquery/v2/projects/{projectId}/jobs
```
### Get Job
```bash
GET /google-bigquery/bigquery/v2/projects/{projectId}/jobs/{jobId}?location=US
```
### Cancel Job
```bash
POST /google-bigquery/bigquery/v2/projects/{projectId}/jobs/{jobId}/cancel?location=US
```
## Query Examples
### Simple Query
```json
{
"query": "SELECT 1 as test",
"useLegacySql": false
}
```
### Query with Parameters
```json
{
"query": "SELECT * FROM `dataset.table` WHERE id = @id",
"useLegacySql": false,
"queryParameters": [
{
"name": "id",
"parameterType": {"type": "INT64"},
"parameterValue": {"value": "123"}
}
]
}
```
### Query to Destination Table
```json
{
"query": "SELECT * FROM `source_dataset.source_table`",
"useLegacySql": false,
"destinationTable": {
"projectId": "my-project",
"datasetId": "dest_dataset",
"tableId": "dest_table"
},
"writeDisposition": "WRITE_TRUNCATE"
}
```
## Common Schema Types
- `STRING` - Text data
- `INTEGER` - 64-bit signed integer
- `FLOAT` - 64-bit floating point
- `BOOLEAN` - True/false
- `TIMESTAMP` - Point in time
- `DATE` - Calendar date
- `RECORD` - Nested structure
## Notes
- Authentication is automatic - the router injects the OAuth token
- Project IDs are strings like `my-project-123`
- Dataset and table IDs: letters, numbers, underscores only
- Query results use `f` (fields) and `v` (value) structure
- Use `useLegacySql: false` for standard SQL
- Streaming inserts require BigQuery paid tier
- Jobs include location in their reference (US, EU, etc.)
- Use `maxResults` and `pageToken` for pagination
## Resources
- [BigQuery API Overview](https://cloud.google.com/bigquery/docs/reference/rest)
- [Datasets](https://cloud.google.com/bigquery/docs/reference/rest/v2/datasets)
- [Tables](https://cloud.google.com/bigquery/docs/reference/rest/v2/tables)
- [Jobs](https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs)
- [Standard SQL Reference](https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax)
@@ -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)
@@ -0,0 +1,144 @@
# Google Classroom Routing Reference
**App name:** `google-classroom`
**Base URL proxied:** `classroom.googleapis.com`
## API Path Pattern
```
/google-classroom/v1/{resource}
```
## Common Endpoints
### Courses
#### List Courses
```bash
GET /google-classroom/v1/courses
GET /google-classroom/v1/courses?courseStates=ACTIVE
GET /google-classroom/v1/courses?teacherId=me
```
#### Get Course
```bash
GET /google-classroom/v1/courses/{courseId}
```
#### Create Course
```bash
POST /google-classroom/v1/courses
Content-Type: application/json
{
"name": "Course Name",
"ownerId": "me"
}
```
#### Update Course
```bash
PATCH /google-classroom/v1/courses/{courseId}?updateMask=name
Content-Type: application/json
{
"name": "Updated Name"
}
```
#### Delete Course
```bash
DELETE /google-classroom/v1/courses/{courseId}
```
### Course Work
#### List Course Work
```bash
GET /google-classroom/v1/courses/{courseId}/courseWork
```
#### Create Course Work
```bash
POST /google-classroom/v1/courses/{courseId}/courseWork
Content-Type: application/json
{
"title": "Assignment Title",
"workType": "ASSIGNMENT",
"state": "PUBLISHED",
"maxPoints": 100
}
```
### Student Submissions
#### List Submissions
```bash
GET /google-classroom/v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions
```
### Teachers & Students
#### List Teachers
```bash
GET /google-classroom/v1/courses/{courseId}/teachers
```
#### List Students
```bash
GET /google-classroom/v1/courses/{courseId}/students
```
### Announcements
#### List Announcements
```bash
GET /google-classroom/v1/courses/{courseId}/announcements
```
#### Create Announcement
```bash
POST /google-classroom/v1/courses/{courseId}/announcements
Content-Type: application/json
{
"text": "Announcement text",
"state": "PUBLISHED"
}
```
### Topics
#### List Topics
```bash
GET /google-classroom/v1/courses/{courseId}/topics
```
### User Profiles
#### Get Current User
```bash
GET /google-classroom/v1/userProfiles/me
```
### Invitations
#### List Invitations
```bash
GET /google-classroom/v1/invitations?courseId={courseId}
```
## Notes
- PATCH requests require `updateMask` query parameter
- Courses must be archived before deletion
- Student submissions require course work to be in PUBLISHED state
- Use `me` for current user ID
- Pagination uses `pageToken` parameter
## Resources
- [Google Classroom API Documentation](https://developers.google.com/workspace/classroom/reference/rest)
- [Courses Reference](https://developers.google.com/workspace/classroom/reference/rest/v1/courses)
- [CourseWork Reference](https://developers.google.com/workspace/classroom/reference/rest/v1/courses.courseWork)
@@ -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)
@@ -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)
@@ -0,0 +1,213 @@
# 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"
}
```
## File Uploads
Upload endpoints use a different path pattern: `/google-drive/upload/drive/v3/files`
### Simple Upload (up to 5MB)
```bash
POST /google-drive/upload/drive/v3/files?uploadType=media
Content-Type: text/plain
<file content>
```
### Multipart Upload (with metadata, up to 5MB)
```bash
POST /google-drive/upload/drive/v3/files?uploadType=multipart
Content-Type: multipart/related; boundary=boundary
--boundary
Content-Type: application/json
{"name": "myfile.txt"}
--boundary
Content-Type: text/plain
<file content>
--boundary--
```
### Resumable Upload (for large files)
```bash
# Step 1: Initiate session
POST /google-drive/upload/drive/v3/files?uploadType=resumable
Content-Type: application/json
X-Upload-Content-Type: application/octet-stream
X-Upload-Content-Length: <file_size>
{"name": "large_file.bin"}
# Response includes Location header with upload URI
# Step 2: Upload content to that URI
```
### Update File Content
```bash
PATCH /google-drive/upload/drive/v3/files/{fileId}?uploadType=media
Content-Type: text/plain
<new file content>
```
## 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`
- Upload endpoints use `/upload/drive/v3/files` path (note the `/upload` prefix)
- Use `uploadType=resumable` for files larger than 5MB
- Resumable uploads support chunking (256KB minimum, 5MB recommended)
## 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)
- [Upload Files](https://developers.google.com/drive/api/guides/manage-uploads)
- [Resumable Uploads](https://developers.google.com/drive/api/guides/manage-uploads#resumable)
- [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)
@@ -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)
@@ -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)
@@ -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)
@@ -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)
@@ -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)
@@ -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)
@@ -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)
@@ -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)
@@ -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)
@@ -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
+147
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)
+357
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)
+188
View File
@@ -0,0 +1,188 @@
# Instantly Routing Reference
**App name:** `instantly`
**Base URL proxied:** `api.instantly.ai`
## API Path Pattern
```
/instantly/api/v2/{resource}
```
## Common Endpoints
### Campaigns
#### List Campaigns
```bash
GET /instantly/api/v2/campaigns?limit=10
```
#### Get Campaign
```bash
GET /instantly/api/v2/campaigns/{campaign_id}
```
#### Create Campaign
```bash
POST /instantly/api/v2/campaigns
```
#### Activate Campaign
```bash
POST /instantly/api/v2/campaigns/{campaign_id}/activate
```
#### Pause Campaign
```bash
POST /instantly/api/v2/campaigns/{campaign_id}/pause
```
#### Delete Campaign
```bash
DELETE /instantly/api/v2/campaigns/{campaign_id}
```
#### Get Campaign Analytics
```bash
GET /instantly/api/v2/campaigns/analytics?id={campaign_id}
```
### Leads
#### Create Lead
```bash
POST /instantly/api/v2/leads
```
#### List Leads (POST due to complex filtering)
```bash
POST /instantly/api/v2/leads/list
```
#### Get Lead
```bash
GET /instantly/api/v2/leads/{lead_id}
```
#### Delete Lead
```bash
DELETE /instantly/api/v2/leads/{lead_id}
```
### Lead Lists
#### List Lead Lists
```bash
GET /instantly/api/v2/lead-lists?limit=10
```
#### Create Lead List
```bash
POST /instantly/api/v2/lead-lists
```
#### Get Lead List
```bash
GET /instantly/api/v2/lead-lists/{list_id}
```
#### Update Lead List
```bash
PATCH /instantly/api/v2/lead-lists/{list_id}
```
#### Delete Lead List
```bash
DELETE /instantly/api/v2/lead-lists/{list_id}
```
### Accounts (Sending Email Accounts)
#### List Accounts
```bash
GET /instantly/api/v2/accounts?limit=10
```
#### Get Account
```bash
GET /instantly/api/v2/accounts/{email}
```
#### Create Account
```bash
POST /instantly/api/v2/accounts
```
#### Update Account
```bash
PATCH /instantly/api/v2/accounts/{email}
```
#### Delete Account
```bash
DELETE /instantly/api/v2/accounts/{email}
```
#### Enable Warmup
```bash
POST /instantly/api/v2/accounts/warmup/enable
```
#### Disable Warmup
```bash
POST /instantly/api/v2/accounts/warmup/disable
```
### Emails (Unibox)
#### List Emails
```bash
GET /instantly/api/v2/emails?limit=20
```
#### Reply to Email
```bash
POST /instantly/api/v2/emails/reply
```
#### Forward Email
```bash
POST /instantly/api/v2/emails/forward
```
### Block List
#### List Block List Entries
```bash
GET /instantly/api/v2/block-lists-entries?limit=100
```
#### Create Block List Entry
```bash
POST /instantly/api/v2/block-lists-entries
```
#### Delete Block List Entry
```bash
DELETE /instantly/api/v2/block-lists-entries/{entry_id}
```
### Workspace
#### Get Current Workspace
```bash
GET /instantly/api/v2/workspaces/current
```
## Notes
- API v2 uses snake_case for all field names
- Campaign timezone must use Etc/GMT format (e.g., "Etc/GMT+5")
- List Leads is POST (not GET) due to complex filtering
- Cursor-based pagination with `limit` and `starting_after`
- Campaign status: 0=draft, 1=active, 2=paused, 3=completed
## Resources
- [Instantly API V2 Documentation](https://developer.instantly.ai/api/v2)
+181
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/)
+168
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)
+190
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)
+190
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/)
+221
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)
+237
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)
+169
View File
@@ -0,0 +1,169 @@
# Lemlist Routing Reference
**App name:** `lemlist`
**Base URL proxied:** `api.lemlist.com`
## API Path Pattern
```
/lemlist/api/{resource}
```
## Common Endpoints
### Team
#### Get Team
```bash
GET /lemlist/api/team
```
#### Get Team Credits
```bash
GET /lemlist/api/team/credits
```
#### Get Team Senders
```bash
GET /lemlist/api/team/senders
```
### Campaigns
#### List Campaigns
```bash
GET /lemlist/api/campaigns
```
#### Create Campaign
```bash
POST /lemlist/api/campaigns
```
#### Get Campaign
```bash
GET /lemlist/api/campaigns/{campaignId}
```
#### Update Campaign
```bash
PATCH /lemlist/api/campaigns/{campaignId}
```
#### Pause Campaign
```bash
POST /lemlist/api/campaigns/{campaignId}/pause
```
### Campaign Sequences
#### Get Campaign Sequences
```bash
GET /lemlist/api/campaigns/{campaignId}/sequences
```
### Campaign Schedules
#### Get Campaign Schedules
```bash
GET /lemlist/api/campaigns/{campaignId}/schedules
```
### Leads
#### Add Lead to Campaign
```bash
POST /lemlist/api/campaigns/{campaignId}/leads
```
#### Get Lead by Email
```bash
GET /lemlist/api/leads/{email}
```
#### Update Lead in Campaign
```bash
PATCH /lemlist/api/campaigns/{campaignId}/leads/{email}
```
#### Delete Lead from Campaign
```bash
DELETE /lemlist/api/campaigns/{campaignId}/leads/{email}
```
### Activities
#### List Activities
```bash
GET /lemlist/api/activities
```
Query parameters:
- `campaignId` - Filter by campaign
- `type` - Filter by activity type
### Schedules
#### List Schedules
```bash
GET /lemlist/api/schedules
```
#### Create Schedule
```bash
POST /lemlist/api/schedules
```
#### Get Schedule
```bash
GET /lemlist/api/schedules/{scheduleId}
```
#### Update Schedule
```bash
PATCH /lemlist/api/schedules/{scheduleId}
```
#### Delete Schedule
```bash
DELETE /lemlist/api/schedules/{scheduleId}
```
### Companies
#### List Companies
```bash
GET /lemlist/api/companies
```
### Unsubscribes
#### List Unsubscribes
```bash
GET /lemlist/api/unsubscribes
```
#### Add Unsubscribe
```bash
POST /lemlist/api/unsubscribes
```
### Inbox Labels
#### List Labels
```bash
GET /lemlist/api/inbox/labels
```
## Notes
- Campaign IDs start with `cam_`
- Lead IDs start with `lea_`
- Schedule IDs start with `skd_`
- Campaigns cannot be deleted via API (only paused)
- Lead emails are used as identifiers for lead operations
- Rate limit: 20 requests per 2 seconds per API key
## Resources
- [Lemlist API Documentation](https://developer.lemlist.com/)
+203
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)
+254
View File
@@ -0,0 +1,254 @@
# LinkedIn Routing Reference
**App name:** `linkedin`
**Base URL proxied:** `api.linkedin.com`
## API Path Pattern
```
/linkedin/rest/{resource}
```
## Required Headers
```
LinkedIn-Version: 202506
```
## Common Endpoints
### Get Current User Profile
```bash
GET /linkedin/rest/me
LinkedIn-Version: 202506
```
### Create Text Post
```bash
POST /linkedin/rest/posts
Content-Type: application/json
LinkedIn-Version: 202506
{
"author": "urn:li:person:{personId}",
"lifecycleState": "PUBLISHED",
"visibility": "PUBLIC",
"commentary": "Hello LinkedIn!",
"distribution": {
"feedDistribution": "MAIN_FEED"
}
}
```
### Create Article/URL Share
```bash
POST /linkedin/rest/posts
Content-Type: application/json
LinkedIn-Version: 202506
{
"author": "urn:li:person:{personId}",
"lifecycleState": "PUBLISHED",
"visibility": "PUBLIC",
"commentary": "Check this out!",
"distribution": {
"feedDistribution": "MAIN_FEED"
},
"content": {
"article": {
"source": "https://example.com",
"title": "Title",
"description": "Description"
}
}
}
```
### Initialize Image Upload
```bash
POST /linkedin/rest/images?action=initializeUpload
Content-Type: application/json
LinkedIn-Version: 202506
{
"initializeUploadRequest": {
"owner": "urn:li:person:{personId}"
}
}
```
### Ad Library - Search Ads
```bash
GET /linkedin/rest/adLibrary?q=criteria&keyword=linkedin
LinkedIn-Version: 202506
```
### Job Library - Search Jobs
```bash
GET /linkedin/rest/jobLibrary?q=criteria&keyword=software
LinkedIn-Version: 202506
```
## Marketing API (Advertising)
Required headers for all Marketing API calls:
```
LinkedIn-Version: 202506
```
### 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/rest/organizationAcls?q=roleAssignee
LinkedIn-Version: 202506
```
### 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
### Initialize Image Upload
```bash
POST /linkedin/rest/images?action=initializeUpload
Content-Type: application/json
LinkedIn-Version: 202506
{"initializeUploadRequest": {"owner": "urn:li:person:{personId}"}}
```
### Initialize Video Upload
```bash
POST /linkedin/rest/videos?action=initializeUpload
Content-Type: application/json
LinkedIn-Version: 202506
{"initializeUploadRequest": {"owner": "urn:li:person:{personId}", "fileSizeBytes": 10000000}}
```
### Initialize Document Upload
```bash
POST /linkedin/rest/documents?action=initializeUpload
Content-Type: application/json
LinkedIn-Version: 202506
{"initializeUploadRequest": {"owner": "urn:li:person:{personId}"}}
```
## Ad Targeting
### Get Targeting Facets
```bash
GET /linkedin/rest/adTargetingFacets
LinkedIn-Version: 202506
```
Returns 31 targeting facets (skills, industries, titles, locations, etc.)
## Notes
- Authentication is automatic - the router injects the OAuth token
- Include `LinkedIn-Version: 202506` header for all REST API calls
- Author URN format: `urn:li:person:{personId}`
- Get person ID from `/rest/me` endpoint
- Image uploads are 3-step: initialize, 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)
+213
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/)
+238
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)
+294
View File
@@ -0,0 +1,294 @@
# Mailgun Routing Reference
**App name:** `mailgun`
**Base URL proxied:** `api.mailgun.net`
## API Path Pattern
```
/mailgun/v3/{resource}
```
## Common Endpoints
### Domains
#### List Domains
```bash
GET /mailgun/v3/domains
```
#### Get Domain
```bash
GET /mailgun/v3/domains/{domain_name}
```
#### Create Domain
```bash
POST /mailgun/v3/domains
```
#### Delete Domain
```bash
DELETE /mailgun/v3/domains/{domain_name}
```
### Messages
#### Send Message
```bash
POST /mailgun/v3/{domain_name}/messages
```
#### Send MIME Message
```bash
POST /mailgun/v3/{domain_name}/messages.mime
```
### Events
#### List Events
```bash
GET /mailgun/v3/{domain_name}/events
```
### Routes
#### List Routes
```bash
GET /mailgun/v3/routes
```
#### Create Route
```bash
POST /mailgun/v3/routes
```
#### Get Route
```bash
GET /mailgun/v3/routes/{route_id}
```
#### Update Route
```bash
PUT /mailgun/v3/routes/{route_id}
```
#### Delete Route
```bash
DELETE /mailgun/v3/routes/{route_id}
```
### Webhooks
#### List Webhooks
```bash
GET /mailgun/v3/domains/{domain_name}/webhooks
```
#### Create Webhook
```bash
POST /mailgun/v3/domains/{domain_name}/webhooks
```
#### Get Webhook
```bash
GET /mailgun/v3/domains/{domain_name}/webhooks/{webhook_type}
```
#### Update Webhook
```bash
PUT /mailgun/v3/domains/{domain_name}/webhooks/{webhook_type}
```
#### Delete Webhook
```bash
DELETE /mailgun/v3/domains/{domain_name}/webhooks/{webhook_type}
```
### Templates
#### List Templates
```bash
GET /mailgun/v3/{domain_name}/templates
```
#### Create Template
```bash
POST /mailgun/v3/{domain_name}/templates
```
#### Get Template
```bash
GET /mailgun/v3/{domain_name}/templates/{template_name}
```
#### Delete Template
```bash
DELETE /mailgun/v3/{domain_name}/templates/{template_name}
```
### Mailing Lists
#### List Mailing Lists
```bash
GET /mailgun/v3/lists/pages
```
#### Create Mailing List
```bash
POST /mailgun/v3/lists
```
#### Get Mailing List
```bash
GET /mailgun/v3/lists/{list_address}
```
#### Update Mailing List
```bash
PUT /mailgun/v3/lists/{list_address}
```
#### Delete Mailing List
```bash
DELETE /mailgun/v3/lists/{list_address}
```
### Mailing List Members
#### List Members
```bash
GET /mailgun/v3/lists/{list_address}/members/pages
```
#### Add Member
```bash
POST /mailgun/v3/lists/{list_address}/members
```
#### Get Member
```bash
GET /mailgun/v3/lists/{list_address}/members/{member_address}
```
#### Update Member
```bash
PUT /mailgun/v3/lists/{list_address}/members/{member_address}
```
#### Delete Member
```bash
DELETE /mailgun/v3/lists/{list_address}/members/{member_address}
```
### Suppressions
#### Bounces
```bash
GET /mailgun/v3/{domain_name}/bounces
POST /mailgun/v3/{domain_name}/bounces
GET /mailgun/v3/{domain_name}/bounces/{address}
DELETE /mailgun/v3/{domain_name}/bounces/{address}
```
#### Unsubscribes
```bash
GET /mailgun/v3/{domain_name}/unsubscribes
POST /mailgun/v3/{domain_name}/unsubscribes
DELETE /mailgun/v3/{domain_name}/unsubscribes/{address}
```
#### Complaints
```bash
GET /mailgun/v3/{domain_name}/complaints
POST /mailgun/v3/{domain_name}/complaints
DELETE /mailgun/v3/{domain_name}/complaints/{address}
```
#### Whitelists
```bash
GET /mailgun/v3/{domain_name}/whitelists
POST /mailgun/v3/{domain_name}/whitelists
DELETE /mailgun/v3/{domain_name}/whitelists/{address}
```
### Statistics
#### Get Stats
```bash
GET /mailgun/v3/{domain_name}/stats/total?event=delivered
```
### Tags
#### List Tags
```bash
GET /mailgun/v3/{domain_name}/tags
```
#### Get Tag
```bash
GET /mailgun/v3/{domain_name}/tags/{tag_name}
```
#### Delete Tag
```bash
DELETE /mailgun/v3/{domain_name}/tags/{tag_name}
```
### IPs
#### List IPs
```bash
GET /mailgun/v3/ips
```
#### Get IP
```bash
GET /mailgun/v3/ips/{ip_address}
```
### Domain Tracking
#### Get Tracking Settings
```bash
GET /mailgun/v3/domains/{domain_name}/tracking
```
#### Update Tracking
```bash
PUT /mailgun/v3/domains/{domain_name}/tracking/open
PUT /mailgun/v3/domains/{domain_name}/tracking/click
PUT /mailgun/v3/domains/{domain_name}/tracking/unsubscribe
```
### Credentials
#### List Credentials
```bash
GET /mailgun/v3/domains/{domain_name}/credentials
```
#### Create Credential
```bash
POST /mailgun/v3/domains/{domain_name}/credentials
```
#### Delete Credential
```bash
DELETE /mailgun/v3/domains/{domain_name}/credentials/{login}
```
## Notes
- Mailgun uses `application/x-www-form-urlencoded` for POST/PUT requests, not JSON
- Routes are global (per account), not per domain
- Sandbox domains require authorized recipients
- Event logs stored for at least 3 days
- Stats require at least one `event` parameter
- US region: api.mailgun.net, EU region: api.eu.mailgun.net
## Resources
- [Mailgun API Documentation](https://documentation.mailgun.com/docs/mailgun/api-reference/api-overview)
+212
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)
@@ -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)
@@ -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)
+207
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)
+170
View File
@@ -0,0 +1,170 @@
# Motion Routing Reference
**App name:** `motion`
**Base URL proxied:** `api.usemotion.com`
## API Path Pattern
```
/motion/v1/{resource}
```
## Common Endpoints
### Get Current User
```bash
GET /motion/v1/users/me
```
### List Workspaces
```bash
GET /motion/v1/workspaces
```
### List Tasks
```bash
GET /motion/v1/tasks
GET /motion/v1/tasks?workspaceId={workspaceId}
GET /motion/v1/tasks?projectId={projectId}
```
### Get Task
```bash
GET /motion/v1/tasks/{taskId}
```
### Create Task
```bash
POST /motion/v1/tasks
Content-Type: application/json
{
"name": "Task name",
"workspaceId": "ws_xxx",
"priority": "HIGH",
"duration": 30
}
```
### Update Task
```bash
PATCH /motion/v1/tasks/{taskId}
Content-Type: application/json
{
"name": "Updated name",
"priority": "LOW"
}
```
### Delete Task
```bash
DELETE /motion/v1/tasks/{taskId}
```
### Move Task
```bash
POST /motion/v1/tasks/{taskId}/move
Content-Type: application/json
{
"workspaceId": "ws_new"
}
```
### Unassign Task
```bash
POST /motion/v1/tasks/{taskId}/unassign
```
### List Projects
```bash
GET /motion/v1/projects?workspaceId={workspaceId}
```
### Get Project
```bash
GET /motion/v1/projects/{projectId}
```
### Create Project
```bash
POST /motion/v1/projects
Content-Type: application/json
{
"name": "Project name",
"workspaceId": "ws_xxx",
"priority": "HIGH"
}
```
### List Users
```bash
GET /motion/v1/users?workspaceId={workspaceId}
```
### List Comments
```bash
GET /motion/v1/comments?taskId={taskId}
```
### Create Comment
```bash
POST /motion/v1/comments
Content-Type: application/json
{
"taskId": "tk_xxx",
"content": "Comment text"
}
```
### List Recurring Tasks
```bash
GET /motion/v1/recurring-tasks?workspaceId={workspaceId}
```
### Create Recurring Task
```bash
POST /motion/v1/recurring-tasks
Content-Type: application/json
{
"name": "Weekly review",
"workspaceId": "ws_xxx",
"frequency": "weekly"
}
```
### Delete Recurring Task
```bash
DELETE /motion/v1/recurring-tasks/{recurringTaskId}
```
### List Schedules
```bash
GET /motion/v1/schedules
```
### List Statuses
```bash
GET /motion/v1/statuses?workspaceId={workspaceId}
```
## Notes
- Workspace IDs start with `ws_`
- Task IDs start with `tk_`
- Project IDs start with `pr_`
- Timestamps are in ISO 8601 format
- Priority values: ASAP, HIGH, MEDIUM, LOW
- Deadline types: HARD, SOFT, NONE
- Cursor-based pagination with `cursor` query parameter
- `workspaceId` is required for listing projects, users, recurring tasks, and statuses
## Resources
- [Motion API Documentation](https://docs.usemotion.com/)
- [Motion API Reference](https://docs.usemotion.com/api-reference)
- [Motion Cookbooks](https://docs.usemotion.com/cookbooks/getting-started)
+158
View File
@@ -0,0 +1,158 @@
# Netlify Routing Reference
**App name:** `netlify`
**Base URL proxied:** `api.netlify.com`
## API Path Pattern
```
/netlify/api/v1/{resource}
```
## Common Endpoints
### User
```bash
GET /netlify/api/v1/user
```
### Accounts
```bash
GET /netlify/api/v1/accounts
GET /netlify/api/v1/accounts/{account_id}
POST /netlify/api/v1/accounts
PUT /netlify/api/v1/accounts/{account_id}
```
### Sites
```bash
GET /netlify/api/v1/sites
GET /netlify/api/v1/sites/{site_id}
POST /netlify/api/v1/sites
PUT /netlify/api/v1/sites/{site_id}
DELETE /netlify/api/v1/sites/{site_id}
PUT /netlify/api/v1/sites/{site_id}/disable
PUT /netlify/api/v1/sites/{site_id}/enable
GET /netlify/api/v1/{account_slug}/sites
POST /netlify/api/v1/{account_slug}/sites
```
### Deploys
```bash
GET /netlify/api/v1/sites/{site_id}/deploys
GET /netlify/api/v1/deploys/{deploy_id}
POST /netlify/api/v1/sites/{site_id}/deploys
POST /netlify/api/v1/sites/{site_id}/deploys/{deploy_id}/cancel
POST /netlify/api/v1/sites/{site_id}/deploys/{deploy_id}/restore
POST /netlify/api/v1/deploys/{deploy_id}/lock
POST /netlify/api/v1/deploys/{deploy_id}/unlock
```
### Builds
```bash
GET /netlify/api/v1/sites/{site_id}/builds
GET /netlify/api/v1/builds/{build_id}
POST /netlify/api/v1/sites/{site_id}/builds
```
### Environment Variables
Environment variables are managed at the account level with optional site scope.
```bash
GET /netlify/api/v1/accounts/{account_id}/env?site_id={site_id}
POST /netlify/api/v1/accounts/{account_id}/env?site_id={site_id}
PUT /netlify/api/v1/accounts/{account_id}/env/{key}?site_id={site_id}
DELETE /netlify/api/v1/accounts/{account_id}/env/{key}?site_id={site_id}
```
### DNS Zones
```bash
GET /netlify/api/v1/dns_zones
GET /netlify/api/v1/dns_zones/{zone_id}
POST /netlify/api/v1/dns_zones
DELETE /netlify/api/v1/dns_zones/{zone_id}
```
### DNS Records
```bash
GET /netlify/api/v1/dns_zones/{zone_id}/dns_records
POST /netlify/api/v1/dns_zones/{zone_id}/dns_records
DELETE /netlify/api/v1/dns_zones/{zone_id}/dns_records/{record_id}
```
### Build Hooks
```bash
GET /netlify/api/v1/sites/{site_id}/build_hooks
POST /netlify/api/v1/sites/{site_id}/build_hooks
DELETE /netlify/api/v1/hooks/{hook_id}
```
### Webhooks
```bash
GET /netlify/api/v1/hooks?site_id={site_id}
POST /netlify/api/v1/hooks?site_id={site_id}
PUT /netlify/api/v1/hooks/{hook_id}
DELETE /netlify/api/v1/hooks/{hook_id}
```
### Forms & Submissions
```bash
GET /netlify/api/v1/sites/{site_id}/forms
GET /netlify/api/v1/forms/{form_id}/submissions
DELETE /netlify/api/v1/submissions/{submission_id}
```
### Team Members
```bash
GET /netlify/api/v1/{account_slug}/members
POST /netlify/api/v1/{account_slug}/members
GET /netlify/api/v1/{account_slug}/members/{member_id}
PUT /netlify/api/v1/{account_slug}/members/{member_id}
DELETE /netlify/api/v1/{account_slug}/members/{member_id}
```
### SSL/TLS
```bash
GET /netlify/api/v1/sites/{site_id}/ssl
POST /netlify/api/v1/sites/{site_id}/ssl
```
### Functions
```bash
GET /netlify/api/v1/sites/{site_id}/functions
```
### Services
```bash
GET /netlify/api/v1/services
GET /netlify/api/v1/services/{service_id}
```
## Notes
- All endpoints use the `/api/v1/` prefix
- Site IDs are UUIDs (e.g., `d37d1ce4-5444-40f5-a4ca-a2c40a8b6835`)
- Account slugs are URL-friendly team names (e.g., `my-team-slug`)
- Pagination via `page` and `per_page` query parameters
- Environment variable contexts: `all`, `production`, `deploy-preview`, `branch-deploy`, `dev`
- Build hooks return a URL that can be POSTed to trigger builds externally
## Resources
- [Netlify API Documentation](https://docs.netlify.com/api/get-started/)
- [Netlify OpenAPI Spec](https://open-api.netlify.com)
+345
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)
+118
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)
+238
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)
+319
View File
@@ -0,0 +1,319 @@
# PDF.co Routing Reference
**App name:** `pdf-co`
**Base URL proxied:** `api.pdf.co`
## API Path Pattern
```
/pdf-co/v1/{endpoint}
```
## Common Endpoints
### PDF Information
```bash
POST /pdf-co/v1/pdf/info
Content-Type: application/json
{
"url": "https://example.com/document.pdf"
}
```
### Convert PDF to Text
```bash
POST /pdf-co/v1/pdf/convert/to/text
Content-Type: application/json
{
"url": "https://example.com/document.pdf",
"pages": "0-",
"inline": true
}
```
### Convert PDF to CSV
```bash
POST /pdf-co/v1/pdf/convert/to/csv
Content-Type: application/json
{
"url": "https://example.com/document.pdf",
"pages": "0-",
"inline": true
}
```
### Convert PDF to JSON
```bash
POST /pdf-co/v1/pdf/convert/to/json
Content-Type: application/json
{
"url": "https://example.com/document.pdf",
"inline": true
}
```
### Convert PDF to HTML
```bash
POST /pdf-co/v1/pdf/convert/to/html
Content-Type: application/json
{
"url": "https://example.com/document.pdf",
"name": "output.html"
}
```
### Convert PDF to XLSX (Excel)
```bash
POST /pdf-co/v1/pdf/convert/to/xlsx
Content-Type: application/json
{
"url": "https://example.com/document.pdf",
"name": "output.xlsx"
}
```
### Convert PDF to PNG
```bash
POST /pdf-co/v1/pdf/convert/to/png
Content-Type: application/json
{
"url": "https://example.com/document.pdf",
"pages": "0",
"name": "page.png"
}
```
### Convert PDF to JPG
```bash
POST /pdf-co/v1/pdf/convert/to/jpg
Content-Type: application/json
{
"url": "https://example.com/document.pdf",
"pages": "0",
"name": "page.jpg"
}
```
### Convert HTML to PDF
```bash
POST /pdf-co/v1/pdf/convert/from/html
Content-Type: application/json
{
"html": "<html><body><h1>Hello World</h1></body></html>",
"name": "output.pdf",
"paperSize": "Letter",
"orientation": "Portrait"
}
```
### Convert URL to PDF
```bash
POST /pdf-co/v1/pdf/convert/from/url
Content-Type: application/json
{
"url": "https://example.com",
"name": "webpage.pdf"
}
```
### Merge PDFs
```bash
POST /pdf-co/v1/pdf/merge
Content-Type: application/json
{
"url": "https://example.com/doc1.pdf,https://example.com/doc2.pdf",
"name": "merged.pdf"
}
```
### Split PDF
```bash
POST /pdf-co/v1/pdf/split
Content-Type: application/json
{
"url": "https://example.com/document.pdf",
"pages": "1-3,4-6,7-"
}
```
### Delete Pages
```bash
POST /pdf-co/v1/pdf/edit/delete-pages
Content-Type: application/json
{
"url": "https://example.com/document.pdf",
"pages": "2,4,6"
}
```
### Add Text and Images
```bash
POST /pdf-co/v1/pdf/edit/add
Content-Type: application/json
{
"url": "https://example.com/document.pdf",
"name": "annotated.pdf",
"annotations": [
{
"text": "CONFIDENTIAL",
"x": 100,
"y": 100,
"size": 24,
"pages": "0-"
}
]
}
```
### Search and Replace Text
```bash
POST /pdf-co/v1/pdf/edit/replace-text
Content-Type: application/json
{
"url": "https://example.com/document.pdf",
"searchString": "old text",
"replaceString": "new text"
}
```
### Search and Delete Text
```bash
POST /pdf-co/v1/pdf/edit/delete-text
Content-Type: application/json
{
"url": "https://example.com/document.pdf",
"searchString": "text to remove"
}
```
### Add Password
```bash
POST /pdf-co/v1/pdf/security/add
Content-Type: application/json
{
"url": "https://example.com/document.pdf",
"ownerPassword": "owner123",
"userPassword": "user456"
}
```
### Remove Password
```bash
POST /pdf-co/v1/pdf/security/remove
Content-Type: application/json
{
"url": "https://example.com/document.pdf",
"password": "currentpassword"
}
```
### AI Invoice Parser
```bash
POST /pdf-co/v1/ai-invoice-parser
Content-Type: application/json
{
"url": "https://example.com/invoice.pdf"
}
```
### Document Parser
```bash
POST /pdf-co/v1/pdf/documentparser
Content-Type: application/json
{
"url": "https://example.com/document.pdf",
"templateId": "your-template-id"
}
```
### Generate Barcode
```bash
POST /pdf-co/v1/barcode/generate
Content-Type: application/json
{
"value": "1234567890",
"type": "QRCode",
"name": "barcode.png"
}
```
### Read Barcode
```bash
POST /pdf-co/v1/barcode/read/from/url
Content-Type: application/json
{
"url": "https://example.com/barcode.png",
"types": "QRCode,Code128,Code39,EAN13,UPCA"
}
```
### Check Async Job Status
```bash
POST /pdf-co/v1/job/check
Content-Type: application/json
{
"jobId": "abc123"
}
```
## Notes
- All file URLs must be publicly accessible or use PDF.co temporary storage
- Multiple URLs for merge operations should be comma-separated
- Page indices are 0-based (first page is `0`)
- Page ranges use format: `0-2` (pages 0,1,2), `3-` (page 3 to end), `0,2,4` (specific pages)
- Output files are stored temporarily and expire after 60 minutes by default
- Use `async: true` for large files to avoid timeout
- Use `inline: true` to get content directly in response instead of URL
## Resources
- [PDF.co API Documentation](https://docs.pdf.co)
- [PDF.co API Reference](https://docs.pdf.co/api-reference)
+161
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)
+218
View File
@@ -0,0 +1,218 @@
# Podio Routing Reference
**App name:** `podio`
**Base URL proxied:** `api.podio.com`
## API Path Pattern
```
/podio/{resource}/{id}/
```
Note: Many Podio endpoints use trailing slashes.
## Common Endpoints
### Organizations
#### List Organizations
```bash
GET /podio/org/
```
#### Get Organization
```bash
GET /podio/org/{org_id}
```
### Spaces (Workspaces)
#### List Spaces in Organization
```bash
GET /podio/space/org/{org_id}/
```
#### Get Space
```bash
GET /podio/space/{space_id}
```
#### Create Space
```bash
POST /podio/org/{org_id}/space/
Content-Type: application/json
{
"name": "New Workspace",
"privacy": "closed"
}
```
### Applications
#### List Apps in Space
```bash
GET /podio/app/space/{space_id}/
```
#### Get App
```bash
GET /podio/app/{app_id}
```
### Items
#### Filter Items
```bash
POST /podio/item/app/{app_id}/filter/
Content-Type: application/json
{
"limit": 30,
"offset": 0,
"sort_by": "created_on",
"sort_desc": true,
"filters": {
"status": [1, 2]
}
}
```
#### Get Item
```bash
GET /podio/item/{item_id}
```
#### Create Item
```bash
POST /podio/item/app/{app_id}/
Content-Type: application/json
{
"fields": {
"title": "New Item",
"status": 1
}
}
```
#### Update Item
```bash
PUT /podio/item/{item_id}
Content-Type: application/json
{
"fields": {
"title": "Updated Title"
}
}
```
#### Delete Item
```bash
DELETE /podio/item/{item_id}
```
### Tasks
Tasks require at least one filter: org, space, app, responsible, reference, created_by, or completed_by.
#### List Tasks
```bash
GET /podio/task/?org={org_id}
GET /podio/task/?space={space_id}
GET /podio/task/?app={app_id}&completed=false
```
#### Get Task
```bash
GET /podio/task/{task_id}
```
#### Create Task
```bash
POST /podio/task/
Content-Type: application/json
{
"text": "Task description",
"due_date": "2026-03-15",
"ref_type": "item",
"ref_id": 3250776079
}
```
#### Complete Task
```bash
POST /podio/task/{task_id}/complete
```
#### Delete Task
```bash
DELETE /podio/task/{task_id}
```
### Comments
#### Get Comments on Object
```bash
GET /podio/comment/{type}/{id}/
```
Where `{type}` is: item, task, status, etc.
#### Add Comment
```bash
POST /podio/comment/{type}/{id}
Content-Type: application/json
{
"value": "Comment text"
}
```
### User
#### Get User Status
```bash
GET /podio/user/status
```
## Pagination
Podio uses offset-based pagination:
```json
{
"limit": 30,
"offset": 0
}
```
Response includes counts:
```json
{
"total": 150,
"filtered": 45,
"items": [...]
}
```
## Notes
- Organization, space, app, and item IDs are integers
- Many endpoints use trailing slashes (e.g., `/org/`, `/filter/`)
- Category/status fields use option IDs (integers), not text values
- Field values can be specified by field_id or external_id
- Deleting an item cascades to associated tasks
- Tasks require at least one filter parameter
- Use `silent=true` to suppress notifications
- Use `hook=false` to skip webhook triggers
## Resources
- [Podio API Documentation](https://developers.podio.com/doc)
- [Items API](https://developers.podio.com/doc/items)
- [Tasks API](https://developers.podio.com/doc/tasks)
- [Applications API](https://developers.podio.com/doc/applications)
- [Spaces API](https://developers.podio.com/doc/spaces)
+384
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)
+188
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)
+193
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)
+139
View File
@@ -0,0 +1,139 @@
# SendGrid Routing Reference
**App name:** `sendgrid`
**Base URL proxied:** `api.sendgrid.com`
## API Path Pattern
```
/sendgrid/v3/{resource}
```
## Common Endpoints
### Mail Send
```bash
POST /sendgrid/v3/mail/send
Content-Type: application/json
{
"personalizations": [{"to": [{"email": "recipient@example.com"}], "subject": "Hello"}],
"from": {"email": "sender@example.com"},
"content": [{"type": "text/plain", "value": "Hello World"}]
}
```
### User Profile
```bash
GET /sendgrid/v3/user/profile
GET /sendgrid/v3/user/account
```
### Marketing Contacts
```bash
GET /sendgrid/v3/marketing/contacts
PUT /sendgrid/v3/marketing/contacts
DELETE /sendgrid/v3/marketing/contacts?ids=id1,id2
POST /sendgrid/v3/marketing/contacts/search
```
### Marketing Lists
```bash
GET /sendgrid/v3/marketing/lists
POST /sendgrid/v3/marketing/lists
GET /sendgrid/v3/marketing/lists/{list_id}
PATCH /sendgrid/v3/marketing/lists/{list_id}
DELETE /sendgrid/v3/marketing/lists/{list_id}
```
### Segments
```bash
GET /sendgrid/v3/marketing/segments
POST /sendgrid/v3/marketing/segments
DELETE /sendgrid/v3/marketing/segments/{segment_id}
```
### Templates
```bash
GET /sendgrid/v3/templates
POST /sendgrid/v3/templates
GET /sendgrid/v3/templates/{template_id}
PATCH /sendgrid/v3/templates/{template_id}
DELETE /sendgrid/v3/templates/{template_id}
```
### Senders
```bash
GET /sendgrid/v3/senders
POST /sendgrid/v3/senders
PATCH /sendgrid/v3/senders/{sender_id}
DELETE /sendgrid/v3/senders/{sender_id}
```
### Suppressions
```bash
GET /sendgrid/v3/suppression/bounces
GET /sendgrid/v3/suppression/blocks
GET /sendgrid/v3/suppression/invalid_emails
GET /sendgrid/v3/suppression/spam_reports
GET /sendgrid/v3/suppression/unsubscribes
```
### Unsubscribe Groups (ASM)
```bash
GET /sendgrid/v3/asm/groups
POST /sendgrid/v3/asm/groups
PATCH /sendgrid/v3/asm/groups/{group_id}
DELETE /sendgrid/v3/asm/groups/{group_id}
```
### Statistics
```bash
GET /sendgrid/v3/stats?start_date=2026-02-01
GET /sendgrid/v3/categories/stats?start_date=2026-02-01&categories=cat1
GET /sendgrid/v3/mailbox_providers/stats?start_date=2026-02-01
```
### API Keys
```bash
GET /sendgrid/v3/api_keys
POST /sendgrid/v3/api_keys
PATCH /sendgrid/v3/api_keys/{api_key_id}
DELETE /sendgrid/v3/api_keys/{api_key_id}
```
## Pagination
Marketing endpoints use token-based pagination:
```bash
GET /sendgrid/v3/marketing/lists?page_size=100&page_token={token}
```
Suppression endpoints use offset pagination:
```bash
GET /sendgrid/v3/suppression/bounces?limit=100&offset=0
```
## Notes
- All requests use JSON content type
- Dates are in YYYY-MM-DD format
- Mail send returns 202 Accepted on success
- Dynamic template IDs start with `d-`
- Marketing contact operations are asynchronous
## Resources
- [SendGrid API Documentation](https://www.twilio.com/docs/sendgrid/api-reference)
- [Mail Send API](https://www.twilio.com/docs/sendgrid/api-reference/mail-send)
+96
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)
+178
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)
+150
View File
@@ -0,0 +1,150 @@
# Snapchat Routing Reference
**App name:** `snapchat`
**Base URL proxied:** `adsapi.snapchat.com`
## API Path Pattern
```
/snapchat/v1/{resource}
```
## Common Endpoints
### Current User
#### Get Current User
```bash
GET /snapchat/v1/me
```
#### List Organizations
```bash
GET /snapchat/v1/me/organizations
```
### Organizations
#### Get Organization
```bash
GET /snapchat/v1/organizations/{organizationId}
```
#### List Ad Accounts
```bash
GET /snapchat/v1/organizations/{organizationId}/adaccounts
```
#### List Funding Sources
```bash
GET /snapchat/v1/organizations/{organizationId}/fundingsources
```
### Ad Accounts
#### Get Ad Account
```bash
GET /snapchat/v1/adaccounts/{adAccountId}
```
### Campaigns
#### List Campaigns
```bash
GET /snapchat/v1/adaccounts/{adAccountId}/campaigns
```
#### Create Campaign
```bash
POST /snapchat/v1/adaccounts/{adAccountId}/campaigns
Content-Type: application/json
{
"campaigns": [{
"name": "Campaign Name",
"status": "PAUSED",
"ad_account_id": "{adAccountId}",
"start_time": "2026-02-15T00:00:00.000-08:00"
}]
}
```
### Ad Squads
#### List Ad Squads
```bash
GET /snapchat/v1/adaccounts/{adAccountId}/adsquads
```
### Ads
#### List Ads
```bash
GET /snapchat/v1/adaccounts/{adAccountId}/ads
```
### Creatives
#### List Creatives
```bash
GET /snapchat/v1/adaccounts/{adAccountId}/creatives
```
### Media
#### List Media
```bash
GET /snapchat/v1/adaccounts/{adAccountId}/media
```
### Stats
#### Get Ad Account Stats
```bash
GET /snapchat/v1/adaccounts/{adAccountId}/stats?granularity=DAY&start_time=2026-02-01&end_time=2026-02-14
```
### Targeting
#### Get Countries
```bash
GET /snapchat/v1/targeting/geo/country
```
#### Get Regions
```bash
GET /snapchat/v1/targeting/geo/{countryCode}/region
```
### Ads Gallery (Public Ads Library)
#### List Sponsored Content
```bash
GET /snapchat/v1/ads_library/sponsored_content
```
#### Search Ads
```bash
POST /snapchat/v1/ads_library/ads/search
Content-Type: application/json
{
"paying_advertiser_name": "Nike",
"countries": ["fr", "de"],
"limit": 50
}
```
## Notes
- Monetary values use micro-currency (1 USD = 1,000,000 micro)
- Bulk operations accept arrays for batch create/update
- Pagination uses `limit` (50-1000) and cursor via `next_link`
- Sorting: `sort=updated_at-desc` or `sort=created_at-desc`
- Ads Gallery: Use lowercase 2-letter ISO country codes (e.g., `fr`, `de`). US may not be available.
## Resources
- [Snapchat Ads API Introduction](https://developers.snap.com/api/marketing-api/Ads-API/introduction)
- [API Patterns](https://developers.snap.com/api/marketing-api/Ads-API/api-patterns)
- [Ads Gallery API](https://developers.snap.com/api/marketing-api/Ads-Gallery-Api/using-the-api)
+262
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)
+263
View File
@@ -0,0 +1,263 @@
# 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
```
### Payment Methods
#### List Payment Methods
```bash
GET /stripe/v1/payment_methods?customer=cus_XXX&type=card
```
#### Attach Payment Method
```bash
POST /stripe/v1/payment_methods/{paymentMethodId}/attach
Content-Type: application/x-www-form-urlencoded
customer=cus_XXX
```
#### Detach Payment Method
```bash
POST /stripe/v1/payment_methods/{paymentMethodId}/detach
```
### Coupons
#### List Coupons
```bash
GET /stripe/v1/coupons?limit=10
```
#### Create Coupon
```bash
POST /stripe/v1/coupons
Content-Type: application/x-www-form-urlencoded
percent_off=25&duration=once
```
#### Delete Coupon
```bash
DELETE /stripe/v1/coupons/{couponId}
```
### Refunds
#### List Refunds
```bash
GET /stripe/v1/refunds?limit=10
```
#### Create Refund
```bash
POST /stripe/v1/refunds
Content-Type: application/x-www-form-urlencoded
charge=ch_XXX&amount=1000
```
## 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)
+214
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/)
+174
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/)
+195
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)
+117
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/)
+176
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)
@@ -0,0 +1,187 @@
# Toggl Track Routing Reference
**App name:** `toggl-track`
**Base URL proxied:** `api.track.toggl.com`
## API Path Pattern
```
/toggl-track/api/v9/{resource}
```
## Common Endpoints
### Get Current User
```bash
GET /toggl-track/api/v9/me
```
### List Workspaces
```bash
GET /toggl-track/api/v9/me/workspaces
```
### Get Workspace
```bash
GET /toggl-track/api/v9/workspaces/{workspace_id}
```
### List Workspace Users
```bash
GET /toggl-track/api/v9/workspaces/{workspace_id}/users
```
### List Time Entries
```bash
GET /toggl-track/api/v9/me/time_entries
GET /toggl-track/api/v9/me/time_entries?start_date=2026-02-01&end_date=2026-02-28
```
### Get Current Time Entry
```bash
GET /toggl-track/api/v9/me/time_entries/current
```
### Create Time Entry
```bash
POST /toggl-track/api/v9/workspaces/{workspace_id}/time_entries
Content-Type: application/json
{
"description": "Working on task",
"start": "2026-02-13T10:00:00Z",
"duration": -1,
"workspace_id": 21180405,
"created_with": "maton-api"
}
```
### Stop Time Entry
```bash
PATCH /toggl-track/api/v9/workspaces/{workspace_id}/time_entries/{time_entry_id}/stop
```
### Update Time Entry
```bash
PUT /toggl-track/api/v9/workspaces/{workspace_id}/time_entries/{time_entry_id}
Content-Type: application/json
{
"description": "Updated description"
}
```
### Delete Time Entry
```bash
DELETE /toggl-track/api/v9/workspaces/{workspace_id}/time_entries/{time_entry_id}
```
### List Projects
```bash
GET /toggl-track/api/v9/workspaces/{workspace_id}/projects
GET /toggl-track/api/v9/workspaces/{workspace_id}/projects?active=true
```
### Create Project
```bash
POST /toggl-track/api/v9/workspaces/{workspace_id}/projects
Content-Type: application/json
{
"name": "New Project",
"active": true,
"color": "#0b83d9"
}
```
### Update Project
```bash
PUT /toggl-track/api/v9/workspaces/{workspace_id}/projects/{project_id}
Content-Type: application/json
{
"name": "Updated Project"
}
```
### Delete Project
```bash
DELETE /toggl-track/api/v9/workspaces/{workspace_id}/projects/{project_id}
```
### List Clients
```bash
GET /toggl-track/api/v9/workspaces/{workspace_id}/clients
```
### Create Client
```bash
POST /toggl-track/api/v9/workspaces/{workspace_id}/clients
Content-Type: application/json
{
"name": "New Client"
}
```
### Update Client
```bash
PUT /toggl-track/api/v9/workspaces/{workspace_id}/clients/{client_id}
Content-Type: application/json
{
"name": "Updated Client"
}
```
### Delete Client
```bash
DELETE /toggl-track/api/v9/workspaces/{workspace_id}/clients/{client_id}
```
### List Tags
```bash
GET /toggl-track/api/v9/workspaces/{workspace_id}/tags
```
### Create Tag
```bash
POST /toggl-track/api/v9/workspaces/{workspace_id}/tags
Content-Type: application/json
{
"name": "New Tag"
}
```
### Update Tag
```bash
PUT /toggl-track/api/v9/workspaces/{workspace_id}/tags/{tag_id}
Content-Type: application/json
{
"name": "Updated Tag"
}
```
### Delete Tag
```bash
DELETE /toggl-track/api/v9/workspaces/{workspace_id}/tags/{tag_id}
```
## Notes
- Workspace IDs and time entry IDs are integers
- Duration is in seconds; use `-1` to start a running timer
- Timestamps use ISO 8601 format (e.g., `2026-02-13T19:58:43Z`)
- The `created_with` field is required when creating time entries
- Pagination uses `page` and `per_page` query parameters
- Time entries list supports `since`, `start_date`, and `end_date` filters
## Resources
- [Toggl Track API Documentation](https://engineering.toggl.com/docs/)
- [Time Entries API](https://engineering.toggl.com/docs/api/time_entries)
- [Projects API](https://engineering.toggl.com/docs/api/projects)
- [Clients API](https://engineering.toggl.com/docs/api/clients)
- [Tags API](https://engineering.toggl.com/docs/api/tags)
+192
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/)
+170
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)
+186
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)
+123
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)
@@ -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)
@@ -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)

Some files were not shown because too many files have changed in this diff Show More