api-gateway
Passthrough proxy for direct access to third-party APIs using managed OAuth connections, provided by [Maton](https://maton.ai). The API gateway lets y
Install
npx skills add https://github.com/aAAaqwq/AGI-Super-Team/tree/main/skills/api-gateway
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install aaaaqwq-agi-super-team@llmmart
git clone https://github.com/aAAaqwq/AGI-Super-Team.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole aaaaqwq/agi-super-team collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
API Gateway
Passthrough proxy for direct access to third-party APIs using managed OAuth connections, provided by Maton. The API gateway lets you call native API endpoints directly.
Quick Start
# Native Slack API call
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'channel': 'C0123456', 'text': 'Hello from gateway!'}).encode()
req = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Base URL
https://gateway.maton.ai/{app}/{native-api-path}
Replace {app} with the service name and {native-api-path} with the actual API endpoint path.
IMPORTANT: The URL path MUST start with the connection's app name (eg. /google-mail/...). This prefix tells the gateway which app connection to use. For example, the native Gmail API path starts with gmail/v1/, so full paths look like /google-mail/gmail/v1/users/me/messages.
Authentication
All requests require the Maton API key in the Authorization header:
Authorization: Bearer $MATON_API_KEY
The API gateway automatically injects the appropriate OAuth token for the target service.
Environment Variable: You can set your API key as the MATON_API_KEY environment variable:
export MATON_API_KEY="YOUR_API_KEY"
Getting Your API Key
- Sign in or create an account at maton.ai
- Go to maton.ai/settings
- Click the copy button on the right side of API Key section to copy it
Connection Management
Connection management uses a separate base URL: https://ctrl.maton.ai
List Connections
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=slack&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Query Parameters (optional):
app- Filter by service name (e.g.,slack,hubspot,salesforce)status- Filter by connection status (ACTIVE,PENDING,FAILED)
Response:
{
"connections": [
{
"connection_id": "21fd90f9-5935-43cd-b6c8-bde9d915ca80",
"status": "ACTIVE",
"creation_time": "2025-12-08T07:20:53.488460Z",
"last_updated_time": "2026-01-31T20:03:32.593153Z",
"url": "https://connect.maton.ai/?session_token=5e9...",
"app": "slack",
"method": "OAUTH2",
"metadata": {}
}
]
}
Create Connection
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'slack'}).encode()
req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Request Body:
app(required) - Service name (e.g.,slack,notion)method(optional) - Connection method (API_KEY,BASIC,OAUTH1,OAUTH2,MCP)
Get Connection
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Response:
{
"connection": {
"connection_id": "21fd90f9-5935-43cd-b6c8-bde9d915ca80",
"status": "ACTIVE",
"creation_time": "2025-12-08T07:20:53.488460Z",
"last_updated_time": "2026-01-31T20:03:32.593153Z",
"url": "https://connect.maton.ai/?session_token=5e9...",
"app": "slack",
"metadata": {}
}
}
Open the returned URL in a browser to complete OAuth.
Delete Connection
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Specifying Connection
If you have multiple connections for the same app, you can specify which connection to use by adding the Maton-Connection header with the connection ID:
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'channel': 'C0123456', 'text': 'Hello!'}).encode()
req = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
req.add_header('Maton-Connection', '21fd90f9-5935-43cd-b6c8-bde9d915ca80')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
If omitted, the gateway uses the default (oldest) active connection for that app.
Supported Services
| Service | App Name | Base URL Proxied |
|---|---|---|
| ActiveCampaign | active-campaign |
{account}.api-us1.com |
| Acuity Scheduling | acuity-scheduling |
acuityscheduling.com |
| Airtable | airtable |
api.airtable.com |
| Apollo | apollo |
api.apollo.io |
| Asana | asana |
app.asana.com |
| Attio | attio |
api.attio.com |
| Basecamp | basecamp |
3.basecampapi.com |
| Baserow | baserow |
api.baserow.io |
| beehiiv | beehiiv |
api.beehiiv.com |
| Box | box |
api.box.com |
| Brevo | brevo |
api.brevo.com |
| Calendly | calendly |
api.calendly.com |
| Cal.com | cal-com |
api.cal.com |
| CallRail | callrail |
api.callrail.com |
| Chargebee | chargebee |
{subdomain}.chargebee.com |
| ClickFunnels | clickfunnels |
{subdomain}.myclickfunnels.com |
| ClickSend | clicksend |
rest.clicksend.com |
| ClickUp | clickup |
api.clickup.com |
| Clockify | clockify |
api.clockify.me |
| Coda | coda |
coda.io |
| Confluence | confluence |
api.atlassian.com |
| CompanyCam | companycam |
api.companycam.com |
| Cognito Forms | cognito-forms |
www.cognitoforms.com |
| Constant Contact | constant-contact |
api.cc.email |
| Dropbox | dropbox |
api.dropboxapi.com |
| Dropbox Business | dropbox-business |
api.dropboxapi.com |
| ElevenLabs | elevenlabs |
api.elevenlabs.io |
| Eventbrite | eventbrite |
www.eventbriteapi.com |
| Exa | exa |
api.exa.ai |
| Fathom | fathom |
api.fathom.ai |
| Firebase | firebase |
firebase.googleapis.com |
| Fireflies | fireflies |
api.fireflies.ai |
| GetResponse | getresponse |
api.getresponse.com |
| Grafana | grafana |
User's Grafana instance |
| GitHub | github |
api.github.com |
| Gumroad | gumroad |
api.gumroad.com |
| Granola MCP | granola |
mcp.granola.ai |
| Google Ads | google-ads |
googleads.googleapis.com |
| Google BigQuery | google-bigquery |
bigquery.googleapis.com |
| Google Analytics Admin | google-analytics-admin |
analyticsadmin.googleapis.com |
| Google Analytics Data | google-analytics-data |
analyticsdata.googleapis.com |
| Google Calendar | google-calendar |
www.googleapis.com |
| Google Classroom | google-classroom |
classroom.googleapis.com |
| Google Contacts | google-contacts |
people.googleapis.com |
| Google Docs | google-docs |
docs.googleapis.com |
| Google Drive | google-drive |
www.googleapis.com |
| Google Forms | google-forms |
forms.googleapis.com |
| Gmail | google-mail |
gmail.googleapis.com |
| Google Merchant | google-merchant |
merchantapi.googleapis.com |
| Google Meet | google-meet |
meet.googleapis.com |
| Google Play | google-play |
androidpublisher.googleapis.com |
| Google Search Console | google-search-console |
www.googleapis.com |
| Google Sheets | google-sheets |
sheets.googleapis.com |
| Google Slides | google-slides |
slides.googleapis.com |
| Google Tasks | google-tasks |
tasks.googleapis.com |
| Google Workspace Admin | google-workspace-admin |
admin.googleapis.com |
| HubSpot | hubspot |
api.hubapi.com |
| Instantly | instantly |
api.instantly.ai |
| Jira | jira |
api.atlassian.com |
| Jobber | jobber |
api.getjobber.com |
| JotForm | jotform |
api.jotform.com |
| Kaggle | kaggle |
api.kaggle.com |
| Keap | keap |
api.infusionsoft.com |
| Kibana | kibana |
User's Kibana instance |
| Kit | kit |
api.kit.com |
| Klaviyo | klaviyo |
a.klaviyo.com |
| Lemlist | lemlist |
api.lemlist.com |
| Linear | linear |
api.linear.app |
linkedin |
api.linkedin.com |
|
| Mailchimp | mailchimp |
{dc}.api.mailchimp.com |
| MailerLite | mailerlite |
connect.mailerlite.com |
| Mailgun | mailgun |
api.mailgun.net |
| ManyChat | manychat |
api.manychat.com |
| Manus | manus |
api.manus.ai |
| Microsoft Excel | microsoft-excel |
graph.microsoft.com |
| Microsoft Teams | microsoft-teams |
graph.microsoft.com |
| Microsoft To Do | microsoft-to-do |
graph.microsoft.com |
| Monday.com | monday |
api.monday.com |
| Motion | motion |
api.usemotion.com |
| Netlify | netlify |
api.netlify.com |
| Notion | notion |
api.notion.com |
| Notion MCP | notion |
mcp.notion.com |
| OneDrive | one-drive |
graph.microsoft.com |
| Outlook | outlook |
graph.microsoft.com |
| PDF.co | pdf-co |
api.pdf.co |
| Pipedrive | pipedrive |
api.pipedrive.com |
| Podio | podio |
api.podio.com |
| PostHog | posthog |
{subdomain}.posthog.com |
| QuickBooks | quickbooks |
quickbooks.api.intuit.com |
| Quo | quo |
api.openphone.com |
| Reducto | reducto |
platform.reducto.ai |
| Salesforce | salesforce |
{instance}.salesforce.com |
| Sentry | sentry |
{subdomain}.sentry.io |
| SharePoint | sharepoint |
graph.microsoft.com |
| SignNow | signnow |
api.signnow.com |
| Slack | slack |
slack.com |
| Snapchat | snapchat |
adsapi.snapchat.com |
| Square | squareup |
connect.squareup.com |
| Squarespace | squarespace |
api.squarespace.com |
| Sunsama MCP | sunsama |
MCP server |
| Stripe | stripe |
api.stripe.com |
| Systeme.io | systeme |
api.systeme.io |
| Tally | tally |
api.tally.so |
| Tavily | tavily |
api.tavily.com |
| Telegram | telegram |
api.telegram.org |
| TickTick | ticktick |
api.ticktick.com |
| Todoist | todoist |
api.todoist.com |
| Toggl Track | toggl-track |
api.track.toggl.com |
| Trello | trello |
api.trello.com |
| Twilio | twilio |
api.twilio.com |
| Typeform | typeform |
api.typeform.com |
| Unbounce | unbounce |
api.unbounce.com |
| Vimeo | vimeo |
api.vimeo.com |
| WhatsApp Business | whatsapp-business |
graph.facebook.com |
| WooCommerce | woocommerce |
{store-url}/wp-json/wc/v3 |
| WordPress.com | wordpress |
public-api.wordpress.com |
| Xero | xero |
api.xero.com |
| YouTube | youtube |
www.googleapis.com |
| Zoho Bigin | zoho-bigin |
www.zohoapis.com |
| Zoho Bookings | zoho-bookings |
www.zohoapis.com |
| Zoho Books | zoho-books |
www.zohoapis.com |
| Zoho Calendar | zoho-calendar |
calendar.zoho.com |
| Zoho CRM | zoho-crm |
www.zohoapis.com |
| Zoho Inventory | zoho-inventory |
www.zohoapis.com |
| Zoho Mail | zoho-mail |
mail.zoho.com |
| Zoho People | zoho-people |
people.zoho.com |
| Zoho Projects | zoho-projects |
projectsapi.zoho.com |
| Zoho Recruit | zoho-recruit |
recruit.zoho.com |
See references/ for detailed routing guides per provider:
- ActiveCampaign - Contacts, deals, tags, lists, automations, campaigns
- Acuity Scheduling - Appointments, calendars, clients, availability
- Airtable - Records, bases, tables
- Apollo - People search, enrichment, contacts
- Asana - Tasks, projects, workspaces, webhooks
- Attio - People, companies, records, tasks
- Basecamp - Projects, to-dos, messages, schedules, documents
- Baserow - Database rows, fields, tables, batch operations
- beehiiv - Publications, subscriptions, posts, custom fields
- Box - Files, folders, collaborations, shared links
- Brevo - Contacts, email campaigns, transactional emails, templates
- Calendly - Event types, scheduled events, availability, webhooks
- Cal.com - Event types, bookings, schedules, availability slots, webhooks
- CallRail - Calls, trackers, companies, tags, analytics
- Chargebee - Subscriptions, customers, invoices
- ClickFunnels - Contacts, products, orders, courses, webhooks
- ClickSend - SMS, MMS, voice messages, contacts, lists
- ClickUp - Tasks, lists, folders, spaces, webhooks
- Clockify - Time tracking, projects, clients, tasks, workspaces
- Coda - Docs, pages, tables, rows, formulas, controls
- Confluence - Pages, spaces, blogposts, comments, attachments
- CompanyCam - Projects, photos, users, tags, groups, documents
- Cognito Forms - Forms, entries, documents, files
- Constant Contact - Contacts, email campaigns, lists, segments
- Dropbox - Files, folders, search, metadata, revisions, tags
- Dropbox Business - Team members, groups, team folders, devices, audit logs
- ElevenLabs - Text-to-speech, voice cloning, sound effects, audio processing
- Eventbrite - Events, venues, tickets, orders, attendees
- Exa - Neural web search, content extraction, similar pages, AI answers, research tasks
- Fathom - Meeting recordings, transcripts, summaries, webhooks
- Firebase - Projects, web apps, Android apps, iOS apps, configurations
- Fireflies - Meeting transcripts, summaries, AskFred AI, channels
- GetResponse - Campaigns, contacts, newsletters, autoresponders, tags, segments
- Grafana - Dashboards, data sources, folders, annotations, alerts, teams
- GitHub - Repositories, issues, pull requests, commits
- Gumroad - Products, sales, subscribers, licenses, webhooks
- Granola MCP - MCP-based interface for meeting notes, transcripts, queries
- Google Ads - Campaigns, ad groups, GAQL queries
- Google Analytics Admin - Reports, dimensions, metrics
- Google Analytics Data - Reports, dimensions, metrics
- Google BigQuery - Datasets, tables, jobs, SQL queries
- Google Calendar - Events, calendars, free/busy
- Google Classroom - Courses, coursework, students, teachers, announcements
- Google Contacts - Contacts, contact groups, people search
- Google Docs - Document creation, batch updates
- Google Drive - Files, folders, permissions
- Google Forms - Forms, questions, responses
- Gmail - Messages, threads, labels
- Google Meet - Spaces, conference records, participants
- Google Merchant - Products, inventories, promotions, reports
- Google Play - In-app products, subscriptions, reviews
- Google Search Console - Search analytics, sitemaps
- Google Sheets - Values, ranges, formatting
- Google Slides - Presentations, slides, formatting
- Google Tasks - Task lists, tasks, subtasks
- Google Workspace Admin - Users, groups, org units, domains, roles
- HubSpot - Contacts, companies, deals
- Instantly - Campaigns, leads, accounts, email outreach
- Jira - Issues, projects, JQL queries
- Jobber - Clients, jobs, invoices, quotes (GraphQL)
- JotForm - Forms, submissions, webhooks
- Kaggle - Datasets, models, competitions, kernels
- Keap - Contacts, companies, tags, tasks, opportunities, campaigns
- Kibana - Saved objects, dashboards, data views, spaces, alerts, fleet
- Kit - Subscribers, tags, forms, sequences, broadcasts
- Klaviyo - Profiles, lists, campaigns, flows, events
- Lemlist - Campaigns, leads, activities, schedules, unsubscribes
- Linear - Issues, projects, teams, cycles (GraphQL)
- LinkedIn - Profile, posts, shares, media uploads
- Mailchimp - Audiences, campaigns, templates, automations
- MailerLite - Subscribers, groups, campaigns, automations, forms
- Mailgun - Email sending, domains, routes, templates, mailing lists, suppressions
- ManyChat - Subscribers, tags, flows, messaging
- Manus - AI agent tasks, projects, files, webhooks
- Microsoft Excel - Workbooks, worksheets, ranges, tables, charts
- Microsoft Teams - Teams, channels, messages, members, chats
- Microsoft To Do - Task lists, tasks, checklist items, linked resources
- Monday.com - Boards, items, columns, groups (GraphQL)
- Motion - Tasks, projects, workspaces, schedules
- Netlify - Sites, deploys, builds, DNS, environment variables
- Notion - Pages, databases, blocks
- Notion MCP - MCP-based interface for pages, databases, comments, teams, users
- OneDrive - Files, folders, drives, sharing
- Outlook - Mail, calendar, contacts
- PDF.co - PDF conversion, merge, split, edit, text extraction, barcodes
- Pipedrive - Deals, persons, organizations, activities
- Podio - Organizations, workspaces, apps, items, tasks, comments
- PostHog - Product analytics, feature flags, session recordings, experiments, HogQL queries
- QuickBooks - Customers, invoices, reports
- Quo - Calls, messages, contacts, conversations, webhooks
- Reducto - Document parsing, extraction, splitting, editing
- Salesforce - SOQL, sObjects, CRUD
- SignNow - Documents, templates, invites, e-signatures
- SendGrid - Email sending, contacts, templates, suppressions, statistics
- Sentry - Issues, events, projects, teams, releases
- SharePoint - Sites, lists, document libraries, files, folders, versions
- Slack - Messages, channels, users
- Snapchat - Ad accounts, campaigns, ad squads, ads, creatives, audiences
- Square - Payments, customers, orders, catalog, inventory, invoices
- Squarespace - Products, inventory, orders, profiles, transactions
- Sunsama MCP - MCP-based interface for tasks, calendar, backlog, objectives, time tracking
- Stripe - Customers, subscriptions, payments
- Systeme.io - Contacts, tags, courses, communities, webhooks
- Tally - Forms, submissions, workspaces, webhooks
- Tavily - AI web search, content extraction, crawling, research tasks
- Telegram - Messages, chats, bots, updates, polls
- TickTick - Tasks, projects, task lists
- Todoist - Tasks, projects, sections, labels, comments
- Toggl Track - Time entries, projects, clients, tags, workspaces
- Trello - Boards, lists, cards, checklists
- Twilio - SMS, voice calls, phone numbers, messaging
- Typeform - Forms, responses, insights
- Unbounce - Landing pages, leads, accounts, sub-accounts, domains
- Vimeo - Videos, folders, albums, comments, likes
- WhatsApp Business - Messages, templates, media
- WooCommerce - Products, orders, customers, coupons
- WordPress.com - Posts, pages, sites, users, settings
- Xero - Contacts, invoices, reports
- YouTube - Videos, playlists, channels, subscriptions
- Zoho Bigin - Contacts, companies, pipelines, products
- Zoho Bookings - Appointments, services, staff, workspaces
- Zoho Books - Invoices, contacts, bills, expenses
- Zoho Calendar - Calendars, events, attendees, reminders
- Zoho CRM - Leads, contacts, accounts, deals, search
- Zoho Inventory - Items, sales orders, invoices, purchase orders, bills
- Zoho Mail - Messages, folders, labels, attachments
- Zoho People - Employees, departments, designations, attendance, leave
- Zoho Projects - Projects, tasks, milestones, tasklists, comments
- Zoho Recruit - Candidates, job openings, interviews, applications
Examples
Slack - Post Message (Native API)
# Native Slack API: POST https://slack.com/api/chat.postMessage
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'channel': 'C0123456', 'text': 'Hello!'}).encode()
req = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json; charset=utf-8')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
HubSpot - Create Contact (Native API)
# Native HubSpot API: POST https://api.hubapi.com/crm/v3/objects/contacts
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'properties': {'email': 'john@example.com', 'firstname': 'John', 'lastname': 'Doe'}}).encode()
req = urllib.request.Request('https://gateway.maton.ai/hubspot/crm/v3/objects/contacts', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Google Sheets - Get Spreadsheet Values (Native API)
# Native Sheets API: GET https://sheets.googleapis.com/v4/spreadsheets/{id}/values/{range}
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/google-sheets/v4/spreadsheets/122BS1sFN2RKL8AOUQjkLdubzOwgqzPT64KfZ2rvYI4M/values/Sheet1!A1:B2')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Salesforce - SOQL Query (Native API)
# Native Salesforce API: GET https://{instance}.salesforce.com/services/data/v64.0/query?q=...
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/salesforce/services/data/v64.0/query?q=SELECT+Id,Name+FROM+Contact+LIMIT+10')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Airtable - List Tables (Native API)
# Native Airtable API: GET https://api.airtable.com/v0/meta/bases/{id}/tables
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/airtable/v0/meta/bases/appgqan2NzWGP5sBK/tables')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Notion - Query Database (Native API)
# Native Notion API: POST https://api.notion.com/v1/data_sources/{id}/query
python <<'EOF'
import urllib.request, os, json
data = json.dumps({}).encode()
req = urllib.request.Request('https://gateway.maton.ai/notion/v1/data_sources/23702dc5-9a3b-8001-9e1c-000b5af0a980/query', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
req.add_header('Notion-Version', '2025-09-03')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Stripe - List Customers (Native API)
# Native Stripe API: GET https://api.stripe.com/v1/customers
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/stripe/v1/customers?limit=10')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Code Examples
JavaScript (Node.js)
const response = await fetch('https://gateway.maton.ai/slack/api/chat.postMessage', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${process.env.MATON_API_KEY}`
},
body: JSON.stringify({ channel: 'C0123456', text: 'Hello!' })
});
Python
import os
import requests
response = requests.post(
'https://gateway.maton.ai/slack/api/chat.postMessage',
headers={'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'},
json={'channel': 'C0123456', 'text': 'Hello!'}
)
Error Handling
| Status | Meaning |
|---|---|
| 400 | Missing connection for the requested app |
| 401 | Invalid or missing Maton API key |
| 429 | Rate limited (10 requests/second per account) |
| 500 | Internal Server Error |
| 4xx/5xx | Passthrough error from the target API |
Errors from the target API are passed through with their original status codes and response bodies.
Troubleshooting: API Key Issues
- Check that the
MATON_API_KEYenvironment variable is set:
echo $MATON_API_KEY
- Verify the API key is valid by listing connections:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Troubleshooting: Invalid App Name
- Verify your URL path starts with the correct app name. The path must begin with
/google-mail/. For example:
- Correct:
https://gateway.maton.ai/google-mail/gmail/v1/users/me/messages - Incorrect:
https://gateway.maton.ai/gmail/v1/users/me/messages
- Ensure you have an active connection for the app. List your connections to verify:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=google-mail&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Troubleshooting: Server Error
A 500 error may indicate an expired OAuth token. Try creating a new connection via the Connection Management section above and completing OAuth authorization. If the new connection is "ACTIVE", delete the old connection to ensure the gateway uses the new one.
Rate Limits
- 10 requests per second per account
- Target API rate limits also apply
Notes
- When using curl with URLs containing brackets (
fields[],sort[],records[]), use the-gflag to disable glob parsing - When piping curl output to
jq, environment variables may not expand correctly in some shells, which can cause "Invalid API key" errors
Tips
Use native API docs: Refer to each service's official API documentation for endpoint paths and parameters.
Headers are forwarded: Custom headers (except
HostandAuthorization) are forwarded to the target API.Query params work: URL query parameters are passed through to the target API.
All HTTP methods supported: GET, POST, PUT, PATCH, DELETE are all supported.
QuickBooks special case: Use
:realmIdin the path and it will be replaced with the connected realm ID.
Optional
Files (agi-super-team)
-
references
-
active-campaign
-
README.md 3.2 KB
# 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)
-
-
acuity-scheduling
-
README.md 3 KB
# 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)
-
-
airtable
-
README.md 3 KB
# 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)
-
-
apollo
-
README.md 4 KB
# 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)
-
-
asana
-
README.md 2.7 KB
# 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)
-
-
attio
-
README.md 4.8 KB
# 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", "deadline_at": null, "assignees": [], "linked_records": [] } } ``` ### List Workspace Members ```bash GET /attio/v2/workspace_members ``` ### Identify Self ```bash GET /attio/v2/self ``` ### Notes #### List Notes ```bash GET /attio/v2/notes?limit=50&parent_object={object}&parent_record_id={record_id} ``` #### Get Note ```bash GET /attio/v2/notes/{note_id} ``` #### Create Note ```bash POST /attio/v2/notes Content-Type: application/json { "data": { "format": "plaintext", "title": "Meeting Summary", "content": "Note content here", "parent_object": "companies", "parent_record_id": "{record_id}", "created_by_actor": { "type": "workspace-member", "id": "{workspace_member_id}" } } } ``` #### Delete Note ```bash DELETE /attio/v2/notes/{note_id} ``` ### Comments #### Create Comment on Record ```bash POST /attio/v2/comments Content-Type: application/json { "data": { "format": "plaintext", "content": "Comment text", "author": { "type": "workspace-member", "id": "{workspace_member_id}" }, "record": { "object": "companies", "record_id": "{record_id}" } } } ``` #### Reply to Comment Thread ```bash POST /attio/v2/comments Content-Type: application/json { "data": { "format": "plaintext", "content": "This is a reply", "author": { "type": "workspace-member", "id": "{workspace_member_id}" }, "thread_id": "{thread_id}" } } ``` ### Lists #### List All Lists ```bash GET /attio/v2/lists ``` #### Get List ```bash GET /attio/v2/lists/{list_id} ``` ### List Entries #### Query List Entries ```bash POST /attio/v2/lists/{list}/entries/query Content-Type: application/json { "limit": 50, "offset": 0 } ``` #### Create List Entry ```bash POST /attio/v2/lists/{list}/entries Content-Type: application/json { "data": { "parent_record_id": "{record_id}", "parent_object": "companies", "entry_values": {} } } ``` #### Get List Entry ```bash GET /attio/v2/lists/{list}/entries/{entry_id} ``` #### Update List Entry ```bash PATCH /attio/v2/lists/{list}/entries/{entry_id} Content-Type: application/json { "data": { "entry_values": { "status": "Active" } } } ``` #### Delete List Entry ```bash DELETE /attio/v2/lists/{list}/entries/{entry_id} ``` ### Meetings #### List Meetings ```bash GET /attio/v2/meetings?limit=50 ``` #### Get Meeting ```bash GET /attio/v2/meetings/{meeting_id} ``` ### Call Recordings #### List Call Recordings for Meeting ```bash GET /attio/v2/meetings/{meeting_id}/call_recordings?limit=50 ``` #### Get Call Recording ```bash GET /attio/v2/meetings/{meeting_id}/call_recordings/{call_recording_id} ``` ## Usage 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`, `deadline_at`, `assignees`, and `linked_records` fields - Note creation requires `format`, `content`, `parent_object`, and `parent_record_id` - Comment creation requires `format`, `content`, `author`, plus one of `record`, `entry`, or `thread_id` - Meetings use cursor-based pagination - Rate limits: 100 read/sec, 25 write/sec - Pagination uses `limit` and `offset` parameters (or `cursor` for meetings) ## 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)
-
-
basecamp
-
README.md 2.8 KB
# 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)
-
-
baserow
-
README.md 3.7 KB
# Baserow Routing Reference **App name:** `baserow` **Base URL proxied:** `api.baserow.io` ## API Path Pattern ``` /baserow/api/database/rows/table/{table_id}/ /baserow/api/database/fields/table/{table_id}/ /baserow/api/database/tables/all-tables/ /baserow/api/user-files/upload-file/ /baserow/api/user-files/upload-via-url/ ``` ## Important Notes - Connection uses API_KEY authentication (database token), not OAuth - By default, fields return as `field_{id}`; use `user_field_names=true` for readable names - Database tokens grant access only to database row endpoints - Cloud has a limit of 10 concurrent API requests ## Common Endpoints ### List Rows ```bash GET /baserow/api/database/rows/table/{table_id}/?user_field_names=true ``` ### Get Row ```bash GET /baserow/api/database/rows/table/{table_id}/{row_id}/ ``` ### Create Row ```bash POST /baserow/api/database/rows/table/{table_id}/ Content-Type: application/json { "field_123": "value" } ``` ### Update Row ```bash PATCH /baserow/api/database/rows/table/{table_id}/{row_id}/ Content-Type: application/json { "field_123": "updated value" } ``` ### Delete Row ```bash DELETE /baserow/api/database/rows/table/{table_id}/{row_id}/ ``` ### Batch Create Rows ```bash POST /baserow/api/database/rows/table/{table_id}/batch/ Content-Type: application/json { "items": [ {"field_123": "value1"}, {"field_123": "value2"} ] } ``` ### Batch Update Rows ```bash PATCH /baserow/api/database/rows/table/{table_id}/batch/ Content-Type: application/json { "items": [ {"id": 1, "field_123": "updated1"}, {"id": 2, "field_123": "updated2"} ] } ``` ### Batch Delete Rows ```bash POST /baserow/api/database/rows/table/{table_id}/batch-delete/ Content-Type: application/json { "items": [1, 2, 3] } ``` ### List Fields ```bash GET /baserow/api/database/fields/table/{table_id}/ ``` ### List All Tables ```bash GET /baserow/api/database/tables/all-tables/ ``` ### Move Row ```bash PATCH /baserow/api/database/rows/table/{table_id}/{row_id}/move/?before_id={row_id} ``` ### Upload File via URL ```bash POST /baserow/api/user-files/upload-via-url/ Content-Type: application/json { "url": "https://example.com/image.png" } ``` ### Upload File (Multipart) ```bash POST /baserow/api/user-files/upload-file/ Content-Type: multipart/form-data ``` ## Query Parameters - `user_field_names=true` - Use human-readable field names - `size` - Rows per page (default: 100) - `page` - Page number (1-indexed) - `order_by` - Field to sort by (prefix `-` for descending) - `filter__{field}__{operator}` - Filter rows - `search` - Search across all fields - `include` - Fields to include - `exclude` - Fields to exclude ## Filter Operators **Text:** `equal`, `not_equal`, `contains`, `contains_not`, `contains_word`, `doesnt_contain_word`, `length_is_lower_than` **Numeric:** `higher_than`, `higher_than_or_equal`, `lower_than`, `lower_than_or_equal`, `is_even_and_whole` **Date:** `date_is`, `date_is_not`, `date_is_before`, `date_is_on_or_before`, `date_is_after`, `date_is_on_or_after`, `date_is_within`, `date_equals_today`, `date_within_days`, `date_within_weeks`, `date_within_months` **Boolean:** `boolean` **Link Row:** `link_row_has`, `link_row_has_not`, `link_row_contains`, `link_row_not_contains` **Select:** `single_select_equal`, `single_select_not_equal`, `single_select_is_any_of`, `single_select_is_none_of`, `multiple_select_has`, `multiple_select_has_not` **File:** `filename_contains`, `has_file_type`, `files_lower_than` **General:** `empty`, `not_empty` ## Resources - [Baserow API Documentation](https://baserow.io/api-docs) - [Baserow API Spec](https://api.baserow.io/api/redoc/) - [Database Tokens](https://baserow.io/user-docs/personal-api-tokens)
-
-
beehiiv
-
README.md 2.6 KB
# 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)
-
-
box
-
README.md 2.8 KB
# 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)
-
-
brevo
-
README.md 3.7 KB
# 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)
-
-
cal-com
-
README.md 3.4 KB
# 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)
-
-
calendly
-
README.md 2.6 KB
# 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)
-
-
callrail
-
README.md 3.1 KB
# 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)
-
-
chargebee
-
README.md 5.5 KB
# 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)
-
-
clickfunnels
-
README.md 5.3 KB
# 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)
-
-
clicksend
-
README.md 2.3 KB
# 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)
-
-
clickup
-
README.md 2.9 KB
# 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)
-
-
clio
-
README.md 6.1 KB
# 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/)
-
-
clockify
-
README.md 3.7 KB
# 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)
-
-
coda
-
README.md 3.6 KB
# 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)
-
-
cognito-forms
-
README.md 2.4 KB
# 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)
-
-
companycam
-
README.md 3.6 KB
# 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)
-
-
confluence
-
README.md 4.6 KB
# 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)
-
-
constant-contact
-
README.md 2.5 KB
# 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)
-
-
dropbox
-
README.md 3.1 KB
# 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)
-
-
dropbox-business
-
README.md 11.7 KB
# 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). ## 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"}, {".tag": "has_team_shared_dropbox"}, {".tag": "has_team_file_events"}, {".tag": "has_team_selective_sync"} ] } ``` ### Get Authenticated Admin ```bash POST /dropbox-business/2/team/token/get_authenticated_admin Content-Type: application/json null ``` ## Team Members ### List Members ```bash POST /dropbox-business/2/team/members/list Content-Type: application/json {"limit": 100} ``` ### List Members (V2) - Recommended ```bash POST /dropbox-business/2/team/members/list_v2 Content-Type: application/json {"limit": 100, "include_removed": false} ``` ### Continue Listing Members ```bash POST /dropbox-business/2/team/members/list/continue Content-Type: application/json {"cursor": "..."} ``` ### Get Member Info ```bash POST /dropbox-business/2/team/members/get_info Content-Type: application/json {"members": [{".tag": "email", "email": "user@company.com"}]} ``` ### Get Member Info (V2) - Recommended ```bash POST /dropbox-business/2/team/members/get_info_v2 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", "send_welcome_email": true }] } ``` ### Suspend Member ```bash POST /dropbox-business/2/team/members/suspend Content-Type: application/json {"user": {".tag": "email", "email": "user@company.com"}, "wipe_data": false} ``` ### Unsuspend Member ```bash POST /dropbox-business/2/team/members/unsuspend Content-Type: application/json {"user": {".tag": "email", "email": "user@company.com"}} ``` ### Remove Member ```bash POST /dropbox-business/2/team/members/remove Content-Type: application/json { "user": {".tag": "email", "email": "user@company.com"}, "wipe_data": true, "transfer_dest_id": {".tag": "email", "email": "admin@company.com"}, "transfer_admin_id": {".tag": "email", "email": "admin@company.com"}, "keep_account": false } ``` ### Send Welcome Email ```bash POST /dropbox-business/2/team/members/send_welcome_email Content-Type: application/json {".tag": "email", "email": "pending@company.com"} ``` ### Set Member Profile (V2) ```bash POST /dropbox-business/2/team/members/set_profile_v2 Content-Type: application/json { "user": {".tag": "team_member_id", "team_member_id": "dbmid:AAA..."}, "new_given_name": "John", "new_surname": "Smith" } ``` ### Set Admin Permissions (V2) ```bash POST /dropbox-business/2/team/members/set_admin_permissions_v2 Content-Type: application/json { "user": {".tag": "email", "email": "user@company.com"}, "new_roles": ["pid_dbtmr:..."] } ``` ### Delete Profile Photo (V2) ```bash POST /dropbox-business/2/team/members/delete_profile_photo_v2 Content-Type: application/json {"user": {".tag": "team_member_id", "team_member_id": "dbmid:AAA..."}} ``` ## Secondary Emails ### Add Secondary Emails ```bash POST /dropbox-business/2/team/members/secondary_emails/add Content-Type: application/json { "new_secondary_emails": [{ "user": {".tag": "email", "email": "user@company.com"}, "secondary_emails": ["alias@company.com"] }] } ``` ### Delete Secondary Emails ```bash POST /dropbox-business/2/team/members/secondary_emails/delete Content-Type: application/json { "emails_to_delete": [{ "user": {".tag": "email", "email": "user@company.com"}, "secondary_emails": ["alias@company.com"] }] } ``` ### Resend Verification Emails ```bash POST /dropbox-business/2/team/members/secondary_emails/resend_verification_emails Content-Type: application/json { "emails_to_resend": [{ "user": {".tag": "email", "email": "user@company.com"}, "secondary_emails": ["alias@company.com"] }] } ``` ## Groups ### List Groups ```bash POST /dropbox-business/2/team/groups/list Content-Type: application/json {"limit": 100} ``` ### Get Group Info ```bash POST /dropbox-business/2/team/groups/get_info Content-Type: application/json {".tag": "group_ids", "group_ids": ["g:1d31f47b..."]} ``` ### List Group Members ```bash POST /dropbox-business/2/team/groups/members/list Content-Type: application/json { "group": {".tag": "group_id", "group_id": "g:1d31f47b..."}, "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"} } ``` ### Update Group ```bash POST /dropbox-business/2/team/groups/update Content-Type: application/json { "group": {".tag": "group_id", "group_id": "g:1d31f47b..."}, "new_group_name": "New Name" } ``` ### Add Members to Group ```bash POST /dropbox-business/2/team/groups/members/add Content-Type: application/json { "group": {".tag": "group_id", "group_id": "g:1d31f47b..."}, "members": [{"user": {".tag": "email", "email": "user@company.com"}, "access_type": {".tag": "member"}}], "return_members": true } ``` ### Remove Members from Group ```bash POST /dropbox-business/2/team/groups/members/remove Content-Type: application/json { "group": {".tag": "group_id", "group_id": "g:1d31f47b..."}, "users": [{".tag": "email", "email": "user@company.com"}], "return_members": true } ``` ### Delete Group ```bash POST /dropbox-business/2/team/groups/delete Content-Type: application/json {".tag": "group_id", "group_id": "g:1d31f47b..."} ``` ### Check Group Job Status ```bash POST /dropbox-business/2/team/groups/job_status/get Content-Type: application/json {"async_job_id": "dbjid:..."} ``` ## Team Folders ### List Team Folders ```bash POST /dropbox-business/2/team/team_folder/list Content-Type: application/json {"limit": 100} ``` ### Get Team Folder Info ```bash POST /dropbox-business/2/team/team_folder/get_info Content-Type: application/json {"team_folder_ids": ["13646676387"]} ``` ### Create Team Folder ```bash POST /dropbox-business/2/team/team_folder/create Content-Type: application/json {"name": "Folder Name", "sync_setting": {".tag": "default"}} ``` ### Rename Team Folder ```bash POST /dropbox-business/2/team/team_folder/rename Content-Type: application/json {"team_folder_id": "13646676387", "name": "New Name"} ``` ### Archive Team Folder ```bash POST /dropbox-business/2/team/team_folder/archive Content-Type: application/json {"team_folder_id": "13646676387", "force_async_off": false} ``` ### Activate Team Folder ```bash POST /dropbox-business/2/team/team_folder/activate Content-Type: application/json {"team_folder_id": "13646676387"} ``` ### Update Sync Settings ```bash POST /dropbox-business/2/team/team_folder/update_sync_settings Content-Type: application/json {"team_folder_id": "13646676387", "sync_setting": {".tag": "default"}} ``` ### Permanently Delete Team Folder ```bash POST /dropbox-business/2/team/team_folder/permanently_delete Content-Type: application/json {"team_folder_id": "13646676387"} ``` ## 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 {} ``` ### List Member Devices ```bash POST /dropbox-business/2/team/devices/list_member_devices Content-Type: application/json {"team_member_id": "dbmid:AAA..."} ``` ### Revoke Device Session ```bash POST /dropbox-business/2/team/devices/revoke_device_session Content-Type: application/json {".tag": "web_session", "session_id": "dbwsid:...", "team_member_id": "dbmid:AAA..."} ``` ### Revoke Device Sessions (Batch) ```bash POST /dropbox-business/2/team/devices/revoke_device_session_batch Content-Type: application/json { "revoke_devices": [ {".tag": "web_session", "session_id": "dbwsid:...", "team_member_id": "dbmid:AAA..."} ] } ``` ## Linked Apps ### List Members' Linked Apps ```bash POST /dropbox-business/2/team/linked_apps/list_members_linked_apps Content-Type: application/json {} ``` ### List Team Linked Apps ```bash POST /dropbox-business/2/team/linked_apps/list_team_linked_apps Content-Type: application/json {} ``` ### Revoke Linked App ```bash POST /dropbox-business/2/team/linked_apps/revoke_linked_app Content-Type: application/json {"app_id": "...", "team_member_id": "dbmid:AAA..."} ``` ## Member Space Limits ### Get Custom Quotas ```bash POST /dropbox-business/2/team/member_space_limits/get_custom_quota Content-Type: application/json {"users": [{".tag": "email", "email": "user@company.com"}]} ``` ### Set Custom Quotas ```bash POST /dropbox-business/2/team/member_space_limits/set_custom_quota Content-Type: application/json { "users_and_quotas": [{ "user": {".tag": "email", "email": "user@company.com"}, "quota_gb": 100 }] } ``` ### List Excluded Users ```bash POST /dropbox-business/2/team/member_space_limits/excluded_users/list Content-Type: application/json {} ``` ## Sharing Allowlist ### List Sharing Allowlist ```bash POST /dropbox-business/2/team/sharing_allowlist/list Content-Type: application/json {} ``` ### Add to Sharing Allowlist ```bash POST /dropbox-business/2/team/sharing_allowlist/add Content-Type: application/json {"domains": ["partner.com"], "emails": ["external@client.com"]} ``` ## Audit Log (Team Log) ### Get Events ```bash POST /dropbox-business/2/team_log/get_events Content-Type: application/json {"limit": 100, "category": {".tag": "members"}} ``` ### Continue Getting Events ```bash POST /dropbox-business/2/team_log/get_events/continue Content-Type: application/json {"cursor": "..."} ``` ## Member File Access Use the `Dropbox-API-Select-User` header with a team_member_id to access files on behalf of a member. ### List Member's Files ```bash POST /dropbox-business/2/files/list_folder Content-Type: application/json Dropbox-API-Select-User: dbmid:AAA... {"path": ""} ``` ### List Member's Shared Folders ```bash POST /dropbox-business/2/sharing/list_folders Content-Type: application/json Dropbox-API-Select-User: dbmid:AAA... {} ``` ## 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 - Use V2 endpoints for enhanced responses with roles info - `Dropbox-API-Select-User` header enables member file access - System-managed groups cannot be modified - Reports endpoints (`team/reports/*`) are deprecated ## OAuth Scopes | Scope | Usage | |-------|-------| | `team_info.read` | Team info, features | | `members.read` | List/get members | | `members.write` | Add/modify members | | `members.delete` | Remove members | | `groups.read` | List/get groups | | `groups.write` | Create/modify groups | | `sessions.list` | List devices/sessions | | `sessions.modify` | Revoke sessions | | `events.read` | Team audit log | | `team_data.member` | Select-User header | ## Resources - [Dropbox Business API Documentation](https://www.dropbox.com/developers/documentation/http/teams) - [Team Administration Guide](https://developers.dropbox.com/dbx-team-administration-guide) - [Team Files Guide](https://developers.dropbox.com/dbx-team-files-guide)
-
-
elevenlabs
-
README.md 1.8 KB
# 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)
-
-
eventbrite
-
README.md 4.2 KB
# 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)
-
-
exa
-
README.md 4 KB
# Exa Routing Reference **App name:** `exa` **Base URL proxied:** `api.exa.ai` ## API Path Pattern ``` /exa/{endpoint} ``` ## Common Endpoints ### Search Perform neural web search with optional content extraction. ```bash POST /exa/search Content-Type: application/json { "query": "latest AI research papers", "numResults": 10 } ``` With content extraction: ```bash POST /exa/search Content-Type: application/json { "query": "machine learning tutorials", "numResults": 5, "contents": { "text": true, "highlights": true } } ``` With filters: ```bash POST /exa/search Content-Type: application/json { "query": "startup funding news", "numResults": 10, "category": "news", "startPublishedDate": "2024-01-01T00:00:00.000Z", "includeDomains": ["techcrunch.com", "venturebeat.com"] } ``` ### Get Contents Retrieve full page contents for specific URLs. ```bash POST /exa/contents Content-Type: application/json { "ids": ["https://example.com/article1", "https://example.com/article2"], "text": true } ``` With highlights and summary: ```bash POST /exa/contents Content-Type: application/json { "ids": ["https://example.com/article"], "text": true, "highlights": true, "summary": true } ``` ### Find Similar Find pages similar to a given URL. ```bash POST /exa/findSimilar Content-Type: application/json { "url": "https://anthropic.com", "numResults": 10 } ``` With domain filters: ```bash POST /exa/findSimilar Content-Type: application/json { "url": "https://openai.com", "numResults": 5, "excludeDomains": ["openai.com"] } ``` ### Answer Get AI-generated answers with citations. ```bash POST /exa/answer Content-Type: application/json { "query": "What is machine learning?", "text": true } ``` ### Research Tasks Run async research tasks that explore the web and synthesize findings. #### Create Research Task ```bash POST /exa/research/v1 Content-Type: application/json { "instructions": "What are the top AI companies and their products?", "model": "exa-research" } ``` Models: `exa-research-fast`, `exa-research` (default), `exa-research-pro` #### Get Research Task ```bash GET /exa/research/v1/{researchId} ``` Optional query params: `events=true`, `stream=true` #### List Research Tasks ```bash GET /exa/research/v1?limit=10 ``` Pagination with `cursor` and `limit` (1-50). ## Search Parameters | Parameter | Type | Description | |-----------|------|-------------| | query | string | Search query (required) | | numResults | integer | Max results (1-100, default 10) | | type | string | `neural`, `auto`, `keyword` | | category | string | `company`, `research paper`, `news`, `tweet`, `personal site`, `financial report`, `people` | | includeDomains | array | Whitelist domains | | excludeDomains | array | Blacklist domains | | startPublishedDate | string | ISO 8601 date (after) | | endPublishedDate | string | ISO 8601 date (before) | ## Content Options | Option | Type | Description | |--------|------|-------------| | text | boolean | Full page text | | highlights | boolean | Relevant snippets | | summary | boolean | AI-generated summary | ## Notes - Search/contents/answer endpoints use POST method - Research task list/get use GET method - Authentication is automatic - the gateway injects the API key - Search types: `neural` (semantic), `auto` (hybrid), `keyword` (traditional) - Maximum 100 results per request - Content extraction (text, highlights, summary) incurs additional costs - Categories `people` and `company` have restricted filter support - Timestamps are in ISO 8601 format - Costs are returned in `costDollars` field ## Resources - [Exa API Documentation](https://exa.ai/docs) - [Search API Reference](https://exa.ai/docs/reference/search) - [Contents API Reference](https://exa.ai/docs/reference/contents) - [Find Similar API Reference](https://exa.ai/docs/reference/findsimilar) - [Answer API Reference](https://exa.ai/docs/reference/answer) - [Research API Reference](https://exa.ai/docs/reference/research/create-a-task) - [LLM Reference](https://exa.ai/docs/llms.txt)
-
-
fathom
-
README.md 1.9 KB
# 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)
-
-
firebase
-
README.md 3.1 KB
# 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)
-
-
fireflies
-
README.md 1.8 KB
# 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)
-
-
getresponse
-
README.md 2.8 KB
# 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)
-
-
github
-
README.md 2.5 KB
# 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)
-
-
google-ads
-
README.md 3.9 KB
# 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)
-
-
google-analytics-admin
-
README.md 5.7 KB
# 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)
-
-
google-analytics-data
-
README.md 4.2 KB
# 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)
-
-
google-bigquery
-
README.md 3.9 KB
# 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)
-
-
google-calendar
-
README.md 3.7 KB
# 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)
-
-
google-classroom
-
README.md 2.6 KB
# 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)
-
-
google-contacts
-
README.md 3.3 KB
# 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)
-
-
google-docs
-
README.md 2.9 KB
# 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)
-
-
google-drive
-
README.md 5.1 KB
# 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)
-
-
google-forms
-
README.md 4.1 KB
# 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)
-
-
google-mail
-
README.md 3.6 KB
# 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)
-
-
google-meet
-
README.md 2.7 KB
# 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)
-
-
google-merchant
-
README.md 5 KB
# 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` **Important:** The v1 API requires one-time developer registration per Merchant Center account. Complete the registration steps below before using any endpoints. ## Developer Registration Before using v1 endpoints, you must complete a one-time registration: ### Step 1: Get Your Account ID **Option A: Try fetching via API first** Try listing accounts using the v1beta endpoint. If this works, you can get your account ID automatically: ```bash GET /google-merchant/accounts/v1beta/accounts ``` Response (if successful): ```json { "accounts": [ {"accountId": "123456789", "accountName": "My Store"} ] } ``` **Option B: From Merchant Center UI (if Option A fails)** If the v1beta endpoint is unavailable or returns an error: 1. Log in to [Google Merchant Center](https://merchants.google.com/) 2. Your account ID is in the URL: `https://merchants.google.com/mc/overview?a=YOUR_ACCOUNT_ID` For example, if your URL is `https://merchants.google.com/mc/overview?a=123456789`, your account ID is `123456789`. ### Step 2: Register for API Access ```bash POST /google-merchant/accounts/v1/accounts/{accountId}/developerRegistration:registerGcp Content-Type: application/json { "developerEmail": "your-email@example.com" } ``` Replace `{accountId}` with your account ID from Step 1, and use the email associated with your Google account. **Response:** ```json { "name": "accounts/123456789/developerRegistration", "gcpIds": ["..."] } ``` ### Step 3: Verify Registration After registration, test that v1 endpoints work: ```bash GET /google-merchant/accounts/v1/accounts/{accountId} ``` **Note:** Registration only needs to be done once per Merchant Center account. After successful registration, all v1 endpoints will work for that account. ## Common Endpoints ### List Accounts ```bash GET /google-merchant/accounts/v1/accounts ``` ### 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", "productAttributes": { "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 id, offer_id, title FROM product_view LIMIT 10" } ``` Note: The `product_view` table requires the `id` field in SELECT clause. ### List Promotions ```bash GET /google-merchant/promotions/v1/accounts/{accountId}/promotions ``` Note: Requires Promotions program enrollment. ### Get Account ```bash GET /google-merchant/accounts/v1/accounts/{accountId} ``` ### List Regional Inventories ```bash GET /google-merchant/inventories/v1/accounts/{accountId}/products/{productId}/regionalInventories ``` ### List Local Inventories ```bash GET /google-merchant/inventories/v1/accounts/{accountId}/products/{productId}/localInventories ``` Note: Local inventories only work for products with LOCAL channel. ## Notes - **Developer registration required** - Complete registration before using v1 endpoints - 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 with `input: "API"` type - Uses token-based pagination with `pageSize` and `pageToken` - Promotions require account enrollment in Promotions program - Local inventories only work for LOCAL channel products ## 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)
-
-
google-play
-
README.md 3.8 KB
# 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)
-
-
google-search-console
-
README.md 3.8 KB
# 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)
-
-
google-sheets
-
README.md 6 KB
# 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)
-
-
google-slides
-
README.md 4.5 KB
# 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)
-
-
google-tasks
-
README.md 3 KB
# 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)
-
-
google-workspace-admin
-
README.md 4.6 KB
# 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
-
-
grafana
-
README.md 2.8 KB
# Grafana Routing Reference **App name:** `grafana` **Base URL proxied:** User's Grafana instance ## API Path Pattern ``` /grafana/api/{resource} ``` ## Organization & User ### Get Current Organization ```bash GET /grafana/api/org ``` ### Get Current User ```bash GET /grafana/api/user ``` ## Dashboards ### Search Dashboards ```bash GET /grafana/api/search?type=dash-db ``` Query params: `type`, `query`, `tag`, `folderIds`, `limit` ### Get Dashboard by UID ```bash GET /grafana/api/dashboards/uid/{uid} ``` ### Create/Update Dashboard ```bash POST /grafana/api/dashboards/db Content-Type: application/json { "dashboard": { "title": "Dashboard Title", "panels": [], "schemaVersion": 30 }, "overwrite": false } ``` ### Delete Dashboard ```bash DELETE /grafana/api/dashboards/uid/{uid} ``` ## Folders ### List Folders ```bash GET /grafana/api/folders ``` ### Get Folder ```bash GET /grafana/api/folders/{uid} ``` ### Create Folder ```bash POST /grafana/api/folders Content-Type: application/json {"title": "Folder Name"} ``` ### Delete Folder ```bash DELETE /grafana/api/folders/{uid} ``` ## Data Sources ### List Data Sources ```bash GET /grafana/api/datasources ``` ### Get Data Source ```bash GET /grafana/api/datasources/{id} GET /grafana/api/datasources/uid/{uid} GET /grafana/api/datasources/name/{name} ``` ### Create Data Source ```bash POST /grafana/api/datasources Content-Type: application/json { "name": "Prometheus", "type": "prometheus", "url": "http://prometheus:9090", "access": "proxy" } ``` ### Delete Data Source ```bash DELETE /grafana/api/datasources/{id} ``` ## Annotations ### List Annotations ```bash GET /grafana/api/annotations ``` Query params: `from`, `to`, `dashboardUID`, `tags`, `limit` ### Create Annotation ```bash POST /grafana/api/annotations Content-Type: application/json { "dashboardUID": "abc123", "time": 1609459200000, "text": "Annotation text", "tags": ["tag1"] } ``` ### Delete Annotation ```bash DELETE /grafana/api/annotations/{id} ``` ## Teams ### Search Teams ```bash GET /grafana/api/teams/search ``` ### Create Team ```bash POST /grafana/api/teams Content-Type: application/json {"name": "Team Name"} ``` ## Alert Rules ### List Alert Rules ```bash GET /grafana/api/v1/provisioning/alert-rules GET /grafana/api/ruler/grafana/api/v1/rules ``` ## Other Endpoints ### Service Accounts ```bash GET /grafana/api/serviceaccounts/search ``` ### Plugins ```bash GET /grafana/api/plugins ``` ## Notes - Dashboard UIDs are unique identifiers - Annotations use epoch timestamps in milliseconds - Admin operations may require elevated permissions - Alert rules use provisioning API (`/api/v1/provisioning/...`) ## Resources - [Grafana HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/)
-
-
granola-mcp
-
schemas
-
get_meetings.json 893 B
{ "name": "get_meetings", "title": "Get detailed meeting information for one or more Granola mee", "description": "Get detailed meeting information for one or more Granola meetings by ID. Returns private notes, AI-generated summary, attendees, and metadata.\nUse this when you already have specific meeting IDs (e.g. from list_meetings results). For open-ended questions about meeting content, use query_granola_meetings instead.", "inputSchema": { "type": "object", "properties": { "meeting_ids": { "type": "array", "items": { "type": "string", "format": "uuid" }, "minItems": 1, "maxItems": 10, "description": "Array of meeting UUIDs (max 10)" } }, "required": [ "meeting_ids" ], "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" } } -
get_meeting_transcript.json 819 B
{ "name": "get_meeting_transcript", "title": "Get the full transcript for a specific Granola meeting by ID", "description": "Get the full transcript for a specific Granola meeting by ID. Returns only the verbatim transcript content, not summaries or notes.\nUse this when the user needs exact quotes, specific wording, or wants to review what was literally said in a meeting. For summarized content or action items, use query_granola_meetings or list_meetings/get_meetings instead.", "inputSchema": { "type": "object", "properties": { "meeting_id": { "type": "string", "format": "uuid", "description": "Meeting UUID" } }, "required": [ "meeting_id" ], "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" } } -
list_meetings.json 1.5 KB
{ "name": "list_meetings", "title": "List the user's Granola meeting notes within a time range. R", "description": "List the user's Granola meeting notes within a time range. Returns meeting titles and metadata.\n\nIMPORTANT: For short-term questions about recent meeting details, prefer using query_granola_meetings instead.\n\nWhen to use:\n- User asks to list their meetings\n- User asks about action items, decisions, or summaries from meetings over a longer or specific date range\n- User asks about content from their meeting transcripts\n- User references 'Granola notes' or 'meeting notes' or 'transcripts'\n\nWhen NOT to use:\n- User is asking about upcoming calendar events or scheduling\n- User wants to create/modify calendar invites\n\nUse get_meetings to retrieve detailed meeting content after identifying relevant meetings.", "inputSchema": { "type": "object", "properties": { "time_range": { "type": "string", "enum": [ "this_week", "last_week", "last_30_days", "custom" ], "default": "last_30_days", "description": "Time range to query meetings from" }, "custom_start": { "type": "string", "description": "ISO date for custom range start (required if time_range is 'custom')" }, "custom_end": { "type": "string", "description": "ISO date for custom range end (required if time_range is 'custom')" } }, "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" } } -
query_granola_meetings.json 1.6 KB
{ "name": "query_granola_meetings", "title": "Query Granola about the user's meetings using natural langua", "description": "Query Granola about the user's meetings using natural language. Returns a tailored response with inline citation links in mark (e.g. [[0]](url)) that reference source meeting notes.\n\nIMPORTANT: The response includes numbered citation links to specific Granola meeting notes. These citations MUST be preserved in your response to the user \u2014 they provide transparency and allow the user to verify information by clicking through to the original notes.\n\nWhen to use:\n- User asks about what was discussed, decided, or action-items from meetings\n- User asks about follow-ups, todos, or commitments from recent meetings\n- User references 'Granola notes' or 'meeting notes'\n\nWhen NOT to use:\n- User is asking about calendar scheduling or upcoming events\n- User explicitly asks for a specific meeting by ID (use get_meetings instead)\n\nPrioritize using query_granola_meetings over list_meetings/get_meetings for open-ended or natural language queries about meeting content.", "inputSchema": { "type": "object", "properties": { "query": { "type": "string", "minLength": 1, "description": "The query to run on Granola meeting notes" }, "document_ids": { "type": "array", "items": { "type": "string", "format": "uuid" }, "description": "Optional list of specific meeting IDs to limit context to" } }, "required": [ "query" ], "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" } }
-
-
README.md 5.7 KB
# Granola MCP Routing Reference **App name:** `granola` **Base URL proxied:** `mcp.granola.ai` ## Connection Management Manage MCP connections at `https://ctrl.maton.ai`. ### List Connections ```bash GET https://ctrl.maton.ai/connections?app=granola&method=MCP&status=ACTIVE Authorization: Bearer $MATON_API_KEY ``` ### Create Connection ```bash POST https://ctrl.maton.ai/connections Content-Type: application/json Authorization: Bearer $MATON_API_KEY { "app": "granola", "method": "MCP" } ``` ## API Path Pattern ``` /granola/{tool-name} ``` ## MCP Reference All MCP tools use `POST` method: | Tool | Description | Schema | |------|-------------|--------| | `query_granola_meetings` | Chat with meeting notes using natural language | [schema](schemas/query_granola_meetings.json) | | `list_meetings` | List meetings with metadata and attendees | [schema](schemas/list_meetings.json) | | `get_meetings` | Retrieve detailed content for specific meetings | [schema](schemas/get_meetings.json) | | `get_meeting_transcript` | Get raw transcript (paid tiers only) | [schema](schemas/get_meeting_transcript.json) | ## Common Endpoints ### Query Meetings Chat with your meeting notes using natural language queries: ```bash POST /granola/query_granola_meetings Content-Type: application/json { "query": "What action items came from my meetings this week?" } ``` **Response:** ```json { "content": [ { "type": "text", "text": "You had 2 recent meetings:\n**Feb 4, 2026 at 7:30 PM** - \"Team sync\" [[0]](https://notes.granola.ai/d/abc123)\n- Action item: Review Q1 roadmap\n- Action item: Schedule follow-up with engineering\n**Jan 27, 2026 at 1:04 AM** - \"Finance integration\" [[1]](https://notes.granola.ai/d/def456)\n- Discussed workflow automation platforms\n- Action item: Evaluate n8n vs Zapier" } ], "isError": false } ``` **Use cases:** - "What action items were assigned to me?" - "Summarize my meetings from last week" - "What did we discuss about the product launch?" - "Find all mentions of budget in my meetings" ### List Meetings List your meetings with metadata including IDs, titles, dates, and attendees: ```bash POST /granola/list_meetings Content-Type: application/json {} ``` **Response:** ```json { "content": [ { "type": "text", "text": "<meetings_data from=\"Jan 27, 2026\" to=\"Feb 4, 2026\" count=\"2\">\n<meeting id=\"0dba4400-50f1-4262-9ac7-89cd27b79371\" title=\"Team sync\" date=\"Feb 4, 2026 7:30 PM\">\n <known_participants>\n John Doe (note creator) from Acme <john@acme.com>\n Jane Smith from Acme <jane@acme.com>\n </known_participants>\n </meeting>\n\n<meeting id=\"4ebc086f-ba8d-49e8-8cd1-ed81ac8f2e3b\" title=\"Finance integration\" date=\"Jan 27, 2026 1:04 AM\">\n <known_participants>\n John Doe (note creator) from Acme <john@acme.com>\n </known_participants>\n </meeting>\n</meetings_data>" } ], "isError": false } ``` **Response fields in XML format:** - `meetings_data`: Container with `from`, `to` date range and `count` - `meeting`: Individual meeting with `id`, `title`, and `date` attributes - `known_participants`: List of attendees with name, role, company, and email ### Get Meetings Retrieve detailed content for specific meetings by ID: ```bash POST /granola/get_meetings Content-Type: application/json { "meeting_ids": ["0dba4400-50f1-4262-9ac7-89cd27b79371"] } ``` **Response:** ```json { "content": [ { "type": "text", "text": "<meetings_data from=\"Feb 4, 2026\" to=\"Feb 4, 2026\" count=\"1\">\n<meeting id=\"0dba4400-50f1-4262-9ac7-89cd27b79371\" title=\"Team sync\" date=\"Feb 4, 2026 7:30 PM\">\n <known_participants>\n John Doe (note creator) from Acme <john@acme.com>\n </known_participants>\n \n <summary>\n## Key Decisions\n- Approved Q1 roadmap\n- Budget increased by 15%\n\n## Action Items\n- @john: Review design specs by Friday\n- @jane: Schedule engineering sync\n</summary>\n</meeting>\n</meetings_data>" } ], "isError": false } ``` **Response includes:** - Meeting metadata (id, title, date, participants) - `summary`: AI-generated meeting summary with key decisions and action items - Enhanced notes and private notes (when available) ### Get Meeting Transcript Retrieve the raw transcript for a specific meeting (paid tiers only): ```bash POST /granola/get_meeting_transcript Content-Type: application/json { "meeting_id": "0dba4400-50f1-4262-9ac7-89cd27b79371" } ``` **Response (paid tier):** ```json { "content": [ { "type": "text", "text": "<transcript meeting_id=\"0dba4400-50f1-4262-9ac7-89cd27b79371\">\n[00:00:15] John: Let's get started with the Q1 planning...\n[00:01:23] Jane: I've prepared the budget breakdown...\n[00:03:45] John: That looks good. What about the timeline?\n</transcript>" } ], "isError": false } ``` **Response (free tier):** ```json { "content": [ { "type": "text", "text": "Transcripts are only available to paid Granola tiers" } ], "isError": true } ``` ## Notes - All IDs are UUIDs (with or without hyphens) - Users can only query their own meeting notes; shared notes from others are not accessible - Basic (free) plan users are limited to notes from the last 30 days - The `get_meeting_transcript` tool is only available on paid Granola tiers - If multiple Granola connections exist, specify which to use with `Maton-Connection` header - Session can be reused by passing the `Mcp-Session-Id` header from previous responses - Rate limit: ~100 requests/minute ## Resources - [Granola MCP Documentation](https://docs.granola.ai/help-center/sharing/integrations/mcp) - [Granola Help Center](https://docs.granola.ai) - [Maton Community](https://discord.com/invite/dBfFAcefs2) - [Maton Support](mailto:support@maton.ai)
-
-
gumroad
-
README.md 3.3 KB
# 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)
-
-
hubspot
-
README.md 9.8 KB
# 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)
-
-
instantly
-
README.md 3 KB
# 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)
-
-
jira
-
README.md 4.5 KB
# 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/)
-
-
jobber
-
README.md 3.6 KB
# 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)
-
-
jotform
-
README.md 3.6 KB
# 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)
-
-
kaggle
-
README.md 2.5 KB
# Kaggle Routing Reference **App name:** `kaggle` **Base URL proxied:** `api.kaggle.com` ## API Path Pattern Kaggle uses an RPC-style API with POST requests: ``` /kaggle/v1/{ServiceName}/{MethodName} ``` All requests are POST with JSON body. ## Datasets ### List Datasets ```bash POST /kaggle/v1/datasets.DatasetApiService/ListDatasets Content-Type: application/json {} ``` Optional parameters: `search`, `user`, `pageSize`, `pageToken` ### Get Dataset ```bash POST /kaggle/v1/datasets.DatasetApiService/GetDataset Content-Type: application/json { "ownerSlug": "username", "datasetSlug": "dataset-name" } ``` ### List Dataset Files ```bash POST /kaggle/v1/datasets.DatasetApiService/ListDatasetFiles Content-Type: application/json { "ownerSlug": "username", "datasetSlug": "dataset-name" } ``` ### Get Dataset Metadata ```bash POST /kaggle/v1/datasets.DatasetApiService/GetDatasetMetadata Content-Type: application/json { "ownerSlug": "username", "datasetSlug": "dataset-name" } ``` ### Download Dataset ```bash POST /kaggle/v1/datasets.DatasetApiService/DownloadDataset Content-Type: application/json { "ownerSlug": "username", "datasetSlug": "dataset-name" } ``` Returns binary ZIP file. ## Models ### List Models ```bash POST /kaggle/v1/models.ModelApiService/ListModels Content-Type: application/json {} ``` Optional parameters: `owner`, `search`, `pageSize` ### Get Model ```bash POST /kaggle/v1/models.ModelApiService/GetModel Content-Type: application/json { "ownerSlug": "google", "modelSlug": "gemma" } ``` ## Competitions ### List Competitions ```bash POST /kaggle/v1/competitions.CompetitionApiService/ListCompetitions Content-Type: application/json {} ``` Optional parameters: `search`, `category`, `pageSize` ## Kernels (Notebooks) ### List Kernels ```bash POST /kaggle/v1/kernels.KernelsApiService/ListKernels Content-Type: application/json {} ``` Optional parameters: `search`, `user`, `language`, `pageSize` ### Get Kernel ```bash POST /kaggle/v1/kernels.KernelsApiService/GetKernel Content-Type: application/json { "userName": "username", "kernelSlug": "kernel-slug" } ``` ## Notes - All requests use POST method with JSON body - API follows RPC pattern: `/v1/{ServiceName}/{MethodName}` - Dataset refs: `{owner}/{dataset-slug}` - Model refs: `{owner}/{model-slug}` - Kernel refs: `{user}/{kernel-slug}` - Download endpoints return binary ZIP files - Authentication uses Kaggle API key (managed via Maton connection) ## Resources - [Kaggle API Documentation](https://www.kaggle.com/docs/api)
-
-
keap
-
README.md 3.1 KB
# 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/)
-
-
kibana
-
README.md 2.7 KB
# Kibana Routing Reference **App name:** `kibana` **Base URL proxied:** User's Kibana instance ## API Path Pattern ``` /kibana/api/{resource} ``` **Important:** All requests require `kbn-xsrf: true` header. ## Status & Features ### Get Status ```bash GET /kibana/api/status ``` ### List Features ```bash GET /kibana/api/features ``` ## Saved Objects ### Find Saved Objects ```bash GET /kibana/api/saved_objects/_find?type={type} ``` Types: `dashboard`, `visualization`, `index-pattern`, `search`, `lens`, `map` ### Get Saved Object ```bash GET /kibana/api/saved_objects/{type}/{id} ``` ### Create Saved Object ```bash POST /kibana/api/saved_objects/{type}/{id} Content-Type: application/json {"attributes": {"title": "Name"}} ``` ### Delete Saved Object ```bash DELETE /kibana/api/saved_objects/{type}/{id} ``` ## Data Views ### List Data Views ```bash GET /kibana/api/data_views ``` ### Get Data View ```bash GET /kibana/api/data_views/data_view/{id} ``` ### Create Data View ```bash POST /kibana/api/data_views/data_view Content-Type: application/json { "data_view": { "title": "logs-*", "timeFieldName": "@timestamp" } } ``` ### Delete Data View ```bash DELETE /kibana/api/data_views/data_view/{id} ``` ## Spaces ### List Spaces ```bash GET /kibana/api/spaces/space ``` ### Get Space ```bash GET /kibana/api/spaces/space/{id} ``` ### Create Space ```bash POST /kibana/api/spaces/space Content-Type: application/json {"id": "space-id", "name": "Space Name"} ``` ### Delete Space ```bash DELETE /kibana/api/spaces/space/{id} ``` ## Alerting ### Find Alert Rules ```bash GET /kibana/api/alerting/rules/_find ``` ### Get Alert Rule ```bash GET /kibana/api/alerting/rule/{id} ``` ### Enable/Disable Rule ```bash POST /kibana/api/alerting/rule/{id}/_enable POST /kibana/api/alerting/rule/{id}/_disable ``` ## Connectors ### List Connectors ```bash GET /kibana/api/actions/connectors ``` ### Get Connector ```bash GET /kibana/api/actions/connector/{id} ``` ### Execute Connector ```bash POST /kibana/api/actions/connector/{id}/_execute ``` ## Fleet ### List Agent Policies ```bash GET /kibana/api/fleet/agent_policies ``` ### List Agents ```bash GET /kibana/api/fleet/agents ``` ### List Packages ```bash GET /kibana/api/fleet/epm/packages ``` ## Security ### List Roles ```bash GET /kibana/api/security/role ``` ## Cases ### Find Cases ```bash GET /kibana/api/cases/_find ``` ## Notes - All requests require `kbn-xsrf: true` header - Saved object types: dashboard, visualization, index-pattern, search, lens, map - Data views replace index patterns in newer versions - Fleet manages Elastic Agents ## Resources - [Kibana REST API](https://www.elastic.co/docs/api/doc/kibana/)
-
-
kit
-
README.md 3.3 KB
# 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)
-
-
klaviyo
-
README.md 3.8 KB
# 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)
-
-
lemlist
-
README.md 2.4 KB
# 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/)
-
-
linear
-
README.md 4.3 KB
# 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)
-
-
linkedin
-
README.md 5.4 KB
# 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)
-
-
mailchimp
-
README.md 4.1 KB
# 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/)
-
-
mailerlite
-
README.md 4 KB
# 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)
-
-
mailgun
-
README.md 4.7 KB
# 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)
-
-
manus
-
README.md 2.4 KB
# Manus Routing Reference **App name:** `manus` **Base URL proxied:** `api.manus.ai` ## API Path Pattern ``` /manus/v1/projects /manus/v1/tasks /manus/v1/files /manus/v1/webhooks ``` ## Important Notes - Connection uses API_KEY authentication method (not OAuth) - Tasks are executed asynchronously - poll for completion or use webhooks - File uploads use presigned S3 URLs that expire in ~3 minutes - Files expire after ~48 hours if not used ## Common Endpoints ### Projects #### List Projects ```bash GET /manus/v1/projects ``` #### Create Project ```bash POST /manus/v1/projects Content-Type: application/json { "name": "My Project", "default_instructions": "You are a helpful assistant." } ``` ### Tasks #### List Tasks ```bash GET /manus/v1/tasks ``` #### Get Task ```bash GET /manus/v1/tasks/{task_id} ``` #### Create Task ```bash POST /manus/v1/tasks Content-Type: application/json { "prompt": "What is the capital of France?" } ``` Optional fields: - `project_id`: Associate with a project - `file_ids`: Attach files to the task #### Delete Task ```bash DELETE /manus/v1/tasks/{task_id} ``` ### Files #### List Files ```bash GET /manus/v1/files ``` Returns the 10 most recently uploaded files. #### Get File ```bash GET /manus/v1/files/{file_id} ``` #### Create File ```bash POST /manus/v1/files Content-Type: application/json { "filename": "document.pdf" } ``` Returns a presigned S3 upload URL. Upload your file to `upload_url` using PUT. #### Delete File ```bash DELETE /manus/v1/files/{file_id} ``` ### Webhooks #### Create Webhook ```bash POST /manus/v1/webhooks Content-Type: application/json { "webhook": { "url": "https://example.com/webhook" } } ``` Note: The webhook URL must be nested inside a `webhook` object. #### Delete Webhook ```bash DELETE /manus/v1/webhooks/{webhook_id} ``` ## Task Status Values - `pending`: Task is queued - `running`: Task is being executed - `completed`: Task finished successfully - `failed`: Task failed ## File Status Values - `pending`: File record created, awaiting upload - `ready`: File uploaded and available - `expired`: File has expired ## Available Models - `manus-1.6` - `manus-1.6-lite` - `manus-1.6-max` - `manus-1.5` - `manus-1.5-lite` - `speed` ## Resources - [Manus API Overview](https://open.manus.im/docs) - [Manus API Reference](https://open.manus.im/docs/api-reference) - [Manus Website](https://manus.im)
-
-
manychat
-
README.md 3.6 KB
# 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)
-
-
microsoft-excel
-
README.md 3.8 KB
# 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)
-
-
microsoft-teams
-
README.md 5.9 KB
# Microsoft Teams Routing Reference **App name:** `microsoft-teams` **Base URL proxied:** `graph.microsoft.com` ## API Path Pattern ``` /microsoft-teams/v1.0/{resource} ``` ## Common Endpoints ### Teams #### List Joined Teams ```bash GET /microsoft-teams/v1.0/me/joinedTeams ``` #### Get Team ```bash GET /microsoft-teams/v1.0/teams/{team-id} ``` ### Channels #### List Channels ```bash GET /microsoft-teams/v1.0/teams/{team-id}/channels ``` #### List Private Channels ```bash GET /microsoft-teams/v1.0/teams/{team-id}/channels?$filter=membershipType eq 'private' ``` #### Get Channel ```bash GET /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id} ``` #### Create Channel ```bash POST /microsoft-teams/v1.0/teams/{team-id}/channels Content-Type: application/json { "displayName": "Channel Name", "description": "Description", "membershipType": "standard" } ``` #### Update Channel ```bash PATCH /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id} Content-Type: application/json { "description": "Updated description" } ``` #### Delete Channel ```bash DELETE /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id} ``` ### Channel Members #### List Channel Members ```bash GET /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id}/members ``` ### Messages #### List Channel Messages ```bash GET /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id}/messages ``` #### Send Message ```bash POST /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id}/messages Content-Type: application/json { "body": { "content": "Hello World" } } ``` #### Send HTML Message ```bash POST /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id}/messages Content-Type: application/json { "body": { "contentType": "html", "content": "<p>Formatted message</p>" } } ``` #### Reply to Message ```bash POST /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id}/messages/{message-id}/replies Content-Type: application/json { "body": { "content": "Reply content" } } ``` #### List Message Replies ```bash GET /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id}/messages/{message-id}/replies ``` #### Edit Message ```bash PATCH /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id}/messages/{message-id} Content-Type: application/json { "body": { "content": "Updated message content" } } ``` ### Team Members #### List Members ```bash GET /microsoft-teams/v1.0/teams/{team-id}/members ``` ### Presence #### Get User Presence ```bash GET /microsoft-teams/v1.0/me/presence ``` #### Get User Presence by ID ```bash GET /microsoft-teams/v1.0/users/{user-id}/presence ``` ### Tabs #### List Channel Tabs ```bash GET /microsoft-teams/v1.0/teams/{team-id}/channels/{channel-id}/tabs ``` ### Apps #### List Installed Apps ```bash GET /microsoft-teams/v1.0/teams/{team-id}/installedApps ``` ### Online Meetings #### Create Meeting ```bash POST /microsoft-teams/v1.0/me/onlineMeetings Content-Type: application/json { "subject": "Team Sync", "startDateTime": "2026-02-18T10:00:00Z", "endDateTime": "2026-02-18T11:00:00Z" } ``` #### Create Meeting with Attendees ```bash POST /microsoft-teams/v1.0/me/onlineMeetings Content-Type: application/json { "subject": "Project Review", "startDateTime": "2026-02-18T14:00:00Z", "endDateTime": "2026-02-18T15:00:00Z", "participants": { "attendees": [ { "upn": "attendee@example.com", "role": "attendee" } ] } } ``` #### Get Meeting ```bash GET /microsoft-teams/v1.0/me/onlineMeetings/{meeting-id} ``` #### Find Meeting by Join URL ```bash GET /microsoft-teams/v1.0/me/onlineMeetings?$filter=JoinWebUrl eq '{encoded-join-url}' ``` #### Delete Meeting ```bash DELETE /microsoft-teams/v1.0/me/onlineMeetings/{meeting-id} ``` #### List Calendar Events ```bash GET /microsoft-teams/v1.0/me/calendar/events?$top=10 ``` #### List Meeting Recordings ```bash GET /microsoft-teams/v1.0/me/onlineMeetings/{meeting-id}/recordings ``` #### Get Meeting Recording ```bash GET /microsoft-teams/v1.0/me/onlineMeetings/{meeting-id}/recordings/{recording-id} ``` #### List Meeting Transcripts ```bash GET /microsoft-teams/v1.0/me/onlineMeetings/{meeting-id}/transcripts ``` #### Get Meeting Transcript ```bash GET /microsoft-teams/v1.0/me/onlineMeetings/{meeting-id}/transcripts/{transcript-id} ``` #### List Attendance Reports ```bash GET /microsoft-teams/v1.0/me/onlineMeetings/{meeting-id}/attendanceReports ``` #### Get Attendance Report ```bash GET /microsoft-teams/v1.0/me/onlineMeetings/{meeting-id}/attendanceReports/{report-id} ``` ### Chats #### List Chats ```bash GET /microsoft-teams/v1.0/me/chats ``` #### Get Chat ```bash GET /microsoft-teams/v1.0/chats/{chat-id} ``` #### List Chat Messages ```bash GET /microsoft-teams/v1.0/chats/{chat-id}/messages ``` #### Send Chat Message ```bash POST /microsoft-teams/v1.0/chats/{chat-id}/messages Content-Type: application/json { "body": { "content": "Hello" } } ``` ## OData Query Parameters - `$top=10` - Limit results - `$skip=20` - Skip results - `$select=id,displayName` - Select specific fields - `$filter=membershipType eq 'private'` - Filter results - `$orderby=displayName` - Sort results ## Notes - Uses Microsoft Graph API (`graph.microsoft.com`) - Channel IDs include thread suffix: `19:xxx@thread.tacv2` - Message body content types: `text` or `html` - Channel membership types: `standard`, `private`, `shared` - Supports OData query parameters for filtering and pagination - Meeting recordings/transcripts available after meeting ends ## Resources - [Microsoft Teams API Overview](https://learn.microsoft.com/en-us/graph/api/resources/teams-api-overview) - [Microsoft Graph API Reference](https://learn.microsoft.com/en-us/graph/api/overview) - [Channel Resource](https://learn.microsoft.com/en-us/graph/api/resources/channel) - [ChatMessage Resource](https://learn.microsoft.com/en-us/graph/api/resources/chatmessage)
-
-
microsoft-to-do
-
README.md 3.6 KB
# 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)
-
-
monday
-
README.md 4.4 KB
# 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)
-
-
motion
-
README.md 2.7 KB
# 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)
-
-
netlify
-
README.md 3.6 KB
# 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)
-
-
notion
-
README.md 7.9 KB
# 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)
-
-
notion-mcp
-
schemas
-
notion-create-comment.json 17.6 KB
{ "name": "notion-create-comment", "title": "Create a page comment", "description": "Add a comment to a page or specific content.\nCreates a new comment. Provide `page_id` to identify the page, then choose ONE targeting mode:\n- `page_id` alone: Page-level comment on the entire page\n- `page_id` + `selection_with_ellipsis`: Comment on specific block content\n- `discussion_id`: Reply to an existing discussion thread (page_id is still required)\n\nFor content targeting, use `selection_with_ellipsis` with ~10 chars from start and end: \"# Section Ti...tle content\"\n<example description=\"Page-level comment\">\n{\"page_id\": \"uuid\", \"rich_text\": [{\"text\": {\"content\": \"Comment\"}}]}\n</example>\n<example description=\"Comment on specific content\">\n{\"page_id\": \"uuid\", \"selection_with_ellipsis\": \"# Meeting No...es heading\",\n \"rich_text\": [{\"text\": {\"content\": \"Comment on this section\"}}]}\n</example>\n<example description=\"Reply to discussion\">\n{\"page_id\": \"uuid\", \"discussion_id\": \"discussion://pageId/blockId/discussionId\",\n \"rich_text\": [{\"text\": {\"content\": \"Reply\"}}]}\n</example>", "inputSchema": { "type": "object", "properties": { "rich_text": { "type": "array", "items": { "allOf": [ { "type": "object", "properties": { "annotations": { "type": "object", "properties": { "bold": { "type": "boolean" }, "italic": { "type": "boolean" }, "strikethrough": { "type": "boolean" }, "underline": { "type": "boolean" }, "code": { "type": "boolean" }, "color": { "type": "string" } }, "additionalProperties": true, "description": "All rich text objects contain an annotations object that sets the styling for the rich text." } }, "additionalProperties": true }, { "anyOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "text" ] }, "text": { "type": "object", "properties": { "content": { "type": "string", "maxLength": 2000, "description": "The actual text content of the text." }, "link": { "anyOf": [ { "type": "object", "properties": { "url": { "type": "string", "description": "The URL of the link." } }, "required": [ "url" ], "additionalProperties": true }, { "type": "null" } ], "description": "An object with information about any inline link in this text, if included." } }, "required": [ "content" ], "additionalProperties": false, "description": "If a rich text object's type value is `text`, then the corresponding text field contains an object including the text content and any inline link." } }, "required": [ "text" ], "additionalProperties": true }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "mention" ] }, "mention": { "anyOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "user" ] }, "user": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the user." }, "object": { "type": "string", "enum": [ "user" ] } }, "required": [ "id" ], "additionalProperties": true, "description": "Details of the user mention." } }, "required": [ "user" ], "additionalProperties": true }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "date" ] }, "date": { "type": "object", "properties": { "start": { "type": "string", "format": "date", "description": "The start date of the date object." }, "end": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "description": "The end date of the date object, if any." }, "time_zone": { "type": [ "string", "null" ], "description": "The time zone of the date object, if any. E.g. America/Los_Angeles, Europe/London, etc." } }, "required": [ "start" ], "additionalProperties": false, "description": "Details of the date mention." } }, "required": [ "date" ], "additionalProperties": true }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "page" ] }, "page": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the page in the mention." } }, "required": [ "id" ], "additionalProperties": true, "description": "Details of the page mention." } }, "required": [ "page" ], "additionalProperties": true }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "database" ] }, "database": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the database in the mention." } }, "required": [ "id" ], "additionalProperties": true, "description": "Details of the database mention." } }, "required": [ "database" ], "additionalProperties": true }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "template_mention" ] }, "template_mention": { "anyOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "template_mention_date" ] }, "template_mention_date": { "type": "string", "enum": [ "today", "now" ] } }, "required": [ "template_mention_date" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "template_mention_user" ] }, "template_mention_user": { "type": "string", "enum": [ "me" ] } }, "required": [ "template_mention_user" ], "additionalProperties": false } ], "description": "Details of the template mention." } }, "required": [ "template_mention" ], "additionalProperties": true }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "custom_emoji" ] }, "custom_emoji": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the custom emoji." }, "name": { "type": "string", "description": "The name of the custom emoji." }, "url": { "type": "string", "description": "The URL of the custom emoji." } }, "required": [ "id" ], "additionalProperties": true, "description": "Details of the custom emoji mention." } }, "required": [ "custom_emoji" ], "additionalProperties": true } ], "description": "Mention objects represent an inline mention of a database, date, link preview mention, page, template mention, or user. A mention is created in the Notion UI when a user types `@` followed by the name of the reference." } }, "required": [ "mention" ], "additionalProperties": true }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "equation" ] }, "equation": { "type": "object", "properties": { "expression": { "type": "string", "description": "A KaTeX compatible string." } }, "required": [ "expression" ], "additionalProperties": true, "description": "Notion supports inline LaTeX equations as rich text objects with a type value of `equation`." } }, "required": [ "equation" ], "additionalProperties": true } ] } ] }, "maxItems": 100, "description": "An array of rich text objects that represent the content of the comment." }, "page_id": { "type": "string", "description": "The ID of the page to comment on (with or without dashes)." }, "discussion_id": { "type": "string", "description": "The ID or URL of an existing discussion to reply to (e.g., discussion://pageId/blockId/discussionId)." }, "selection_with_ellipsis": { "type": "string", "description": "Unique start and end snippet of the content to comment on. DO NOT provide the entire string. Instead, provide up to the first ~10 characters, an ellipsis, and then up to the last ~10 characters. Make sure you provide enough of the start and end snippet to uniquely identify the content. For example: \"# Section heading...last paragraph.\"" } }, "required": [ "rich_text", "page_id" ], "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" } } -
notion-create-database.json 3.4 KB
{ "name": "notion-create-database", "title": "Create Notion database", "description": "Creates a new Notion database using SQL DDL syntax.\nIf no title property provided, \"Name\" is auto-added. Returns Markdown with schema, SQLite definition, and data source ID in <data-source> tag for use with update_data_source and query_data_sources tools.\nThe schema param accepts a CREATE TABLE statement defining columns.\nType syntax:\n- Simple: TITLE, RICH_TEXT, DATE, PEOPLE, CHECKBOX, URL, EMAIL, PHONE_NUMBER, STATUS, FILES\n- SELECT('opt':color, ...) / MULTI_SELECT('opt':color, ...)\n- NUMBER [FORMAT 'dollar'] / FORMULA('expression')\n- RELATION('data_source_id') \u2014 one-way relation\n- RELATION('data_source_id', DUAL) \u2014 two-way relation\n- RELATION('data_source_id', DUAL 'synced_name') \u2014 two-way with synced property name\n- RELATION('data_source_id', DUAL 'synced_name' 'synced_id') \u2014 two-way with synced name and ID (for self-relations)\n- ROLLUP('rel_prop', 'target_prop', 'function')\n- UNIQUE_ID [PREFIX 'X'] / CREATED_TIME / LAST_EDITED_TIME\n- Any column: COMMENT 'description text' Colors: default, gray, brown, orange, yellow, green, blue, purple, pink, red\n\n<example description=\"Minimal\">{\"schema\": \"CREATE TABLE (\"Name\" TITLE)\"}</example>\n<example description=\"Task DB\">{\"title\": \"Tasks\", \"schema\": \"CREATE TABLE (\"Task Name\" TITLE, \"Status\" SELECT('To Do':red, 'Done':green), \"Due Date\" DATE)\"}</example>\n<example description=\"With parent and options\">{\"parent\": {\"page_id\": \"f336d0bc-b841-465b-8045-024475c079dd\"}, \"title\": \"Projects\", \"schema\": \"CREATE TABLE (\"Name\" TITLE, \"Budget\" NUMBER FORMAT 'dollar', \"Tags\" MULTI_SELECT('eng':blue, 'design':pink), \"Task ID\" UNIQUE_ID PREFIX 'PRJ')\"}</example>\n<example description=\"Self-relation (two-step: create database first, then use its data source ID with update_data_source to add self-relations)\">{\"title\": \"Tasks\", \"schema\": \"CREATE TABLE (\"Name\" TITLE, \"Parent\" RELATION('ds_id', DUAL 'Children' 'children'), \"Children\" RELATION('ds_id', DUAL 'Parent' 'parent'))\"}</example>", "inputSchema": { "type": "object", "properties": { "schema": { "type": "string", "description": "SQL DDL CREATE TABLE statement defining the database schema. Column names must be double-quoted, type options use single quotes." }, "parent": { "type": "object", "properties": { "page_id": { "type": "string", "description": "The ID of the parent page (with or without dashes), for example, 195de9221179449fab8075a27c979105" }, "type": { "type": "string", "enum": [ "page_id" ] } }, "required": [ "page_id" ], "additionalProperties": true, "description": "The parent under which to create the new database. If omitted, the database will be created as a private page at the workspace level." }, "title": { "type": "string", "description": "The title of the new database." }, "description": { "type": "string", "description": "The description of the new database." } }, "required": [ "schema" ], "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" } } -
notion-create-pages.json 8.7 KB
{ "name": "notion-create-pages", "title": "Create pages in Markdown", "description": "## Overview\nCreates one or more Notion pages, with the specified properties and content.\n## Parent\nAll pages created with a single call to this tool will have the same parent. The parent can be a Notion page (\"page_id\") or data source (\"data_source_id\"). If the parent is omitted, the pages are created as standalone, workspace-level private pages, and the person that created them can organize them later as they see fit.\nIf you have a database URL, ALWAYS pass it to the \"fetch\" tool first to get the schema and URLs of each data source under the database. You can't use the \"database_id\" parent type if the database has more than one data source, so you'll need to identify which \"data_source_id\" to use based on the situation and the results from the fetch tool (data source URLs look like collection://<data_source_id>).\nIf you know the pages should be created under a data source, do NOT use the database ID or URL under the \"page_id\" parameter; \"page_id\" is only for regular, non-database pages.\n## Content\nNotion page content is a string in Notion-flavored Markdown format.\nDon't include the page title at the top of the page's content. Only include it under \"properties\".\n**IMPORTANT**: For the complete Markdown specification, always first fetch the MCP resource at `notion://docs/enhanced-markdown-spec`. Do NOT guess or hallucinate Markdown syntax. This spec is also applicable to other tools like update-page and fetch.\n## Properties\nNotion page properties are a JSON map of property names to SQLite values.\nWhen creating pages in a database:\n- Use the correct property names from the data source schema shown in the fetch tool results.\n- Always include a title property. Data sources always have exactly one title property, but it may not be named \"title\", so, again, rely on the fetched data source schema.\n\nFor pages outside of a database:\n- The only allowed property is \"title\",\twhich is the title of the page in inline markdown format. Always include a \"title\" property.\n\n**IMPORTANT**: Some property types require expanded formats:\n- Date properties: Split into \"date:{property}:start\", \"date:{property}:end\" (optional), and \"date:{property}:is_datetime\" (0 or 1)\n- Place properties: Split into \"place:{property}:name\", \"place:{property}:address\", \"place:{property}:latitude\", \"place:{property}:longitude\", and \"place:{property}:google_place_id\" (optional)\n- Number properties: Use JavaScript numbers (not strings)\n- Checkbox properties: Use \"__YES__\" for checked, \"__NO__\" for unchecked\n\n**Special property naming**: Properties named \"id\" or \"url\" (case insensitive) must be prefixed with \"userDefined:\" (e.g., \"userDefined:URL\", \"userDefined:id\")\n## Templates\nWhen creating a page in a database, you can apply a template to pre-populate it with content and property values. Use the \"fetch\" tool on a database to see available templates in the <templates> section of each data source.\nWhen using a template:\n- Pass the template's ID as \"template_id\" in the page object.\n- Do NOT include \"content\" when using a template, as the template provides it.\n- You can still set \"properties\" alongside the template to override template defaults.\n- Template application is asynchronous. The page is created immediately but starts blank; the template content will appear shortly after.\n\n## Examples\n\t\t<example description=\"Create a page from a database template\">\n\t\t{\n\t\t\t\"parent\": {\"data_source_id\": \"f336d0bc-b841-465b-8045-024475c079dd\"},\n\t\t\t\"pages\": [\n\t\t\t\t{\n\t\t\t\t\t\"template_id\": \"a5da15f6-b853-455d-8827-f906fb52db2b\",\n\t\t\t\t\t\"properties\": {\n\t\t\t\t\t\t\"Task Name\": \"New urgent bug\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t\t</example>\n\t\t<example description=\"Create a standalone page with a title and content\">\n\t\t{\n\t\t\t\"pages\": [\n\t\t\t\t{\n\t\t\t\t\t\"properties\": {\"title\": \"Page title\"},\n\t\t\t\t\t\"content\": \"# Section 1 {color=\"blue\"}\nSection 1 content\n<details>\n<summary>Toggle block</summary>\n\tHidden content inside toggle\n</details>\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t\t</example>\n\t\t<example description=\"Create a page under a database's data source\">\n\t\t{\n\t\t\t\"parent\": {\"data_source_id\": \"f336d0bc-b841-465b-8045-024475c079dd\"},\n\t\t\t\"pages\": [\n\t\t\t\t{\n\t\t\t\t\t\"properties\": {\n\t\t\t\t\t\t\"Task Name\": \"Task 123\",\n\t\t\t\t\t\t\"Status\": \"In Progress\",\n\t\t\t\t\t\t\"Priority\": 5,\n\t\t\t\t\t\t\"Is Complete\": \"__YES__\",\n\t\t\t\t\t\t\"date:Due Date:start\": \"2024-12-25\",\n\t\t\t\t\t\t\"date:Due Date:is_datetime\": 0\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t\t</example>\n\t\t<example description=\"Create a page with an existing page as a parent\">\n\t\t{\n\t\t\t\"parent\": {\"page_id\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\"},\n\t\t\t\"pages\": [\n\t\t\t\t{\n\t\t\t\t\t\"properties\": {\"title\": \"Page title\"},\n\t\t\t\t\t\"content\": \"# Section 1\nSection 1 content\n# Section 2\nSection 2 content\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t\t</example>", "inputSchema": { "type": "object", "properties": { "pages": { "type": "array", "items": { "type": "object", "properties": { "properties": { "type": "object", "additionalProperties": { "type": [ "string", "number", "null" ] }, "description": "The properties of the new page, which is a JSON map of property names to SQLite values. For pages in a database, use the SQLite schema definition shown in <database>. For pages outside of a database, the only allowed property is \"title\", which is the title of the page and is automatically shown at the top of the page as a large heading." }, "content": { "type": "string", "description": "The content of the new page, using Notion Markdown." }, "template_id": { "type": "string", "description": "The ID of a template to apply to this page. When specified, do not provide 'content' as the template will provide it. Properties can still be set alongside the template. Get template IDs from the <templates> section in the fetch tool results." } }, "additionalProperties": false }, "maxItems": 100, "description": "The pages to create." }, "parent": { "anyOf": [ { "type": "object", "properties": { "page_id": { "type": "string", "description": "The ID of the parent page (with or without dashes), for example, 195de9221179449fab8075a27c979105" }, "type": { "type": "string", "enum": [ "page_id" ] } }, "required": [ "page_id" ], "additionalProperties": true }, { "type": "object", "properties": { "database_id": { "type": "string", "description": "The ID of the parent database (with or without dashes), for example, 195de9221179449fab8075a27c979105" }, "type": { "type": "string", "enum": [ "database_id" ] } }, "required": [ "database_id" ], "additionalProperties": true }, { "type": "object", "properties": { "data_source_id": { "type": "string", "description": "The ID of the parent data source (collection), with or without dashes. For example, f336d0bc-b841-465b-8045-024475c079dd" }, "type": { "type": "string", "enum": [ "data_source_id" ] } }, "required": [ "data_source_id" ], "additionalProperties": true } ], "description": "The parent under which the new pages will be created. This can be a page (page_id), a database page (database_id), or a data source/collection under a database (data_source_id). If omitted, the new pages will be created as private pages at the workspace level. Use data_source_id when you have a collection:// URL from the fetch tool." } }, "required": [ "pages" ], "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" } } -
notion-duplicate-page.json 927 B
{ "name": "notion-duplicate-page", "title": "Duplicate Notion page", "description": "Duplicate a Notion page. The page must be within the current workspace, and you must have permission to access it. The duplication completes asynchronously, so do not rely on the new page identified by the returned ID or URL to be populated immediately. Let the user know that the duplication is in progress and that they can check back later using the 'fetch' tool or by clicking the returned URL and viewing it in the Notion app.", "inputSchema": { "type": "object", "properties": { "page_id": { "type": "string", "description": "The ID of the page to duplicate. This is a v4 UUID, with or without dashes, and can be parsed from a Notion page URL." } }, "required": [ "page_id" ], "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" } } -
notion-fetch.json 2.1 KB
{ "name": "notion-fetch", "title": "Fetch Notion entities", "description": "Retrieves details about a Notion entity (page, database, or data source) by URL or ID.\nProvide URL or ID in `id` parameter. Make multiple calls to fetch multiple entities.\nPages use enhanced Markdown format. For the complete specification, fetch the MCP resource at `notion://docs/enhanced-markdown-spec`.\nDatabases return all data sources (collections). Each data source has a unique ID shown in `<data-source url=\"collection://...\">` tags. You can pass a data source ID directly to this tool to fetch details about that specific data source, including its schema and properties. Use data source IDs with update_data_source and query_data_sources tools. Multi-source databases (e.g., with linked sources) will show multiple data sources.\nSet `include_discussions` to true to see discussion counts and inline discussion markers that correlate with the `get_comments` tool. The page output will include a `<page-discussions>` summary tag with discussion count, preview snippets, and `discussion://` URLs that match the discussion IDs returned by `get_comments`.\n<example>{\"id\": \"https://notion.so/workspace/Page-a1b2c3d4e5f67890\"}</example>\n<example>{\"id\": \"12345678-90ab-cdef-1234-567890abcdef\"}</example>\n<example>{\"id\": \"https://myspace.notion.site/Page-Title-abc123def456\"}</example>\n<example>{\"id\": \"page-uuid\", \"include_discussions\": true}</example>\n<example>{\"id\": \"collection://12345678-90ab-cdef-1234-567890abcdef\"}</example>", "inputSchema": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID or URL of the Notion page, database, or data source to fetch. Supports notion.so URLs, Notion Sites URLs (*.notion.site), raw UUIDs, and data source URLs (collection://...)." }, "include_transcript": { "type": "boolean" }, "include_discussions": { "type": "boolean" } }, "required": [ "id" ], "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" } } -
notion-get-comments.json 1.6 KB
{ "name": "notion-get-comments", "title": "Get page comments", "description": "Get comments and discussions from a Notion page.\nReturns discussions with full comment content in XML format. By default, returns page-level discussions only.\nTip: Use the `fetch` tool with `include_discussions: true` first to see where discussions are anchored in the page content, then use this tool to retrieve full discussion threads. The `discussion://` URLs in the fetch output match the discussion IDs returned here.\nParameters:\n- `include_all_blocks`: Include discussions on child blocks (default: false)\n- `include_resolved`: Include resolved discussions (default: false)\n- `discussion_id`: Fetch a specific discussion by ID or URL\n\n<example>{\"page_id\": \"page-uuid\"}</example>\n<example>{\"page_id\": \"page-uuid\", \"include_all_blocks\": true}</example>\n<example>{\"page_id\": \"page-uuid\", \"discussion_id\": \"discussion://pageId/blockId/discussionId\"}</example>", "inputSchema": { "type": "object", "properties": { "page_id": { "type": "string", "description": "Identifier for a Notion page." }, "include_resolved": { "type": "boolean" }, "include_all_blocks": { "type": "boolean" }, "discussion_id": { "type": "string", "description": "Fetch a specific discussion by ID or discussion URL (e.g., discussion://pageId/blockId/discussionId)." } }, "required": [ "page_id" ], "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" } } -
notion-get-teams.json 863 B
{ "name": "notion-get-teams", "title": "Get workspace teams", "description": "Retrieves a list of teams (teamspaces) in the current workspace. Shows which teams exist, user membership status, IDs, names, and roles.\nTeams are returned split by membership status and limited to a maximum of 10 results.\n<examples>\n1. List all teams (up to the limit of each type): {}\n2. Search for teams by name: {\"query\": \"engineering\"}\n3. Find a specific team: {\"query\": \"Product Design\"}\n</examples>", "inputSchema": { "type": "object", "properties": { "query": { "type": "string", "minLength": 1, "maxLength": 100, "description": "Optional search query to filter teams by name (case-insensitive)." } }, "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" } } -
notion-get-users.json 1.7 KB
{ "name": "notion-get-users", "title": "Get users and bots in workspace", "description": "Retrieves a list of users in the current workspace. Shows workspace members and guests with their IDs, names, emails (if available), and types (person or bot).\nSupports cursor-based pagination to iterate through all users in the workspace.\n<examples>\n1. List all users (first page): {}\n2. Search for users by name or email: {\"query\": \"john\"}\n3. Get next page of results: {\"start_cursor\": \"abc123\"}\n4. Set custom page size: {\"page_size\": 20}\n5. Fetch a specific user by ID: {\"user_id\": \"00000000-0000-4000-8000-000000000000\"}\n6. Fetch the current user: {\"user_id\": \"self\"}\n</examples>", "inputSchema": { "type": "object", "properties": { "query": { "type": "string", "minLength": 1, "maxLength": 100, "description": "Optional search query to filter users by name or email (case-insensitive)." }, "start_cursor": { "type": "string", "minLength": 1, "maxLength": 100, "description": "Cursor for pagination. Use the next_cursor value from the previous response to get the next page." }, "page_size": { "type": "integer", "minimum": 1, "maximum": 100, "description": "Number of users to return per page (default: 100, max: 100)." }, "user_id": { "type": "string", "minLength": 1, "maxLength": 100, "description": "Return only the user matching this ID. Pass \"self\" to fetch the current user." } }, "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" } } -
notion-move-pages.json 3.2 KB
{ "name": "notion-move-pages", "title": "Move Notion pages", "description": "Move one or more Notion pages or databases to a new parent.", "inputSchema": { "type": "object", "properties": { "page_or_database_ids": { "type": "array", "items": { "type": "string" }, "minItems": 1, "maxItems": 100, "description": "An array of up to 100 page or database IDs to move. IDs are v4 UUIDs and can be supplied with or without dashes (e.g. extracted from a <page> or <database> URL given by the \"search\" or \"fetch\" tool). Data Sources under Databases can't be moved individually." }, "new_parent": { "anyOf": [ { "type": "object", "properties": { "page_id": { "type": "string", "description": "The ID of the parent page (with or without dashes), for example, 195de9221179449fab8075a27c979105" }, "type": { "type": "string", "enum": [ "page_id" ] } }, "required": [ "page_id" ], "additionalProperties": true }, { "type": "object", "properties": { "database_id": { "type": "string", "description": "The ID of the parent database (with or without dashes), for example, 195de9221179449fab8075a27c979105" }, "type": { "type": "string", "enum": [ "database_id" ] } }, "required": [ "database_id" ], "additionalProperties": true }, { "type": "object", "properties": { "data_source_id": { "type": "string", "description": "The ID of the parent data source (collection), with or without dashes. For example, f336d0bc-b841-465b-8045-024475c079dd" }, "type": { "type": "string", "enum": [ "data_source_id" ] } }, "required": [ "data_source_id" ], "additionalProperties": true }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "workspace" ] } }, "required": [ "type" ], "additionalProperties": true } ], "description": "The new parent under which the pages will be moved. This can be a page, the workspace, a database, or a specific data source under a database when there are multiple. Moving pages to the workspace level adds them as private pages and should rarely be used." } }, "required": [ "page_or_database_ids", "new_parent" ], "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" } } -
notion-search.json 5.4 KB
{ "name": "notion-search", "title": "Search Notion and connected sources", "description": "Perform a search over:\n- \"internal\": Semantic search over Notion workspace and connected sources (Slack, Google Drive, Github, Jira, Microsoft Teams, Sharepoint, OneDrive, Linear). Supports filtering by creation date and creator.\n- \"user\": Search for users by name or email.\n\nAuto-selects AI search (with connected sources) or workspace search (workspace-only, faster) based on user's access to Notion AI. Use content_search_mode to override.\nUse \"fetch\" tool for full page/database contents after getting search results.\nTo search within a database: First fetch the database to get the data source URL (collection://...) from <data-source url=\"...\"> tags, then use that as data_source_url. For multi-source databases, match by view ID (?v=...) in URL or search all sources separately.\nDon't combine database URL/ID with collection:// prefix for data_source_url. Don't use database URL as page_url.\n\t\t<example description=\"Search with date range filter (only documents created in 2024)\">\n\t\t{\n\t\t\t\"query\": \"quarterly revenue report\",\n\t\t\t\"query_type\": \"internal\",\n\t\t\t\"filters\": {\n\t\t\t\t\"created_date_range\": {\n\t\t\t\t\t\"start_date\": \"2024-01-01\",\n\t\t\t\t\t\"end_date\": \"2025-01-01\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t</example>\n\t\t<example description=\"Teamspace + creator filter\">\n\t\t{\"query\": \"project updates\", \"query_type\": \"internal\", \"teamspace_id\": \"f336d0bc-b841-465b-8045-024475c079dd\", \"filters\": {\"created_by_user_ids\": [\"a1b2c3d4-e5f6-7890-abcd-ef1234567890\"]}}\n\t\t</example>\n\t\t<example description=\"Database with date + creator filters\">\n\t\t{\"query\": \"design review\", \"data_source_url\": \"collection://f336d0bc-b841-465b-8045-024475c079dd\", \"filters\": {\"created_date_range\": {\"start_date\": \"2024-10-01\"}, \"created_by_user_ids\": [\"a1b2c3d4-e5f6-7890-abcd-ef1234567890\", \"b2c3d4e5-f6a7-8901-bcde-f12345678901\"]}}\n\t\t</example>\n\t\t<example description=\"User search\">\n\t\t{\"query\": \"john@example.com\", \"query_type\": \"user\"}\n\t\t</example>", "inputSchema": { "type": "object", "properties": { "query": { "type": "string", "minLength": 1, "description": "Semantic search query over your entire Notion workspace and connected sources (Slack, Google Drive, Github, Jira, Microsoft Teams, Sharepoint, OneDrive, or Linear). For best results, don't provide more than one question per tool call. Use a separate \"search\" tool call for each search you want to perform.\nAlternatively, the query can be a substring or keyword to find users by matching against their name or email address. For example: \"john\" or \"john@example.com\"" }, "query_type": { "type": "string", "enum": [ "internal", "user" ] }, "content_search_mode": { "type": "string", "enum": [ "workspace_search", "ai_search" ] }, "data_source_url": { "type": "string", "description": "Optionally, provide the URL of a Data source to search. This will perform a semantic search over the pages in the Data Source. Note: must be a Data Source, not a Database. <data-source> tags are part of the Notion flavored Markdown format returned by tools like fetch. The full spec is available in the create-pages tool description." }, "page_url": { "type": "string", "description": "Optionally, provide the URL or ID of a page to search within. This will perform a semantic search over the content within and under the specified page. Accepts either a full page URL (e.g. https://notion.so/workspace/Page-Title-1234567890) or just the page ID (UUIDv4) with or without dashes." }, "teamspace_id": { "type": "string", "description": "Optionally, provide the ID of a teamspace to restrict search results to. This will perform a search over content within the specified teamspace only. Accepts the teamspace ID (UUIDv4) with or without dashes." }, "filters": { "type": "object", "properties": { "created_date_range": { "type": "object", "properties": { "start_date": { "type": "string", "format": "date", "description": "The start date of the date range as an ISO 8601 date string, if any." }, "end_date": { "type": "string", "format": "date", "description": "The end date of the date range as an ISO 8601 date string, if any." } }, "additionalProperties": true, "description": "Optional filter to only produce search results created within the specified date range." }, "created_by_user_ids": { "type": "array", "items": { "type": "string" }, "maxItems": 100, "description": "Optional filter to only produce search results created by the Notion users that have the specified user IDs." } }, "additionalProperties": true, "description": "Optionally provide filters to apply to the search results. Only valid when query_type is 'internal'." } }, "required": [ "query" ], "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" } } -
notion-update-data-source.json 3.5 KB
{ "name": "notion-update-data-source", "title": "Update Notion data source", "description": "Update a Notion data source's schema, title, or attributes using SQL DDL statements. Returns Markdown showing updated structure and schema.\nAccepts a data source ID (collection ID from fetch response's <data-source> tag) or a single-source database ID. Multi-source databases require the specific data source ID.\nThe statements param accepts semicolon-separated DDL statements:\n- ADD COLUMN \"Name\" <type> - add a new property\n- DROP COLUMN \"Name\" - remove a property\n- RENAME COLUMN \"Old\" TO \"New\" - rename a property\n- ALTER COLUMN \"Name\" SET <type> - change type/options\n\nSame type syntax as create_database. Key types:\n- SELECT('opt':color, ...) / MULTI_SELECT('opt':color, ...)\n- NUMBER [FORMAT 'dollar'] / FORMULA('expression')\n- RELATION('ds_id') / RELATION('ds_id', DUAL) / RELATION('ds_id', DUAL 'synced_name' 'synced_id')\n- ROLLUP('rel_prop', 'target_prop', 'function') / UNIQUE_ID [PREFIX 'X']\n- Simple: TITLE, RICH_TEXT, DATE, PEOPLE, CHECKBOX, URL, EMAIL, PHONE_NUMBER, STATUS, FILES\n\n<example description=\"Add properties\">{\"data_source_id\": \"f336d0bc-b841-465b-8045-024475c079dd\", \"statements\": \"ADD COLUMN \"Priority\" SELECT('High':red, 'Medium':yellow, 'Low':green); ADD COLUMN \"Due Date\" DATE\"}</example>\n<example description=\"Rename property\">{\"data_source_id\": \"f336d0bc-b841-465b-8045-024475c079dd\", \"statements\": \"RENAME COLUMN \"Status\" TO \"Project Status\"\"}</example>\n<example description=\"Remove property\">{\"data_source_id\": \"f336d0bc-b841-465b-8045-024475c079dd\", \"statements\": \"DROP COLUMN \"Old Property\"\"}</example>\n<example description=\"Add self-relation\">{\"data_source_id\": \"f336d0bc-b841-465b-8045-024475c079dd\", \"statements\": \"ADD COLUMN \"Parent\" RELATION('f336d0bc-b841-465b-8045-024475c079dd', DUAL 'Children' 'children'); ADD COLUMN \"Children\" RELATION('f336d0bc-b841-465b-8045-024475c079dd', DUAL 'Parent' 'parent')\"}</example>\n<example description=\"Update title\">{\"data_source_id\": \"f336d0bc-b841-465b-8045-024475c079dd\", \"title\": \"Project Tracker 2024\"}</example>\n<example description=\"Trash data source\">{\"data_source_id\": \"f336d0bc-b841-465b-8045-024475c079dd\", \"in_trash\": true}</example>\nNotes: Cannot delete/create title properties. Max one unique_id property. Cannot update synced databases. Use \"fetch\" first to see current schema and get the data source ID from <data-source url=\"collection://...\"> tags.", "inputSchema": { "type": "object", "properties": { "data_source_id": { "type": "string", "description": "The ID of the data source to update. Can be a data source ID (collection ID, from fetch response's <data-source> tag) or a database ID (only if the database has a single data source). UUID format with or without dashes." }, "statements": { "type": "string", "description": "Semicolon-separated SQL DDL statements to update the schema. Supports ADD COLUMN, DROP COLUMN, RENAME COLUMN, ALTER COLUMN SET." }, "title": { "type": "string", "description": "The new title of the data source." }, "description": { "type": "string", "description": "The new description of the data source." }, "is_inline": { "type": "boolean" }, "in_trash": { "type": "boolean" } }, "required": [ "data_source_id" ], "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" } } -
notion-update-page.json 8.4 KB
{ "name": "notion-update-page", "title": "Update Notion page", "description": "## Overview\nUpdate a Notion page's properties or content.\n## Properties\nNotion page properties are a JSON map of property names to SQLite values.\nFor pages in a database:\n- ALWAYS use the \"fetch\" tool first to get the data source schema and the\texact property names.\n- Provide a non-null value to update a property's value.\n- Omitted properties are left unchanged.\n\n**IMPORTANT**: Some property types require expanded formats:\n- Date properties: Split into \"date:{property}:start\", \"date:{property}:end\" (optional), and \"date:{property}:is_datetime\" (0 or 1)\n- Place properties: Split into \"place:{property}:name\", \"place:{property}:address\", \"place:{property}:latitude\", \"place:{property}:longitude\", and \"place:{property}:google_place_id\" (optional)\n- Number properties: Use JavaScript numbers (not strings)\n- Checkbox properties: Use \"__YES__\" for checked, \"__NO__\" for unchecked\n\n**Special property naming**: Properties named \"id\" or \"url\" (case insensitive) must be prefixed with \"userDefined:\" (e.g., \"userDefined:URL\", \"userDefined:id\")\nFor pages outside of a database:\n- The only allowed property is \"title\",\twhich is the title of the page in inline markdown format.\n\n## Content\nNotion page content is a string in Notion-flavored Markdown format.\n**IMPORTANT**: For the complete Markdown specification, first fetch the MCP resource at `notion://docs/enhanced-markdown-spec`. Do NOT guess or hallucinate Markdown syntax.\nBefore updating a page's content with this tool, use the \"fetch\" tool first to get the existing content to find out the Markdown snippets to use in the \"replace_content_range\" or \"insert_content_after\" commands.\n### Preserving Child Pages and Databases\nWhen using \"replace_content\" or \"replace_content_range\", the operation will check if any child pages or databases would be deleted. If so, it will fail with an error listing the affected items.\nTo preserve child pages/databases, include them in new_str using `<page url=\"...\">` or `<database url=\"...\">` tags. Get the exact URLs from the \"fetch\" tool output.\n**CRITICAL**: To intentionally delete child content: if the call failed with validation and requires `allow_deleting_content` to be true, DO NOT automatically assume the content should be deleted. ALWAYS show the list of pages to be deleted and ask for user confirmation before proceeding.\n## Examples\n\t\t<example description=\"Update page properties\">\n\t\t{\n\t\t\t\"page_id\": \"f336d0bc-b841-465b-8045-024475c079dd\",\n\t\t\t\"command\": \"update_properties\",\n\t\t\t\"properties\": {\n\t\t\t\t\"title\": \"New Page Title\",\n\t\t\t\t\"status\": \"In Progress\",\n\t\t\t\t\"priority\": 5,\n\t\t\t\t\"checkbox\": \"__YES__\",\n\t\t\t\t\"date:deadline:start\": \"2024-12-25\",\n\t\t\t\t\"date:deadline:is_datetime\": 0,\n\t\t\t\t\"place:office:name\": \"HQ\",\n\t\t\t\t\"place:office:latitude\": 37.7749,\n\t\t\t\t\"place:office:longitude\": -122.4194\n\t\t\t}\n\t\t}\n\t\t</example>\n\t\t<example description=\"Replace the entire content of a page\">\n\t\t{\n\t\t\t\"page_id\": \"f336d0bc-b841-465b-8045-024475c079dd\",\n\t\t\t\"command\": \"replace_content\",\n\t\t\t\"new_str\": \"# New Section\nUpdated content goes here\"\n\t\t}\n\t\t</example>\n\t\t<example description=\"Replace specific content in a page\">\n\t\t{\n\t\t\t\"page_id\": \"f336d0bc-b841-465b-8045-024475c079dd\",\n\t\t\t\"command\": \"replace_content_range\",\n\t\t\t\"selection_with_ellipsis\": \"# Old Section...end of section\",\n\t\t\t\"new_str\": \"# New Section\nUpdated content goes here\"\n\t\t}\n\t\t</example>\n\t\t<example description=\"Insert content after specific text\">\n\t\t{\n\t\t\t\"page_id\": \"f336d0bc-b841-465b-8045-024475c079dd\",\n\t\t\t\"command\": \"insert_content_after\",\n\t\t\t\"selection_with_ellipsis\": \"## Previous section...\",\n\t\t\t\"new_str\": \"\n## New Section\nContent to insert goes here\"\n\t\t}\n\t\t</example>\n**Note**: For selection_with_ellipsis, provide only the first ~10 characters, an ellipsis, and the last ~10 characters. Ensure the selection is unique; use longer snippets if needed to avoid ambiguity.\n## Templates\nYou can apply a template to an existing page using the \"apply_template\" command. The template content is appended to the page asynchronously. Get template IDs from the <templates> section in the fetch tool results for a database, or use any page ID as a template.\n\t\t<example description=\"Apply a template to an existing page\">\n\t\t{\n\t\t\t\"page_id\": \"f336d0bc-b841-465b-8045-024475c079dd\",\n\t\t\t\"command\": \"apply_template\",\n\t\t\t\"template_id\": \"a5da15f6-b853-455d-8827-f906fb52db2b\"\n\t\t}\n\t\t</example>\n## Verification\nYou can verify or unverify a page using the \"update_verification\" command. Verification marks a page as reviewed and up-to-date. Requires a Business or Enterprise plan (or the page must be in a wiki).\n\t\t<example description=\"Verify a page for 90 days\">\n\t\t{\n\t\t\t\"page_id\": \"f336d0bc-b841-465b-8045-024475c079dd\",\n\t\t\t\"command\": \"update_verification\",\n\t\t\t\"verification_status\": \"verified\",\n\t\t\t\"verification_expiry_days\": 90\n\t\t}\n\t\t</example>\n\t\t<example description=\"Verify a page indefinitely\">\n\t\t{\n\t\t\t\"page_id\": \"f336d0bc-b841-465b-8045-024475c079dd\",\n\t\t\t\"command\": \"update_verification\",\n\t\t\t\"verification_status\": \"verified\"\n\t\t}\n\t\t</example>\n\t\t<example description=\"Remove verification from a page\">\n\t\t{\n\t\t\t\"page_id\": \"f336d0bc-b841-465b-8045-024475c079dd\",\n\t\t\t\"command\": \"update_verification\",\n\t\t\t\"verification_status\": \"unverified\"\n\t\t}\n\t\t</example>", "inputSchema": { "type": "object", "properties": { "page_id": { "type": "string", "description": "The ID of the page to update, with or without dashes." }, "command": { "type": "string", "enum": [ "update_properties", "replace_content", "replace_content_range", "insert_content_after", "apply_template", "update_verification" ] }, "properties": { "type": "object", "additionalProperties": { "type": [ "string", "number", "null" ] }, "description": "Required for \"update_properties\" command. A JSON object that updates the page's properties. For pages in a database, use the SQLite schema definition shown in <database>. For pages outside of a database, the only allowed property is \"title\", which is the title of the page in inline markdown format. Use null to remove a property's value." }, "new_str": { "type": "string", "description": "Required for \"replace_content\", \"replace_content_range\", and \"insert_content_after\" commands. The new content string." }, "selection_with_ellipsis": { "type": "string", "description": "Required for \"replace_content_range\" and \"insert_content_after\" commands. Unique start and end snippet of the string to match in the page content, including whitespace. DO NOT provide the entire string to match. Instead, provide up to the first ~10 characters of the string to match, an ellipsis, and then up to the last ~10 characters of the string to match. Make sure you provide enough of the start and end snippet to uniquely identify the string to match. For example, to replace an entire section, use \"selection_with_ellipsis\":\"# Section heading...last paragraph.\"" }, "allow_deleting_content": { "type": "boolean" }, "template_id": { "type": "string", "description": "Required for \"apply_template\" command. The ID of a template to apply to this page. Template content is appended to any existing page content." }, "verification_status": { "type": "string", "enum": [ "verified", "unverified" ] }, "verification_expiry_days": { "type": "integer", "minimum": 1, "description": "Optional for \"update_verification\" command when verification_status is \"verified\". Number of days until verification expires (e.g. 7, 30, 90). Omit for indefinite verification." } }, "required": [ "page_id", "command" ], "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" } }
-
-
README.md 12.8 KB
# Notion MCP Routing Reference **App name:** `notion` **Base URL proxied:** `mcp.notion.com` ## Request Headers MCP requests use the `Mcp-Session-Id` header for session management. If not specified, the gateway initializes a new session and returns the session ID in the `Mcp-Session-Id` response header. You can include this session ID in subsequent requests to reuse the same session. ## Connection Management Manage MCP connections at `https://ctrl.maton.ai`. ### List Connections ```bash GET https://ctrl.maton.ai/connections?app=notion&method=MCP&status=ACTIVE Authorization: Bearer $MATON_API_KEY ``` ### Create Connection ```bash POST https://ctrl.maton.ai/connections Content-Type: application/json Authorization: Bearer $MATON_API_KEY { "app": "notion", "method": "MCP" } ``` ## API Path Pattern ``` /notion/{tool-name} ``` ## MCP Reference All MCP tools use `POST` method: | Tool | Description | Schema | |------|-------------|--------| | `notion-search` | Search workspace and connected services | [schema](schemas/notion-search.json) | | `notion-fetch` | Retrieve content from pages/databases | [schema](schemas/notion-fetch.json) | | `notion-create-pages` | Create pages with properties and content | [schema](schemas/notion-create-pages.json) | | `notion-update-page` | Update page properties and content | [schema](schemas/notion-update-page.json) | | `notion-move-pages` | Relocate pages to new parent | [schema](schemas/notion-move-pages.json) | | `notion-duplicate-page` | Copy pages within workspace | [schema](schemas/notion-duplicate-page.json) | | `notion-create-database` | Create databases with schema | [schema](schemas/notion-create-database.json) | | `notion-update-data-source` | Modify data source attributes | [schema](schemas/notion-update-data-source.json) | | `notion-create-comment` | Add comments to pages/blocks | [schema](schemas/notion-create-comment.json) | | `notion-get-comments` | Retrieve page comments | [schema](schemas/notion-get-comments.json) | | `notion-get-teams` | List workspace teams | [schema](schemas/notion-get-teams.json) | | `notion-get-users` | List workspace users | [schema](schemas/notion-get-users.json) | ## Common Endpoints ### Search Search for pages and databases: ```bash POST /notion/notion-search Content-Type: application/json { "query": "meeting notes", "query_type": "internal" } ``` **Response:** ```json { "content": [ { "type": "text", "text": "{\"results\":[{\"id\":\"30702dc5-9a3b-8106-b51b-ed6d1bfeeed4\",\"title\":\"Meeting Summary Report\",\"url\":\"https://www.notion.so/30702dc59a3b8106b51bed6d1bfeeed4\",\"type\":\"page\",\"highlight\":\"Meeting materials\",\"timestamp\":\"2026-02-15T00:07:00.000Z\"}],\"type\":\"workspace_search\"}" } ], "isError": false } ``` Search for users: ```bash POST /notion/notion-search Content-Type: application/json { "query": "john@example.com", "query_type": "user" } ``` With date filter: ```bash POST /notion/notion-search Content-Type: application/json { "query": "quarterly report", "query_type": "internal", "filters": { "created_date_range": { "start_date": "2024-01-01", "end_date": "2025-01-01" } } } ``` ### Fetch Content Fetch page by URL: ```bash POST /notion/notion-fetch Content-Type: application/json { "id": "https://notion.so/workspace/Page-a1b2c3d4e5f67890" } ``` **Response:** ```json { "content": [ { "type": "text", "text": "{\"metadata\":{\"type\":\"page\"},\"title\":\"Project Overview\",\"url\":\"https://www.notion.so/30702dc59a3b8106b51bed6d1bfeeed4\",\"text\":\"Here is the result of \\\"view\\\" for the Page with URL https://www.notion.so/30702dc59a3b8106b51bed6d1bfeeed4 as of 2026-02-14T22:56:21.276Z:\\n<page url=\\\"https://www.notion.so/30702dc59a3b8106b51bed6d1bfeeed4\\\">\\n<properties>\\n{\\\"title\\\":\\\"Project Overview\\\"}\\n</properties>\\n<content>\\n# Project Overview\\n\\nThis document outlines the project goals and milestones.\\n</content>\\n</page>\"}" } ], "isError": false } ``` Fetch by UUID: ```bash POST /notion/notion-fetch Content-Type: application/json { "id": "12345678-90ab-cdef-1234-567890abcdef" } ``` Fetch data source (collection): ```bash POST /notion/notion-fetch Content-Type: application/json { "id": "collection://12345678-90ab-cdef-1234-567890abcdef" } ``` Include discussions: ```bash POST /notion/notion-fetch Content-Type: application/json { "id": "page-uuid", "include_discussions": true } ``` ### Create Pages Create a simple page: ```bash POST /notion/notion-create-pages Content-Type: application/json { "pages": [ { "properties": {"title": "My New Page"}, "content": "# Introduction\n\nThis is my new page content." } ] } ``` **Response:** ```json { "content": [ { "type": "text", "text": "{\"pages\":[{\"id\":\"31502dc5-9a3b-816d-a2ac-e9b7ec9aece7\",\"url\":\"https://www.notion.so/31502dc59a3b816da2ace9b7ec9aece7\",\"properties\":{\"title\":\"My New Page\"}}]}" } ], "isError": false } ``` Create page under parent: ```bash POST /notion/notion-create-pages Content-Type: application/json { "parent": {"page_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"}, "pages": [ { "properties": {"title": "Child Page"}, "content": "# Child Page Content" } ] } ``` Create page in data source (database): ```bash POST /notion/notion-create-pages Content-Type: application/json { "parent": {"data_source_id": "f336d0bc-b841-465b-8045-024475c079dd"}, "pages": [ { "properties": { "Task Name": "New Task", "Status": "In Progress", "Priority": 5, "Is Complete": "__NO__", "date:Due Date:start": "2024-12-25" } } ] } ``` ### Update Page Update properties: ```bash POST /notion/notion-update-page Content-Type: application/json { "page_id": "f336d0bc-b841-465b-8045-024475c079dd", "command": "update_properties", "properties": { "title": "Updated Page Title", "Status": "Done" } } ``` **Response:** ```json { "content": [ { "type": "text", "text": "{\"page_id\":\"f336d0bc-b841-465b-8045-024475c079dd\"}" } ], "isError": false } ``` Replace entire content: ```bash POST /notion/notion-update-page Content-Type: application/json { "page_id": "f336d0bc-b841-465b-8045-024475c079dd", "command": "replace_content", "new_str": "# New Heading\n\nCompletely replaced content." } ``` Replace content range: ```bash POST /notion/notion-update-page Content-Type: application/json { "page_id": "f336d0bc-b841-465b-8045-024475c079dd", "command": "replace_content_range", "selection_with_ellipsis": "# Old Section...end of section", "new_str": "# New Section\n\nUpdated section content." } ``` Insert content after: ```bash POST /notion/notion-update-page Content-Type: application/json { "page_id": "f336d0bc-b841-465b-8045-024475c079dd", "command": "insert_content_after", "selection_with_ellipsis": "## Previous section...", "new_str": "\n## New Section\n\nInserted content here." } ``` ### Move Pages Move to page: ```bash POST /notion/notion-move-pages Content-Type: application/json { "page_or_database_ids": ["31502dc5-9a3b-816d-a2ac-e9b7ec9aece7"], "new_parent": { "page_id": "31502dc5-9a3b-81e4-b090-c6f705459e38" } } ``` **Response:** ```json { "content": [ { "type": "text", "text": "{\"result\":\"Successfully moved 1 item: 31502dc5-9a3b-816d-a2ac-e9b7ec9aece7\"}" } ], "isError": false } ``` Move to workspace: ```bash POST /notion/notion-move-pages Content-Type: application/json { "page_or_database_ids": ["page-id-1", "page-id-2"], "new_parent": { "type": "workspace" } } ``` Move to database: ```bash POST /notion/notion-move-pages Content-Type: application/json { "page_or_database_ids": ["page-id"], "new_parent": { "data_source_id": "f336d0bc-b841-465b-8045-024475c079dd" } } ``` ### Duplicate Page ```bash POST /notion/notion-duplicate-page Content-Type: application/json { "page_id": "31502dc5-9a3b-816d-a2ac-e9b7ec9aece7" } ``` **Response:** ```json { "content": [ { "type": "text", "text": "{\"page_id\":\"31502dc5-9a3b-812d-a865-ccac00a21f72\",\"page_url\":\"https://www.notion.so/31502dc59a3b812da865ccac00a21f72\"}" } ], "isError": false } ``` ### Create Database Create with SQL DDL schema: ```bash POST /notion/notion-create-database Content-Type: application/json { "title": "Task Database", "schema": "CREATE TABLE (\"Task Name\" TITLE, \"Status\" SELECT('To Do':red, 'In Progress':yellow, 'Done':green), \"Priority\" NUMBER)" } ``` **Response:** ```json { "content": [ { "type": "text", "text": "{\"result\":\"Created database: <database url=\\\"{{https://www.notion.so/2a3cdbb18c1c475b909a84e5615c7b74}}\\\" inline=\\\"false\\\">\\nThe title of this Database is: Task Database\\n<data-sources>\\n<data-source url=\\\"{{collection://c0f0ce51-c470-4e96-8c3f-cafca780f1a0}}\\\">\\n...\"}" } ], "isError": false } ``` ### Update Data Source ```bash POST /notion/notion-update-data-source Content-Type: application/json { "data_source_id": "c0f0ce51-c470-4e96-8c3f-cafca780f1a0", "name": "Updated Database Name" } ``` **Response:** ```json { "content": [ { "type": "text", "text": "{\"result\":\"Updated data source: <database url=\\\"{{https://www.notion.so/2a3cdbb18c1c475b909a84e5615c7b74}}\\\">\\n...\"}" } ], "isError": false } ``` ### Get Comments ```bash POST /notion/notion-get-comments Content-Type: application/json { "page_id": "30702dc5-9a3b-8106-b51b-ed6d1bfeeed4" } ``` **Response:** ```json { "content": [ { "type": "text", "text": "{\"results\":[{\"object\":\"comment\",\"id\":\"31502dc5-9a3b-8164-aa9c-001dfb9cb942\",\"discussion_id\":\"discussion://pageId/blockId/discussionId\",\"created_time\":\"2026-02-28T20:00:00.000Z\",\"last_edited_time\":\"2026-02-28T20:00:00.000Z\",\"created_by\":{\"object\":\"user\",\"id\":\"237d872b-594c-81d6-b88e-000200ac4d04\"},\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"This looks great! Ready for review.\"},\"annotations\":{\"bold\":false,\"italic\":false,\"strikethrough\":false,\"underline\":false,\"code\":false,\"color\":\"default\"}}]}],\"has_more\":false}" } ], "isError": false } ``` ### Create Comment ```bash POST /notion/notion-create-comment Content-Type: application/json { "page_id": "f336d0bc-b841-465b-8045-024475c079dd", "rich_text": [ { "type": "text", "text": { "content": "This looks great! Ready for review." } } ] } ``` **Response:** ```json { "content": [ { "type": "text", "text": "{\"result\":{\"status\":\"success\",\"id\":\"31502dc5-9a3b-8164-aa9c-001dfb9cb942\"}}" } ], "isError": false } ``` ### List Teams ```bash POST /notion/notion-get-teams Content-Type: application/json {} ``` **Response:** ```json { "content": [ { "type": "text", "text": "{\"result\":{\"status\":\"success\",\"id\":\"31502dc5-9a3b-8164-aa9c-001dfb9cb942\"}}" } ], "isError": false } ``` ### List Users ```bash POST /notion/notion-get-users Content-Type: application/json {} ``` **Response:** ```json { "content": [ { "type": "text", "text": "{\"results\":[{\"type\":\"person\",\"id\":\"237d872b-594c-81d6-b88e-000200ac4d04\",\"name\":\"John Doe\",\"email\":\"john@example.com\"},{\"type\":\"bot\",\"id\":\"b638ec59-55e9-4889-8dc1-a523ff2c8677\",\"name\":\"Notion MCP\"}],\"has_more\":false}" } ], "isError": false } ``` ## Property Types When creating or updating pages in databases: | Property Type | Format | |---------------|--------| | Title | `"Title Property": "Page Title"` | | Text | `"Text Property": "Some text"` | | Number | `"Number Property": 42` | | Checkbox | `"Checkbox Property": "__YES__"` or `"__NO__"` | | Select | `"Select Property": "Option Name"` | | Multi-select | `"Multi Property": "Option1, Option2"` | | Date (start) | `"date:Date Property:start": "2024-12-25"` | | Date (end) | `"date:Date Property:end": "2024-12-31"` | | Date (is datetime) | `"date:Date Property:is_datetime": 1` | | Place (name) | `"place:Location:name": "Office HQ"` | | Place (coordinates) | `"place:Location:latitude": 37.7749` | **Note:** Properties named "id" or "url" must be prefixed with `userDefined:` (e.g., `"userDefined:URL"`). ## Notes - All IDs are UUIDs (with or without hyphens) - Use `notion-fetch` to get page/database structure before creating or updating - For databases, fetch first to get the data source ID (`collection://...` URL) - If multiple Notion connections exist, specify which to use with `Maton-Connection` header - Session can be reused by passing the `Mcp-Session-Id` header from previous responses ## Resources - [Notion MCP Overview](https://developers.notion.com/guides/mcp) - [MCP Supported Tools](https://developers.notion.com/guides/mcp/mcp-supported-tools) - [Maton Community](https://discord.com/invite/dBfFAcefs2) - [Maton Support](mailto:support@maton.ai)
-
-
one-drive
-
README.md 2.3 KB
# 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)
-
-
outlook
-
README.md 4.1 KB
# 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)
-
-
pdf-co
-
README.md 5 KB
# 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)
-
-
pipedrive
-
README.md 3 KB
# 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)
-
-
podio
-
README.md 3.2 KB
# 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)
-
-
posthog
-
README.md 3.3 KB
# PostHog Routing Reference **App name:** `posthog` **Base URL proxied:** `{subdomain}.posthog.com` ## API Path Pattern ``` /posthog/api/{resource} /posthog/api/projects/{project_id}/{resource} ``` ## Common Endpoints ### Get Current User ```bash GET /posthog/api/users/@me/ ``` ### Get Current Organization ```bash GET /posthog/api/organizations/@current/ ``` ### List Projects ```bash GET /posthog/api/projects/ ``` ### Get Current Project ```bash GET /posthog/api/projects/@current/ ``` ### Run HogQL Query ```bash POST /posthog/api/projects/{project_id}/query/ Content-Type: application/json { "query": { "kind": "HogQLQuery", "query": "SELECT event, count() FROM events GROUP BY event LIMIT 10" } } ``` ### List Persons ```bash GET /posthog/api/projects/{project_id}/persons/?limit=10 ``` ### Get Person ```bash GET /posthog/api/projects/{project_id}/persons/{person_uuid}/ ``` ### List Dashboards ```bash GET /posthog/api/projects/{project_id}/dashboards/ ``` ### Get Dashboard ```bash GET /posthog/api/projects/{project_id}/dashboards/{dashboard_id}/ ``` ### Create Dashboard ```bash POST /posthog/api/projects/{project_id}/dashboards/ Content-Type: application/json { "name": "My Dashboard", "description": "Analytics overview" } ``` ### List Insights ```bash GET /posthog/api/projects/{project_id}/insights/?limit=10 ``` ### List Feature Flags ```bash GET /posthog/api/projects/{project_id}/feature_flags/ ``` ### Create Feature Flag ```bash POST /posthog/api/projects/{project_id}/feature_flags/ Content-Type: application/json { "key": "my-feature-flag", "name": "My Feature Flag", "active": true, "filters": { "groups": [{"rollout_percentage": 100}] } } ``` ### Delete Feature Flag Use soft delete by setting `deleted: true`: ```bash PATCH /posthog/api/projects/{project_id}/feature_flags/{flag_id}/ Content-Type: application/json { "deleted": true } ``` ### List Session Recordings ```bash GET /posthog/api/projects/{project_id}/session_recordings/?limit=10 ``` ### List Cohorts ```bash GET /posthog/api/projects/{project_id}/cohorts/ ``` ### List Actions ```bash GET /posthog/api/projects/{project_id}/actions/ ``` ### List Experiments ```bash GET /posthog/api/projects/{project_id}/experiments/ ``` ### List Surveys ```bash GET /posthog/api/projects/{project_id}/surveys/ ``` ### List Event Definitions ```bash GET /posthog/api/projects/{project_id}/event_definitions/?limit=10 ``` ### List Property Definitions ```bash GET /posthog/api/projects/{project_id}/property_definitions/?limit=10 ``` ## Notes - Use `@current` as a shortcut for the current project ID (e.g., `/api/projects/@current/dashboards/`) - Project IDs are integers (e.g., `136209`) - Person UUIDs are in standard UUID format - The Events endpoint is deprecated; use the Query endpoint with HogQL instead - All project-scoped endpoints require `{project_id}` or `@current` - Pagination uses `limit` and `offset` query parameters - PostHog uses soft delete: use `PATCH` with `{"deleted": true}` instead of HTTP DELETE ## Resources - [PostHog API Overview](https://posthog.com/docs/api) - [HogQL Documentation](https://posthog.com/docs/hogql) - [Feature Flags](https://posthog.com/docs/feature-flags) - [Session Replay](https://posthog.com/docs/session-replay) - [Experiments](https://posthog.com/docs/experiments)
-
-
quickbooks
-
README.md 11.1 KB
# 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)
-
-
quo
-
README.md 2.9 KB
# 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)
-
-
reducto
-
README.md 2.4 KB
# Reducto Routing Reference **App name:** `reducto` **Base URL proxied:** `platform.reducto.ai` ## API Path Pattern ``` /reducto/parse /reducto/parse_async /reducto/extract /reducto/extract_async /reducto/split /reducto/split_async /reducto/edit /reducto/edit_async /reducto/upload /reducto/pipeline /reducto/jobs /reducto/job/{job_id} /reducto/version ``` ## Important Notes - Connection uses API_KEY authentication method (not OAuth) - Use async endpoints for large documents to avoid timeouts - Upload presigned URLs expire quickly - Use `reducto://` URLs from upload in subsequent requests - Use `jobid://` to reuse parsed content from previous jobs ## Common Endpoints ### Parse Document ```bash POST /reducto/parse Content-Type: application/json { "document_url": "https://example.com/document.pdf" } ``` ### Parse Document (Async) ```bash POST /reducto/parse_async Content-Type: application/json { "document_url": "https://example.com/document.pdf" } ``` ### Extract Data ```bash POST /reducto/extract Content-Type: application/json { "document_url": "https://example.com/document.pdf", "schema": { "type": "object", "properties": { "title": {"type": "string"}, "date": {"type": "string"} } } } ``` ### Split Document ```bash POST /reducto/split Content-Type: application/json { "document_url": "https://example.com/document.pdf", "split_description": [ {"name": "section1", "description": "First section"} ] } ``` ### Edit Document ```bash POST /reducto/edit Content-Type: application/json { "document_url": "https://example.com/form.pdf", "edit_instructions": "Fill the name field with 'John Doe'" } ``` ### Upload File ```bash POST /reducto/upload Content-Type: application/json {} ``` ### List Jobs ```bash GET /reducto/jobs ``` ### Get Job Status ```bash GET /reducto/job/{job_id} ``` ### Get Version ```bash GET /reducto/version ``` ## Job Status Values - `Pending`: Job is queued or processing - `InProgress`: Job is actively processing - `Completed`: Job finished successfully - `Failed`: Job failed ## Document URL Formats - Public URL: `https://example.com/document.pdf` - Presigned S3: `https://bucket.s3.amazonaws.com/key?...` - Upload result: `reducto://file-id` - Previous job: `jobid://job-id` ## Resources - [Reducto Documentation](https://docs.reducto.ai) - [Reducto API Reference](https://docs.reducto.ai/api-reference) - [Reducto Studio](https://studio.reducto.ai)
-
-
salesforce
-
README.md 6.6 KB
# 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)
-
-
sendgrid
-
README.md 2.9 KB
# 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)
-
-
sentry
-
README.md 3.1 KB
# Sentry Routing Reference **App name:** `sentry` **Base URL proxied:** `{subdomain}.sentry.io` ## API Path Pattern ``` /sentry/api/0/{resource} ``` Sentry API uses version `0` prefix in all paths. ## Common Endpoints ### List Organizations ```bash GET /sentry/api/0/organizations/ ``` ### Retrieve Organization ```bash GET /sentry/api/0/organizations/{organization_slug}/ ``` ### List Organization Projects ```bash GET /sentry/api/0/organizations/{organization_slug}/projects/ ``` ### List Organization Members ```bash GET /sentry/api/0/organizations/{organization_slug}/members/ ``` ### Retrieve Project ```bash GET /sentry/api/0/projects/{organization_slug}/{project_slug}/ ``` ### List Project Issues ```bash GET /sentry/api/0/projects/{organization_slug}/{project_slug}/issues/ ``` Query parameters: - `statsPeriod` - Stats period: `24h`, `14d`, or empty - `query` - Sentry search query (default: `is:unresolved`) - `cursor` - Pagination cursor ### List Organization Issues ```bash GET /sentry/api/0/organizations/{organization_slug}/issues/ ``` ### Retrieve Issue ```bash GET /sentry/api/0/issues/{issue_id}/ ``` ### Update Issue ```bash PUT /sentry/api/0/issues/{issue_id}/ Content-Type: application/json { "status": "resolved" } ``` Status values: `resolved`, `unresolved`, `ignored` ### Delete Issue ```bash DELETE /sentry/api/0/issues/{issue_id}/ ``` ### List Issue Events ```bash GET /sentry/api/0/issues/{issue_id}/events/ ``` ### List Project Events ```bash GET /sentry/api/0/projects/{organization_slug}/{project_slug}/events/ ``` ### List Organization Teams ```bash GET /sentry/api/0/organizations/{organization_slug}/teams/ ``` ### Create Team ```bash POST /sentry/api/0/organizations/{organization_slug}/teams/ Content-Type: application/json { "name": "New Team", "slug": "new-team" } ``` ### Retrieve Team ```bash GET /sentry/api/0/teams/{organization_slug}/{team_slug}/ ``` ### List Organization Releases ```bash GET /sentry/api/0/organizations/{organization_slug}/releases/ ``` ### Create Release ```bash POST /sentry/api/0/organizations/{organization_slug}/releases/ Content-Type: application/json { "version": "1.0.0", "projects": ["project-slug"] } ``` ### Retrieve Release ```bash GET /sentry/api/0/organizations/{organization_slug}/releases/{version}/ ``` ### Create Deploy ```bash POST /sentry/api/0/organizations/{organization_slug}/releases/{version}/deploys/ Content-Type: application/json { "environment": "production" } ``` ## Notes - Organization and project identifiers use slugs (lowercase, hyphenated) - Issue IDs are numeric - Release versions can contain special characters (URL encode as needed) - Uses cursor-based pagination via Link header - Most endpoints require OAuth scopes like `event:read`, `project:read`, `org:read` ## Resources - [Sentry API Documentation](https://docs.sentry.io/api/) - [Events API](https://docs.sentry.io/api/events/) - [Projects API](https://docs.sentry.io/api/projects/) - [Organizations API](https://docs.sentry.io/api/organizations/) - [Teams API](https://docs.sentry.io/api/teams/) - [Releases API](https://docs.sentry.io/api/releases/)
-
-
sharepoint
-
README.md 5.2 KB
# SharePoint Routing Reference **App name:** `sharepoint` **Base URL proxied:** `graph.microsoft.com` ## API Path Pattern ``` /sharepoint/v1.0/sites/{site_id} /sharepoint/v1.0/sites/{site_id}/lists /sharepoint/v1.0/sites/{site_id}/lists/{list_id}/items /sharepoint/v1.0/sites/{site_id}/drives /sharepoint/v1.0/drives/{drive_id}/root/children /sharepoint/v1.0/drives/{drive_id}/items/{item_id} ``` ## Sites ### Get Root Site ```bash GET /sharepoint/v1.0/sites/root ``` ### Get Site by ID ```bash GET /sharepoint/v1.0/sites/{site_id} ``` Site IDs follow the format: `{hostname},{site-guid},{web-guid}` ### Get Site by Hostname ```bash GET /sharepoint/v1.0/sites/{hostname}:/ GET /sharepoint/v1.0/sites/{hostname}:/{site-path} ``` ### Search Sites ```bash GET /sharepoint/v1.0/sites?search={query} ``` ### List Subsites ```bash GET /sharepoint/v1.0/sites/{site_id}/sites ``` ### Get Site Columns ```bash GET /sharepoint/v1.0/sites/{site_id}/columns ``` ### Get Followed Sites ```bash GET /sharepoint/v1.0/me/followedSites ``` ## Lists ### List Site Lists ```bash GET /sharepoint/v1.0/sites/{site_id}/lists ``` ### Get List ```bash GET /sharepoint/v1.0/sites/{site_id}/lists/{list_id} ``` ### List Columns ```bash GET /sharepoint/v1.0/sites/{site_id}/lists/{list_id}/columns ``` ### List Content Types ```bash GET /sharepoint/v1.0/sites/{site_id}/lists/{list_id}/contentTypes ``` ### List Items ```bash GET /sharepoint/v1.0/sites/{site_id}/lists/{list_id}/items GET /sharepoint/v1.0/sites/{site_id}/lists/{list_id}/items?$expand=fields ``` ### Create List Item ```bash POST /sharepoint/v1.0/sites/{site_id}/lists/{list_id}/items Content-Type: application/json { "fields": { "Title": "New Item", "Description": "Item description" } } ``` ### Update List Item ```bash PATCH /sharepoint/v1.0/sites/{site_id}/lists/{list_id}/items/{item_id}/fields Content-Type: application/json { "Title": "Updated Title" } ``` ### Delete List Item ```bash DELETE /sharepoint/v1.0/sites/{site_id}/lists/{list_id}/items/{item_id} ``` ## Drives (Document Libraries) ### List Site Drives ```bash GET /sharepoint/v1.0/sites/{site_id}/drives ``` ### Get Default Drive ```bash GET /sharepoint/v1.0/sites/{site_id}/drive ``` ### Get Drive by ID ```bash GET /sharepoint/v1.0/drives/{drive_id} ``` ## Files and Folders ### List Root Contents ```bash GET /sharepoint/v1.0/drives/{drive_id}/root/children ``` ### Get Item by ID ```bash GET /sharepoint/v1.0/drives/{drive_id}/items/{item_id} ``` ### Get Item by Path ```bash GET /sharepoint/v1.0/drives/{drive_id}/root:/{path} ``` ### List Folder Contents ```bash GET /sharepoint/v1.0/drives/{drive_id}/items/{folder_id}/children ``` ### Download File ```bash GET /sharepoint/v1.0/drives/{drive_id}/items/{item_id}/content GET /sharepoint/v1.0/drives/{drive_id}/root:/{path}:/content ``` ### Upload File ```bash PUT /sharepoint/v1.0/drives/{drive_id}/root:/{filename}:/content Content-Type: application/octet-stream ``` ### Create Folder ```bash POST /sharepoint/v1.0/drives/{drive_id}/root/children Content-Type: application/json { "name": "New Folder", "folder": {}, "@microsoft.graph.conflictBehavior": "rename" } ``` ### Rename/Move Item ```bash PATCH /sharepoint/v1.0/drives/{drive_id}/items/{item_id} Content-Type: application/json { "name": "new-name.txt" } ``` ### Copy Item ```bash POST /sharepoint/v1.0/drives/{drive_id}/items/{item_id}/copy Content-Type: application/json { "name": "copied-file.txt" } ``` ### Delete Item ```bash DELETE /sharepoint/v1.0/drives/{drive_id}/items/{item_id} ``` ### Search Files ```bash GET /sharepoint/v1.0/drives/{drive_id}/root/search(q='{query}') ``` ### Track Changes (Delta) ```bash GET /sharepoint/v1.0/drives/{drive_id}/root/delta ``` ## Sharing and Permissions ### Get Permissions ```bash GET /sharepoint/v1.0/drives/{drive_id}/items/{item_id}/permissions ``` ### Create Sharing Link ```bash POST /sharepoint/v1.0/drives/{drive_id}/items/{item_id}/createLink Content-Type: application/json { "type": "view", "scope": "organization" } ``` ## Versions ### List Versions ```bash GET /sharepoint/v1.0/drives/{drive_id}/items/{item_id}/versions ``` ### Get Version ```bash GET /sharepoint/v1.0/drives/{drive_id}/items/{item_id}/versions/{version_id} ``` ### Download Version Content ```bash GET /sharepoint/v1.0/drives/{drive_id}/items/{item_id}/versions/{version_id}/content ``` ## Thumbnails ### Get Thumbnails ```bash GET /sharepoint/v1.0/drives/{drive_id}/items/{item_id}/thumbnails ``` ## Query Parameters - `$select` - Select specific properties - `$expand` - Expand related entities (e.g., `fields` for list items) - `$filter` - Filter results - `$orderby` - Sort results - `$top` - Limit results - `$skip` - Skip results (pagination) ## Notes - Site IDs follow the format: `{hostname},{site-guid},{web-guid}` - Drive IDs with `!` must be URL-encoded: `b!abc123` → `b%21abc123` - File uploads via PUT limited to 4MB; use upload sessions for larger files - Copy operations are asynchronous (returns 202) - Deleted items go to the SharePoint recycle bin ## Resources - [SharePoint Sites API](https://learn.microsoft.com/en-us/graph/api/resources/sharepoint) - [DriveItem API](https://learn.microsoft.com/en-us/graph/api/resources/driveitem) - [List API](https://learn.microsoft.com/en-us/graph/api/resources/list)
-
-
signnow
-
README.md 1.8 KB
# 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)
-
-
slack
-
README.md 7.6 KB
# Slack Routing Reference **App name:** `slack` **Base URL proxied:** `slack.com` ## API Path Pattern ``` /slack/api/{method} ``` ## Authentication ### Auth Test ```bash GET /slack/api/auth.test ``` Returns current user and team info. --- ## Messages ### 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_"}} ] } ``` ### 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" } ``` ### 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" } ``` ### Schedule Message ```bash POST /slack/api/chat.scheduleMessage Content-Type: application/json { "channel": "C0123456789", "text": "Scheduled message", "post_at": 1734567890 } ``` ### List Scheduled Messages ```bash GET /slack/api/chat.scheduledMessages.list ``` ### Delete Scheduled Message ```bash POST /slack/api/chat.deleteScheduledMessage Content-Type: application/json { "channel": "C0123456789", "scheduled_message_id": "Q1234567890" } ``` ### Get Permalink ```bash GET /slack/api/chat.getPermalink?channel=C0123456789&message_ts=1234567890.123456 ``` --- ## Conversations (Channels) ### List Channels ```bash GET /slack/api/conversations.list?types=public_channel,private_channel&limit=100 ``` Types: `public_channel`, `private_channel`, `im`, `mpim` ### Get Channel Info ```bash GET /slack/api/conversations.info?channel=C0123456789 ``` ### Get Channel History ```bash GET /slack/api/conversations.history?channel=C0123456789&limit=100 ``` With time range: ```bash GET /slack/api/conversations.history?channel=C0123456789&oldest=1234567890&latest=1234567899 ``` ### Get Thread Replies ```bash GET /slack/api/conversations.replies?channel=C0123456789&ts=1234567890.123456 ``` ### Get Channel Members ```bash GET /slack/api/conversations.members?channel=C0123456789&limit=100 ``` ### Create Channel ```bash POST /slack/api/conversations.create Content-Type: application/json { "name": "new-channel-name", "is_private": false } ``` ### Join Channel ```bash POST /slack/api/conversations.join Content-Type: application/json { "channel": "C0123456789" } ``` ### Leave Channel ```bash POST /slack/api/conversations.leave Content-Type: application/json { "channel": "C0123456789" } ``` ### Archive Channel ```bash POST /slack/api/conversations.archive Content-Type: application/json { "channel": "C0123456789" } ``` ### Unarchive Channel ```bash POST /slack/api/conversations.unarchive Content-Type: application/json { "channel": "C0123456789" } ``` ### Rename Channel ```bash POST /slack/api/conversations.rename Content-Type: application/json { "channel": "C0123456789", "name": "new-name" } ``` ### Set Channel Topic ```bash POST /slack/api/conversations.setTopic Content-Type: application/json { "channel": "C0123456789", "topic": "Channel topic here" } ``` ### Set Channel Purpose ```bash POST /slack/api/conversations.setPurpose Content-Type: application/json { "channel": "C0123456789", "purpose": "Channel purpose here" } ``` ### Invite to Channel ```bash POST /slack/api/conversations.invite Content-Type: application/json { "channel": "C0123456789", "users": "U0123456789,U9876543210" } ``` ### Kick from Channel ```bash POST /slack/api/conversations.kick Content-Type: application/json { "channel": "C0123456789", "user": "U0123456789" } ``` ### Mark Channel Read ```bash POST /slack/api/conversations.mark Content-Type: application/json { "channel": "C0123456789", "ts": "1234567890.123456" } ``` --- ## Direct Messages ### Open DM Conversation ```bash POST /slack/api/conversations.open Content-Type: application/json { "users": "U0123456789" } ``` For group DM: ```bash POST /slack/api/conversations.open Content-Type: application/json { "users": "U0123456789,U9876543210" } ``` ### List DM Channels ```bash GET /slack/api/conversations.list?types=im ``` ### List Group DM Channels ```bash GET /slack/api/conversations.list?types=mpim ``` ### My Conversations ```bash GET /slack/api/users.conversations?limit=100 ``` --- ## Users ### List Users ```bash GET /slack/api/users.list?limit=100 ``` ### Get User Info ```bash GET /slack/api/users.info?user=U0123456789 ``` ### Get User Presence ```bash GET /slack/api/users.getPresence?user=U0123456789 ``` ### Set User Presence ```bash POST /slack/api/users.setPresence Content-Type: application/json { "presence": "away" } ``` ### Lookup User by Email ```bash GET /slack/api/users.lookupByEmail?email=user@example.com ``` --- ## Reactions ### Add Reaction ```bash POST /slack/api/reactions.add Content-Type: application/json { "channel": "C0123456789", "name": "thumbsup", "timestamp": "1234567890.123456" } ``` ### Remove Reaction ```bash POST /slack/api/reactions.remove Content-Type: application/json { "channel": "C0123456789", "name": "thumbsup", "timestamp": "1234567890.123456" } ``` ### Get Reactions on Message ```bash GET /slack/api/reactions.get?channel=C0123456789×tamp=1234567890.123456 ``` ### List My Reactions ```bash GET /slack/api/reactions.list?limit=100 ``` --- ## Stars ### List Stars ```bash GET /slack/api/stars.list?limit=100 ``` ### Add Star ```bash POST /slack/api/stars.add Content-Type: application/json { "channel": "C0123456789", "timestamp": "1234567890.123456" } ``` ### Remove Star ```bash POST /slack/api/stars.remove Content-Type: application/json { "channel": "C0123456789", "timestamp": "1234567890.123456" } ``` --- ## Bots ### Get Bot Info ```bash GET /slack/api/bots.info?bot=B0123456789 ``` --- ## Files ### Upload File ```bash POST /slack/api/files.upload Content-Type: multipart/form-data channels=C0123456789 content=file content here filename=example.txt title=Example File ``` ### Upload File v2 (Get Upload URL) ```bash GET /slack/api/files.getUploadURLExternal?filename=example.txt&length=1024 ``` ### Complete File Upload ```bash POST /slack/api/files.completeUploadExternal Content-Type: application/json { "files": [{"id": "F0123456789", "title": "My File"}], "channel_id": "C0123456789" } ``` ### Delete File ```bash POST /slack/api/files.delete Content-Type: application/json { "file": "F0123456789" } ``` ### Get File Info ```bash GET /slack/api/files.info?file=F0123456789 ``` --- ## Notes - Authentication is automatic via managed OAuth - Channel IDs: `C` (public), `G` (private/group), `D` (DM) - User IDs start with `U`, Bot IDs start with `B`, Team IDs start with `T` - Message timestamps (`ts`) are unique identifiers - Use `mrkdwn` type for Slack-flavored markdown - Thread replies use `thread_ts` to reference parent message - Cursor-based pagination: use `cursor` from `response_metadata.next_cursor` - If you encounter `missing_scope` errors, contact [Maton Support](mailto:support@maton.ai) to request additional scopes ## Resources - [Slack API Methods](https://api.slack.com/methods) - [Web API Reference](https://api.slack.com/web) - [Block Kit Reference](https://api.slack.com/reference/block-kit) - [Message Formatting](https://api.slack.com/reference/surfaces/formatting) - [Rate Limits](https://api.slack.com/docs/rate-limits)
-
-
snapchat
-
README.md 2.7 KB
# 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)
-
-
squarespace
-
README.md 8.1 KB
# Squarespace Routing Reference **App name:** `squarespace` **Base URL proxied:** `api.squarespace.com` ## API Path Pattern ``` /squarespace/v2/commerce/products # Products API (v2) /squarespace/1.0/commerce/store_pages # Store Pages (1.0 only) /squarespace/1.0/commerce/inventory # Inventory API /squarespace/1.0/commerce/orders # Orders API /squarespace/1.0/commerce/transactions # Transactions API /squarespace/1.0/profiles # Profiles API ``` ## Important Notes - All requests require a `User-Agent` header describing your application - Requests without a custom User-Agent are subject to stricter rate limits - Maximum 50 items per batch request - Idempotency-Key header is required for stock adjustments and order creation - Rate limit: 300 requests per minute (5 per second) - Create Order has a stricter rate limit: 100 requests per hour per website ## Common Endpoints ### Inventory #### List All Inventory ```bash GET /squarespace/1.0/commerce/inventory GET /squarespace/1.0/commerce/inventory?cursor={cursor} ``` #### Get Specific Inventory ```bash GET /squarespace/1.0/commerce/inventory/{variantId1},{variantId2} ``` Max 50 variant IDs per request. #### Adjust Stock Quantities ```bash POST /squarespace/1.0/commerce/inventory/adjustments Content-Type: application/json Idempotency-Key: unique-key-here { "incrementOperations": [{"variantId": "variant-id", "quantity": 5}], "decrementOperations": [{"variantId": "variant-id", "quantity": 2}], "setFiniteOperations": [{"variantId": "variant-id", "quantity": 100}], "setUnlimitedOperations": ["variant-id"] } ``` ### Orders #### List All Orders ```bash GET /squarespace/1.0/commerce/orders GET /squarespace/1.0/commerce/orders?fulfillmentStatus=PENDING GET /squarespace/1.0/commerce/orders?modifiedAfter=2024-01-01T00:00:00Z&modifiedBefore=2024-12-31T23:59:59Z GET /squarespace/1.0/commerce/orders?customerId={customerId} ``` Note: Cannot combine `cursor` with date range parameters. #### Get Specific Order ```bash GET /squarespace/1.0/commerce/orders/{orderId} ``` #### Create Order ```bash POST /squarespace/1.0/commerce/orders Content-Type: application/json Idempotency-Key: unique-key-here { "channelName": "External Store", "externalOrderReference": "ORDER-12345", "customerEmail": "customer@example.com", "lineItems": [ { "lineItemType": "PHYSICAL_PRODUCT", "variantId": "variant-id", "quantity": 2, "unitPricePaid": {"currency": "USD", "value": "29.99"} } ], "subtotal": {"currency": "USD", "value": "59.98"}, "priceTaxInterpretation": "EXCLUSIVE", "grandTotal": {"currency": "USD", "value": "59.98"}, "createdOn": "2024-01-15T10:30:00Z" } ``` Note: `subtotal` must equal sum of `lineItems.unitPricePaid.value * quantity`. #### Fulfill Order ```bash POST /squarespace/1.0/commerce/orders/{orderId}/fulfillments Content-Type: application/json { "shouldSendNotification": true, "shipments": [ { "shipDate": "2024-01-16T08:00:00Z", "carrierName": "USPS", "service": "Priority Mail", "trackingNumber": "9400111899223456789012", "trackingUrl": "https://tools.usps.com/go/TrackConfirmAction?tLabels=9400111899223456789012" } ] } ``` ### Products (v2 API) #### List Store Pages ```bash GET /squarespace/1.0/commerce/store_pages ``` Note: Store Pages endpoint uses v1.0 (no v2 available). #### List All Products ```bash GET /squarespace/v2/commerce/products GET /squarespace/v2/commerce/products?type=PHYSICAL,SERVICE,GIFT_CARD,DIGITAL GET /squarespace/v2/commerce/products?modifiedAfter=2024-01-01T00:00:00Z ``` Note: Cannot combine `cursor` with date/type filters. #### Get Specific Products ```bash GET /squarespace/v2/commerce/products/{productId1},{productId2} ``` Max 50 product IDs per request. #### Create Product ```bash POST /squarespace/v2/commerce/products Content-Type: application/json { "type": "PHYSICAL", "storePageId": "store-page-id", "name": "New Product", "description": "<p>Product description</p>", "urlSlug": "new-product", "isVisible": true, "variants": [ { "sku": "SKU-001", "pricing": {"basePrice": {"currency": "USD", "value": "49.99"}}, "stock": {"quantity": 100, "unlimited": false} } ] } ``` #### Update Product ```bash POST /squarespace/v2/commerce/products/{productId} Content-Type: application/json { "name": "Updated Product Name", "isVisible": true } ``` #### Delete Product ```bash DELETE /squarespace/v2/commerce/products/{productId} ``` ### Product Variants (v2 API) #### Create Variant ```bash POST /squarespace/v2/commerce/products/{productId}/variants Content-Type: application/json { "sku": "SKU-002", "pricing": {"basePrice": {"currency": "USD", "value": "59.99"}}, "stock": {"quantity": 50, "unlimited": false}, "attributes": {"Size": "Large"} } ``` Note: To use `attributes`, product must have matching `variantAttributes` set first via Update Product. #### Update Variant ```bash POST /squarespace/v2/commerce/products/{productId}/variants/{variantId} Content-Type: application/json { "sku": "SKU-002-UPDATED", "pricing": {"basePrice": {"currency": "USD", "value": "64.99"}} } ``` #### Delete Variant ```bash DELETE /squarespace/v2/commerce/products/{productId}/variants/{variantId} ``` ### Product Images (v2 API) #### Upload Image ```bash POST /squarespace/v2/commerce/products/{productId}/images Content-Type: multipart/form-data curl "https://gateway.maton.ai/squarespace/v2/commerce/products/{productId}/images" \ -H "Authorization: Bearer $MATON_API_KEY" \ -H "User-Agent: MyClaude/1.0" \ -X POST \ -F file=@image.png ``` #### Check Upload Status ```bash GET /squarespace/v2/commerce/products/{productId}/images/{imageId}/status ``` #### Update Image Alt Text ```bash POST /squarespace/v2/commerce/products/{productId}/images/{imageId} Content-Type: application/json {"altText": "Product image description"} ``` #### Reorder Image ```bash POST /squarespace/v2/commerce/products/{productId}/images/{imageId}/order Content-Type: application/json {"afterImageId": "other-image-id"} ``` #### Assign Image to Variant ```bash POST /squarespace/v2/commerce/products/{productId}/variants/{variantId}/image Content-Type: application/json {"imageId": "image-id"} ``` #### Delete Image ```bash DELETE /squarespace/v2/commerce/products/{productId}/images/{imageId} ``` ### Profiles (Customers) #### List All Profiles ```bash GET /squarespace/1.0/profiles GET /squarespace/1.0/profiles?filter=isCustomer,true GET /squarespace/1.0/profiles?sortField=email&sortDirection=asc ``` Filters (semicolon-separated): - `isCustomer,true` or `isCustomer,false` - `hasAccount,true` or `hasAccount,false` - `email,customer@example.com` Sort fields: `createdOn`, `id`, `email`, `lastName` #### Get Specific Profiles ```bash GET /squarespace/1.0/profiles/{profileId1},{profileId2} ``` Max 50 profile IDs per request. ### Transactions #### List All Transactions ```bash GET /squarespace/1.0/commerce/transactions GET /squarespace/1.0/commerce/transactions?modifiedAfter=2024-01-01T00:00:00Z&modifiedBefore=2024-12-31T23:59:59Z ``` Note: Date filters must be used together (both `modifiedAfter` and `modifiedBefore` required). #### Get Specific Transactions ```bash GET /squarespace/1.0/commerce/transactions/{documentId1},{documentId2} ``` Max 50 document IDs per request. ## Pagination Squarespace uses cursor-based pagination: ```json { "pagination": { "hasNextPage": true, "nextPageCursor": "cursor-value", "nextPageUrl": "https://api.squarespace.com/..." } } ``` Use the `cursor` parameter to get the next page: ```bash GET /squarespace/v2/commerce/products?cursor=cursor-value ``` ## Resources - [Squarespace Commerce APIs Overview](https://developers.squarespace.com/commerce-apis/overview) - [Inventory API](https://developers.squarespace.com/commerce-apis/inventory-overview) - [Orders API](https://developers.squarespace.com/commerce-apis/orders-overview) - [Products API](https://developers.squarespace.com/commerce-apis/products-overview) - [Profiles API](https://developers.squarespace.com/commerce-apis/profiles-overview) - [Transactions API](https://developers.squarespace.com/commerce-apis/transactions-overview)
-
-
squareup
-
README.md 9.8 KB
# Square Routing Reference **App name:** `squareup` **Base URL proxied:** `connect.squareup.com` ## API Path Pattern ``` /squareup/v2/{resource} ``` ## Merchants ### Get Current Merchant ```bash GET /squareup/v2/merchants/me ``` ## 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": {...} } } ``` ### Update Location ```bash PUT /squareup/v2/locations/{location_id} Content-Type: application/json { "location": {"name": "Updated Name"} } ``` ## 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" } ``` ### Update Customer ```bash PUT /squareup/v2/customers/{customer_id} Content-Type: application/json { "given_name": "Jane" } ``` ### Delete Customer ```bash DELETE /squareup/v2/customers/{customer_id} ``` ### Search Customers ```bash POST /squareup/v2/customers/search Content-Type: application/json { "query": { "filter": { "email_address": {"exact": "john@example.com"} } }, "limit": 10 } ``` ## 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 ``` ### Get Refund ```bash GET /squareup/v2/refunds/{refund_id} ``` ### 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"} } ``` ## 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" } ``` ### Get Order ```bash GET /squareup/v2/orders/{order_id} ``` ### Search Orders ```bash POST /squareup/v2/orders/search Content-Type: application/json { "location_ids": ["{location_id}"], "limit": 10 } ``` ### Update Order ```bash PUT /squareup/v2/orders/{order_id} Content-Type: application/json { "order": { "location_id": "{location_id}", "version": 1 }, "idempotency_key": "unique-key" } ``` ### Pay Order ```bash POST /squareup/v2/orders/{order_id}/pay Content-Type: application/json { "idempotency_key": "unique-key", "payment_ids": ["{payment_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", "variations": [ { "type": "ITEM_VARIATION", "id": "#variation", "item_variation_data": { "name": "Regular", "pricing_type": "FIXED_PRICING", "price_money": {"amount": 500, "currency": "USD"} } } ] } } } ``` ### Delete Catalog Object ```bash DELETE /squareup/v2/catalog/object/{object_id} ``` ### Search Catalog ```bash POST /squareup/v2/catalog/search Content-Type: application/json { "object_types": ["ITEM"], "query": { "text_query": {"keywords": ["coffee"]} } } ``` ### Get Catalog Info ```bash GET /squareup/v2/catalog/info ``` ### Batch Upsert ```bash POST /squareup/v2/catalog/batch-upsert Content-Type: application/json { "idempotency_key": "unique-key", "batches": [{"objects": [...]}] } ``` ## Invoices ### List Invoices ```bash GET /squareup/v2/invoices?location_id={location_id} ``` ### Get Invoice ```bash GET /squareup/v2/invoices/{invoice_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" } ``` ### Update Invoice ```bash PUT /squareup/v2/invoices/{invoice_id} Content-Type: application/json { "invoice": {"version": 1}, "idempotency_key": "unique-key" } ``` ### Publish Invoice ```bash POST /squareup/v2/invoices/{invoice_id}/publish Content-Type: application/json {"version": 1, "idempotency_key": "unique-key"} ``` ### Cancel Invoice ```bash POST /squareup/v2/invoices/{invoice_id}/cancel Content-Type: application/json {"version": 1} ``` ### Delete Invoice ```bash DELETE /squareup/v2/invoices/{invoice_id} ``` ## Team Members ### Search Team Members ```bash POST /squareup/v2/team-members/search Content-Type: application/json { "query": { "filter": { "location_ids": ["{location_id}"], "status": "ACTIVE" } } } ``` ### Get Team Member ```bash GET /squareup/v2/team-members/{team_member_id} ``` ### Update Team Member ```bash PUT /squareup/v2/team-members/{team_member_id} Content-Type: application/json { "team_member": { "given_name": "Updated Name" } } ``` ## Loyalty ### List Loyalty Programs ```bash GET /squareup/v2/loyalty/programs ``` ### Get Loyalty Program ```bash GET /squareup/v2/loyalty/programs/{program_id} ``` ### Search Loyalty Accounts ```bash POST /squareup/v2/loyalty/accounts/search Content-Type: application/json { "query": { "customer_ids": ["{customer_id}"] } } ``` ### Create Loyalty Account ```bash POST /squareup/v2/loyalty/accounts Content-Type: application/json { "loyalty_account": { "program_id": "{program_id}", "mapping": {"phone_number": "+15551234567"} }, "idempotency_key": "unique-key" } ``` ## Payment Links (Online Checkout) ### List Payment Links ```bash GET /squareup/v2/online-checkout/payment-links ``` ### Get Payment Link ```bash GET /squareup/v2/online-checkout/payment-links/{id} ``` ### Create Payment Link ```bash POST /squareup/v2/online-checkout/payment-links Content-Type: application/json { "idempotency_key": "unique-key", "quick_pay": { "name": "Test Payment", "price_money": {"amount": 1000, "currency": "USD"}, "location_id": "{location_id}" } } ``` ### Update Payment Link ```bash PUT /squareup/v2/online-checkout/payment-links/{id} Content-Type: application/json { "payment_link": {"version": 1} } ``` ### Delete Payment Link ```bash DELETE /squareup/v2/online-checkout/payment-links/{id} ``` ## Cards ### List Cards ```bash GET /squareup/v2/cards GET /squareup/v2/cards?customer_id={customer_id} ``` ### Get Card ```bash GET /squareup/v2/cards/{card_id} ``` ### Create Card ```bash POST /squareup/v2/cards Content-Type: application/json { "idempotency_key": "unique-key", "source_id": "cnon:card-nonce-ok", "card": { "customer_id": "{customer_id}" } } ``` ### Disable Card ```bash POST /squareup/v2/cards/{card_id}/disable ``` ## Payouts ### List Payouts ```bash GET /squareup/v2/payouts GET /squareup/v2/payouts?location_id={location_id} ``` ### Get Payout ```bash GET /squareup/v2/payouts/{payout_id} ``` ### List Payout Entries ```bash GET /squareup/v2/payouts/{payout_id}/payout-entries ``` ## Bank Accounts ### List Bank Accounts ```bash GET /squareup/v2/bank-accounts ``` ### Get Bank Account ```bash GET /squareup/v2/bank-accounts/{bank_account_id} ``` ## Terminal ### List Terminal Checkouts ```bash GET /squareup/v2/terminals/checkouts ``` ### Create Terminal Checkout ```bash POST /squareup/v2/terminals/checkouts Content-Type: application/json { "idempotency_key": "unique-key", "checkout": { "amount_money": {"amount": 1000, "currency": "USD"}, "device_options": {"device_id": "{device_id}"} } } ``` ### Search Terminal Checkouts ```bash POST /squareup/v2/terminals/checkouts/search Content-Type: application/json { "query": { "filter": { "status": "COMPLETED" } } } ``` ## 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 ## 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) - [Invoices API](https://developer.squareup.com/reference/square/invoices-api) - [Team Members API](https://developer.squareup.com/reference/square/team-api) - [Loyalty API](https://developer.squareup.com/reference/square/loyalty-api) - [Online Checkout API](https://developer.squareup.com/reference/square/online-checkout-api)
-
-
stripe
-
README.md 7.4 KB
# 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¤cy=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¤cy=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)
-
-
sunsama-mcp
-
schemas
-
accept_meeting_invite.json 299 B
{ "name": "accept_meeting_invite", "description": "Accept a calendar meeting invite", "inputSchema": { "type": "object", "properties": { "eventId": { "type": "string", "description": "The ID of the calendar event" } }, "required": ["eventId"] } } -
add_subtasks_to_task.json 663 B
{ "name": "add_subtasks_to_task", "description": "Add subtasks to an existing task", "inputSchema": { "type": "object", "properties": { "taskId": { "type": "string", "description": "The ID of the parent task" }, "subtasks": { "type": "array", "description": "Array of subtasks to add", "items": { "type": "object", "properties": { "title": { "type": "string", "description": "The title of the subtask" } }, "required": ["title"] } } }, "required": ["taskId", "subtasks"] } } -
add_task_to_channel.json 386 B
{ "name": "add_task_to_channel", "description": "Assign a task to a channel", "inputSchema": { "type": "object", "properties": { "taskId": { "type": "string", "description": "The ID of the task" }, "channel": { "type": "string", "description": "The channel name" } }, "required": ["taskId", "channel"] } } -
align_task_with_objective.json 414 B
{ "name": "align_task_with_objective", "description": "Link a task to a weekly objective", "inputSchema": { "type": "object", "properties": { "taskId": { "type": "string", "description": "The ID of the task" }, "objectiveId": { "type": "string", "description": "The ID of the objective" } }, "required": ["taskId", "objectiveId"] } } -
append_task_notes.json 379 B
{ "name": "append_task_notes", "description": "Append notes to a task", "inputSchema": { "type": "object", "properties": { "taskId": { "type": "string", "description": "The ID of the task" }, "notes": { "type": "string", "description": "The notes to append" } }, "required": ["taskId", "notes"] } } -
change_backlog_folder.json 399 B
{ "name": "change_backlog_folder", "description": "Change the folder for backlog tasks", "inputSchema": { "type": "object", "properties": { "taskIds": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ], "description": "Task ID or array of task IDs" } }, "required": ["taskIds"] } } -
create_braindump_task.json 616 B
{ "name": "create_braindump_task", "description": "Create a task in the backlog with a time bucket", "inputSchema": { "type": "object", "properties": { "title": { "type": "string", "description": "The title of the task" }, "timeBucket": { "type": "string", "description": "When to do the task", "enum": [ "in the next two weeks", "in the next month", "in the next quarter", "in the next year", "someday", "never" ] } }, "required": ["title", "timeBucket"] } } -
create_calendar_event.json 421 B
{ "name": "create_calendar_event", "description": "Create a calendar event", "inputSchema": { "type": "object", "properties": { "title": { "type": "string", "description": "The title of the calendar event" }, "startDate": { "type": "string", "description": "The start date/time (ISO 8601 format)" } }, "required": ["title", "startDate"] } } -
create_channel.json 301 B
{ "name": "create_channel", "description": "Create a new channel/context for tasks", "inputSchema": { "type": "object", "properties": { "channelName": { "type": "string", "description": "The name of the channel" } }, "required": ["channelName"] } } -
create_follow_up_task_from_email.json 575 B
{ "name": "create_follow_up_task_from_email", "description": "Create a follow-up task from an email thread", "inputSchema": { "type": "object", "properties": { "accountId": { "type": "string", "description": "The email account ID" }, "accountService": { "type": "string", "description": "The email service (e.g., gmail, outlook)" }, "threadId": { "type": "string", "description": "The email thread ID" } }, "required": ["accountId", "accountService", "threadId"] } } -
create_task.json 580 B
{ "name": "create_task", "description": "Create a new task scheduled for a specific day", "inputSchema": { "type": "object", "properties": { "title": { "type": "string", "description": "The title of the task" }, "day": { "type": "string", "description": "The date to schedule the task (YYYY-MM-DD format)" }, "alreadyInTaskList": { "type": "boolean", "description": "Whether the task is already in the task list" } }, "required": ["title", "day", "alreadyInTaskList"] } } -
create_weekly_objective.json 440 B
{ "name": "create_weekly_objective", "description": "Create a weekly objective/goal", "inputSchema": { "type": "object", "properties": { "title": { "type": "string", "description": "The title of the objective" }, "weekStartDay": { "type": "string", "description": "The start date of the week (YYYY-MM-DD format)" } }, "required": ["title", "weekStartDay"] } } -
decline_meeting_invite.json 301 B
{ "name": "decline_meeting_invite", "description": "Decline a calendar meeting invite", "inputSchema": { "type": "object", "properties": { "eventId": { "type": "string", "description": "The ID of the calendar event" } }, "required": ["eventId"] } } -
delete_all_incomplete_recurring_task_instances.json 337 B
{ "name": "delete_all_incomplete_recurring_task_instances", "description": "Delete all future instances of a recurring task", "inputSchema": { "type": "object", "properties": { "taskId": { "type": "string", "description": "The ID of the recurring task" } }, "required": ["taskId"] } } -
delete_calendar_event.json 290 B
{ "name": "delete_calendar_event", "description": "Delete a calendar event", "inputSchema": { "type": "object", "properties": { "eventId": { "type": "string", "description": "The ID of the calendar event" } }, "required": ["eventId"] } } -
delete_email_thread.json 540 B
{ "name": "delete_email_thread", "description": "Delete an email thread", "inputSchema": { "type": "object", "properties": { "accountId": { "type": "string", "description": "The email account ID" }, "accountService": { "type": "string", "description": "The email service (e.g., gmail, outlook)" }, "threadId": { "type": "string", "description": "The email thread ID" } }, "required": ["accountId", "accountService", "threadId"] } } -
delete_task.json 268 B
{ "name": "delete_task", "description": "Delete a task", "inputSchema": { "type": "object", "properties": { "taskId": { "type": "string", "description": "The ID of the task to delete" } }, "required": ["taskId"] } } -
edit_subtask_title.json 526 B
{ "name": "edit_subtask_title", "description": "Update the title of a subtask", "inputSchema": { "type": "object", "properties": { "taskId": { "type": "string", "description": "The ID of the parent task" }, "subtaskId": { "type": "string", "description": "The ID of the subtask" }, "newTitle": { "type": "string", "description": "The new title for the subtask" } }, "required": ["taskId", "subtaskId", "newTitle"] } } -
edit_task_recurrence_rule.json 448 B
{ "name": "edit_task_recurrence_rule", "description": "Set or update the recurrence rule for a task", "inputSchema": { "type": "object", "properties": { "taskId": { "type": "string", "description": "The ID of the task" }, "recurrenceRule": { "type": "string", "description": "The recurrence rule (e.g., RRULE format)" } }, "required": ["taskId", "recurrenceRule"] } } -
edit_task_time_estimate.json 418 B
{ "name": "edit_task_time_estimate", "description": "Set the time estimate for a task", "inputSchema": { "type": "object", "properties": { "taskId": { "type": "string", "description": "The ID of the task" }, "timeEstimate": { "type": "number", "description": "The time estimate in minutes" } }, "required": ["taskId", "timeEstimate"] } } -
edit_task_title.json 375 B
{ "name": "edit_task_title", "description": "Update the title of a task", "inputSchema": { "type": "object", "properties": { "taskId": { "type": "string", "description": "The ID of the task" }, "title": { "type": "string", "description": "The new title" } }, "required": ["taskId", "title"] } } -
get_archived_tasks.json 162 B
{ "name": "get_archived_tasks", "description": "List archived tasks", "inputSchema": { "type": "object", "properties": {}, "required": [] } } -
get_backlog_tasks.json 171 B
{ "name": "get_backlog_tasks", "description": "List all tasks in the backlog", "inputSchema": { "type": "object", "properties": {}, "required": [] } } -
get_task_time_estimate.json 309 B
{ "name": "get_task_time_estimate", "description": "Get AI-suggested time estimate for a task title", "inputSchema": { "type": "object", "properties": { "title": { "type": "string", "description": "The task title to estimate" } }, "required": ["title"] } } -
import_task_from_calendar_event.json 312 B
{ "name": "import_task_from_calendar_event", "description": "Create a task from a calendar event", "inputSchema": { "type": "object", "properties": { "eventId": { "type": "string", "description": "The ID of the calendar event" } }, "required": ["eventId"] } } -
list_email_threads.json 310 B
{ "name": "list_email_threads", "description": "List email threads from a connected account", "inputSchema": { "type": "object", "properties": { "accountId": { "type": "string", "description": "The ID of the email account" } }, "required": ["accountId"] } } -
log_user_feedback.json 277 B
{ "name": "log_user_feedback", "description": "Submit user feedback", "inputSchema": { "type": "object", "properties": { "feedback": { "type": "string", "description": "The feedback message" } }, "required": ["feedback"] } } -
mark_email_thread_as_read.json 552 B
{ "name": "mark_email_thread_as_read", "description": "Mark an email thread as read", "inputSchema": { "type": "object", "properties": { "accountId": { "type": "string", "description": "The email account ID" }, "accountService": { "type": "string", "description": "The email service (e.g., gmail, outlook)" }, "threadId": { "type": "string", "description": "The email thread ID" } }, "required": ["accountId", "accountService", "threadId"] } } -
mark_subtask_as_completed.json 409 B
{ "name": "mark_subtask_as_completed", "description": "Mark a subtask as completed", "inputSchema": { "type": "object", "properties": { "taskId": { "type": "string", "description": "The ID of the parent task" }, "subtaskId": { "type": "string", "description": "The ID of the subtask" } }, "required": ["taskId", "subtaskId"] } } -
mark_subtask_as_incomplete.json 411 B
{ "name": "mark_subtask_as_incomplete", "description": "Mark a subtask as incomplete", "inputSchema": { "type": "object", "properties": { "taskId": { "type": "string", "description": "The ID of the parent task" }, "subtaskId": { "type": "string", "description": "The ID of the subtask" } }, "required": ["taskId", "subtaskId"] } } -
mark_task_as_completed.json 441 B
{ "name": "mark_task_as_completed", "description": "Mark a task as completed", "inputSchema": { "type": "object", "properties": { "taskId": { "type": "string", "description": "The ID of the task to complete" }, "finishedDay": { "type": "string", "description": "The date the task was finished (YYYY-MM-DD format)" } }, "required": ["taskId", "finishedDay"] } } -
mark_task_as_incomplete.json 282 B
{ "name": "mark_task_as_incomplete", "description": "Mark a task as incomplete", "inputSchema": { "type": "object", "properties": { "taskId": { "type": "string", "description": "The ID of the task" } }, "required": ["taskId"] } } -
move_calendar_event.json 536 B
{ "name": "move_calendar_event", "description": "Reschedule a calendar event", "inputSchema": { "type": "object", "properties": { "eventId": { "type": "string", "description": "The ID of the calendar event" }, "startDate": { "type": "string", "description": "The new start date/time" }, "isAllDay": { "type": "boolean", "description": "Whether this is an all-day event" } }, "required": ["eventId", "startDate", "isAllDay"] } } -
move_task_from_backlog.json 432 B
{ "name": "move_task_from_backlog", "description": "Move a task from backlog to a specific day", "inputSchema": { "type": "object", "properties": { "taskId": { "type": "string", "description": "The ID of the task" }, "calendarDay": { "type": "string", "description": "The target date (YYYY-MM-DD format)" } }, "required": ["taskId", "calendarDay"] } } -
move_task_to_backlog.json 288 B
{ "name": "move_task_to_backlog", "description": "Move a task to the backlog", "inputSchema": { "type": "object", "properties": { "taskId": { "type": "string", "description": "The ID of the task to move" } }, "required": ["taskId"] } } -
move_task_to_day.json 428 B
{ "name": "move_task_to_day", "description": "Reschedule a task to a different day", "inputSchema": { "type": "object", "properties": { "taskId": { "type": "string", "description": "The ID of the task to move" }, "calendarDay": { "type": "string", "description": "The target date (YYYY-MM-DD format)" } }, "required": ["taskId", "calendarDay"] } } -
reorder_tasks.json 484 B
{ "name": "reorder_tasks", "description": "Reorder tasks for a specific day", "inputSchema": { "type": "object", "properties": { "taskIds": { "type": "array", "description": "Array of task IDs in the desired order", "items": { "type": "string" } }, "calendarDay": { "type": "string", "description": "The date (YYYY-MM-DD format)" } }, "required": ["taskIds", "calendarDay"] } } -
reposition_task_in_backlog.json 622 B
{ "name": "reposition_task_in_backlog", "description": "Move a backlog task to a different time bucket", "inputSchema": { "type": "object", "properties": { "taskId": { "type": "string", "description": "The ID of the task" }, "timeBucket": { "type": "string", "description": "The target time bucket", "enum": [ "in the next two weeks", "in the next month", "in the next quarter", "in the next year", "someday", "never" ] } }, "required": ["taskId", "timeBucket"] } } -
restore_task.json 279 B
{ "name": "restore_task", "description": "Restore a deleted task", "inputSchema": { "type": "object", "properties": { "taskId": { "type": "string", "description": "The ID of the task to restore" } }, "required": ["taskId"] } } -
schedule_next_call.json 569 B
{ "name": "schedule_next_call", "description": "Schedule the next accountability call", "inputSchema": { "type": "object", "properties": { "nextCallDate": { "type": "string", "description": "The date of the next call (YYYY-MM-DD format)" }, "hour": { "type": "number", "description": "The hour (0-23)" }, "minute": { "type": "string", "description": "The minute", "enum": ["15", "30", "45", "00"] } }, "required": ["nextCallDate", "hour", "minute"] } } -
search_tasks.json 292 B
{ "name": "search_tasks", "description": "Search for tasks by keyword", "inputSchema": { "type": "object", "properties": { "searchTerm": { "type": "string", "description": "The search term to find tasks" } }, "required": ["searchTerm"] } } -
set_calendar_event_allow_task_projections.json 518 B
{ "name": "set_calendar_event_allow_task_projections", "description": "Toggle whether tasks can be projected during this event", "inputSchema": { "type": "object", "properties": { "eventId": { "type": "string", "description": "The ID of the calendar event" }, "allowTasksProjectedAtSameTime": { "type": "boolean", "description": "Whether to allow tasks during this event" } }, "required": ["eventId", "allowTasksProjectedAtSameTime"] } } -
set_shutdown_time.json 508 B
{ "name": "set_shutdown_time", "description": "Set the shutdown time for a day", "inputSchema": { "type": "object", "properties": { "calendarDay": { "type": "string", "description": "The date (YYYY-MM-DD format)" }, "hour": { "type": "number", "description": "The hour (0-23)" }, "minute": { "type": "number", "description": "The minute (0-59)" } }, "required": ["calendarDay", "hour", "minute"] } } -
start_task_timer.json 276 B
{ "name": "start_task_timer", "description": "Start the timer for a task", "inputSchema": { "type": "object", "properties": { "taskId": { "type": "string", "description": "The ID of the task" } }, "required": ["taskId"] } } -
stop_task_timer.json 274 B
{ "name": "stop_task_timer", "description": "Stop the timer for a task", "inputSchema": { "type": "object", "properties": { "taskId": { "type": "string", "description": "The ID of the task" } }, "required": ["taskId"] } } -
timebox_a_task_to_calendar.json 555 B
{ "name": "timebox_a_task_to_calendar", "description": "Block time for a task on the calendar", "inputSchema": { "type": "object", "properties": { "taskId": { "type": "string", "description": "The ID of the task to timebox" }, "startDate": { "type": "string", "description": "The date (YYYY-MM-DD format)" }, "startTime": { "type": "string", "description": "The start time (HH:MM format)" } }, "required": ["taskId", "startDate", "startTime"] } } -
toggle_auto_import_events.json 311 B
{ "name": "toggle_auto_import_events", "description": "Toggle automatic calendar event import", "inputSchema": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether to enable auto-import" } }, "required": ["enabled"] } } -
unarchive_task.json 453 B
{ "name": "unarchive_task", "description": "Restore an archived task to a specific day", "inputSchema": { "type": "object", "properties": { "taskId": { "type": "string", "description": "The ID of the task to unarchive" }, "calendarDay": { "type": "string", "description": "The date to restore the task to (YYYY-MM-DD format)" } }, "required": ["taskId", "calendarDay"] } } -
update_all_incomplete_recurring_task_instances.json 337 B
{ "name": "update_all_incomplete_recurring_task_instances", "description": "Update all future instances of a recurring task", "inputSchema": { "type": "object", "properties": { "taskId": { "type": "string", "description": "The ID of the recurring task" } }, "required": ["taskId"] } } -
update_calendar_preferences.json 319 B
{ "name": "update_calendar_preferences", "description": "Update calendar preferences", "inputSchema": { "type": "object", "properties": { "calendarId": { "type": "string", "description": "The calendar ID to update preferences for" } }, "required": ["calendarId"] } } -
update_import_event_filters.json 387 B
{ "name": "update_import_event_filters", "description": "Update event import filters", "inputSchema": { "type": "object", "properties": { "excludedEventFilters": { "type": "array", "description": "Array of event filters to exclude", "items": { "type": "string" } } }, "required": ["excludedEventFilters"] } }
-
-
README.md 4.4 KB
# Sunsama MCP Routing Reference **App name:** `sunsama` **Base URL proxied:** MCP server ## Connection Management Manage MCP connections at `https://ctrl.maton.ai`. ### List Connections ```bash GET https://ctrl.maton.ai/connections?app=sunsama&method=MCP&status=ACTIVE Authorization: Bearer $MATON_API_KEY ``` ### Create Connection ```bash POST https://ctrl.maton.ai/connections Content-Type: application/json Authorization: Bearer $MATON_API_KEY { "app": "sunsama", "method": "MCP" } ``` ## API Path Pattern ``` /sunsama/{tool-name} ``` ## MCP Reference All MCP tools use `POST` method: | Tool | Description | Schema | |------|-------------|--------| | `search_tasks` | Search tasks by keyword | [schema](schemas/search_tasks.json) | | `create_task` | Create a new task | [schema](schemas/create_task.json) | | `edit_task_title` | Update task title | [schema](schemas/edit_task_title.json) | | `delete_task` | Delete a task | [schema](schemas/delete_task.json) | | `mark_task_as_completed` | Mark task complete | [schema](schemas/mark_task_as_completed.json) | | `mark_task_as_incomplete` | Mark task incomplete | [schema](schemas/mark_task_as_incomplete.json) | | `append_task_notes` | Add notes to task | [schema](schemas/append_task_notes.json) | | `edit_task_time_estimate` | Set time estimate | [schema](schemas/edit_task_time_estimate.json) | | `add_subtasks_to_task` | Add subtasks | [schema](schemas/add_subtasks_to_task.json) | | `get_backlog_tasks` | List backlog tasks | [schema](schemas/get_backlog_tasks.json) | | `move_task_to_backlog` | Move task to backlog | [schema](schemas/move_task_to_backlog.json) | | `move_task_from_backlog` | Move from backlog to day | [schema](schemas/move_task_from_backlog.json) | | `move_task_to_day` | Reschedule task | [schema](schemas/move_task_to_day.json) | | `create_calendar_event` | Create calendar event | [schema](schemas/create_calendar_event.json) | | `timebox_a_task_to_calendar` | Block time for task | [schema](schemas/timebox_a_task_to_calendar.json) | | `start_task_timer` | Start timer | [schema](schemas/start_task_timer.json) | | `stop_task_timer` | Stop timer | [schema](schemas/stop_task_timer.json) | | `create_weekly_objective` | Create weekly goal | [schema](schemas/create_weekly_objective.json) | | `create_braindump_task` | Create backlog task | [schema](schemas/create_braindump_task.json) | | `create_channel` | Create channel/context | [schema](schemas/create_channel.json) | ## Common Endpoints ### Search Tasks ```bash POST /sunsama/search_tasks Content-Type: application/json { "searchTerm": "meeting" } ``` ### Create Task ```bash POST /sunsama/create_task Content-Type: application/json { "title": "Review quarterly report", "day": "2026-03-03", "alreadyInTaskList": false } ``` **Response:** ```json { "content": [ { "type": "text", "text": "{\"success\":true,\"task\":{\"_id\":\"69a6bf3a04d3cd0001595308\",\"title\":\"Review quarterly report\",\"scheduledDate\":\"2026-03-03\",\"completed\":false}}" } ], "isError": false } ``` ### Get Backlog Tasks ```bash POST /sunsama/get_backlog_tasks Content-Type: application/json {} ``` ### Mark Task as Completed ```bash POST /sunsama/mark_task_as_completed Content-Type: application/json { "taskId": "69a6bf3a04d3cd0001595308", "finishedDay": "2026-03-03" } ``` ### Create Braindump Task ```bash POST /sunsama/create_braindump_task Content-Type: application/json { "title": "Research new tools", "timeBucket": "in the next month" } ``` **Time bucket options:** - `"in the next two weeks"` - `"in the next month"` - `"in the next quarter"` - `"in the next year"` - `"someday"` - `"never"` ### Timebox Task to Calendar ```bash POST /sunsama/timebox_a_task_to_calendar Content-Type: application/json { "taskId": "69a6bf3a04d3cd0001595308", "startDate": "2026-03-03", "startTime": "14:00" } ``` ## Notes - All task IDs are MongoDB ObjectIds (24-character hex strings) - Date format: `YYYY-MM-DD` for days, ISO 8601 for datetimes - MCP tool responses wrap content in `{"content": [{"type": "text", "text": "..."}], "isError": false}` format - The `text` field contains JSON-stringified data that should be parsed - If multiple Sunsama connections exist, specify which to use with `Maton-Connection` header ## Resources - [Sunsama](https://sunsama.com) - [Maton Community](https://discord.com/invite/dBfFAcefs2) - [Maton Support](mailto:support@maton.ai)
-
-
systeme
-
README.md 3.4 KB
# 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/)
-
-
tally
-
README.md 3 KB
# 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/)
-
-
tavily
-
README.md 2.8 KB
# Tavily Routing Reference **App name:** `tavily` **Base URL proxied:** `api.tavily.com` ## API Path Pattern ``` /tavily/{endpoint} ``` ## Common Endpoints ### Search Perform AI-powered web search. ```bash POST /tavily/search Content-Type: application/json { "query": "latest AI news", "max_results": 5 } ``` With answer generation: ```bash POST /tavily/search Content-Type: application/json { "query": "What is machine learning?", "max_results": 5, "include_answer": true, "search_depth": "advanced" } ``` ### Extract Extract content from URLs. ```bash POST /tavily/extract Content-Type: application/json { "urls": ["https://example.com/article"], "format": "markdown" } ``` ### Map Discover URLs from a website. ```bash POST /tavily/map Content-Type: application/json { "url": "https://example.com", "limit": 20, "max_depth": 2 } ``` ### Crawl Crawl a website and extract content. ```bash POST /tavily/crawl Content-Type: application/json { "url": "https://example.com", "limit": 10, "max_depth": 2 } ``` ### Research Tasks #### Create Research Task ```bash POST /tavily/research Content-Type: application/json { "input": "What are the latest developments in AI?", "model": "mini" } ``` Models: `mini` (fast), `pro` (comprehensive), `auto` (default) #### Get Research Task ```bash GET /tavily/research/{request_id} ``` ## Search Parameters | Parameter | Type | Description | |-----------|------|-------------| | query | string | Search query (required) | | max_results | integer | Results count (0-20, default 5) | | search_depth | string | `basic`, `advanced`, `fast`, `ultra-fast` | | topic | string | `general` or `news` | | include_answer | boolean/string | Generate AI answer | | include_domains | array | Whitelist domains | | exclude_domains | array | Blacklist domains | | time_range | string | `day`, `week`, `month`, `year` | ## Notes - All search/extract/crawl/map endpoints use POST method - Research task GET uses GET method - Authentication is automatic - the gateway injects the API key - Search includes optional AI-generated answers - Map returns URLs only; Crawl returns URLs with content - Using `instructions` in crawl/map doubles credit cost - Research tasks are async - poll GET endpoint for results ## Resources - [Tavily API Documentation](https://docs.tavily.com) - [Search API Reference](https://docs.tavily.com/documentation/api-reference/endpoint/search) - [Extract API Reference](https://docs.tavily.com/documentation/api-reference/endpoint/extract) - [Crawl API Reference](https://docs.tavily.com/documentation/api-reference/endpoint/crawl) - [Map API Reference](https://docs.tavily.com/documentation/api-reference/endpoint/map) - [Research API Reference](https://docs.tavily.com/documentation/api-reference/endpoint/research)
-
-
telegram
-
README.md 3.3 KB
# 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)
-
-
ticktick
-
README.md 2.5 KB
# 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/)
-
-
todoist
-
README.md 2.7 KB
# Todoist Routing Reference **App name:** `todoist` **Base URL proxied:** `api.todoist.com` ## API Path Pattern ``` /todoist/api/v1/{resource} ``` ## Common Endpoints ### List Projects ```bash GET /todoist/api/v1/projects ``` ### Get Project ```bash GET /todoist/api/v1/projects/{id} ``` ### Create Project ```bash POST /todoist/api/v1/projects Content-Type: application/json { "name": "My Project", "color": "blue" } ``` ### Update Project ```bash POST /todoist/api/v1/projects/{id} Content-Type: application/json { "name": "Updated Name" } ``` ### Delete Project ```bash DELETE /todoist/api/v1/projects/{id} ``` ### List Tasks ```bash GET /todoist/api/v1/tasks GET /todoist/api/v1/tasks?project_id={project_id} GET /todoist/api/v1/tasks?filter={filter} ``` ### Get Task ```bash GET /todoist/api/v1/tasks/{id} ``` ### Create Task ```bash POST /todoist/api/v1/tasks Content-Type: application/json { "content": "Buy groceries", "priority": 2, "due_string": "tomorrow" } ``` ### Update Task ```bash POST /todoist/api/v1/tasks/{id} Content-Type: application/json { "content": "Updated content", "priority": 4 } ``` ### Close Task (Complete) ```bash POST /todoist/api/v1/tasks/{id}/close ``` ### Reopen Task ```bash POST /todoist/api/v1/tasks/{id}/reopen ``` ### Delete Task ```bash DELETE /todoist/api/v1/tasks/{id} ``` ### List Sections ```bash GET /todoist/api/v1/sections GET /todoist/api/v1/sections?project_id={project_id} ``` ### Create Section ```bash POST /todoist/api/v1/sections Content-Type: application/json { "name": "In Progress", "project_id": "123456" } ``` ### Delete Section ```bash DELETE /todoist/api/v1/sections/{id} ``` ### List Labels ```bash GET /todoist/api/v1/labels ``` ### Create Label ```bash POST /todoist/api/v1/labels Content-Type: application/json { "name": "urgent", "color": "red" } ``` ### Delete Label ```bash DELETE /todoist/api/v1/labels/{id} ``` ### List Comments ```bash GET /todoist/api/v1/comments?task_id={task_id} GET /todoist/api/v1/comments?project_id={project_id} ``` ### Create Comment ```bash POST /todoist/api/v1/comments Content-Type: application/json { "task_id": "123456", "content": "This is a comment" } ``` ### Delete Comment ```bash DELETE /todoist/api/v1/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 API v1 Documentation](https://developer.todoist.com/api/v1) - [Todoist Filter Syntax](https://todoist.com/help/articles/introduction-to-filters)
-
-
toggl-track
-
README.md 3.7 KB
# 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)
-
-
trello
-
README.md 3.5 KB
# 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/)
-
-
twilio
-
README.md 3.7 KB
# 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)
-
-
typeform
-
README.md 5 KB
# 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)
-
-
unbounce
-
README.md 2.9 KB
# Unbounce Routing Reference **App name:** `unbounce` **Base URL proxied:** `api.unbounce.com` ## API Path Pattern ``` /unbounce/accounts /unbounce/accounts/{account_id} /unbounce/accounts/{account_id}/sub_accounts /unbounce/accounts/{account_id}/pages /unbounce/sub_accounts/{sub_account_id} /unbounce/sub_accounts/{sub_account_id}/pages /unbounce/sub_accounts/{sub_account_id}/domains /unbounce/sub_accounts/{sub_account_id}/page_groups /unbounce/pages /unbounce/pages/{page_id} /unbounce/pages/{page_id}/form_fields /unbounce/pages/{page_id}/leads /unbounce/leads/{lead_id} /unbounce/domains/{domain_id} /unbounce/domains/{domain_id}/pages /unbounce/page_groups/{page_group_id}/pages /unbounce/users/self /unbounce/users/{user_id} ``` ## Common Endpoints ### List Accounts ```bash GET /unbounce/accounts ``` ### Get Account ```bash GET /unbounce/accounts/{account_id} ``` ### List Sub-Accounts ```bash GET /unbounce/accounts/{account_id}/sub_accounts ``` ### Get Sub-Account ```bash GET /unbounce/sub_accounts/{sub_account_id} ``` ### List Pages ```bash GET /unbounce/pages ``` ### Get Page ```bash GET /unbounce/pages/{page_id} ``` ### List Page Form Fields ```bash GET /unbounce/pages/{page_id}/form_fields ``` ### List Page Leads ```bash GET /unbounce/pages/{page_id}/leads ``` ### Get Lead ```bash GET /unbounce/leads/{lead_id} ``` ### List Domains ```bash GET /unbounce/sub_accounts/{sub_account_id}/domains ``` ### Get Domain ```bash GET /unbounce/domains/{domain_id} ``` ### List Page Groups ```bash GET /unbounce/sub_accounts/{sub_account_id}/page_groups ``` ### List Page Group Pages ```bash GET /unbounce/page_groups/{page_group_id}/pages ``` ### Create Lead ```bash POST /unbounce/pages/{page_id}/leads Content-Type: application/json { "conversion": true, "visitor_id": "unique-visitor-id", "form_submission": { "variant_id": "a", "submitter_ip": "127.0.0.1", "form_data": { "name": "John Doe", "email": "john@example.com" } } } ``` ### Get Current User ```bash GET /unbounce/users/self ``` ### Get User ```bash GET /unbounce/users/{user_id} ``` ## Query Parameters - `limit` - Results per page (default: 50, max: 1000) - `offset` - Skip first N results - `sort_order` - `asc` or `desc` - `from` - Start date (RFC 5322 format) - `to` - End date (RFC 5322 format) - `count` - When `true`, only return count in metadata - `role` - Filter pages by role: `viewer` or `author` - `with_stats` - Include A/B test statistics (for /pages) - `include_sub_pages` - Include sub-page form fields (for /form_fields) ## Notes - Page IDs are UUIDs, account/sub-account IDs are integers - All responses include `metadata` with HATEOAS navigation links - Page states: `published` or `unpublished` - Account states: `active` or `suspended` - Date format: RFC 5322 (e.g., `2026-03-04T10:54:34Z`) ## Resources - [Unbounce API Documentation](https://developer.unbounce.com/api_reference/)
-
-
vimeo
-
README.md 2.2 KB
# 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)
-
-
whatsapp-business
-
README.md 4.9 KB
# 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)
-
-
woocommerce
-
README.md 6.9 KB
# 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)
-
-
wordpress
-
README.md 3.2 KB
# WordPress.com Routing Reference **App name:** `wordpress` **Base URL proxied:** `public-api.wordpress.com` ## API Path Pattern ``` /wordpress/rest/v1.1/{endpoint} ``` **Important:** WordPress.com uses REST API v1.1. Site-specific endpoints use `/sites/{site_id_or_domain}/{resource}`. ## Site Identifiers Sites can be identified by: - Numeric site ID (e.g., `252505333`) - Domain name (e.g., `myblog.wordpress.com`) ## Common Endpoints ### Sites #### Get Site Information ```bash GET /wordpress/rest/v1.1/sites/{site} ``` ### Posts #### List Posts ```bash GET /wordpress/rest/v1.1/sites/{site}/posts ``` Query parameters: `number`, `offset`, `page_handle`, `status`, `search`, `category`, `tag`, `author` #### Get Post ```bash GET /wordpress/rest/v1.1/sites/{site}/posts/{post_id} ``` #### Create Post ```bash POST /wordpress/rest/v1.1/sites/{site}/posts/new Content-Type: application/json { "title": "Post Title", "content": "<p>Post content...</p>", "status": "draft", "categories": "news", "tags": "featured" } ``` #### Update Post ```bash POST /wordpress/rest/v1.1/sites/{site}/posts/{post_id} Content-Type: application/json { "title": "Updated Title", "content": "<p>Updated content...</p>" } ``` #### Delete Post ```bash POST /wordpress/rest/v1.1/sites/{site}/posts/{post_id}/delete ``` ### Pages #### List Pages ```bash GET /wordpress/rest/v1.1/sites/{site}/posts?type=page ``` #### Create Page ```bash POST /wordpress/rest/v1.1/sites/{site}/posts/new?type=page Content-Type: application/json { "title": "Page Title", "content": "<p>Page content...</p>", "status": "publish" } ``` ### Post Likes #### Get Post Likes ```bash GET /wordpress/rest/v1.1/sites/{site}/posts/{post_id}/likes ``` #### Like Post ```bash POST /wordpress/rest/v1.1/sites/{site}/posts/{post_id}/likes/new ``` ### Users #### List Site Users ```bash GET /wordpress/rest/v1.1/sites/{site}/users ``` ### User Settings #### Get My Settings ```bash GET /wordpress/rest/v1.1/me/settings ``` #### Update My Settings ```bash POST /wordpress/rest/v1.1/me/settings/ Content-Type: application/json { "enable_translator": false } ``` ### Post Types #### List Post Types ```bash GET /wordpress/rest/v1.1/sites/{site}/post-types ``` ### Post Counts #### Get Post Counts ```bash GET /wordpress/rest/v1.1/sites/{site}/post-counts/{post_type} ``` ## Pagination WordPress.com uses cursor-based pagination with `page_handle`: ```bash GET /wordpress/rest/v1.1/sites/{site}/posts?number=20 # Response includes "meta": {"next_page": "..."} GET /wordpress/rest/v1.1/sites/{site}/posts?number=20&page_handle={next_page} ``` Alternatively, use `offset` for simple pagination. ## Notes - API version is v1.1 (not v2) - POST is used for updates (not PUT/PATCH) - POST to `/delete` endpoint is used for deletes (not HTTP DELETE) - Categories and tags are created automatically when referenced in posts - Content is HTML-formatted - Date/time values are in ISO 8601 format ## Resources - [WordPress.com REST API Overview](https://developer.wordpress.com/docs/api/) - [Getting Started Guide](https://developer.wordpress.com/docs/api/getting-started/) - [API Reference](https://developer.wordpress.com/docs/api/rest-api-reference/)
-
-
xero
-
README.md 5.9 KB
# Xero Routing Reference **App name:** `xero` **Base URL proxied:** `api.xero.com` ## Automatic Tenant ID Injection The router automatically injects the `Xero-Tenant-Id` header from your connection config. You do not need to provide it manually. ## API Path Pattern ``` /xero/api.xro/2.0/{endpoint} ``` ## Common Endpoints ### Contacts #### List Contacts ```bash GET /xero/api.xro/2.0/Contacts ``` #### Get Contact ```bash GET /xero/api.xro/2.0/Contacts/{contactId} ``` #### Create Contact ```bash POST /xero/api.xro/2.0/Contacts Content-Type: application/json { "Contacts": [{ "Name": "John Doe", "EmailAddress": "john@example.com", "Phones": [{"PhoneType": "DEFAULT", "PhoneNumber": "555-1234"}] }] } ``` ### Invoices #### List Invoices ```bash GET /xero/api.xro/2.0/Invoices ``` #### Get Invoice ```bash GET /xero/api.xro/2.0/Invoices/{invoiceId} ``` #### Create Invoice ```bash POST /xero/api.xro/2.0/Invoices Content-Type: application/json { "Invoices": [{ "Type": "ACCREC", "Contact": {"ContactID": "xxx"}, "LineItems": [{ "Description": "Service", "Quantity": 1, "UnitAmount": 100.00, "AccountCode": "200" }] }] } ``` ### Accounts #### List Accounts ```bash GET /xero/api.xro/2.0/Accounts ``` ### Items #### List Items ```bash GET /xero/api.xro/2.0/Items ``` ### Payments #### List Payments ```bash GET /xero/api.xro/2.0/Payments ``` ### Bank Transactions #### List Bank Transactions ```bash GET /xero/api.xro/2.0/BankTransactions ``` ### Reports #### Profit and Loss ```bash GET /xero/api.xro/2.0/Reports/ProfitAndLoss?fromDate=2024-01-01&toDate=2024-12-31 ``` #### Balance Sheet ```bash GET /xero/api.xro/2.0/Reports/BalanceSheet?date=2024-12-31 ``` #### Trial Balance ```bash GET /xero/api.xro/2.0/Reports/TrialBalance?date=2024-12-31 ``` ### Currencies #### List Currencies ```bash GET /xero/api.xro/2.0/Currencies ``` ### Tax Rates #### List Tax Rates ```bash GET /xero/api.xro/2.0/TaxRates ``` ### Credit Notes #### List Credit Notes ```bash GET /xero/api.xro/2.0/CreditNotes ``` ### Purchase Orders #### List Purchase Orders ```bash GET /xero/api.xro/2.0/PurchaseOrders ``` ### Organisation #### Get Organisation ```bash GET /xero/api.xro/2.0/Organisation ``` ## Invoice Types - `ACCREC` - Accounts Receivable (sales invoice) - `ACCPAY` - Accounts Payable (bill) ## Notes - `Xero-Tenant-Id` header is automatically injected by the router - Dates are in `YYYY-MM-DD` format - Multiple records can be created in a single request using arrays - Updates use POST method with the record ID in the URL - Draft invoices can be deleted by setting `Status` to `DELETED` - Use `where` query parameter for filtering (e.g., `where=Status=="VOIDED"`) ## Resources - [API Overview](https://developer.xero.com/documentation/api/accounting/overview) - [List Contacts](https://developer.xero.com/documentation/api/accounting/contacts#get-contacts) - [Get Contact](https://developer.xero.com/documentation/api/accounting/contacts#get-contacts) - [Create Contact](https://developer.xero.com/documentation/api/accounting/contacts#put-contacts) - [Update Contact](https://developer.xero.com/documentation/api/accounting/contacts#post-contacts) - [List Invoices](https://developer.xero.com/documentation/api/accounting/invoices#get-invoices) - [Get Invoice](https://developer.xero.com/documentation/api/accounting/invoices#get-invoices) - [Create Invoice](https://developer.xero.com/documentation/api/accounting/invoices#put-invoices) - [Update Invoice](https://developer.xero.com/documentation/api/accounting/invoices#post-invoices) - [Email Invoice](https://developer.xero.com/documentation/api/accounting/invoices#emailing-an-invoice) - [List Accounts](https://developer.xero.com/documentation/api/accounting/accounts#get-accounts) - [Get Account](https://developer.xero.com/documentation/api/accounting/accounts#get-accounts) - [Create Account](https://developer.xero.com/documentation/api/accounting/accounts#put-accounts) - [Update Account](https://developer.xero.com/documentation/api/accounting/accounts#post-accounts) - [Delete Account](https://developer.xero.com/documentation/api/accounting/accounts#delete-accounts) - [List Items](https://developer.xero.com/documentation/api/accounting/items#get-items) - [Get Item](https://developer.xero.com/documentation/api/accounting/items#get-items) - [Create Item](https://developer.xero.com/documentation/api/accounting/items#put-items) - [Update Item](https://developer.xero.com/documentation/api/accounting/items#post-items) - [Delete Item](https://developer.xero.com/documentation/api/accounting/items#delete-items) - [List Payments](https://developer.xero.com/documentation/api/accounting/payments#get-payments) - [Get Payment](https://developer.xero.com/documentation/api/accounting/payments#get-payments) - [Create Payment](https://developer.xero.com/documentation/api/accounting/payments#put-payments) - [Update Payment](https://developer.xero.com/documentation/api/accounting/payments#post-payments) - [List Bank Transactions](https://developer.xero.com/documentation/api/accounting/banktransactions#get-banktransactions) - [Get Bank Transaction](https://developer.xero.com/documentation/api/accounting/banktransactions#get-banktransactions) - [Create Bank Transaction](https://developer.xero.com/documentation/api/accounting/banktransactions#put-banktransactions) - [Update Bank Transaction](https://developer.xero.com/documentation/api/accounting/banktransactions#post-banktransactions) - [Profit and Loss Report](https://developer.xero.com/documentation/api/accounting/reports#profitandloss) - [Balance Sheet Report](https://developer.xero.com/documentation/api/accounting/reports#balancesheet) - [Trial Balance Report](https://developer.xero.com/documentation/api/accounting/reports#trialbalance) - [Bank Summary Report](https://developer.xero.com/documentation/api/accounting/reports#banksummary) - [Get Organisation](https://developer.xero.com/documentation/api/accounting/organisation#get-organisation)
-
-
youtube
-
README.md 4 KB
# YouTube Routing Reference **App name:** `youtube` **Base URL proxied:** `www.googleapis.com` ## API Path Pattern ``` /youtube/youtube/v3/{resource} ``` ## Common Endpoints ### Search Videos ```bash GET /youtube/youtube/v3/search?part=snippet&q=coding+tutorial&type=video&maxResults=10 ``` Query parameters: - `part` - Required: `snippet` - `q` - Search query - `type` - Filter: `video`, `channel`, `playlist` - `maxResults` - Results per page (1-50) - `order` - Sort: `date`, `rating`, `relevance`, `title`, `viewCount` - `videoDuration` - `short` (<4min), `medium` (4-20min), `long` (>20min) ### Get Video Details ```bash GET /youtube/youtube/v3/videos?part=snippet,statistics,contentDetails&id={videoId} ``` Parts available: `snippet`, `statistics`, `contentDetails`, `status`, `player` ### Get Trending Videos ```bash GET /youtube/youtube/v3/videos?part=snippet,statistics&chart=mostPopular®ionCode=US&maxResults=10 ``` ### Rate Video ```bash POST /youtube/youtube/v3/videos/rate?id={videoId}&rating=like ``` Rating values: `like`, `dislike`, `none` ### Get My Channel ```bash GET /youtube/youtube/v3/channels?part=snippet,statistics,contentDetails&mine=true ``` ### Get Channel Details ```bash GET /youtube/youtube/v3/channels?part=snippet,statistics&id={channelId} ``` ### List My Playlists ```bash GET /youtube/youtube/v3/playlists?part=snippet,contentDetails&mine=true&maxResults=25 ``` ### Create Playlist ```bash POST /youtube/youtube/v3/playlists?part=snippet,status Content-Type: application/json { "snippet": { "title": "My New Playlist", "description": "A collection of videos" }, "status": { "privacyStatus": "private" } } ``` Privacy values: `public`, `private`, `unlisted` ### Delete Playlist ```bash DELETE /youtube/youtube/v3/playlists?id={playlistId} ``` ### List Playlist Items ```bash GET /youtube/youtube/v3/playlistItems?part=snippet,contentDetails&playlistId={playlistId}&maxResults=50 ``` ### Add Video to Playlist ```bash POST /youtube/youtube/v3/playlistItems?part=snippet Content-Type: application/json { "snippet": { "playlistId": "PLxyz123", "resourceId": { "kind": "youtube#video", "videoId": "abc123xyz" }, "position": 0 } } ``` ### List My Subscriptions ```bash GET /youtube/youtube/v3/subscriptions?part=snippet&mine=true&maxResults=50 ``` ### Subscribe to Channel ```bash POST /youtube/youtube/v3/subscriptions?part=snippet Content-Type: application/json { "snippet": { "resourceId": { "kind": "youtube#channel", "channelId": "UCxyz123" } } } ``` ### List Video Comments ```bash GET /youtube/youtube/v3/commentThreads?part=snippet,replies&videoId={videoId}&maxResults=100 ``` ### Add Comment to Video ```bash POST /youtube/youtube/v3/commentThreads?part=snippet Content-Type: application/json { "snippet": { "videoId": "abc123xyz", "topLevelComment": { "snippet": { "textOriginal": "Great video!" } } } } ``` ## Notes - Video IDs are 11 characters (e.g., `dQw4w9WgXcQ`) - Channel IDs start with `UC` (e.g., `UCxyz123`) - Playlist IDs start with `PL` (user) or `UU` (uploads) - Use `pageToken` for pagination through large result sets - The `part` parameter is required and determines what data is returned - Quota costs vary by endpoint - search is expensive (100 units), reads are cheap (1 unit) ## Resources - [YouTube Data API Overview](https://developers.google.com/youtube/v3) - [Search](https://developers.google.com/youtube/v3/docs/search/list) - [Videos](https://developers.google.com/youtube/v3/docs/videos) - [Channels](https://developers.google.com/youtube/v3/docs/channels) - [Playlists](https://developers.google.com/youtube/v3/docs/playlists) - [PlaylistItems](https://developers.google.com/youtube/v3/docs/playlistItems) - [Subscriptions](https://developers.google.com/youtube/v3/docs/subscriptions) - [Comments](https://developers.google.com/youtube/v3/docs/comments) - [Quota Calculator](https://developers.google.com/youtube/v3/determine_quota_cost)
-
-
zoho-bigin
-
README.md 2.3 KB
# Zoho Bigin Routing Reference **App name:** `zoho-bigin` **Base URL proxied:** `www.zohoapis.com` ## API Path Pattern ``` /zoho-bigin/bigin/v2/{resource} ``` ## Common Endpoints ### List Contacts ```bash GET /zoho-bigin/bigin/v2/Contacts?fields=First_Name,Last_Name,Email ``` ### Get Contact ```bash GET /zoho-bigin/bigin/v2/Contacts/{id} ``` ### Create Contact ```bash POST /zoho-bigin/bigin/v2/Contacts Content-Type: application/json { "data": [{ "Last_Name": "Smith", "First_Name": "John", "Email": "john@example.com" }] } ``` ### Update Contact ```bash PUT /zoho-bigin/bigin/v2/Contacts Content-Type: application/json { "data": [{ "id": "{record_id}", "Phone": "+1-555-1234" }] } ``` ### Delete Contact ```bash DELETE /zoho-bigin/bigin/v2/Contacts?ids={id1},{id2} ``` ### Search Contacts ```bash GET /zoho-bigin/bigin/v2/Contacts/search?email=john@example.com GET /zoho-bigin/bigin/v2/Contacts/search?criteria=(Last_Name:equals:Smith) ``` ### List Companies (Accounts) ```bash GET /zoho-bigin/bigin/v2/Accounts?fields=Account_Name,Website ``` ### Get Users ```bash GET /zoho-bigin/bigin/v2/users?type=ActiveUsers ``` ### Get Modules ```bash GET /zoho-bigin/bigin/v2/settings/modules ``` ## Available Modules | Module | API Name | Description | |--------|----------|-------------| | Contacts | `Contacts` | Individual people | | Companies | `Accounts` | Organizations/businesses | | Pipelines | `Pipelines` | Sales opportunities/deals | | Products | `Products` | Items you sell | | Tasks | `Tasks` | To-do items | | Events | `Events` | Calendar appointments | | Calls | `Calls` | Phone call logs | | Notes | `Notes` | Notes attached to records | ## Notes - The `fields` query parameter is **required** for list operations - Module API names are case-sensitive (e.g., `Contacts`, not `contacts`) - Companies are accessed via the `Accounts` module - Sales opportunities are in the `Pipelines` module (not `Deals`) - Record IDs are numeric strings (e.g., `7255024000000596045`) - Maximum 200 records per page, 100 per create/update/delete - Some modules (Tasks, Events, Calls, Notes) require additional OAuth scopes ## Resources - [Bigin API Overview](https://www.bigin.com/developer/docs/apis/v2/) - [Bigin REST API Documentation](https://www.bigin.com/developer/docs/apis/) - [Modules API](https://www.bigin.com/developer/docs/apis/modules-api.html)
-
-
zoho-bookings
-
README.md 3.1 KB
# Zoho Bookings Routing Reference **App name:** `zoho-bookings` **Base URL proxied:** `www.zohoapis.com` ## API Path Pattern ``` /zoho-bookings/bookings/v1/json/{endpoint} ``` ## Common Endpoints ### Workspaces ```bash # List workspaces GET /zoho-bookings/bookings/v1/json/workspaces # Get specific workspace GET /zoho-bookings/bookings/v1/json/workspaces?workspace_id={workspace_id} # Create workspace POST /zoho-bookings/bookings/v1/json/createworkspace Content-Type: application/x-www-form-urlencoded name=New+Workspace ``` ### Services ```bash # List services (workspace_id required) GET /zoho-bookings/bookings/v1/json/services?workspace_id={workspace_id} # Create service POST /zoho-bookings/bookings/v1/json/createservice Content-Type: application/x-www-form-urlencoded name=Consultation&workspace_id={workspace_id}&duration=60 ``` ### Staff ```bash # List staff (workspace_id required) GET /zoho-bookings/bookings/v1/json/staffs?workspace_id={workspace_id} ``` ### Appointments ```bash # Book appointment POST /zoho-bookings/bookings/v1/json/appointment Content-Type: application/x-www-form-urlencoded service_id={service_id}&staff_id={staff_id}&from_time=20-Feb-2026+10:00:00&customer_details={"name":"John","email":"john@example.com","phone_number":"+15551234567"} # Get appointment GET /zoho-bookings/bookings/v1/json/getappointment?booking_id=%23NU-00001 # Fetch appointments (uses 'data' wrapper) POST /zoho-bookings/bookings/v1/json/fetchappointment Content-Type: application/x-www-form-urlencoded data={"from_time":"17-Feb-2026 00:00:00","to_time":"20-Feb-2026 23:59:59"} # Update appointment (cancel/complete/noshow) POST /zoho-bookings/bookings/v1/json/updateappointment Content-Type: application/x-www-form-urlencoded booking_id=#NU-00001&action=cancel ``` ## Request Format Notes - **GET endpoints**: Use query parameters - **POST endpoints**: Use `application/x-www-form-urlencoded` - **fetchappointment**: Requires parameters wrapped in `data` field as JSON string - **customer_details**: Must be a JSON string, not an object - **Date format**: `dd-MMM-yyyy HH:mm:ss` (e.g., `20-Feb-2026 10:00:00`) ## Service Types - `APPOINTMENT` - One-on-one appointments - `RESOURCE` - Resource bookings - `CLASS` - Group classes - `COLLECTIVE` - Collective bookings with multiple staff ## Appointment Status Values - `UPCOMING` - Future appointments - `CANCEL` - Cancelled appointments - `COMPLETED` - Completed appointments - `NO_SHOW` - Customer no-shows - `PENDING` - Pending confirmation - `ONGOING` - Currently in progress ## Notes - Booking IDs include `#` prefix (URL-encode as `%23` in GET requests) - The `workspace_id` is required for services and staff endpoints - POST endpoints use form-urlencoded, not JSON body - Daily API limits: Free (250), Basic (1,000), Premium/Zoho One (3,000) per user ## Resources - [Zoho Bookings API Documentation](https://www.zoho.com/bookings/help/api/v1/oauthauthentication.html) - [Book Appointment API](https://www.zoho.com/bookings/help/api/v1/book-appointment.html) - [Fetch Services API](https://www.zoho.com/bookings/help/api/v1/fetch-services.html)
-
-
zoho-books
-
README.md 3.1 KB
# Zoho Books Routing Reference **App name:** `zoho-books` **Base URL proxied:** `www.zohoapis.com` ## API Path Pattern ``` /zoho-books/books/v3/{resource} ``` ## Common Endpoints ### Contacts ```bash # List contacts GET /zoho-books/books/v3/contacts # Get contact GET /zoho-books/books/v3/contacts/{contact_id} # Create contact POST /zoho-books/books/v3/contacts Content-Type: application/json { "contact_name": "Customer Name", "contact_type": "customer" } # Update contact PUT /zoho-books/books/v3/contacts/{contact_id} # Delete contact DELETE /zoho-books/books/v3/contacts/{contact_id} ``` ### Invoices ```bash # List invoices GET /zoho-books/books/v3/invoices # Get invoice GET /zoho-books/books/v3/invoices/{invoice_id} # Create invoice POST /zoho-books/books/v3/invoices # Mark as sent POST /zoho-books/books/v3/invoices/{invoice_id}/status/sent # Email invoice POST /zoho-books/books/v3/invoices/{invoice_id}/email ``` ### Bills ```bash # List bills GET /zoho-books/books/v3/bills # Create bill POST /zoho-books/books/v3/bills # Update bill PUT /zoho-books/books/v3/bills/{bill_id} # Delete bill DELETE /zoho-books/books/v3/bills/{bill_id} ``` ### Expenses ```bash # List expenses GET /zoho-books/books/v3/expenses # Create expense POST /zoho-books/books/v3/expenses # Update expense PUT /zoho-books/books/v3/expenses/{expense_id} # Delete expense DELETE /zoho-books/books/v3/expenses/{expense_id} ``` ### Sales Orders ```bash GET /zoho-books/books/v3/salesorders POST /zoho-books/books/v3/salesorders ``` ### Purchase Orders ```bash GET /zoho-books/books/v3/purchaseorders POST /zoho-books/books/v3/purchaseorders ``` ### Credit Notes ```bash GET /zoho-books/books/v3/creditnotes ``` ### Recurring Invoices ```bash GET /zoho-books/books/v3/recurringinvoices ``` ### Recurring Bills ```bash GET /zoho-books/books/v3/recurringbills ``` ## Available Modules | Module | Endpoint | Description | |--------|----------|-------------| | Contacts | `/contacts` | Customers and vendors | | Invoices | `/invoices` | Sales invoices | | Bills | `/bills` | Vendor bills | | Expenses | `/expenses` | Business expenses | | Sales Orders | `/salesorders` | Sales orders | | Purchase Orders | `/purchaseorders` | Purchase orders | | Credit Notes | `/creditnotes` | Customer credit notes | | Recurring Invoices | `/recurringinvoices` | Recurring invoices | | Recurring Bills | `/recurringbills` | Recurring bills | ## Notes - All successful responses have `code: 0` - Dates should be in `yyyy-mm-dd` format - Contact types are `customer` or `vendor` - Some modules (items, chart of accounts, bank accounts, projects) require additional OAuth scopes - Rate limits: 100 requests/minute per organization - Pagination uses `page` and `per_page` parameters with `has_more_page` in response ## Resources - [Zoho Books API v3 Introduction](https://www.zoho.com/books/api/v3/introduction/) - [Zoho Books Invoices API](https://www.zoho.com/books/api/v3/invoices/) - [Zoho Books Contacts API](https://www.zoho.com/books/api/v3/contacts/) - [Zoho Books Bills API](https://www.zoho.com/books/api/v3/bills/) - [Zoho Books Expenses API](https://www.zoho.com/books/api/v3/expenses/)
-
-
zoho-calendar
-
README.md 2.8 KB
# Zoho Calendar Routing Reference **App name:** `zoho-calendar` **Base URL proxied:** `calendar.zoho.com` ## API Path Pattern ``` /zoho-calendar/api/v1/{resource} ``` ## Common Endpoints ### Calendars ```bash # List calendars GET /zoho-calendar/api/v1/calendars # Get calendar details GET /zoho-calendar/api/v1/calendars/{calendar_uid} # Create calendar POST /zoho-calendar/api/v1/calendars?calendarData={json} # Delete calendar DELETE /zoho-calendar/api/v1/calendars/{calendar_uid} ``` ### Events ```bash # List events (range required, max 31 days) GET /zoho-calendar/api/v1/calendars/{calendar_uid}/events?range={"start":"yyyyMMdd","end":"yyyyMMdd"} # Get event details GET /zoho-calendar/api/v1/calendars/{calendar_uid}/events/{event_uid} # Create event POST /zoho-calendar/api/v1/calendars/{calendar_uid}/events?eventdata={json} # Update event (etag required in eventdata) PUT /zoho-calendar/api/v1/calendars/{calendar_uid}/events/{event_uid}?eventdata={json} # Delete event (etag required as HEADER) DELETE /zoho-calendar/api/v1/calendars/{calendar_uid}/events/{event_uid} Header: etag: {etag_value} ``` ## Event Data Format ### Create/Update Event ```json { "title": "Meeting Title", "dateandtime": { "timezone": "America/Los_Angeles", "start": "yyyyMMdd'T'HHmmss'Z'", "end": "yyyyMMdd'T'HHmmss'Z'" }, "description": "Event description", "location": "Meeting room", "isallday": false, "attendees": [ { "email": "user@example.com", "permission": 1, "attendance": 1 } ], "reminders": [ { "action": "popup", "minutes": 30 } ], "rrule": "FREQ=DAILY;COUNT=5" } ``` ### Update Event (etag required) ```json { "title": "Updated Title", "dateandtime": {...}, "etag": 1770368451507 } ``` ## Calendar Data Format ```json { "name": "Calendar Name", "color": "#FF5733", "textcolor": "#FFFFFF", "description": "Calendar description" } ``` ## Notes - Event and calendar data is passed as JSON in query parameters (`eventdata`, `calendarData`) - Date/time format: `yyyyMMdd'T'HHmmss'Z'` (GMT) for timed events, `yyyyMMdd` for all-day - The `range` parameter for listing events cannot exceed 31 days - **IMPORTANT:** For delete operations, `etag` must be passed as an HTTP header, not a query parameter - The `etag` is required for update and delete operations - always get the latest etag before modifying - Permission levels for attendees: 0 (Guest), 1 (View), 2 (Invite), 3 (Edit) - Attendance: 0 (Non-participant), 1 (Required), 2 (Optional) - Reminder actions: `email`, `popup`, `notification` ## Resources - [Zoho Calendar API Introduction](https://www.zoho.com/calendar/help/api/introduction.html) - [Zoho Calendar Events API](https://www.zoho.com/calendar/help/api/events-api.html) - [Zoho Calendar Calendars API](https://www.zoho.com/calendar/help/api/calendars-api.html)
-
-
zoho-crm
-
README.md 4 KB
# Zoho CRM Routing Reference **App name:** `zoho-crm` **Base URL proxied:** `www.zohoapis.com` ## API Path Pattern ``` /zoho-crm/crm/v8/{resource} ``` ## Common Endpoints ### Records ```bash # List records (fields required) GET /zoho-crm/crm/v8/{module_api_name}?fields={field1},{field2} # Get record GET /zoho-crm/crm/v8/{module_api_name}/{record_id} # Create records POST /zoho-crm/crm/v8/{module_api_name} Content-Type: application/json { "data": [ { "field_api_name": "value" } ] } # Update records PUT /zoho-crm/crm/v8/{module_api_name} Content-Type: application/json { "data": [ { "id": "record_id", "field_api_name": "updated_value" } ] } # Delete records DELETE /zoho-crm/crm/v8/{module_api_name}?ids={id1},{id2} ``` ### Search ```bash # Search by criteria GET /zoho-crm/crm/v8/{module_api_name}/search?criteria=(Last_Name:equals:Smith) # Search by email GET /zoho-crm/crm/v8/{module_api_name}/search?email=user@example.com # Search by phone GET /zoho-crm/crm/v8/{module_api_name}/search?phone=555-1234 # Global text search GET /zoho-crm/crm/v8/{module_api_name}/search?word=searchterm ``` ### Organization ```bash # Get organization details GET /zoho-crm/crm/v8/org ``` ### Users ```bash # List users (type: AllUsers, ActiveUsers, AdminUsers, CurrentUser, etc.) GET /zoho-crm/crm/v8/users?type=AllUsers # Get specific user GET /zoho-crm/crm/v8/users/{user_id} ``` ### Settings / Metadata ```bash # List all modules GET /zoho-crm/crm/v8/settings/modules # Get fields for a module GET /zoho-crm/crm/v8/settings/fields?module={module_api_name} # Get layouts for a module GET /zoho-crm/crm/v8/settings/layouts?module={module_api_name} # List roles GET /zoho-crm/crm/v8/settings/roles # Get specific role GET /zoho-crm/crm/v8/settings/roles/{role_id} # List profiles GET /zoho-crm/crm/v8/settings/profiles # Get specific profile GET /zoho-crm/crm/v8/settings/profiles/{profile_id} ``` ## Available Modules | Module | API Name | Description | |--------|----------|-------------| | Leads | `Leads` | Potential customers | | Contacts | `Contacts` | Individual people | | Accounts | `Accounts` | Organizations/companies | | Deals | `Deals` | Sales opportunities | | Campaigns | `Campaigns` | Marketing campaigns | | Tasks | `Tasks` | To-do items | | Calls | `Calls` | Phone call logs | | Events | `Events` | Calendar appointments | | Products | `Products` | Items for sale | ## Mandatory Fields | Module | Required Fields | |--------|-----------------| | Leads | `Last_Name` | | Contacts | `Last_Name` | | Accounts | `Account_Name` | | Deals | `Deal_Name`, `Stage` | | Tasks | `Subject` | ## Search Operators - Text: `equals`, `not_equal`, `starts_with`, `in` - Date/Number: `equals`, `not_equal`, `greater_than`, `less_than`, `between`, `in` - Boolean: `equals`, `not_equal` ## Notes - The `fields` parameter is **required** for list operations (max 50 fields) - Module API names are case-sensitive (e.g., `Leads`, not `leads`) - Maximum 100 records per create/update/delete request - Maximum 200 records returned per GET request - Use `page_token` for >2,000 records (expires after 24 hours) - If you receive a scope error, contact Maton support at support@maton.ai with the specific operations/APIs you need and your use-case - Empty datasets return HTTP 204 (No Content) ## Resources - [Zoho CRM API v8 Documentation](https://www.zoho.com/crm/developer/docs/api/v8/) - [Get Records API](https://www.zoho.com/crm/developer/docs/api/v8/get-records.html) - [Search Records API](https://www.zoho.com/crm/developer/docs/api/v8/search-records.html) - [Organization API](https://www.zoho.com/crm/developer/docs/api/v8/get-org-data.html) - [Users API](https://www.zoho.com/crm/developer/docs/api/v8/get-users.html) - [Modules API](https://www.zoho.com/crm/developer/docs/api/v8/modules-api.html) - [Fields API](https://www.zoho.com/crm/developer/docs/api/v8/field-meta.html) - [Roles API](https://www.zoho.com/crm/developer/docs/api/v8/get-roles.html) - [Profiles API](https://www.zoho.com/crm/developer/docs/api/v8/get-profiles.html)
-
-
zoho-inventory
-
README.md 5.6 KB
# Zoho Inventory Routing Reference **App name:** `zoho-inventory` **Base URL proxied:** `www.zohoapis.com` ## API Path Pattern ``` /zoho-inventory/inventory/v1/{resource} ``` ## Common Endpoints ### Items ```bash # List items GET /zoho-inventory/inventory/v1/items # Get item GET /zoho-inventory/inventory/v1/items/{item_id} # Create item POST /zoho-inventory/inventory/v1/items Content-Type: application/json { "name": "Widget", "rate": 25.00, "purchase_rate": 10.00, "sku": "WDG-001", "item_type": "inventory", "product_type": "goods", "unit": "pcs" } # Update item PUT /zoho-inventory/inventory/v1/items/{item_id} # Delete item DELETE /zoho-inventory/inventory/v1/items/{item_id} # Mark as active/inactive POST /zoho-inventory/inventory/v1/items/{item_id}/active POST /zoho-inventory/inventory/v1/items/{item_id}/inactive ``` ### Contacts ```bash # List contacts GET /zoho-inventory/inventory/v1/contacts # Get contact GET /zoho-inventory/inventory/v1/contacts/{contact_id} # Create contact POST /zoho-inventory/inventory/v1/contacts Content-Type: application/json { "contact_name": "Customer Name", "contact_type": "customer" } # Update contact PUT /zoho-inventory/inventory/v1/contacts/{contact_id} # Delete contact DELETE /zoho-inventory/inventory/v1/contacts/{contact_id} ``` ### Sales Orders ```bash # List sales orders GET /zoho-inventory/inventory/v1/salesorders # Get sales order GET /zoho-inventory/inventory/v1/salesorders/{salesorder_id} # Create sales order POST /zoho-inventory/inventory/v1/salesorders # Update sales order PUT /zoho-inventory/inventory/v1/salesorders/{salesorder_id} # Delete sales order DELETE /zoho-inventory/inventory/v1/salesorders/{salesorder_id} # Status actions POST /zoho-inventory/inventory/v1/salesorders/{salesorder_id}/status/confirmed POST /zoho-inventory/inventory/v1/salesorders/{salesorder_id}/status/void ``` ### Invoices ```bash # List invoices GET /zoho-inventory/inventory/v1/invoices # Get invoice GET /zoho-inventory/inventory/v1/invoices/{invoice_id} # Create invoice POST /zoho-inventory/inventory/v1/invoices # Update invoice PUT /zoho-inventory/inventory/v1/invoices/{invoice_id} # Delete invoice DELETE /zoho-inventory/inventory/v1/invoices/{invoice_id} # Status actions POST /zoho-inventory/inventory/v1/invoices/{invoice_id}/status/sent POST /zoho-inventory/inventory/v1/invoices/{invoice_id}/status/draft POST /zoho-inventory/inventory/v1/invoices/{invoice_id}/status/void # Email POST /zoho-inventory/inventory/v1/invoices/{invoice_id}/email ``` ### Purchase Orders ```bash # List purchase orders GET /zoho-inventory/inventory/v1/purchaseorders # Create purchase order POST /zoho-inventory/inventory/v1/purchaseorders # Update purchase order PUT /zoho-inventory/inventory/v1/purchaseorders/{purchaseorder_id} # Delete purchase order DELETE /zoho-inventory/inventory/v1/purchaseorders/{purchaseorder_id} # Status actions POST /zoho-inventory/inventory/v1/purchaseorders/{purchaseorder_id}/status/issued POST /zoho-inventory/inventory/v1/purchaseorders/{purchaseorder_id}/status/cancelled ``` ### Bills ```bash # List bills GET /zoho-inventory/inventory/v1/bills # Create bill POST /zoho-inventory/inventory/v1/bills # Update bill PUT /zoho-inventory/inventory/v1/bills/{bill_id} # Delete bill DELETE /zoho-inventory/inventory/v1/bills/{bill_id} # Status actions POST /zoho-inventory/inventory/v1/bills/{bill_id}/status/open POST /zoho-inventory/inventory/v1/bills/{bill_id}/status/void ``` ### Item Groups ```bash GET /zoho-inventory/inventory/v1/itemgroups GET /zoho-inventory/inventory/v1/itemgroups/{itemgroup_id} POST /zoho-inventory/inventory/v1/itemgroups PUT /zoho-inventory/inventory/v1/itemgroups/{itemgroup_id} DELETE /zoho-inventory/inventory/v1/itemgroups/{itemgroup_id} ``` ### Shipment Orders ```bash POST /zoho-inventory/inventory/v1/shipmentorders GET /zoho-inventory/inventory/v1/shipmentorders/{shipmentorder_id} PUT /zoho-inventory/inventory/v1/shipmentorders/{shipmentorder_id} DELETE /zoho-inventory/inventory/v1/shipmentorders/{shipmentorder_id} POST /zoho-inventory/inventory/v1/shipmentorders/{shipmentorder_id}/status/delivered ``` ## Available Modules | Module | Endpoint | Description | |--------|----------|-------------| | Items | `/items` | Products and services | | Item Groups | `/itemgroups` | Grouped product variants | | Contacts | `/contacts` | Customers and vendors | | Sales Orders | `/salesorders` | Sales orders | | Invoices | `/invoices` | Sales invoices | | Purchase Orders | `/purchaseorders` | Purchase orders | | Bills | `/bills` | Vendor bills | | Shipment Orders | `/shipmentorders` | Shipment tracking | ## Notes - All successful responses have `code: 0` - Dates should be in `yyyy-mm-dd` format - Contact types are `customer` or `vendor` - The `organization_id` parameter is automatically handled by the gateway - Sales order and purchase order numbers are auto-generated by default - Pagination uses `page` and `per_page` parameters with `has_more_page` in response - Rate limits: 100 requests/minute per organization ## Resources - [Zoho Inventory API v1 Introduction](https://www.zoho.com/inventory/api/v1/introduction/) - [Zoho Inventory Items API](https://www.zoho.com/inventory/api/v1/items/) - [Zoho Inventory Contacts API](https://www.zoho.com/inventory/api/v1/contacts/) - [Zoho Inventory Sales Orders API](https://www.zoho.com/inventory/api/v1/salesorders/) - [Zoho Inventory Invoices API](https://www.zoho.com/inventory/api/v1/invoices/) - [Zoho Inventory Purchase Orders API](https://www.zoho.com/inventory/api/v1/purchaseorders/) - [Zoho Inventory Bills API](https://www.zoho.com/inventory/api/v1/bills/)
-
-
zoho-mail
-
README.md 3.9 KB
# Zoho Mail Routing Reference **App name:** `zoho-mail` **Base URL proxied:** `mail.zoho.com` ## API Path Pattern ``` /zoho-mail/api/{resource} ``` ## Common Endpoints ### Accounts ```bash # Get all accounts GET /zoho-mail/api/accounts # Get account details GET /zoho-mail/api/accounts/{accountId} ``` ### Folders ```bash # List all folders GET /zoho-mail/api/accounts/{accountId}/folders # Create folder POST /zoho-mail/api/accounts/{accountId}/folders Content-Type: application/json { "folderName": "My Folder" } # Rename folder PUT /zoho-mail/api/accounts/{accountId}/folders/{folderId} Content-Type: application/json { "folderName": "Renamed Folder" } # Delete folder DELETE /zoho-mail/api/accounts/{accountId}/folders/{folderId} ``` ### Labels ```bash # List labels GET /zoho-mail/api/accounts/{accountId}/labels # Create label POST /zoho-mail/api/accounts/{accountId}/labels Content-Type: application/json { "labelName": "Important" } # Update label PUT /zoho-mail/api/accounts/{accountId}/labels/{labelId} # Delete label DELETE /zoho-mail/api/accounts/{accountId}/labels/{labelId} ``` ### Messages ```bash # List emails in folder GET /zoho-mail/api/accounts/{accountId}/messages/view?folderId={folderId}&limit=50 # Search emails GET /zoho-mail/api/accounts/{accountId}/messages/search?searchKey={query} # Get email content GET /zoho-mail/api/accounts/{accountId}/folders/{folderId}/messages/{messageId}/content # Get email headers GET /zoho-mail/api/accounts/{accountId}/folders/{folderId}/messages/{messageId}/header # Get email metadata GET /zoho-mail/api/accounts/{accountId}/folders/{folderId}/messages/{messageId}/details # Get original MIME message GET /zoho-mail/api/accounts/{accountId}/messages/{messageId}/originalmessage # Send email POST /zoho-mail/api/accounts/{accountId}/messages Content-Type: application/json { "fromAddress": "sender@yourdomain.com", "toAddress": "recipient@example.com", "subject": "Subject", "content": "Email body", "mailFormat": "html" } # Reply to email POST /zoho-mail/api/accounts/{accountId}/messages/{messageId} # Update message (mark read, move, flag, archive, spam) PUT /zoho-mail/api/accounts/{accountId}/updatemessage Content-Type: application/json { "messageId": ["messageId1"], "folderId": "folderId", "mode": "markAsRead" } # Delete email DELETE /zoho-mail/api/accounts/{accountId}/folders/{folderId}/messages/{messageId} ``` ### Attachments ```bash # Upload attachment POST /zoho-mail/api/accounts/{accountId}/messages/attachments Content-Type: multipart/form-data # Get attachment info GET /zoho-mail/api/accounts/{accountId}/folders/{folderId}/messages/{messageId}/attachmentinfo # Download attachment GET /zoho-mail/api/accounts/{accountId}/folders/{folderId}/messages/{messageId}/attachments/{attachmentId} ``` ## Update Message Modes | Mode | Description | |------|-------------| | `markAsRead` | Mark messages as read | | `markAsUnread` | Mark messages as unread | | `moveMessage` | Move messages (requires `destfolderId`) | | `flag` | Set flag (requires `flagid`: 1-4) | | `archive` | Archive messages | | `unArchive` | Unarchive messages | | `spam` | Mark as spam | | `notSpam` | Mark as not spam | ## Default Folders | Folder | Type | |--------|------| | Inbox | `Inbox` | | Drafts | `Drafts` | | Templates | `Templates` | | Snoozed | `Snoozed` | | Sent | `Sent` | | Spam | `Spam` | | Trash | `Trash` | | Outbox | `Outbox` | ## Notes - Account IDs are required for most operations - get via `/api/accounts` - Message IDs and Folder IDs are numeric strings - The `fromAddress` must be associated with the authenticated account - Uses offset-based pagination with `start` and `limit` parameters - Some operations require additional OAuth scopes ## Resources - [Zoho Mail API Overview](https://www.zoho.com/mail/help/api/overview.html) - [Email Messages API](https://www.zoho.com/mail/help/api/email-api.html) - [Folders API](https://www.zoho.com/mail/help/api/get-all-folder-details.html)
-
-
zoho-people
-
README.md 3.5 KB
# Zoho People Routing Reference **App name:** `zoho-people` **Base URL proxied:** `people.zoho.com` ## API Path Pattern ``` /zoho-people/people/api/{resource} ``` or for view-based endpoints: ``` /zoho-people/api/forms/{viewName}/records ``` ## Common Endpoints ### Forms ```bash # List all forms GET /zoho-people/people/api/forms ``` ### Records (Bulk) ```bash # Get records from any form GET /zoho-people/people/api/forms/{formLinkName}/getRecords?sIndex=1&limit=200 # Common form link names: # - employee # - department # - designation # - leave # - P_ClientDetails ``` ### Records (View-based) ```bash # Get records using a view GET /zoho-people/api/forms/{viewName}/records?rec_limit=200 # Common view names: # - P_EmployeeView # - P_DepartmentView # - P_DesignationView ``` ### Search ```bash # Search by Employee ID GET /zoho-people/people/api/forms/employee/getRecords?SearchColumn=EMPLOYEEID&SearchValue={empId} # Search by Email GET /zoho-people/people/api/forms/employee/getRecords?SearchColumn=EMPLOYEEMAILALIAS&SearchValue={email} # Get modified records GET /zoho-people/people/api/forms/{formLinkName}/getRecords?modifiedtime={timestamp_ms} ``` ### Insert Record ```bash POST /zoho-people/people/api/forms/json/{formLinkName}/insertRecord Content-Type: application/x-www-form-urlencoded inputData={"field1":"value1","field2":"value2"} ``` ### Update Record ```bash POST /zoho-people/people/api/forms/json/{formLinkName}/updateRecord Content-Type: application/x-www-form-urlencoded inputData={"field1":"newValue"}&recordId={recordId} ``` ### Attendance ```bash # Get attendance entries (requires additional scope) GET /zoho-people/people/api/attendance/getAttendanceEntries?date={date}&dateFormat={format} # Check-in/Check-out (requires additional scope) POST /zoho-people/people/api/attendance Content-Type: application/x-www-form-urlencoded dateFormat=dd/MM/yyyy HH:mm:ss&checkIn={datetime}&checkOut={datetime}&empId={empId} ``` ### Leave ```bash # Get leave records GET /zoho-people/people/api/forms/leave/getRecords?sIndex=1&limit=200 # Add leave POST /zoho-people/people/api/forms/json/leave/insertRecord Content-Type: application/x-www-form-urlencoded inputData={"Employee_ID":"EMP001","Leavetype":"123456","From":"01-Feb-2026","To":"02-Feb-2026"} ``` ## Common Form Link Names | Form | formLinkName | |------|--------------| | Employee | `employee` | | Department | `department` | | Designation | `designation` | | Leave | `leave` | | Clients | `P_ClientDetails` | ## Pagination Uses index-based pagination: - `sIndex`: Starting index (1-based) - `limit`: Max records per request (max 200) For page 2: `sIndex=201&limit=200` ## Notes - Record IDs are numeric strings (e.g., `943596000000294355`) - Insert/Update use `application/x-www-form-urlencoded` content type - `inputData` parameter contains JSON object as string - Attendance endpoints require additional OAuth scopes - Maximum 200 records per request - Response wraps data in `response.result[]` array ## Error Codes | Code | Description | |------|-------------| | 7011 | Invalid form name | | 7012 | Invalid view name | | 7021 | Max limit exceeded (200) | | 7024 | No records found | | 7042 | Invalid search value | | 7218 | Invalid OAuth scope | ## Resources - [Zoho People API Overview](https://www.zoho.com/people/api/overview.html) - [Get Bulk Records API](https://www.zoho.com/people/api/bulk-records.html) - [Insert Record API](https://www.zoho.com/people/api/insert-records.html) - [Update Record API](https://www.zoho.com/people/api/update-records.html)
-
-
zoho-projects
-
README.md 3.8 KB
# Zoho Projects Routing Reference **App name:** `zoho-projects` **Base URL proxied:** `projectsapi.zoho.com` ## API Path Pattern ``` /zoho-projects/restapi/portals/ /zoho-projects/restapi/portal/{portal_id}/projects/ /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/tasks/ /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/tasklists/ /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/milestones/ /zoho-projects/restapi/portal/{portal_id}/users/ ``` ## Important Notes - All POST requests use `application/x-www-form-urlencoded`, not JSON - Portal ID is required for most endpoints - Date format: `MM-dd-yyyy` - Empty lists return 204 No Content - Deleted items go to trash, not permanently deleted ## Common Endpoints ### Portals #### List Portals ```bash GET /zoho-projects/restapi/portals/ ``` #### Get Portal ```bash GET /zoho-projects/restapi/portal/{portal_id}/ ``` ### Projects #### List Projects ```bash GET /zoho-projects/restapi/portal/{portal_id}/projects/ ``` #### Get Project ```bash GET /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/ ``` #### Create Project ```bash POST /zoho-projects/restapi/portal/{portal_id}/projects/ Content-Type: application/x-www-form-urlencoded name=New+Project ``` #### Update Project ```bash POST /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/ Content-Type: application/x-www-form-urlencoded name=Updated+Name ``` #### Delete Project ```bash DELETE /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/ ``` ### Tasks #### List Tasks ```bash GET /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/tasks/ ``` #### Get Task ```bash GET /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/tasks/{task_id}/ ``` #### Get My Tasks ```bash GET /zoho-projects/restapi/portal/{portal_id}/mytasks/ ``` #### Create Task ```bash POST /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/tasks/ Content-Type: application/x-www-form-urlencoded name=New+Task ``` #### Update Task ```bash POST /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/tasks/{task_id}/ Content-Type: application/x-www-form-urlencoded name=Updated+Name&priority=High ``` #### Delete Task ```bash DELETE /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/tasks/{task_id}/ ``` ### Task Comments #### List Comments ```bash GET /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/tasks/{task_id}/comments/ ``` #### Add Comment ```bash POST /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/tasks/{task_id}/comments/ Content-Type: application/x-www-form-urlencoded content=Comment+text ``` ### Tasklists #### List Tasklists ```bash GET /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/tasklists/ ``` #### Create Tasklist ```bash POST /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/tasklists/ Content-Type: application/x-www-form-urlencoded name=New+Tasklist ``` ### Milestones #### List Milestones ```bash GET /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/milestones/ ``` #### Create Milestone ```bash POST /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/milestones/ Content-Type: application/x-www-form-urlencoded name=Phase+1&start_date=03-01-2026&end_date=03-15-2026&owner={user_id}&flag=internal ``` ### Users #### List Users ```bash GET /zoho-projects/restapi/portal/{portal_id}/users/ ``` ## Pagination Use `index` and `range` query parameters: ```bash GET /zoho-projects/restapi/portal/{portal_id}/projects/{project_id}/tasks/?index=1&range=50 ``` ## Resources - [Zoho Projects API Documentation](https://www.zoho.com/projects/help/rest-api/zohoprojectsapi.html) - [Projects API](https://www.zoho.com/projects/help/rest-api/projects-api.html) - [Tasks API](https://www.zoho.com/projects/help/rest-api/tasks-api.html)
-
-
zoho-recruit
-
README.md 3.5 KB
# Zoho Recruit Routing Reference **App name:** `zoho-recruit` **Base URL proxied:** `recruit.zoho.com` ## API Path Pattern ``` /zoho-recruit/recruit/v2/{module_api_name} ``` ## Common Endpoints ### Modules ```bash # List all modules GET /zoho-recruit/recruit/v2/settings/modules # Get specific module GET /zoho-recruit/recruit/v2/settings/modules/{module_api_name} ``` ### Records ```bash # List records GET /zoho-recruit/recruit/v2/{module_api_name}?page=1&per_page=200 # Get single record GET /zoho-recruit/recruit/v2/{module_api_name}/{record_id} # Create records (max 100) POST /zoho-recruit/recruit/v2/{module_api_name} Content-Type: application/json { "data": [ {"field_api_name": "value"} ] } # Update single record PUT /zoho-recruit/recruit/v2/{module_api_name}/{record_id} Content-Type: application/json { "data": [ {"field_api_name": "new_value"} ] } # Update multiple records (max 100) PUT /zoho-recruit/recruit/v2/{module_api_name} Content-Type: application/json { "data": [ {"id": "record_id", "field_api_name": "value"} ] } # Delete records (max 100) DELETE /zoho-recruit/recruit/v2/{module_api_name}?ids={id1},{id2} ``` ### Search ```bash # Search by criteria GET /zoho-recruit/recruit/v2/{module_api_name}/search?criteria=(field:operator:value) # Search by email GET /zoho-recruit/recruit/v2/{module_api_name}/search?email=user@example.com # Search by phone GET /zoho-recruit/recruit/v2/{module_api_name}/search?phone=555-1234 # Global word search GET /zoho-recruit/recruit/v2/{module_api_name}/search?word=keyword ``` ## Available Modules | Module | API Name | |--------|----------| | Candidates | `Candidates` | | Job Openings | `Job_Openings` | | Applications | `Applications` | | Interviews | `Interviews` | | Departments | `Departments` | | Clients | `Clients` | | Contacts | `Contacts` | | Campaigns | `Campaigns` | | Referrals | `Referrals` | | Tasks | `Tasks` | | Events | `Events` | | Vendors | `Vendors` | ## Query Parameters | Parameter | Type | Description | |-----------|------|-------------| | `fields` | string | Comma-separated field API names | | `sort_order` | string | `asc` or `desc` | | `sort_by` | string | Field API name | | `converted` | string | `true`, `false`, or `both` | | `approved` | string | `true`, `false`, or `both` | | `page` | integer | Page number (default: 1) | | `per_page` | integer | Records per page (max 200) | ## Search Operators **Text fields:** - `equals`, `not_equal`, `starts_with`, `ends_with`, `contains`, `not_contains`, `in` **Date/Number fields:** - `equals`, `not_equal`, `greater_than`, `less_than`, `greater_equal`, `less_equal`, `between` ## Pagination Uses page-based pagination: - `page`: Page number (default: 1) - `per_page`: Records per page (max: 200) Response includes: ```json { "data": [...], "info": { "per_page": 200, "count": 50, "page": 1, "more_records": false } } ``` ## Notes - Module API names are case-sensitive (e.g., `Job_Openings`) - Maximum 200 records per GET request - Maximum 100 records per POST/PUT/DELETE request - `Last_Name` is mandatory for Candidates - Date format: `yyyy-MM-dd` - DateTime format: `yyyy-MM-ddTHH:mm:ss±HH:mm` (ISO 8601) - Lookup fields use JSON objects with `id` ## Resources - [Zoho Recruit API v2 Overview](https://www.zoho.com/recruit/developer-guide/apiv2/) - [Get Records API](https://www.zoho.com/recruit/developer-guide/apiv2/get-records.html) - [Search Records API](https://www.zoho.com/recruit/developer-guide/apiv2/search-records.html)
-
-
-
LICENSE.txt 1 KB
The MIT License (MIT) Copyright (c) 2026 Maton Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -
SKILL.md 31.1 KB
--- name: api-gateway description: Passthrough proxy for direct access to third-party APIs using managed OAuth connections, provided by [Maton](https://maton.ai). The API gateway lets y Connect to 100+ APIs (Google Workspace, Microsoft 365, GitHub, Notion, Slack, Airtable, HubSpot, etc.) with managed OAuth. Use this skill when users want to interact with external services. Security: The MATON_API_KEY authenticates with Maton.ai but grants NO access to third-party services by itself. Each service requires explicit OAuth authorization by the user through Maton's connect flow. Access is strictly scoped to connections the user has authorized. Provided by Maton (https://maton.ai). compatibility: Requires network access and valid Maton API key metadata: author: maton version: "1.0" clawdbot: emoji: 🧠 homepage: "https://maton.ai" requires: env: - MATON_API_KEY --- # API Gateway Passthrough proxy for direct access to third-party APIs using managed OAuth connections, provided by [Maton](https://maton.ai). The API gateway lets you call native API endpoints directly. ## Quick Start ```bash # Native Slack API call python <<'EOF' import urllib.request, os, json data = json.dumps({'channel': 'C0123456', 'text': 'Hello from gateway!'}).encode() req = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') req.add_header('Content-Type', 'application/json') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ``` ## Base URL ``` https://gateway.maton.ai/{app}/{native-api-path} ``` Replace `{app}` with the service name and `{native-api-path}` with the actual API endpoint path. IMPORTANT: The URL path MUST start with the connection's app name (eg. `/google-mail/...`). This prefix tells the gateway which app connection to use. For example, the native Gmail API path starts with `gmail/v1/`, so full paths look like `/google-mail/gmail/v1/users/me/messages`. ## Authentication All requests require the Maton API key in the Authorization header: ``` Authorization: Bearer $MATON_API_KEY ``` The API gateway automatically injects the appropriate OAuth token for the target service. **Environment Variable:** You can set your API key as the `MATON_API_KEY` environment variable: ```bash export MATON_API_KEY="YOUR_API_KEY" ``` ## Getting Your API Key 1. Sign in or create an account at [maton.ai](https://maton.ai) 2. Go to [maton.ai/settings](https://maton.ai/settings) 3. Click the copy button on the right side of API Key section to copy it ## Connection Management Connection management uses a separate base URL: `https://ctrl.maton.ai` ### List Connections ```bash python <<'EOF' import urllib.request, os, json req = urllib.request.Request('https://ctrl.maton.ai/connections?app=slack&status=ACTIVE') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ``` **Query Parameters (optional):** - `app` - Filter by service name (e.g., `slack`, `hubspot`, `salesforce`) - `status` - Filter by connection status (`ACTIVE`, `PENDING`, `FAILED`) **Response:** ```json { "connections": [ { "connection_id": "21fd90f9-5935-43cd-b6c8-bde9d915ca80", "status": "ACTIVE", "creation_time": "2025-12-08T07:20:53.488460Z", "last_updated_time": "2026-01-31T20:03:32.593153Z", "url": "https://connect.maton.ai/?session_token=5e9...", "app": "slack", "method": "OAUTH2", "metadata": {} } ] } ``` ### Create Connection ```bash python <<'EOF' import urllib.request, os, json data = json.dumps({'app': 'slack'}).encode() req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') req.add_header('Content-Type', 'application/json') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ``` **Request Body:** - `app` (required) - Service name (e.g., `slack`, `notion`) - `method` (optional) - Connection method (`API_KEY`, `BASIC`, `OAUTH1`, `OAUTH2`, `MCP`) ### Get Connection ```bash python <<'EOF' import urllib.request, os, json req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ``` **Response:** ```json { "connection": { "connection_id": "21fd90f9-5935-43cd-b6c8-bde9d915ca80", "status": "ACTIVE", "creation_time": "2025-12-08T07:20:53.488460Z", "last_updated_time": "2026-01-31T20:03:32.593153Z", "url": "https://connect.maton.ai/?session_token=5e9...", "app": "slack", "metadata": {} } } ``` Open the returned URL in a browser to complete OAuth. ### Delete Connection ```bash python <<'EOF' import urllib.request, os, json req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ``` ### Specifying Connection If you have multiple connections for the same app, you can specify which connection to use by adding the `Maton-Connection` header with the connection ID: ```bash python <<'EOF' import urllib.request, os, json data = json.dumps({'channel': 'C0123456', 'text': 'Hello!'}).encode() req = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') req.add_header('Content-Type', 'application/json') req.add_header('Maton-Connection', '21fd90f9-5935-43cd-b6c8-bde9d915ca80') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ``` If omitted, the gateway uses the default (oldest) active connection for that app. ## Supported Services | Service | App Name | Base URL Proxied | |---------|----------|------------------| | ActiveCampaign | `active-campaign` | `{account}.api-us1.com` | | Acuity Scheduling | `acuity-scheduling` | `acuityscheduling.com` | | Airtable | `airtable` | `api.airtable.com` | | Apollo | `apollo` | `api.apollo.io` | | Asana | `asana` | `app.asana.com` | | Attio | `attio` | `api.attio.com` | | Basecamp | `basecamp` | `3.basecampapi.com` | | Baserow | `baserow` | `api.baserow.io` | | beehiiv | `beehiiv` | `api.beehiiv.com` | | Box | `box` | `api.box.com` | | Brevo | `brevo` | `api.brevo.com` | | Calendly | `calendly` | `api.calendly.com` | | Cal.com | `cal-com` | `api.cal.com` | | CallRail | `callrail` | `api.callrail.com` | | Chargebee | `chargebee` | `{subdomain}.chargebee.com` | | ClickFunnels | `clickfunnels` | `{subdomain}.myclickfunnels.com` | | ClickSend | `clicksend` | `rest.clicksend.com` | | ClickUp | `clickup` | `api.clickup.com` | | Clockify | `clockify` | `api.clockify.me` | | Coda | `coda` | `coda.io` | | Confluence | `confluence` | `api.atlassian.com` | | CompanyCam | `companycam` | `api.companycam.com` | | Cognito Forms | `cognito-forms` | `www.cognitoforms.com` | | Constant Contact | `constant-contact` | `api.cc.email` | | Dropbox | `dropbox` | `api.dropboxapi.com` | | Dropbox Business | `dropbox-business` | `api.dropboxapi.com` | | ElevenLabs | `elevenlabs` | `api.elevenlabs.io` | | Eventbrite | `eventbrite` | `www.eventbriteapi.com` | | Exa | `exa` | `api.exa.ai` | | Fathom | `fathom` | `api.fathom.ai` | | Firebase | `firebase` | `firebase.googleapis.com` | | Fireflies | `fireflies` | `api.fireflies.ai` | | GetResponse | `getresponse` | `api.getresponse.com` | | Grafana | `grafana` | User's Grafana instance | | GitHub | `github` | `api.github.com` | | Gumroad | `gumroad` | `api.gumroad.com` | | Granola MCP | `granola` | `mcp.granola.ai` | | Google Ads | `google-ads` | `googleads.googleapis.com` | | Google BigQuery | `google-bigquery` | `bigquery.googleapis.com` | | Google Analytics Admin | `google-analytics-admin` | `analyticsadmin.googleapis.com` | | Google Analytics Data | `google-analytics-data` | `analyticsdata.googleapis.com` | | Google Calendar | `google-calendar` | `www.googleapis.com` | | Google Classroom | `google-classroom` | `classroom.googleapis.com` | | Google Contacts | `google-contacts` | `people.googleapis.com` | | Google Docs | `google-docs` | `docs.googleapis.com` | | Google Drive | `google-drive` | `www.googleapis.com` | | Google Forms | `google-forms` | `forms.googleapis.com` | | Gmail | `google-mail` | `gmail.googleapis.com` | | Google Merchant | `google-merchant` | `merchantapi.googleapis.com` | | Google Meet | `google-meet` | `meet.googleapis.com` | | Google Play | `google-play` | `androidpublisher.googleapis.com` | | Google Search Console | `google-search-console` | `www.googleapis.com` | | Google Sheets | `google-sheets` | `sheets.googleapis.com` | | Google Slides | `google-slides` | `slides.googleapis.com` | | Google Tasks | `google-tasks` | `tasks.googleapis.com` | | Google Workspace Admin | `google-workspace-admin` | `admin.googleapis.com` | | HubSpot | `hubspot` | `api.hubapi.com` | | Instantly | `instantly` | `api.instantly.ai` | | Jira | `jira` | `api.atlassian.com` | | Jobber | `jobber` | `api.getjobber.com` | | JotForm | `jotform` | `api.jotform.com` | | Kaggle | `kaggle` | `api.kaggle.com` | | Keap | `keap` | `api.infusionsoft.com` | | Kibana | `kibana` | User's Kibana instance | | Kit | `kit` | `api.kit.com` | | Klaviyo | `klaviyo` | `a.klaviyo.com` | | Lemlist | `lemlist` | `api.lemlist.com` | | Linear | `linear` | `api.linear.app` | | LinkedIn | `linkedin` | `api.linkedin.com` | | Mailchimp | `mailchimp` | `{dc}.api.mailchimp.com` | | MailerLite | `mailerlite` | `connect.mailerlite.com` | | Mailgun | `mailgun` | `api.mailgun.net` | | ManyChat | `manychat` | `api.manychat.com` | | Manus | `manus` | `api.manus.ai` | | Microsoft Excel | `microsoft-excel` | `graph.microsoft.com` | | Microsoft Teams | `microsoft-teams` | `graph.microsoft.com` | | Microsoft To Do | `microsoft-to-do` | `graph.microsoft.com` | | Monday.com | `monday` | `api.monday.com` | | Motion | `motion` | `api.usemotion.com` | | Netlify | `netlify` | `api.netlify.com` | | Notion | `notion` | `api.notion.com` | | Notion MCP | `notion` | `mcp.notion.com` | | OneDrive | `one-drive` | `graph.microsoft.com` | | Outlook | `outlook` | `graph.microsoft.com` | | PDF.co | `pdf-co` | `api.pdf.co` | | Pipedrive | `pipedrive` | `api.pipedrive.com` | | Podio | `podio` | `api.podio.com` | | PostHog | `posthog` | `{subdomain}.posthog.com` | | QuickBooks | `quickbooks` | `quickbooks.api.intuit.com` | | Quo | `quo` | `api.openphone.com` | | Reducto | `reducto` | `platform.reducto.ai` | | Salesforce | `salesforce` | `{instance}.salesforce.com` | | Sentry | `sentry` | `{subdomain}.sentry.io` | | SharePoint | `sharepoint` | `graph.microsoft.com` | | SignNow | `signnow` | `api.signnow.com` | | Slack | `slack` | `slack.com` | | Snapchat | `snapchat` | `adsapi.snapchat.com` | | Square | `squareup` | `connect.squareup.com` | | Squarespace | `squarespace` | `api.squarespace.com` | | Sunsama MCP | `sunsama` | MCP server | | Stripe | `stripe` | `api.stripe.com` | | Systeme.io | `systeme` | `api.systeme.io` | | Tally | `tally` | `api.tally.so` | | Tavily | `tavily` | `api.tavily.com` | | Telegram | `telegram` | `api.telegram.org` | | TickTick | `ticktick` | `api.ticktick.com` | | Todoist | `todoist` | `api.todoist.com` | | Toggl Track | `toggl-track` | `api.track.toggl.com` | | Trello | `trello` | `api.trello.com` | | Twilio | `twilio` | `api.twilio.com` | | Typeform | `typeform` | `api.typeform.com` | | Unbounce | `unbounce` | `api.unbounce.com` | | Vimeo | `vimeo` | `api.vimeo.com` | | WhatsApp Business | `whatsapp-business` | `graph.facebook.com` | | WooCommerce | `woocommerce` | `{store-url}/wp-json/wc/v3` | | WordPress.com | `wordpress` | `public-api.wordpress.com` | | Xero | `xero` | `api.xero.com` | | YouTube | `youtube` | `www.googleapis.com` | | Zoho Bigin | `zoho-bigin` | `www.zohoapis.com` | | Zoho Bookings | `zoho-bookings` | `www.zohoapis.com` | | Zoho Books | `zoho-books` | `www.zohoapis.com` | | Zoho Calendar | `zoho-calendar` | `calendar.zoho.com` | | Zoho CRM | `zoho-crm` | `www.zohoapis.com` | | Zoho Inventory | `zoho-inventory` | `www.zohoapis.com` | | Zoho Mail | `zoho-mail` | `mail.zoho.com` | | Zoho People | `zoho-people` | `people.zoho.com` | | Zoho Projects | `zoho-projects` | `projectsapi.zoho.com` | | Zoho Recruit | `zoho-recruit` | `recruit.zoho.com` | See [references/](references/) for detailed routing guides per provider: - [ActiveCampaign](references/active-campaign/README.md) - Contacts, deals, tags, lists, automations, campaigns - [Acuity Scheduling](references/acuity-scheduling/README.md) - Appointments, calendars, clients, availability - [Airtable](references/airtable/README.md) - Records, bases, tables - [Apollo](references/apollo/README.md) - People search, enrichment, contacts - [Asana](references/asana/README.md) - Tasks, projects, workspaces, webhooks - [Attio](references/attio/README.md) - People, companies, records, tasks - [Basecamp](references/basecamp/README.md) - Projects, to-dos, messages, schedules, documents - [Baserow](references/baserow/README.md) - Database rows, fields, tables, batch operations - [beehiiv](references/beehiiv/README.md) - Publications, subscriptions, posts, custom fields - [Box](references/box/README.md) - Files, folders, collaborations, shared links - [Brevo](references/brevo/README.md) - Contacts, email campaigns, transactional emails, templates - [Calendly](references/calendly/README.md) - Event types, scheduled events, availability, webhooks - [Cal.com](references/cal-com/README.md) - Event types, bookings, schedules, availability slots, webhooks - [CallRail](references/callrail/README.md) - Calls, trackers, companies, tags, analytics - [Chargebee](references/chargebee/README.md) - Subscriptions, customers, invoices - [ClickFunnels](references/clickfunnels/README.md) - Contacts, products, orders, courses, webhooks - [ClickSend](references/clicksend/README.md) - SMS, MMS, voice messages, contacts, lists - [ClickUp](references/clickup/README.md) - Tasks, lists, folders, spaces, webhooks - [Clockify](references/clockify/README.md) - Time tracking, projects, clients, tasks, workspaces - [Coda](references/coda/README.md) - Docs, pages, tables, rows, formulas, controls - [Confluence](references/confluence/README.md) - Pages, spaces, blogposts, comments, attachments - [CompanyCam](references/companycam/README.md) - Projects, photos, users, tags, groups, documents - [Cognito Forms](references/cognito-forms/README.md) - Forms, entries, documents, files - [Constant Contact](references/constant-contact/README.md) - Contacts, email campaigns, lists, segments - [Dropbox](references/dropbox/README.md) - Files, folders, search, metadata, revisions, tags - [Dropbox Business](references/dropbox-business/README.md) - Team members, groups, team folders, devices, audit logs - [ElevenLabs](references/elevenlabs/README.md) - Text-to-speech, voice cloning, sound effects, audio processing - [Eventbrite](references/eventbrite/README.md) - Events, venues, tickets, orders, attendees - [Exa](references/exa/README.md) - Neural web search, content extraction, similar pages, AI answers, research tasks - [Fathom](references/fathom/README.md) - Meeting recordings, transcripts, summaries, webhooks - [Firebase](references/firebase/README.md) - Projects, web apps, Android apps, iOS apps, configurations - [Fireflies](references/fireflies/README.md) - Meeting transcripts, summaries, AskFred AI, channels - [GetResponse](references/getresponse/README.md) - Campaigns, contacts, newsletters, autoresponders, tags, segments - [Grafana](references/grafana/README.md) - Dashboards, data sources, folders, annotations, alerts, teams - [GitHub](references/github/README.md) - Repositories, issues, pull requests, commits - [Gumroad](references/gumroad/README.md) - Products, sales, subscribers, licenses, webhooks - [Granola MCP](references/granola-mcp/README.md) - MCP-based interface for meeting notes, transcripts, queries - [Google Ads](references/google-ads/README.md) - Campaigns, ad groups, GAQL queries - [Google Analytics Admin](references/google-analytics-admin/README.md) - Reports, dimensions, metrics - [Google Analytics Data](references/google-analytics-data/README.md) - Reports, dimensions, metrics - [Google BigQuery](references/google-bigquery/README.md) - Datasets, tables, jobs, SQL queries - [Google Calendar](references/google-calendar/README.md) - Events, calendars, free/busy - [Google Classroom](references/google-classroom/README.md) - Courses, coursework, students, teachers, announcements - [Google Contacts](references/google-contacts/README.md) - Contacts, contact groups, people search - [Google Docs](references/google-docs/README.md) - Document creation, batch updates - [Google Drive](references/google-drive/README.md) - Files, folders, permissions - [Google Forms](references/google-forms/README.md) - Forms, questions, responses - [Gmail](references/google-mail/README.md) - Messages, threads, labels - [Google Meet](references/google-meet/README.md) - Spaces, conference records, participants - [Google Merchant](references/google-merchant/README.md) - Products, inventories, promotions, reports - [Google Play](references/google-play/README.md) - In-app products, subscriptions, reviews - [Google Search Console](references/google-search-console/README.md) - Search analytics, sitemaps - [Google Sheets](references/google-sheets/README.md) - Values, ranges, formatting - [Google Slides](references/google-slides/README.md) - Presentations, slides, formatting - [Google Tasks](references/google-tasks/README.md) - Task lists, tasks, subtasks - [Google Workspace Admin](references/google-workspace-admin/README.md) - Users, groups, org units, domains, roles - [HubSpot](references/hubspot/README.md) - Contacts, companies, deals - [Instantly](references/instantly/README.md) - Campaigns, leads, accounts, email outreach - [Jira](references/jira/README.md) - Issues, projects, JQL queries - [Jobber](references/jobber/README.md) - Clients, jobs, invoices, quotes (GraphQL) - [JotForm](references/jotform/README.md) - Forms, submissions, webhooks - [Kaggle](references/kaggle/README.md) - Datasets, models, competitions, kernels - [Keap](references/keap/README.md) - Contacts, companies, tags, tasks, opportunities, campaigns - [Kibana](references/kibana/README.md) - Saved objects, dashboards, data views, spaces, alerts, fleet - [Kit](references/kit/README.md) - Subscribers, tags, forms, sequences, broadcasts - [Klaviyo](references/klaviyo/README.md) - Profiles, lists, campaigns, flows, events - [Lemlist](references/lemlist/README.md) - Campaigns, leads, activities, schedules, unsubscribes - [Linear](references/linear/README.md) - Issues, projects, teams, cycles (GraphQL) - [LinkedIn](references/linkedin/README.md) - Profile, posts, shares, media uploads - [Mailchimp](references/mailchimp/README.md) - Audiences, campaigns, templates, automations - [MailerLite](references/mailerlite/README.md) - Subscribers, groups, campaigns, automations, forms - [Mailgun](references/mailgun/README.md) - Email sending, domains, routes, templates, mailing lists, suppressions - [ManyChat](references/manychat/README.md) - Subscribers, tags, flows, messaging - [Manus](references/manus/README.md) - AI agent tasks, projects, files, webhooks - [Microsoft Excel](references/microsoft-excel/README.md) - Workbooks, worksheets, ranges, tables, charts - [Microsoft Teams](references/microsoft-teams/README.md) - Teams, channels, messages, members, chats - [Microsoft To Do](references/microsoft-to-do/README.md) - Task lists, tasks, checklist items, linked resources - [Monday.com](references/monday/README.md) - Boards, items, columns, groups (GraphQL) - [Motion](references/motion/README.md) - Tasks, projects, workspaces, schedules - [Netlify](references/netlify/README.md) - Sites, deploys, builds, DNS, environment variables - [Notion](references/notion/README.md) - Pages, databases, blocks - [Notion MCP](references/notion-mcp/README.md) - MCP-based interface for pages, databases, comments, teams, users - [OneDrive](references/one-drive/README.md) - Files, folders, drives, sharing - [Outlook](references/outlook/README.md) - Mail, calendar, contacts - [PDF.co](references/pdf-co/README.md) - PDF conversion, merge, split, edit, text extraction, barcodes - [Pipedrive](references/pipedrive/README.md) - Deals, persons, organizations, activities - [Podio](references/podio/README.md) - Organizations, workspaces, apps, items, tasks, comments - [PostHog](references/posthog/README.md) - Product analytics, feature flags, session recordings, experiments, HogQL queries - [QuickBooks](references/quickbooks/README.md) - Customers, invoices, reports - [Quo](references/quo/README.md) - Calls, messages, contacts, conversations, webhooks - [Reducto](references/reducto/README.md) - Document parsing, extraction, splitting, editing - [Salesforce](references/salesforce/README.md) - SOQL, sObjects, CRUD - [SignNow](references/signnow/README.md) - Documents, templates, invites, e-signatures - [SendGrid](references/sendgrid/README.md) - Email sending, contacts, templates, suppressions, statistics - [Sentry](references/sentry/README.md) - Issues, events, projects, teams, releases - [SharePoint](references/sharepoint/README.md) - Sites, lists, document libraries, files, folders, versions - [Slack](references/slack/README.md) - Messages, channels, users - [Snapchat](references/snapchat/README.md) - Ad accounts, campaigns, ad squads, ads, creatives, audiences - [Square](references/squareup/README.md) - Payments, customers, orders, catalog, inventory, invoices - [Squarespace](references/squarespace/README.md) - Products, inventory, orders, profiles, transactions - [Sunsama MCP](references/sunsama-mcp/README.md) - MCP-based interface for tasks, calendar, backlog, objectives, time tracking - [Stripe](references/stripe/README.md) - Customers, subscriptions, payments - [Systeme.io](references/systeme/README.md) - Contacts, tags, courses, communities, webhooks - [Tally](references/tally/README.md) - Forms, submissions, workspaces, webhooks - [Tavily](references/tavily/README.md) - AI web search, content extraction, crawling, research tasks - [Telegram](references/telegram/README.md) - Messages, chats, bots, updates, polls - [TickTick](references/ticktick/README.md) - Tasks, projects, task lists - [Todoist](references/todoist/README.md) - Tasks, projects, sections, labels, comments - [Toggl Track](references/toggl-track/README.md) - Time entries, projects, clients, tags, workspaces - [Trello](references/trello/README.md) - Boards, lists, cards, checklists - [Twilio](references/twilio/README.md) - SMS, voice calls, phone numbers, messaging - [Typeform](references/typeform/README.md) - Forms, responses, insights - [Unbounce](references/unbounce/README.md) - Landing pages, leads, accounts, sub-accounts, domains - [Vimeo](references/vimeo/README.md) - Videos, folders, albums, comments, likes - [WhatsApp Business](references/whatsapp-business/README.md) - Messages, templates, media - [WooCommerce](references/woocommerce/README.md) - Products, orders, customers, coupons - [WordPress.com](references/wordpress/README.md) - Posts, pages, sites, users, settings - [Xero](references/xero/README.md) - Contacts, invoices, reports - [YouTube](references/youtube/README.md) - Videos, playlists, channels, subscriptions - [Zoho Bigin](references/zoho-bigin/README.md) - Contacts, companies, pipelines, products - [Zoho Bookings](references/zoho-bookings/README.md) - Appointments, services, staff, workspaces - [Zoho Books](references/zoho-books/README.md) - Invoices, contacts, bills, expenses - [Zoho Calendar](references/zoho-calendar/README.md) - Calendars, events, attendees, reminders - [Zoho CRM](references/zoho-crm/README.md) - Leads, contacts, accounts, deals, search - [Zoho Inventory](references/zoho-inventory/README.md) - Items, sales orders, invoices, purchase orders, bills - [Zoho Mail](references/zoho-mail/README.md) - Messages, folders, labels, attachments - [Zoho People](references/zoho-people/README.md) - Employees, departments, designations, attendance, leave - [Zoho Projects](references/zoho-projects/README.md) - Projects, tasks, milestones, tasklists, comments - [Zoho Recruit](references/zoho-recruit/README.md) - Candidates, job openings, interviews, applications ## Examples ### Slack - Post Message (Native API) ```bash # Native Slack API: POST https://slack.com/api/chat.postMessage python <<'EOF' import urllib.request, os, json data = json.dumps({'channel': 'C0123456', 'text': 'Hello!'}).encode() req = urllib.request.Request('https://gateway.maton.ai/slack/api/chat.postMessage', data=data, method='POST') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') req.add_header('Content-Type', 'application/json; charset=utf-8') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ``` ### HubSpot - Create Contact (Native API) ```bash # Native HubSpot API: POST https://api.hubapi.com/crm/v3/objects/contacts python <<'EOF' import urllib.request, os, json data = json.dumps({'properties': {'email': 'john@example.com', 'firstname': 'John', 'lastname': 'Doe'}}).encode() req = urllib.request.Request('https://gateway.maton.ai/hubspot/crm/v3/objects/contacts', data=data, method='POST') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') req.add_header('Content-Type', 'application/json') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ``` ### Google Sheets - Get Spreadsheet Values (Native API) ```bash # Native Sheets API: GET https://sheets.googleapis.com/v4/spreadsheets/{id}/values/{range} python <<'EOF' import urllib.request, os, json req = urllib.request.Request('https://gateway.maton.ai/google-sheets/v4/spreadsheets/122BS1sFN2RKL8AOUQjkLdubzOwgqzPT64KfZ2rvYI4M/values/Sheet1!A1:B2') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ``` ### Salesforce - SOQL Query (Native API) ```bash # Native Salesforce API: GET https://{instance}.salesforce.com/services/data/v64.0/query?q=... python <<'EOF' import urllib.request, os, json req = urllib.request.Request('https://gateway.maton.ai/salesforce/services/data/v64.0/query?q=SELECT+Id,Name+FROM+Contact+LIMIT+10') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ``` ### Airtable - List Tables (Native API) ```bash # Native Airtable API: GET https://api.airtable.com/v0/meta/bases/{id}/tables python <<'EOF' import urllib.request, os, json req = urllib.request.Request('https://gateway.maton.ai/airtable/v0/meta/bases/appgqan2NzWGP5sBK/tables') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ``` ### Notion - Query Database (Native API) ```bash # Native Notion API: POST https://api.notion.com/v1/data_sources/{id}/query python <<'EOF' import urllib.request, os, json data = json.dumps({}).encode() req = urllib.request.Request('https://gateway.maton.ai/notion/v1/data_sources/23702dc5-9a3b-8001-9e1c-000b5af0a980/query', data=data, method='POST') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') req.add_header('Content-Type', 'application/json') req.add_header('Notion-Version', '2025-09-03') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ``` ### Stripe - List Customers (Native API) ```bash # Native Stripe API: GET https://api.stripe.com/v1/customers python <<'EOF' import urllib.request, os, json req = urllib.request.Request('https://gateway.maton.ai/stripe/v1/customers?limit=10') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ``` ## Code Examples ### JavaScript (Node.js) ```javascript const response = await fetch('https://gateway.maton.ai/slack/api/chat.postMessage', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${process.env.MATON_API_KEY}` }, body: JSON.stringify({ channel: 'C0123456', text: 'Hello!' }) }); ``` ### Python ```python import os import requests response = requests.post( 'https://gateway.maton.ai/slack/api/chat.postMessage', headers={'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'}, json={'channel': 'C0123456', 'text': 'Hello!'} ) ``` ## Error Handling | Status | Meaning | |--------|---------| | 400 | Missing connection for the requested app | | 401 | Invalid or missing Maton API key | | 429 | Rate limited (10 requests/second per account) | | 500 | Internal Server Error | | 4xx/5xx | Passthrough error from the target API | Errors from the target API are passed through with their original status codes and response bodies. ### Troubleshooting: API Key Issues 1. Check that the `MATON_API_KEY` environment variable is set: ```bash echo $MATON_API_KEY ``` 2. Verify the API key is valid by listing connections: ```bash python <<'EOF' import urllib.request, os, json req = urllib.request.Request('https://ctrl.maton.ai/connections') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ``` ### Troubleshooting: Invalid App Name 1. Verify your URL path starts with the correct app name. The path must begin with `/google-mail/`. For example: - Correct: `https://gateway.maton.ai/google-mail/gmail/v1/users/me/messages` - Incorrect: `https://gateway.maton.ai/gmail/v1/users/me/messages` 2. Ensure you have an active connection for the app. List your connections to verify: ```bash python <<'EOF' import urllib.request, os, json req = urllib.request.Request('https://ctrl.maton.ai/connections?app=google-mail&status=ACTIVE') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ``` ### Troubleshooting: Server Error A 500 error may indicate an expired OAuth token. Try creating a new connection via the Connection Management section above and completing OAuth authorization. If the new connection is "ACTIVE", delete the old connection to ensure the gateway uses the new one. ## Rate Limits - 10 requests per second per account - Target API rate limits also apply ## Notes - When using curl with URLs containing brackets (`fields[]`, `sort[]`, `records[]`), use the `-g` flag to disable glob parsing - When piping curl output to `jq`, environment variables may not expand correctly in some shells, which can cause "Invalid API key" errors ## Tips 1. **Use native API docs**: Refer to each service's official API documentation for endpoint paths and parameters. 2. **Headers are forwarded**: Custom headers (except `Host` and `Authorization`) are forwarded to the target API. 3. **Query params work**: URL query parameters are passed through to the target API. 4. **All HTTP methods supported**: GET, POST, PUT, PATCH, DELETE are all supported. 5. **QuickBooks special case**: Use `:realmId` in the path and it will be replaced with the connected realm ID. ## Optional - [Github](https://github.com/maton-ai/api-gateway-skill) - [API Reference](https://www.maton.ai/docs/api-reference) - [Maton Community](https://discord.com/invite/dBfFAcefs2) - [Maton Support](mailto:support@maton.ai) -
_meta.json 131 B
{ "ownerId": "kn75240wq8bnv2qm2xgry748jd80b9r0", "slug": "api-gateway", "version": "1.0.62", "publishedAt": 1773006198444 }
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.