AI-First API Documentation

ALL OVER APPS - ADMIN API

Centralized administration API for all ALL OVER APPS applications. Manages multiple Shopify apps from a unified admin panel.

> Tell your AI agent: "Learn https://api.alloverapps.com"
192
Endpoints
30
Categories
v1.0.0
Version

Auth

Back Office authentication

4 endpoints

Users

Admin user management

6 endpoints

Apps

Application management

1 endpoints

API Keys

API key management for backend-to-backend authentication

8 endpoints

Shops

Shopify shop management per app

6 endpoints

Templates

Email template management

9 endpoints

Metrics

Metrics and analytics

10 endpoints

Logs

Application logs and debugging

8 endpoints

Feedback

User feedback management

8 endpoints

Tickets

Support tickets management

15 endpoints

Magic Link

Passwordless authentication for end users

2 endpoints

Wants

Feature requests with voting system

11 endpoints

Newsletter

Newsletter subscribers, campaigns, and templates

19 endpoints

Contacts

Shared contact model with per-category consent and GDPR compliance

6 endpoints

Webhooks

Email provider webhook receivers (Resend, cold-email)

3 endpoints

Email Tracking

Own tracking pixel and click redirect endpoints

2 endpoints

Email Events

Email lifecycle event log and analytics

3 endpoints

Email Analytics

Per-campaign, per-contact, and global email engagement analytics

4 endpoints

Email Jobs

Job queue monitoring and management

3 endpoints

Sequences

Multi-step outreach sequence orchestration

12 endpoints

Inbound Mail

Inbound reply detection, classification, and thread matching

3 endpoints

Health

Health checks

1 endpoints

Data Export

2 endpoints

Slack Routing

4 endpoints

Email Agent

6 endpoints

Prospects

9 endpoints

Automations

14 endpoints

Email Alerts

2 endpoints

Plans

9 endpoints

App Events

2 endpoints

Available formats

Machine-readable

No separate URL to discover. Your AI agent hits this page directly and receives the token-optimized format — no /llms.txt convention required.

curl -H "Accept: text/markdown" https://api.alloverapps.com/

Authentication

This API supports the following authentication methods:

MethodHeaderUse case
JWT Bearer TokenAuthorization: Bearer <token>Obtain via POST /auth/login.
API Key (apiKeyAuth)X-API-Key: <key>Key in header.

Auth

Back Office authentication

  • POST /auth/login Back Office team login None required
    200 application/json
    {
      "success": true,
      "token": "string",
      "user": {
        "id": "string",
        "email": "string",
        "name": "string",
        "role": "admin"
      }
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /auth/refresh Refresh JWT token Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "token": "string",
      "user": {}
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /auth/hash-password [DEV] Generate password hash None required
    200 application/json
    {
      "hash": "string"
    }
  • GET /auth/me Current user information Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "user": {
        "id": "string",
        "email": "string",
        "name": "string",
        "role": "string"
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }

Users

Admin user management

  • GET /users/ List users Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": [
        {
          "_id": "string",
          "email": "string",
          "firstName": "string",
          "lastName": "string",
          "role": "string",
          "isActive": false,
          "profile": {
            "avatar": "string",
            "bio": "string",
            "phone": "string",
            "timezone": "string",
            "language": "string"
          },
          "settings": {
            "notifications": {
              "email": ...,
              "push": ...
            },
            "theme": "string",
            "defaultApp": "string"
          },
          "lastLoginAt": "string",
          "loginCount": 0,
          "createdAt": "string",
          "updatedAt": "string"
        }
      ]
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /users/ Create user Bearer Token (JWT)
    201 application/json
    {
      "success": true,
      "data": {},
      "message": "string"
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    409 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /users/{id} Get user by ID Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {}
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • PATCH /users/{id} Update user Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {},
      "message": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • DELETE /users/{id} Delete user Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "message": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • PATCH /users/{id}/password Update user password Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "message": "string"
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }

Apps

Application management

  • GET /apps List of available applications Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": [
        {
          "id": "banners-all-over",
          "name": "Banners All Over",
          "features": {
            "canEditTemplates": false,
            "canEditUsers": false,
            "canViewMetrics": false
          }
        }
      ]
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }

API Keys

