AI Newsletter Digest improvements: fixed QP soft line break decoding, URL extraction, and content cleaning

This commit is contained in:
Krilly
2026-03-04 13:29:22 +00:00
parent 29a98137a7
commit 57dd294675
13706 changed files with 2114953 additions and 237629 deletions
+2 -2
View File
@@ -2,6 +2,6 @@
"version": 1,
"registry": "https://clawhub.ai",
"slug": "api-gateway",
"installedVersion": "1.0.35",
"installedAt": 1771418208448
"installedVersion": "1.0.51",
"installedAt": 1772222728871
}
+14 -4
View File
@@ -1,10 +1,10 @@
---
name: api-gateway
description: |
API gateway for calling third-party APIs with managed OAuth connections, provided by Maton (https://maton.ai).
Use this skill when users want to interact with external services like Slack, HubSpot, Salesforce, Google Workspace, Stripe, and more.
Access is scoped to connections you explicitly authorize via OAuth - the API key alone does not grant access to any third-party service.
Requires network access and valid Maton API key.
Connect to 100+ APIs (Google Workspace, Microsoft 365, 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"
@@ -210,6 +210,7 @@ If omitted, the gateway uses the default (oldest) active connection for that app
| GetResponse | `getresponse` | `api.getresponse.com` |
| GitHub | `github` | `api.github.com` |
| Gumroad | `gumroad` | `api.gumroad.com` |
| Granola | `granola` | `mcp.granola.ai` (MCP) |
| Google Ads | `google-ads` | `googleads.googleapis.com` |
| Google BigQuery | `google-bigquery` | `bigquery.googleapis.com` |
| Google Analytics Admin | `google-analytics-admin` | `analyticsadmin.googleapis.com` |
@@ -245,6 +246,7 @@ If omitted, the gateway uses the default (oldest) active connection for that app
| Mailgun | `mailgun` | `api.mailgun.net` |
| ManyChat | `manychat` | `api.manychat.com` |
| 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` |
@@ -255,13 +257,16 @@ If omitted, the gateway uses the default (oldest) active connection for that app
| 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` |
| Salesforce | `salesforce` | `{instance}.salesforce.com` |
| Sentry | `sentry` | `{subdomain}.sentry.io` |
| SignNow | `signnow` | `api.signnow.com` |
| Slack | `slack` | `slack.com` |
| Snapchat | `snapchat` | `adsapi.snapchat.com` |
| Square | `squareup` | `connect.squareup.com` |
| Squarespace | `squarespace` | `api.squarespace.com` |
| Stripe | `stripe` | `api.stripe.com` |
| Systeme.io | `systeme` | `api.systeme.io` |
| Tally | `tally` | `api.tally.so` |
@@ -322,6 +327,7 @@ See [references/](references/) for detailed routing guides per provider:
- [GetResponse](references/getresponse.md) - Campaigns, contacts, newsletters, autoresponders, tags, segments
- [GitHub](references/github.md) - Repositories, issues, pull requests, commits
- [Gumroad](references/gumroad.md) - Products, sales, subscribers, licenses, webhooks
- [Granola](references/granola.md) - Meeting notes, transcripts, queries (MCP)
- [Google Ads](references/google-ads.md) - Campaigns, ad groups, GAQL queries
- [Google Analytics Admin](references/google-analytics-admin.md) - Reports, dimensions, metrics
- [Google Analytics Data](references/google-analytics-data.md) - Reports, dimensions, metrics
@@ -357,6 +363,7 @@ See [references/](references/) for detailed routing guides per provider:
- [Mailgun](references/mailgun.md) - Email sending, domains, routes, templates, mailing lists, suppressions
- [ManyChat](references/manychat.md) - Subscribers, tags, flows, messaging
- [Microsoft Excel](references/microsoft-excel.md) - Workbooks, worksheets, ranges, tables, charts
- [Microsoft Teams](references/microsoft-teams.md) - Teams, channels, messages, members, chats
- [Microsoft To Do](references/microsoft-to-do.md) - Task lists, tasks, checklist items, linked resources
- [Monday.com](references/monday.md) - Boards, items, columns, groups (GraphQL)
- [Motion](references/motion.md) - Tasks, projects, workspaces, schedules
@@ -367,14 +374,17 @@ See [references/](references/) for detailed routing guides per provider:
- [PDF.co](references/pdf-co.md) - PDF conversion, merge, split, edit, text extraction, barcodes
- [Pipedrive](references/pipedrive.md) - Deals, persons, organizations, activities
- [Podio](references/podio.md) - Organizations, workspaces, apps, items, tasks, comments
- [PostHog](references/posthog.md) - Product analytics, feature flags, session recordings, experiments, HogQL queries
- [QuickBooks](references/quickbooks.md) - Customers, invoices, reports
- [Quo](references/quo.md) - Calls, messages, contacts, conversations, webhooks
- [Salesforce](references/salesforce.md) - SOQL, sObjects, CRUD
- [SignNow](references/signnow.md) - Documents, templates, invites, e-signatures
- [SendGrid](references/sendgrid.md) - Email sending, contacts, templates, suppressions, statistics
- [Sentry](references/sentry.md) - Issues, events, projects, teams, releases
- [Slack](references/slack.md) - Messages, channels, users
- [Snapchat](references/snapchat.md) - Ad accounts, campaigns, ad squads, ads, creatives, audiences
- [Square](references/squareup.md) - Payments, customers, orders, catalog, inventory, invoices
- [Squarespace](references/squarespace.md) - Products, inventory, orders, profiles, transactions
- [Stripe](references/stripe.md) - Customers, subscriptions, payments
- [Systeme.io](references/systeme.md) - Contacts, tags, courses, communities, webhooks
- [Tally](references/tally.md) - Forms, submissions, workspaces, webhooks
+2 -2
View File
@@ -1,6 +1,6 @@
{
"ownerId": "kn75240wq8bnv2qm2xgry748jd80b9r0",
"slug": "api-gateway",
"version": "1.0.35",
"publishedAt": 1771398200201
"version": "1.0.51",
"publishedAt": 1772102946067
}
+172 -3
View File
@@ -90,6 +90,7 @@ Content-Type: application/json
"data": {
"content": "Task description",
"format": "plaintext",
"deadline_at": null,
"assignees": [],
"linked_records": []
}
@@ -106,14 +107,182 @@ GET /attio/v2/workspace_members
GET /attio/v2/self
```
## Notes
### 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` and `assignees` fields
- 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
- Pagination uses `limit` and `offset` parameters (or `cursor` for meetings)
## Resources
+444 -42
View File
@@ -11,11 +11,9 @@
**Note:** Dropbox Business API uses POST for almost all endpoints, including read operations. Request bodies should be JSON (use `null` for endpoints with no parameters).
## Common Endpoints
## Team Information
### Team Information
#### Get Team Info
### Get Team Info
```bash
POST /dropbox-business/2/team/get_info
Content-Type: application/json
@@ -23,39 +21,72 @@ Content-Type: application/json
null
```
#### Get Team Features
### Get Team Features
```bash
POST /dropbox-business/2/team/features/get_values
Content-Type: application/json
{
"features": [{".tag": "upload_api_rate_limit"}]
"features": [
{".tag": "upload_api_rate_limit"},
{".tag": "has_team_shared_dropbox"},
{".tag": "has_team_file_events"},
{".tag": "has_team_selective_sync"}
]
}
```
### Team Members
### Get Authenticated Admin
```bash
POST /dropbox-business/2/team/token/get_authenticated_admin
Content-Type: application/json
#### List Members
null
```
## Team Members
### List Members
```bash
POST /dropbox-business/2/team/members/list
Content-Type: application/json
{
"limit": 100
}
{"limit": 100}
```
#### Get Member Info
### 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"}]
}
{"members": [{".tag": "email", "email": "user@company.com"}]}
```
#### Add Member
### 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
@@ -64,24 +95,152 @@ Content-Type: application/json
"new_members": [{
"member_email": "user@company.com",
"member_given_name": "John",
"member_surname": "Doe"
"member_surname": "Doe",
"send_welcome_email": true
}]
}
```
### Groups
### Suspend Member
```bash
POST /dropbox-business/2/team/members/suspend
Content-Type: application/json
#### List Groups
{"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
### Create Group
```bash
POST /dropbox-business/2/team/groups/create
Content-Type: application/json
@@ -92,43 +251,136 @@ Content-Type: application/json
}
```
### Team Folders
### Update Group
```bash
POST /dropbox-business/2/team/groups/update
Content-Type: application/json
#### List Team Folders
{
"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
}
{"limit": 100}
```
#### Create Team Folder
### 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"
}
{"name": "Folder Name", "sync_setting": {".tag": "default"}}
```
### Namespaces
### Rename Team Folder
```bash
POST /dropbox-business/2/team/team_folder/rename
Content-Type: application/json
#### List Namespaces
{"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
}
{"limit": 100}
```
### Devices
## Devices
#### List Members' Devices
### List Members' Devices
```bash
POST /dropbox-business/2/team/devices/list_members_devices
Content-Type: application/json
@@ -136,16 +388,147 @@ Content-Type: application/json
{}
```
### Audit Log
### List Member Devices
```bash
POST /dropbox-business/2/team/devices/list_member_devices
Content-Type: application/json
#### Get Events
{"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
}
{"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
@@ -154,9 +537,28 @@ Content-Type: application/json
- Request bodies must be JSON (use `null` for no-parameter endpoints)
- Many fields use `.tag` format for type indication
- Pagination uses `cursor` and `has_more` fields
- Requires team admin OAuth authorization
- 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)
@@ -9,10 +9,80 @@
/google-merchant/{sub-api}/{version}/accounts/{accountId}/{resource}
```
The Merchant API uses sub-APIs: `products`, `accounts`, `datasources`, `reports`, `promotions`, `inventories`, `notifications`, `conversions`, `lfp`
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
@@ -34,7 +104,7 @@ Content-Type: application/json
"offerId": "sku123",
"contentLanguage": "en",
"feedLabel": "US",
"attributes": {
"productAttributes": {
"title": "Product Title",
"link": "https://example.com/product",
"imageLink": "https://example.com/image.jpg",
@@ -60,33 +130,47 @@ POST /google-merchant/reports/v1/accounts/{accountId}/reports:search
Content-Type: application/json
{
"query": "SELECT offer_id, title, clicks FROM product_performance_view WHERE date BETWEEN '2026-01-01' AND '2026-01-31'"
"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 of type `API`
- 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
+95
View File
@@ -0,0 +1,95 @@
# Granola Routing Reference
**App name:** `granola`
**Base URL proxied:** `mcp.granola.ai` (MCP Server)
## API Path Pattern
Granola uses the Model Context Protocol (MCP). All requests are POST requests to tool endpoints:
```
/granola/{tool_name}
```
## MCP Tools
### Query Meeting Notes
```bash
POST /granola/query_granola_meetings
Content-Type: application/json
{
"query": "What action items came from my last meeting?"
}
```
**Parameters:**
- `query` (string, required): Natural language query about meetings
### List Meetings
```bash
POST /granola/list_meetings
Content-Type: application/json
{}
```
**Parameters:** None required. Returns recent meetings with metadata.
### Get Meetings
```bash
POST /granola/get_meetings
Content-Type: application/json
{
"meeting_ids": ["0dba4400-50f1-4262-9ac7-89cd27b79371"]
}
```
**Parameters:**
- `meeting_ids` (array of strings, required): Meeting IDs to retrieve
### Get Meeting Transcript
```bash
POST /granola/get_meeting_transcript
Content-Type: application/json
{
"meeting_id": "0dba4400-50f1-4262-9ac7-89cd27b79371"
}
```
**Parameters:**
- `meeting_id` (string, required): Meeting ID to get transcript for
**Note:** Only available on paid Granola tiers.
## Response Format
All responses follow MCP format:
```json
{
"content": [
{
"type": "text",
"text": "Response content here..."
}
],
"isError": false
}
```
## Notes
- All tool calls are POST requests with JSON body
- Meeting IDs are UUIDs (e.g., `0dba4400-50f1-4262-9ac7-89cd27b79371`)
- Users can only access their own meeting notes
- Free tier users limited to notes from last 30 days
- Transcripts require paid Granola tier
- 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)
@@ -0,0 +1,306 @@
# 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)
+166
View File
@@ -0,0 +1,166 @@
# 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)
+155
View File
@@ -0,0 +1,155 @@
# 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/)
@@ -0,0 +1,325 @@
# 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)
+27 -27
View File
@@ -6,24 +6,24 @@
## API Path Pattern
```
/todoist/rest/v2/{resource}
/todoist/api/v1/{resource}
```
## Common Endpoints
### List Projects
```bash
GET /todoist/rest/v2/projects
GET /todoist/api/v1/projects
```
### Get Project
```bash
GET /todoist/rest/v2/projects/{id}
GET /todoist/api/v1/projects/{id}
```
### Create Project
```bash
POST /todoist/rest/v2/projects
POST /todoist/api/v1/projects
Content-Type: application/json
{
@@ -34,7 +34,7 @@ Content-Type: application/json
### Update Project
```bash
POST /todoist/rest/v2/projects/{id}
POST /todoist/api/v1/projects/{id}
Content-Type: application/json
{
@@ -44,24 +44,24 @@ Content-Type: application/json
### Delete Project
```bash
DELETE /todoist/rest/v2/projects/{id}
DELETE /todoist/api/v1/projects/{id}
```
### List Tasks
```bash
GET /todoist/rest/v2/tasks
GET /todoist/rest/v2/tasks?project_id={project_id}
GET /todoist/rest/v2/tasks?filter={filter}
GET /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/rest/v2/tasks/{id}
GET /todoist/api/v1/tasks/{id}
```
### Create Task
```bash
POST /todoist/rest/v2/tasks
POST /todoist/api/v1/tasks
Content-Type: application/json
{
@@ -73,7 +73,7 @@ Content-Type: application/json
### Update Task
```bash
POST /todoist/rest/v2/tasks/{id}
POST /todoist/api/v1/tasks/{id}
Content-Type: application/json
{
@@ -84,28 +84,28 @@ Content-Type: application/json
### Close Task (Complete)
```bash
POST /todoist/rest/v2/tasks/{id}/close
POST /todoist/api/v1/tasks/{id}/close
```
### Reopen Task
```bash
POST /todoist/rest/v2/tasks/{id}/reopen
POST /todoist/api/v1/tasks/{id}/reopen
```
### Delete Task
```bash
DELETE /todoist/rest/v2/tasks/{id}
DELETE /todoist/api/v1/tasks/{id}
```
### List Sections
```bash
GET /todoist/rest/v2/sections
GET /todoist/rest/v2/sections?project_id={project_id}
GET /todoist/api/v1/sections
GET /todoist/api/v1/sections?project_id={project_id}
```
### Create Section
```bash
POST /todoist/rest/v2/sections
POST /todoist/api/v1/sections
Content-Type: application/json
{
@@ -116,17 +116,17 @@ Content-Type: application/json
### Delete Section
```bash
DELETE /todoist/rest/v2/sections/{id}
DELETE /todoist/api/v1/sections/{id}
```
### List Labels
```bash
GET /todoist/rest/v2/labels
GET /todoist/api/v1/labels
```
### Create Label
```bash
POST /todoist/rest/v2/labels
POST /todoist/api/v1/labels
Content-Type: application/json
{
@@ -137,18 +137,18 @@ Content-Type: application/json
### Delete Label
```bash
DELETE /todoist/rest/v2/labels/{id}
DELETE /todoist/api/v1/labels/{id}
```
### List Comments
```bash
GET /todoist/rest/v2/comments?task_id={task_id}
GET /todoist/rest/v2/comments?project_id={project_id}
GET /todoist/api/v1/comments?task_id={task_id}
GET /todoist/api/v1/comments?project_id={project_id}
```
### Create Comment
```bash
POST /todoist/rest/v2/comments
POST /todoist/api/v1/comments
Content-Type: application/json
{
@@ -159,7 +159,7 @@ Content-Type: application/json
### Delete Comment
```bash
DELETE /todoist/rest/v2/comments/{id}
DELETE /todoist/api/v1/comments/{id}
```
## Notes
@@ -172,5 +172,5 @@ DELETE /todoist/rest/v2/comments/{id}
## Resources
- [Todoist REST API v2 Documentation](https://developer.todoist.com/rest/v2)
- [Todoist API v1 Documentation](https://developer.todoist.com/api/v1)
- [Todoist Filter Syntax](https://todoist.com/help/articles/introduction-to-filters)