API key management for backend-to-backend authentication

  • GET /api-keys/stats API key statistics Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {
        "total": 0,
        "active": 0,
        "inactive": 0,
        "expired": 0,
        "byApp": {}
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /api-keys/ List API keys Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": [
        {
          "_id": "string",
          "appId": "string",
          "name": "string",
          "description": "string",
          "allowedOrigins": ["string"],
          "isActive": false,
          "lastUsed": "string",
          "expiresAt": "string",
          "createdBy": "string",
          "createdAt": "string",
          "updatedAt": "string"
        }
      ],
      "pagination": {
        "page": 0,
        "limit": 0,
        "total": 0,
        "pages": 0
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /api-keys/ Create API key Bearer Token (JWT)
    201 application/json
    {
      "success": true,
      "data": {
        "_id": "string",
        "key": "string",
        "appId": "string",
        "name": "string",
        "description": "string",
        "allowedOrigins": ["string"],
        "isActive": false,
        "expiresAt": "string",
        "createdBy": "string",
        "createdAt": "string"
      },
      "message": "string"
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /api-keys/{keyId} Get API key Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {
        "_id": "string",
        "key": "string",
        "appId": "string",
        "name": "string",
        "description": "string",
        "allowedOrigins": ["string"],
        "isActive": false,
        "lastUsed": "string",
        "expiresAt": "string",
        "createdBy": "string",
        "createdAt": "string",
        "updatedAt": "string"
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • PATCH /api-keys/{keyId} Update API key Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {},
      "message": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • DELETE /api-keys/{keyId} Delete API key Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "message": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /api-keys/{keyId}/revoke Revoke API key Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {},
      "message": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /api-keys/{keyId}/regenerate Regenerate API key Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {
        "_id": "string",
        "key": "string",
        "appId": "string",
        "name": "string",
        "isActive": false,
        "createdAt": "string"
      },
      "message": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }

Shops

Shopify shop management per app

  • GET /{appId}/shops/stats Shop statistics Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {
        "total": 0,
        "active": 0,
        "inactive": 0,
        "byPlan": {}
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /{appId}/shops/domains List of shop domains Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": ["string"]
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /{appId}/shops/ List shops Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": [
        {}
      ],
      "pagination": {
        "page": 0,
        "limit": 0,
        "total": 0,
        "pages": 0
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /{appId}/shops/{shopId} Get shop by ID Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {}
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • PATCH /{appId}/shops/{shopId} Update shop Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {},
      "message": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • PATCH /{appId}/shops/{shopId}/status Change shop status Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {},
      "message": "string"
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }

Templates

Email template management

  • GET /{appId}/templates/categories Template languages Bearer Token (JWT)
    No response body
  • GET /{appId}/templates/ List templates Bearer Token (JWT)
    No response body
  • POST /{appId}/templates/ Create template Bearer Token (JWT)
    No response body
  • GET /{appId}/templates/{templateId} Get template by ID Bearer Token (JWT)
    No response body
  • PUT /{appId}/templates/{templateId} Update template (full) Bearer Token (JWT)
    No response body
  • PATCH /{appId}/templates/{templateId} Update template (partial) Bearer Token (JWT)
    No response body
  • DELETE /{appId}/templates/{templateId} Delete template Bearer Token (JWT)
    No response body
  • PATCH /{appId}/templates/{templateId}/toggle Toggle template active status Bearer Token (JWT)
    No response body
  • POST /{appId}/templates/{templateId}/duplicate Duplicate template Bearer Token (JWT)
    No response body

Metrics

Metrics and analytics

  • GET /metrics/aggregate/dashboard Aggregated dashboard from all apps Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {
        "aggregate": {
          "shops": {
            "total": 300,
            "active": 250,
            "inactive": 50,
            "newToday": 5,
            "newThisWeek": 42,
            "newThisMonth": 180,
            "byPlan": {}
          }
        },
        "byApp": [
          {}
        ]
      }
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /metrics/aggregate/shops-over-time Shops over time (all apps) Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {
        "aggregate": [
          {
            "date": "2024-01-15",
            "total": 25,
            "byApp": {}
          }
        ],
        "byApp": [
          {}
        ]
      }
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /metrics/aggregate/top-shops Top shops (all apps) Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {
        "aggregate": [
          {
            "shop": "my-store.myshopify.com",
            "name": "My Store",
            "domain": "mystore.com",
            "isActive": true,
            "lastLogin": "string",
            "apps": [
              ...
            ]
          }
        ],
        "byApp": [
          {}
        ]
      }
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /metrics/aggregate/activity Recent activity (all apps) Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": [
        {
          "type": "new_shop",
          "appId": "banners-all-over",
          "appName": "Banners All Over",
          "shop": {
            "name": "string",
            "email": "string",
            "domain": "string",
            "isActive": false
          },
          "timestamp": "string"
        }
      ]
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /metrics/aggregate/summary Quick summary (all apps) Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {
        "totals": {
          "totalShops": 300,
          "activeShops": 250,
          "inactiveShops": 50,
          "newToday": 5,
          "newThisWeek": 42,
          "newThisMonth": 180
        },
        "byApp": [
          {
            "appId": "string",
            "appName": "string",
            "totalShops": 0,
            "activeShops": 0,
            "inactiveShops": 0,
            "newToday": 0,
            "newThisWeek": 0,
            "newThisMonth": 0
          }
        ]
      }
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /{appId}/metrics/dashboard General dashboard Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {}
    }
  • GET /{appId}/metrics/shops-over-time Shops over time Bearer Token (JWT)
    No response body
  • GET /{appId}/metrics/top-shops Top shops Bearer Token (JWT)
    No response body
  • GET /{appId}/metrics/activity Recent activity Bearer Token (JWT)
    No response body
  • GET /{appId}/metrics/custom Custom metrics Bearer Token (JWT)
    No response body

Logs

Application logs and debugging

  • GET /{appId}/logs/stats Log statistics Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {
        "total": 0,
        "byLevel": {
          "debug": 0,
          "info": 0,
          "warn": 0,
          "error": 0
        },
        "topModules": [
          {
            "module": "string",
            "count": 0
          }
        ]
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /{appId}/logs/shop-domains List of shop domains Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": ["string"]
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /{appId}/logs/modules List of modules Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": ["string"]
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /{appId}/logs/over-time Logs over time Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": [
        {
          "date": "2024-01-15",
          "debug": 0,
          "info": 0,
          "warn": 0,
          "error": 0,
          "total": 0
        }
      ]
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /{appId}/logs/ List logs Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": [
        {
          "_id": "string",
          "shopDomain": "string",
          "module": "string",
          "level": "string",
          "message": "string",
          "data": {},
          "error": {
            "name": "string",
            "message": "string",
            "stack": "string",
            "type": "string",
            "isErrorInstance": false
          },
          "createdAtTimestamp": "string",
          "createdAt": "string"
        }
      ],
      "pagination": {
        "page": 0,
        "limit": 0,
        "total": 0,
        "pages": 0
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • DELETE /{appId}/logs/ Delete logs Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {
        "deletedCount": 0
      },
      "message": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /{appId}/logs/{logId} Get log by ID Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {}
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • DELETE /{appId}/logs/{logId} Delete log by ID Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "message": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }

Feedback

User feedback management

  • GET /feedback/ List all feedback Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": [
        {}
      ],
      "pagination": {
        "page": 0,
        "limit": 0,
        "total": 0,
        "pages": 0
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /feedback/{feedbackId} Get feedback by ID Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {}
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • PATCH /feedback/{feedbackId} Update feedback Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {},
      "message": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • DELETE /feedback/{feedbackId} Delete feedback Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "message": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • PATCH /feedback/{feedbackId}/status Update feedback status Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {},
      "message": "string"
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /{appId}/feedback/stats Feedback statistics Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {
        "total": 0,
        "byStatus": {},
        "byType": {},
        "byPriority": {},
        "byRating": {}
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /{appId}/feedback/ Create feedback Bearer Token (JWT)
    201 application/json
    {
      "success": true,
      "data": {},
      "message": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /{appId}/feedback/ List feedback Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": [
        {}
      ],
      "pagination": {
        "page": 0,
        "limit": 0,
        "total": 0,
        "pages": 0
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }

Tickets

Support tickets management

  • GET /tickets/ List all tickets Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": [
        {}
      ],
      "pagination": {
        "page": 0,
        "limit": 0,
        "total": 0,
        "pages": 0
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /tickets/{messageId} Get ticket by ID Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {}
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • PATCH /tickets/{messageId} Update ticket Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {},
      "message": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • DELETE /tickets/{messageId} Delete ticket Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "message": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • PATCH /tickets/{messageId}/status Update ticket status Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {},
      "message": "string"
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /{appId}/tickets/stats Ticket statistics Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {
        "total": 0,
        "byStatus": {},
        "byTopic": {},
        "byPriority": {},
        "recentActivity": [
          {
            "_id": "string",
            "subject": "string",
            "email": "string",
            "status": "string",
            "priority": "string",
            "createdAt": "string"
          }
        ],
        "volumeOverTime": [
          {
            "date": "string",
            "count": 0
          }
        ],
        "averageResolutionTime": 0
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /{appId}/tickets/ Create ticket with attachments Bearer Token (JWT)
    201 application/json
    {
      "success": true,
      "data": {
        "_id": "string",
        "appId": "string",
        "shopId": "string",
        "topic": "string",
        "email": "string",
        "subject": "string",
        "message": "string",
        "status": "string",
        "priority": "string",
        "attachments": [
          {
            "url": "string",
            "key": "string",
            "filename": "string",
            "mimetype": "string",
            "size": 0,
            "uploadedAt": "string"
          }
        ],
        "createdAt": "string",
        "updatedAt": "string"
      },
      "message": "string"
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /{appId}/tickets/ List tickets Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": [
        {}
      ],
      "pagination": {
        "page": 0,
        "limit": 0,
        "total": 0,
        "pages": 0
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • DELETE /{appId}/tickets/ Bulk delete tickets Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "message": "string",
      "deletedCount": 0
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /{appId}/tickets/{messageId} Get ticket by ID Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {}
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • PATCH /{appId}/tickets/{messageId} Update ticket Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {},
      "message": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • DELETE /{appId}/tickets/{messageId} Delete ticket Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "message": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • PATCH /{appId}/tickets/{messageId}/status Update ticket status Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {},
      "message": "string"
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /{appId}/tickets/{messageId}/messages Add message to ticket Bearer Token (JWT)
    201 application/json
    {
      "success": true,
      "data": {},
      "message": "string"
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /{appId}/tickets/{messageId}/messages Get ticket messages Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": [
        {
          "_id": "string",
          "content": "string",
          "isCustomer": false,
          "authorEmail": "string",
          "authorName": "string",
          "createdAt": "string"
        }
      ]
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }

Wants

Feature requests with voting system

  • GET /{appId}/wants/ List wants API Key (header: X-API-Key)
    200 application/json
    {
      "success": true,
      "data": [
        {
          "_id": "string",
          "appId": "string",
          "title": "string",
          "description": "string",
          "category": "string",
          "status": "string",
          "voteCount": 0,
          "hasVoted": false,
          "authorEmail": "string",
          "createdAt": "string",
          "updatedAt": "string"
        }
      ],
      "pagination": {
        "page": 0,
        "limit": 0,
        "total": 0,
        "pages": 0
      }
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /{appId}/wants/ Submit a want Bearer Token (JWT) or API Key (header: X-API-Key)
    201 application/json
    {
      "success": true,
      "data": {
        "_id": "string",
        "appId": "string",
        "title": "string",
        "description": "string",
        "category": "string",
        "status": "string",
        "voteCount": 0,
        "hasVoted": false,
        "authorEmail": "string",
        "createdAt": "string",
        "updatedAt": "string"
      }
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    429 application/json
    {
      "success": false,
      "error": "string"
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /{appId}/wants/{id} Get want by ID API Key (header: X-API-Key)
    200 application/json
    {
      "success": true,
      "data": {
        "_id": "string",
        "appId": "string",
        "title": "string",
        "description": "string",
        "category": "string",
        "status": "string",
        "voteCount": 0,
        "hasVoted": false,
        "authorEmail": "string",
        "createdAt": "string",
        "updatedAt": "string"
      }
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /{appId}/wants/{id}/vote Vote on a want Bearer Token (JWT) or API Key (header: X-API-Key)
    200 application/json
    {
      "success": true,
      "data": {
        "voteCount": 0,
        "hasVoted": false
      }
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
    429 application/json
    {
      "success": false,
      "error": "string"
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /admin/{appId}/wants/stats Feature request statistics Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {
        "total": 0,
        "byStatus": {},
        "byCategory": {},
        "byPriority": {}
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /admin/{appId}/wants/ List wants (admin) Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": [
        {
          "_id": "string",
          "appId": "string",
          "title": "string",
          "description": "string",
          "category": "string",
          "status": "string",
          "priority": "string",
          "voteCount": 0,
          "authorEmail": "string",
          "createdAt": "string",
          "updatedAt": "string"
        }
      ],
      "pagination": {
        "page": 0,
        "limit": 0,
        "total": 0,
        "pages": 0
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /admin/{appId}/wants/{id} Get want by ID (admin) Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {
        "_id": "string",
        "appId": "string",
        "title": "string",
        "description": "string",
        "category": "string",
        "status": "string",
        "priority": "string",
        "voteCount": 0,
        "authorEmail": "string",
        "createdAt": "string",
        "updatedAt": "string"
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • PATCH /admin/{appId}/wants/{id} Update want Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {
        "_id": "string",
        "appId": "string",
        "title": "string",
        "description": "string",
        "category": "string",
        "status": "string",
        "priority": "string",
        "voteCount": 0,
        "authorEmail": "string",
        "createdAt": "string",
        "updatedAt": "string"
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • DELETE /admin/{appId}/wants/{id} Delete want Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "message": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • PATCH /admin/{appId}/wants/{id}/status Update want status Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {
        "_id": "string",
        "appId": "string",
        "title": "string",
        "description": "string",
        "category": "string",
        "status": "string",
        "priority": "string",
        "voteCount": 0,
        "authorEmail": "string",
        "createdAt": "string",
        "updatedAt": "string"
      }
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • PATCH /admin/{appId}/wants/{id}/priority Update want priority Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {
        "_id": "string",
        "appId": "string",
        "title": "string",
        "description": "string",
        "category": "string",
        "status": "string",
        "priority": "string",
        "voteCount": 0,
        "authorEmail": "string",
        "createdAt": "string",
        "updatedAt": "string"
      }
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }

Newsletter

Newsletter subscribers, campaigns, and templates

  • POST /{appId}/newsletter/subscribe Subscribe to newsletter API Key (header: X-API-Key)
    201 application/json
    {
      "success": true,
      "data": {
        "email": "string",
        "name": "string"
      }
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    429 application/json
    {
      "success": false,
      "error": "string"
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /{appId}/newsletter/unsubscribe/{token} Unsubscribe from newsletter API Key (header: X-API-Key)
    200 application/json
    "string"
  • POST /{appId}/newsletter/unsubscribe/{token} Unsubscribe from newsletter (POST) API Key (header: X-API-Key)
    200 application/json
    "string"
  • GET /admin/{appId}/newsletter/subscribers/stats Subscriber statistics Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {
        "total": 0,
        "active": 0,
        "unsubscribed": 0,
        "bounced": 0,
        "bySource": {}
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /admin/{appId}/newsletter/subscribers List subscribers Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": [
        {
          "_id": "string",
          "appId": "string",
          "email": "string",
          "name": "string",
          "language": "string",
          "referralUrl": "string",
          "status": "string",
          "source": "string",
          "subscribedAt": "string",
          "unsubscribedAt": "string",
          "createdAt": "string"
        }
      ],
      "pagination": {
        "page": 0,
        "limit": 0,
        "total": 0,
        "pages": 0
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /admin/{appId}/newsletter/subscribers Add subscriber manually Bearer Token (JWT)
    201 application/json
    {
      "success": false,
      "data": {
        "_id": "string",
        "appId": "string",
        "email": "string",
        "name": "string",
        "language": "string",
        "referralUrl": "string",
        "status": "string",
        "source": "string",
        "subscribedAt": "string",
        "unsubscribedAt": "string",
        "createdAt": "string"
      }
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /admin/{appId}/newsletter/subscribers/import Import subscribers Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": {
        "imported": 0,
        "skipped": 0
      }
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • DELETE /admin/{appId}/newsletter/subscribers/{id} Delete subscriber Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "message": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /admin/{appId}/newsletter/campaigns List campaigns Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": [
        {
          "_id": "string",
          "appId": "string",
          "name": "string",
          "subject": "string",
          "status": "string",
          "stats": {
            "total": 0,
            "sent": 0,
            "failed": 0
          },
          "sentAt": "string",
          "completedAt": "string",
          "createdBy": "string",
          "createdAt": "string",
          "updatedAt": "string"
        }
      ],
      "pagination": {
        "page": 0,
        "limit": 0,
        "total": 0,
        "pages": 0
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /admin/{appId}/newsletter/campaigns Create campaign Bearer Token (JWT)
    201 application/json
    {
      "success": false,
      "data": {
        "_id": "string",
        "appId": "string",
        "name": "string",
        "subject": "string",
        "status": "string",
        "stats": {
          "total": 0,
          "sent": 0,
          "failed": 0
        },
        "sentAt": "string",
        "completedAt": "string",
        "createdBy": "string",
        "createdAt": "string",
        "updatedAt": "string"
      }
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /admin/{appId}/newsletter/campaigns/{id} Get campaign Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": {
        "_id": "string",
        "appId": "string",
        "name": "string",
        "subject": "string",
        "status": "string",
        "stats": {
          "total": 0,
          "sent": 0,
          "failed": 0
        },
        "sentAt": "string",
        "completedAt": "string",
        "createdBy": "string",
        "createdAt": "string",
        "updatedAt": "string"
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • PATCH /admin/{appId}/newsletter/campaigns/{id} Update campaign Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": {
        "_id": "string",
        "appId": "string",
        "name": "string",
        "subject": "string",
        "status": "string",
        "stats": {
          "total": 0,
          "sent": 0,
          "failed": 0
        },
        "sentAt": "string",
        "completedAt": "string",
        "createdBy": "string",
        "createdAt": "string",
        "updatedAt": "string"
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • DELETE /admin/{appId}/newsletter/campaigns/{id} Delete campaign Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "message": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /admin/{appId}/newsletter/campaigns/{id}/send Send campaign Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": {
        "status": "queued",
        "jobId": "string"
      }
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /admin/{appId}/newsletter/campaigns/{id}/test Send test email Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "message": "string"
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /admin/{appId}/newsletter/templates List newsletter templates Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": [
        {
          "_id": "string",
          "name": "string",
          "subject": "string",
          "htmlContent": "string",
          "textContent": "string",
          "isActive": false,
          "createdBy": "string",
          "createdAt": "string",
          "updatedAt": "string"
        }
      ]
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /admin/{appId}/newsletter/templates Create newsletter template Bearer Token (JWT)
    201 application/json
    {
      "success": false,
      "data": {
        "_id": "string",
        "name": "string",
        "subject": "string",
        "htmlContent": "string",
        "textContent": "string",
        "isActive": false,
        "createdBy": "string",
        "createdAt": "string",
        "updatedAt": "string"
      }
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • PATCH /admin/{appId}/newsletter/templates/{id} Update newsletter template Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": {
        "_id": "string",
        "name": "string",
        "subject": "string",
        "htmlContent": "string",
        "textContent": "string",
        "isActive": false,
        "createdBy": "string",
        "createdAt": "string",
        "updatedAt": "string"
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • DELETE /admin/{appId}/newsletter/templates/{id} Delete newsletter template Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "message": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }

Contacts

Shared contact model with per-category consent and GDPR compliance

  • GET /admin/contacts/ List contacts Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": [
        {}
      ],
      "pagination": {
        "page": 0,
        "limit": 0,
        "total": 0,
        "pages": 0
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /admin/contacts/{id} Get contact by ID Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {}
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • DELETE /admin/contacts/{id} GDPR delete contact Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "message": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • PATCH /admin/contacts/{id}/consent Update consent for a category Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {},
      "message": "string"
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /admin/contacts/{id}/opt-out Global opt-out Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {},
      "message": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /admin/contacts/{id}/export GDPR data export Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {}
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }

Webhooks

Email provider webhook receivers (Resend, cold-email)

  • POST /webhooks/resend Resend email webhook receiver None required
    200 application/json
    {
      "success": false,
      "processed": false,
      "eventId": "string"
    }
  • POST /webhooks/cold-provider Cold email provider webhook (stub) None required
    200 application/json
    {
      "success": true,
      "message": "string"
    }
  • POST /webhooks/inbound/{provider} Inbound mail webhook None required
    200 application/json
    {
      "success": false,
      "message": "string"
    }

Email Tracking

Own tracking pixel and click redirect endpoints

  • GET /t/o/{token} Open tracking pixel None required
    200 application/json
    "string"
  • GET /t/c/{token} Click tracking redirect None required
    302 application/json
    "string"
    400 application/json
    {
      "success": false,
      "error": "string"
    }

Email Events

Email lifecycle event log and analytics

  • GET /admin/email-events/ List email events Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": [
        {
          "_id": "string",
          "contactId": "string",
          "messageId": "string",
          "campaignId": "string",
          "provider": "string",
          "type": "string",
          "createdAt": "string"
        }
      ],
      "pagination": {
        "page": 0,
        "limit": 0,
        "total": 0,
        "pages": 0
      }
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /admin/email-events/message/{messageId} Get events for a message Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": [
        {
          "_id": "string",
          "type": "string",
          "provider": "string",
          "createdAt": "string"
        }
      ]
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /admin/email-events/campaign/{campaignId}/stats Campaign event statistics Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": {}
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }

Email Analytics

Per-campaign, per-contact, and global email engagement analytics

  • GET /admin/email/analytics/campaigns/{campaignId} Campaign analytics Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": {
        "campaignId": "string",
        "sent": 0,
        "delivered": 0,
        "opened": 0,
        "uniqueOpens": 0,
        "clicked": 0,
        "uniqueClicks": 0,
        "bounced": 0,
        "complained": 0,
        "unsubscribed": 0,
        "openRate": 0,
        "clickThroughRate": 0,
        "topLinks": [
          {
            "url": "string",
            "clicks": 0
          }
        ],
        "timeline": [
          {
            "date": "string",
            "type": "string",
            "count": 0
          }
        ]
      }
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /admin/email/analytics/campaigns/{campaignId}/recipients Campaign recipients breakdown Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": [
        {
          "contactId": "string",
          "events": ["string"],
          "lastEvent": "string"
        }
      ],
      "pagination": {
        "page": 0,
        "limit": 0,
        "total": 0,
        "pages": 0
      }
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /admin/email/analytics/contacts/{contactId} Contact engagement history Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": {
        "contactId": "string",
        "totalSent": 0,
        "totalOpened": 0,
        "totalClicked": 0,
        "totalBounced": 0,
        "totalComplained": 0,
        "events": [
          {
            "_id": "string",
            "campaignId": "string",
            "messageId": "string",
            "type": "string",
            "createdAt": "string"
          }
        ]
      }
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /admin/email/analytics/overview Global email analytics overview Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": {
        "totalSent": 0,
        "totalDelivered": 0,
        "totalOpened": 0,
        "totalUniqueOpens": 0,
        "totalClicked": 0,
        "totalUniqueClicks": 0,
        "totalBounced": 0,
        "totalComplained": 0,
        "totalUnsubscribed": 0,
        "openRate": 0,
        "clickThroughRate": 0,
        "bounceRate": 0,
        "complaintRate": 0,
        "timeline": [
          {
            "date": "string",
            "sent": 0,
            "delivered": 0,
            "opened": 0,
            "clicked": 0
          }
        ]
      }
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }

Email Jobs

Job queue monitoring and management

  • GET /admin/email-jobs/ List email jobs Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": [
        {
          "_id": "string",
          "type": "string",
          "status": "string",
          "priority": 0,
          "payload": {},
          "result": {},
          "attempts": 0,
          "maxAttempts": 0,
          "lastError": "string",
          "scheduledAt": "string",
          "startedAt": "string",
          "completedAt": "string",
          "createdAt": "string"
        }
      ],
      "pagination": {
        "page": 0,
        "limit": 0,
        "total": 0,
        "pages": 0
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /admin/email-jobs/stats Email job statistics Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": {
        "pending": 0,
        "processing": 0,
        "completed": 0,
        "failed": 0,
        "dead": 0,
        "total": 0,
        "progress": {
          "total": 0,
          "completed": 0,
          "failed": 0,
          "pending": 0,
          "processing": 0,
          "dead": 0,
          "percentage": 0
        }
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /admin/email-jobs/{id} Get email job details Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": {
        "_id": "string",
        "type": "string",
        "status": "string",
        "priority": 0,
        "payload": {},
        "result": {},
        "attempts": 0,
        "maxAttempts": 0,
        "lastError": "string",
        "scheduledAt": "string",
        "startedAt": "string",
        "completedAt": "string",
        "createdAt": "string"
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }

Sequences

Multi-step outreach sequence orchestration

  • GET /admin/sequences/ List sequences Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": [
        {
          "_id": "string",
          "name": "string",
          "ownerUserId": "string",
          "steps": [
            {
              "type": ...,
              "order": ...,
              "templateId": ...,
              "delayMs": ...,
              "branches": ...
            }
          ],
          "active": false,
          "businessHours": {
            "startHour": 0,
            "endHour": 0,
            "utcOffset": 0
          },
          "dailySendCap": 0,
          "createdAt": "string",
          "updatedAt": "string"
        }
      ],
      "pagination": {
        "page": 0,
        "limit": 0,
        "total": 0,
        "pages": 0
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /admin/sequences/ Create sequence Bearer Token (JWT)
    201 application/json
    {
      "success": false,
      "data": {
        "_id": "string",
        "name": "string",
        "ownerUserId": "string",
        "steps": [
          {
            "type": "string",
            "order": 0,
            "templateId": "string",
            "delayMs": 0,
            "branches": {}
          }
        ],
        "active": false,
        "businessHours": {
          "startHour": 0,
          "endHour": 0,
          "utcOffset": 0
        },
        "dailySendCap": 0,
        "createdAt": "string",
        "updatedAt": "string"
      }
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /admin/sequences/{id} Get sequence details Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": {
        "_id": "string",
        "name": "string",
        "ownerUserId": "string",
        "steps": [
          {
            "type": "string",
            "order": 0,
            "templateId": "string",
            "delayMs": 0,
            "branches": {}
          }
        ],
        "active": false,
        "businessHours": {
          "startHour": 0,
          "endHour": 0,
          "utcOffset": 0
        },
        "dailySendCap": 0,
        "createdAt": "string",
        "updatedAt": "string"
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • PATCH /admin/sequences/{id} Update sequence Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": {
        "_id": "string",
        "name": "string",
        "ownerUserId": "string",
        "steps": [
          {
            "type": "string",
            "order": 0,
            "templateId": "string",
            "delayMs": 0,
            "branches": {}
          }
        ],
        "active": false,
        "businessHours": {
          "startHour": 0,
          "endHour": 0,
          "utcOffset": 0
        },
        "dailySendCap": 0,
        "createdAt": "string",
        "updatedAt": "string"
      }
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • DELETE /admin/sequences/{id} Delete sequence Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "message": "string"
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /admin/sequences/{id}/activate Activate sequence Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": {
        "_id": "string",
        "name": "string",
        "ownerUserId": "string",
        "steps": [
          {
            "type": "string",
            "order": 0,
            "templateId": "string",
            "delayMs": 0,
            "branches": {}
          }
        ],
        "active": false,
        "businessHours": {
          "startHour": 0,
          "endHour": 0,
          "utcOffset": 0
        },
        "dailySendCap": 0,
        "createdAt": "string",
        "updatedAt": "string"
      }
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /admin/sequences/{id}/deactivate Deactivate sequence Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": {
        "_id": "string",
        "name": "string",
        "ownerUserId": "string",
        "steps": [
          {
            "type": "string",
            "order": 0,
            "templateId": "string",
            "delayMs": 0,
            "branches": {}
          }
        ],
        "active": false,
        "businessHours": {
          "startHour": 0,
          "endHour": 0,
          "utcOffset": 0
        },
        "dailySendCap": 0,
        "createdAt": "string",
        "updatedAt": "string"
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /admin/sequences/{id}/enroll Enroll contacts Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": {
        "enrolled": [
          {
            "_id": "string",
            "sequenceId": "string",
            "contactId": "string",
            "prospectId": "string",
            "currentStep": 0,
            "status": "string",
            "startedAt": "string",
            "lastStepAt": "string",
            "exitReason": "string",
            "createdAt": "string"
          }
        ],
        "rejected": [
          {
            "id": "string",
            "reason": "string"
          }
        ]
      }
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /admin/sequences/{id}/enrollments List enrollments Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": [
        {
          "_id": "string",
          "sequenceId": "string",
          "contactId": "string",
          "prospectId": "string",
          "currentStep": 0,
          "status": "string",
          "startedAt": "string",
          "lastStepAt": "string",
          "exitReason": "string",
          "createdAt": "string"
        }
      ],
      "pagination": {
        "page": 0,
        "limit": 0,
        "total": 0,
        "pages": 0
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /admin/sequences/enrollments/{id}/pause Pause enrollment Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": {
        "_id": "string",
        "sequenceId": "string",
        "contactId": "string",
        "prospectId": "string",
        "currentStep": 0,
        "status": "string",
        "startedAt": "string",
        "lastStepAt": "string",
        "exitReason": "string",
        "createdAt": "string"
      }
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /admin/sequences/enrollments/{id}/resume Resume enrollment Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": {
        "_id": "string",
        "sequenceId": "string",
        "contactId": "string",
        "prospectId": "string",
        "currentStep": 0,
        "status": "string",
        "startedAt": "string",
        "lastStepAt": "string",
        "exitReason": "string",
        "createdAt": "string"
      }
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /admin/sequences/enrollments/{id}/exit Exit enrollment Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": {
        "_id": "string",
        "sequenceId": "string",
        "contactId": "string",
        "prospectId": "string",
        "currentStep": 0,
        "status": "string",
        "startedAt": "string",
        "lastStepAt": "string",
        "exitReason": "string",
        "createdAt": "string"
      }
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }

Inbound Mail

Inbound reply detection, classification, and thread matching

  • GET /admin/inbound/messages List inbound messages Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": [
        {
          "_id": "string",
          "messageId": "string",
          "from": "string",
          "subject": "string",
          "classification": "string",
          "status": "string",
          "matchedEnrollmentId": "string",
          "createdAt": "string"
        }
      ],
      "pagination": {
        "page": 0,
        "limit": 0,
        "total": 0,
        "pages": 0
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /admin/inbound/messages/stats Inbound message statistics Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": {
        "total": 0,
        "byStatus": {},
        "byClassification": {}
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /admin/inbound/messages/{id} Get inbound message detail Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": {}
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }

Health

Health checks

  • GET /health Server health check None required
    200 application/json
    {
      "status": "ok",
      "timestamp": "string",
      "uptime": 0,
      "memory": {
        "rss": "128MB",
        "heapUsed": "64MB",
        "heapTotal": "128MB",
        "external": "2MB",
        "arrayBuffers": "1MB"
      },
      "databases": {
        "connected": 0,
        "total": 0,
        "failed": 0
      }
    }

Data Export

  • GET /data-export/{token} View a customer data export report None required
    200 application/json
    "string"
    404 application/json
    "string"
    410 application/json
    "string"
  • GET /data-export/{token}/download Download a customer data export report as a file None required
    200 application/json
    "string"
    404 application/json
    "string"
    410 application/json
    "string"

Slack Routing

  • GET /admin/slack-routing/ List routing rules Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": [
        {
          "_id": "string",
          "appId": "string",
          "channel": "string",
          "webhookUrl": "string",
          "active": false,
          "createdAt": "string"
        }
      ]
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /admin/slack-routing/ Create routing rule Bearer Token (JWT)
    201 application/json
    {
      "success": false,
      "data": {}
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    409 application/json
    {
      "success": false,
      "error": "string"
    }
  • PATCH /admin/slack-routing/{id} Update routing rule Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": {}
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • DELETE /admin/slack-routing/{id} Delete routing rule Bearer Token (JWT)
    200 application/json
    {
      "success": false
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }

Email Agent

  • GET /admin/agent/actions List agent actions Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": [
        {}
      ],
      "pagination": {
        "page": 0,
        "limit": 0,
        "total": 0,
        "pages": 0
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /admin/agent/actions/stats Agent action statistics Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": {
        "total": 0,
        "overrideRate": 0,
        "byType": {},
        "byStatus": {},
        "byDecision": {}
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /admin/agent/actions/{id} Get agent action detail Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": {}
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /admin/agent/actions/{id}/override Override agent decision Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": {}
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
    409 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /admin/agent/draft Generate cold email draft Bearer Token (JWT)
    201 application/json
    {
      "success": false,
      "data": {
        "actionId": "string",
        "subject": "string",
        "body": "string",
        "htmlBody": "string"
      }
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /admin/agent/draft/{actionId}/send Send approved draft Bearer Token (JWT)
    200 application/json
    {
      "success": false
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }

Prospects

  • GET /admin/prospects/ List prospects Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": [
        {}
      ],
      "pagination": {
        "page": 0,
        "limit": 0,
        "total": 0,
        "pages": 0
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /admin/prospects/ Create prospect Bearer Token (JWT)
    201 application/json
    {
      "success": false,
      "data": {}
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    409 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /admin/prospects/stats Prospect statistics Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": {
        "total": 0,
        "byStatus": {},
        "bySource": {}
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /admin/prospects/import Bulk import prospects Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": {
        "created": 0,
        "skipped": 0,
        "errors": [
          {
            "email": "string",
            "error": "string"
          }
        ]
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /admin/prospects/{id} Get prospect detail Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": {}
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • PATCH /admin/prospects/{id} Update prospect Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": {}
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • DELETE /admin/prospects/{id} Delete prospect Bearer Token (JWT)
    200 application/json
    {
      "success": false
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /admin/prospects/{id}/activity Get prospect activity timeline Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": [
        {}
      ]
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /admin/prospects/{id}/notes Add note to prospect Bearer Token (JWT)
    200 application/json
    {
      "success": false,
      "data": {}
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }

Automations

  • POST /admin/automations/configs/validate-condition Validate condition DSL Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {
        "valid": false,
        "errors": ["string"]
      }
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /admin/automations/configs List automation configs Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": [
        {
          "_id": "string",
          "appId": "string",
          "slug": "string",
          "enabled": false,
          "description": "string",
          "steps": [
            {}
          ],
          "createdAt": "string",
          "updatedAt": "string"
        }
      ],
      "pagination": {
        "page": 0,
        "limit": 0,
        "total": 0
      }
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /admin/automations/configs Create automation config Bearer Token (JWT)
    201 application/json
    {
      "success": true,
      "data": {
        "_id": "string",
        "appId": "string",
        "slug": "string",
        "enabled": false,
        "description": "string",
        "steps": [
          {}
        ],
        "createdAt": "string",
        "updatedAt": "string"
      }
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /admin/automations/configs/{id} Get automation config Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {
        "_id": "string",
        "appId": "string",
        "slug": "string",
        "enabled": false,
        "description": "string",
        "steps": [
          {}
        ],
        "createdAt": "string",
        "updatedAt": "string"
      }
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • PUT /admin/automations/configs/{id} Replace automation config Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {
        "_id": "string",
        "appId": "string",
        "slug": "string",
        "enabled": false,
        "description": "string",
        "steps": [
          {}
        ],
        "createdAt": "string",
        "updatedAt": "string"
      }
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • PATCH /admin/automations/configs/{id} Update automation config (partial) Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {
        "_id": "string",
        "appId": "string",
        "slug": "string",
        "enabled": false,
        "description": "string",
        "steps": [
          {}
        ],
        "createdAt": "string",
        "updatedAt": "string"
      }
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • DELETE /admin/automations/configs/{id} Delete automation config Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "message": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /admin/automations/configs/{id}/toggle Toggle automation config Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {
        "_id": "string",
        "appId": "string",
        "slug": "string",
        "enabled": false,
        "description": "string",
        "steps": [
          {}
        ],
        "createdAt": "string",
        "updatedAt": "string"
      }
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /admin/automations/{appId}/stats Automation stats Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {}
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /admin/automations/{appId}/trackers List trackers Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": [
        {}
      ],
      "pagination": {
        "page": 0,
        "limit": 0,
        "total": 0
      }
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /admin/automations/{appId}/trackers/{shopDomain}/timeline Get tracker timeline Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": [
        {}
      ]
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /admin/automations/{appId}/trackers/{shopDomain} Get tracker Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {}
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • PATCH /admin/automations/{appId}/trackers/{shopDomain} Update tracker Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {}
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }
  • DELETE /admin/automations/{appId}/trackers/{shopDomain} Delete tracker Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "message": "string"
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
    500 application/json
    {
      "success": false,
      "error": "string"
    }

Email Alerts

  • GET /admin/email-alerts/ List email spike alerts Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": [
        {}
      ],
      "pagination": {
        "page": 0,
        "limit": 0,
        "total": 0,
        "pages": 0
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • PATCH /admin/email-alerts/{id}/resolve Resolve an email spike alert Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {}
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }

Plans

  • GET /{appId}/plans/stats Plan statistics Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {
        "total": 0,
        "active": 0,
        "inactive": 0,
        "byInterval": {}
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /{appId}/plans/active List active plans Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": [
        {
          "_id": "6901449da196a70c326622f8",
          "id": "pro_monthly",
          "name": "Pro",
          "price": 40,
          "interval": "EVERY_30_DAYS",
          "trialDays": 14,
          "features": ["string"],
          "isActive": true,
          "createdAt": "string",
          "updatedAt": "string"
        }
      ]
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /{appId}/plans/features List all features Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": ["string"]
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /{appId}/plans/ List plans Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": [
        {
          "_id": "6901449da196a70c326622f8",
          "id": "pro_monthly",
          "name": "Pro",
          "price": 40,
          "interval": "EVERY_30_DAYS",
          "trialDays": 14,
          "features": ["string"],
          "isActive": true,
          "createdAt": "string",
          "updatedAt": "string"
        }
      ],
      "pagination": {
        "page": 0,
        "limit": 0,
        "total": 0,
        "pages": 0
      }
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /{appId}/plans/ Create plan Bearer Token (JWT)
    201 application/json
    {
      "success": true,
      "data": {
        "_id": "6901449da196a70c326622f8",
        "id": "pro_monthly",
        "name": "Pro",
        "price": 40,
        "interval": "EVERY_30_DAYS",
        "trialDays": 14,
        "features": ["string"],
        "isActive": true,
        "createdAt": "string",
        "updatedAt": "string"
      },
      "message": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
    409 application/json
    {
      "success": false,
      "error": "string"
    }
  • GET /{appId}/plans/{planId} Get plan by ID Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {
        "_id": "6901449da196a70c326622f8",
        "id": "pro_monthly",
        "name": "Pro",
        "price": 40,
        "interval": "EVERY_30_DAYS",
        "trialDays": 14,
        "features": ["string"],
        "isActive": true,
        "createdAt": "string",
        "updatedAt": "string"
      }
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • PATCH /{appId}/plans/{planId} Update plan Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {
        "_id": "6901449da196a70c326622f8",
        "id": "pro_monthly",
        "name": "Pro",
        "price": 40,
        "interval": "EVERY_30_DAYS",
        "trialDays": 14,
        "features": ["string"],
        "isActive": true,
        "createdAt": "string",
        "updatedAt": "string"
      },
      "message": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • DELETE /{appId}/plans/{planId} Delete plan Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "message": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }
  • PATCH /{appId}/plans/{planId}/toggle Toggle plan status Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {
        "_id": "6901449da196a70c326622f8",
        "id": "pro_monthly",
        "name": "Pro",
        "price": 40,
        "interval": "EVERY_30_DAYS",
        "trialDays": 14,
        "features": ["string"],
        "isActive": true,
        "createdAt": "string",
        "updatedAt": "string"
      },
      "message": "string"
    }
    404 application/json
    {
      "success": false,
      "error": "string"
    }

App Events

  • POST /{appId}/events/app-installed Notify that a store installed the app Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {
        "received": true
      }
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }
  • POST /{appId}/events/{eventName} Ingest an arbitrary app event Bearer Token (JWT)
    200 application/json
    {
      "success": true,
      "data": {
        "received": true
      }
    }
    400 application/json
    {
      "success": false,
      "error": "string"
    }
    401 application/json
    {
      "success": false,
      "error": "string"
    }