Some checks failed
Deploy / deploy (push) Has been cancelled
Full-stack web application for Telegram management - Frontend: Vue 3 + Vben Admin - Backend: NestJS - Features: User management, group broadcast, statistics 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
889 lines
28 KiB
JSON
889 lines
28 KiB
JSON
{
|
|
"info": {
|
|
"name": "Telegram Marketing Agent API",
|
|
"description": "Comprehensive API collection for the Telegram Marketing Agent System. This collection includes all endpoints for managing campaigns, users, analytics, and more.\n\n## Getting Started\n\n1. Set the `base_url` variable to your API endpoint (default: http://localhost:3000)\n2. Authenticate using the Login endpoint to get your access token\n3. The token will be automatically saved to the `access_token` variable\n4. Start exploring the API!\n\n## Authentication\n\nMost endpoints require Bearer token authentication. The token is automatically managed after login.",
|
|
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
|
|
},
|
|
"variable": [
|
|
{
|
|
"key": "base_url",
|
|
"value": "http://localhost:3000",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "access_token",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "refresh_token",
|
|
"value": "",
|
|
"type": "string"
|
|
}
|
|
],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{access_token}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"item": [
|
|
{
|
|
"name": "Authentication",
|
|
"item": [
|
|
{
|
|
"name": "Login",
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"exec": [
|
|
"if (pm.response.code === 200) {",
|
|
" const response = pm.response.json();",
|
|
" pm.collectionVariables.set('access_token', response.data.accessToken);",
|
|
" pm.collectionVariables.set('refresh_token', response.data.refreshToken);",
|
|
" pm.environment.set('userId', response.data.user.id);",
|
|
"}"
|
|
],
|
|
"type": "text/javascript"
|
|
}
|
|
}
|
|
],
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [],
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"username\": \"admin\",\n \"password\": \"password123\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
},
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/auth/login",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "auth", "login"]
|
|
},
|
|
"description": "Authenticate user and receive access token"
|
|
}
|
|
},
|
|
{
|
|
"name": "Register",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [],
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"username\": \"newuser\",\n \"email\": \"newuser@example.com\",\n \"password\": \"SecurePassword123!\",\n \"fullName\": \"John Doe\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
},
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/auth/register",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "auth", "register"]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Refresh Token",
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"exec": [
|
|
"if (pm.response.code === 200) {",
|
|
" const response = pm.response.json();",
|
|
" pm.collectionVariables.set('access_token', response.data.accessToken);",
|
|
"}"
|
|
],
|
|
"type": "text/javascript"
|
|
}
|
|
}
|
|
],
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [],
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"refreshToken\": \"{{refresh_token}}\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
},
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/auth/refresh",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "auth", "refresh"]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Get Current User",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/auth/me",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "auth", "me"]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Logout",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/auth/logout",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "auth", "logout"]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Campaigns",
|
|
"item": [
|
|
{
|
|
"name": "List Campaigns",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/orchestrator/campaigns?page=1&limit=20&status=active",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "orchestrator", "campaigns"],
|
|
"query": [
|
|
{
|
|
"key": "page",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"key": "limit",
|
|
"value": "20"
|
|
},
|
|
{
|
|
"key": "status",
|
|
"value": "active"
|
|
},
|
|
{
|
|
"key": "type",
|
|
"value": "message",
|
|
"disabled": true
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Create Campaign",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [],
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"name\": \"Summer Sale Campaign\",\n \"description\": \"Promotional campaign for summer products\",\n \"type\": \"message\",\n \"content\": {\n \"customMessage\": \"🌞 Summer Sale! Get 20% off on all products. Use code: SUMMER20\",\n \"media\": []\n },\n \"targeting\": {\n \"segments\": [],\n \"tags\": [\"customer\", \"active\"],\n \"filters\": {\n \"lastActivity\": {\n \"operator\": \"greater_than\",\n \"value\": \"30d\"\n }\n }\n },\n \"settings\": {\n \"rateLimit\": {\n \"messagesPerSecond\": 10,\n \"messagesPerUser\": 1\n }\n },\n \"goals\": {\n \"targetAudience\": 1000,\n \"conversionRate\": 15,\n \"revenue\": 50000\n }\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
},
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/orchestrator/campaigns",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "orchestrator", "campaigns"]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Get Campaign",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/orchestrator/campaigns/:campaignId",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "orchestrator", "campaigns", ":campaignId"],
|
|
"variable": [
|
|
{
|
|
"key": "campaignId",
|
|
"value": "camp_123456789"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Update Campaign",
|
|
"request": {
|
|
"method": "PUT",
|
|
"header": [],
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"name\": \"Updated Summer Sale Campaign\",\n \"content\": {\n \"customMessage\": \"🌞 Extended Summer Sale! Get 25% off on all products. Use code: SUMMER25\"\n }\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
},
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/orchestrator/campaigns/:campaignId",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "orchestrator", "campaigns", ":campaignId"],
|
|
"variable": [
|
|
{
|
|
"key": "campaignId",
|
|
"value": "camp_123456789"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Execute Campaign",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [],
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"test\": false\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
},
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/orchestrator/campaigns/:campaignId/execute",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "orchestrator", "campaigns", ":campaignId", "execute"],
|
|
"variable": [
|
|
{
|
|
"key": "campaignId",
|
|
"value": "camp_123456789"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Get Campaign Statistics",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/orchestrator/campaigns/:campaignId/statistics?dateRange=last7days",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "orchestrator", "campaigns", ":campaignId", "statistics"],
|
|
"query": [
|
|
{
|
|
"key": "dateRange",
|
|
"value": "last7days"
|
|
}
|
|
],
|
|
"variable": [
|
|
{
|
|
"key": "campaignId",
|
|
"value": "camp_123456789"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Delete Campaign",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/orchestrator/campaigns/:campaignId",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "orchestrator", "campaigns", ":campaignId"],
|
|
"variable": [
|
|
{
|
|
"key": "campaignId",
|
|
"value": "camp_123456789"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Scheduled Campaigns",
|
|
"item": [
|
|
{
|
|
"name": "List Scheduled Campaigns",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/scheduler/scheduled-campaigns?status=active&type=recurring",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "scheduler", "scheduled-campaigns"],
|
|
"query": [
|
|
{
|
|
"key": "status",
|
|
"value": "active"
|
|
},
|
|
{
|
|
"key": "type",
|
|
"value": "recurring"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Create Schedule",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [],
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"campaignId\": \"camp_123456789\",\n \"name\": \"Daily Morning Newsletter\",\n \"description\": \"Send newsletter every morning at 9 AM\",\n \"type\": \"recurring\",\n \"schedule\": {\n \"startDateTime\": \"2024-01-15T09:00:00Z\",\n \"recurring\": {\n \"pattern\": \"daily\",\n \"frequency\": {\n \"interval\": 1,\n \"unit\": \"day\"\n },\n \"time\": \"09:00\",\n \"timezone\": \"America/New_York\"\n }\n }\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
},
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/scheduler/scheduled-campaigns",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "scheduler", "scheduled-campaigns"]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Pause Schedule",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/scheduler/scheduled-campaigns/:scheduleId/pause",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "scheduler", "scheduled-campaigns", ":scheduleId", "pause"],
|
|
"variable": [
|
|
{
|
|
"key": "scheduleId",
|
|
"value": "sched_123456789"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Resume Schedule",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/scheduler/scheduled-campaigns/:scheduleId/resume",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "scheduler", "scheduled-campaigns", ":scheduleId", "resume"],
|
|
"variable": [
|
|
{
|
|
"key": "scheduleId",
|
|
"value": "sched_123456789"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Users",
|
|
"item": [
|
|
{
|
|
"name": "List Users",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/users?page=1&limit=20&status=active",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "users"],
|
|
"query": [
|
|
{
|
|
"key": "page",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"key": "limit",
|
|
"value": "20"
|
|
},
|
|
{
|
|
"key": "status",
|
|
"value": "active"
|
|
},
|
|
{
|
|
"key": "search",
|
|
"value": "john",
|
|
"disabled": true
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Create User",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [],
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"telegramId\": \"123456789\",\n \"username\": \"johndoe\",\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"phoneNumber\": \"+1234567890\",\n \"languageCode\": \"en\",\n \"tags\": [\"customer\", \"active\"],\n \"customFields\": {\n \"company\": \"Acme Corp\",\n \"subscription\": \"premium\"\n }\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
},
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/users",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "users"]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Import Users",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [],
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "file",
|
|
"type": "file",
|
|
"src": "/path/to/users.csv"
|
|
},
|
|
{
|
|
"key": "updateExisting",
|
|
"value": "true",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "defaultTags",
|
|
"value": "[\"imported\", \"newsletter\"]",
|
|
"type": "text"
|
|
}
|
|
]
|
|
},
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/users/import",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "users", "import"]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Export Users",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [],
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"format\": \"csv\",\n \"filters\": {\n \"status\": \"active\",\n \"tags\": [\"customer\"]\n },\n \"fields\": [\"telegramId\", \"username\", \"firstName\", \"lastName\", \"tags\", \"createdAt\"]\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
},
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/users/export",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "users", "export"]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Bulk Update Users",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [],
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"userIds\": [\"user_123\", \"user_456\", \"user_789\"],\n \"updates\": {\n \"addTags\": [\"vip\", \"2024-campaign\"],\n \"removeTags\": [\"inactive\"],\n \"customFields\": {\n \"lastCampaign\": \"Summer Sale 2024\"\n }\n }\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
},
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/users/bulk",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "users", "bulk"]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Segments",
|
|
"item": [
|
|
{
|
|
"name": "List Segments",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/segments",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "segments"]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Create Segment",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [],
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"name\": \"Active Premium Users\",\n \"description\": \"Users who are premium subscribers and active in the last 7 days\",\n \"criteria\": [\n {\n \"field\": \"tags\",\n \"operator\": \"contains\",\n \"value\": \"premium\",\n \"logic\": \"AND\"\n },\n {\n \"field\": \"engagement.lastActivity\",\n \"operator\": \"greater_than\",\n \"value\": \"7d\"\n }\n ],\n \"isDynamic\": true\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
},
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/segments",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "segments"]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Preview Segment",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [],
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"criteria\": [\n {\n \"field\": \"tags\",\n \"operator\": \"contains\",\n \"value\": \"newsletter\"\n }\n ]\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
},
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/segments/preview",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "segments", "preview"]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Get Segment Users",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/segments/:segmentId/users",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "segments", ":segmentId", "users"],
|
|
"variable": [
|
|
{
|
|
"key": "segmentId",
|
|
"value": "seg_123456789"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Analytics",
|
|
"item": [
|
|
{
|
|
"name": "Campaign Analytics",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/analytics/campaigns?dateRange=last30days",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "analytics", "campaigns"],
|
|
"query": [
|
|
{
|
|
"key": "dateRange",
|
|
"value": "last30days"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "User Analytics",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/analytics/users?metrics=growth,engagement",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "analytics", "users"],
|
|
"query": [
|
|
{
|
|
"key": "metrics",
|
|
"value": "growth,engagement"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Real-time Dashboard",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/analytics/dashboard",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "analytics", "dashboard"]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Templates",
|
|
"item": [
|
|
{
|
|
"name": "List Templates",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/templates?category=promotional",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "templates"],
|
|
"query": [
|
|
{
|
|
"key": "category",
|
|
"value": "promotional"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Create Template",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [],
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"name\": \"Welcome Message\",\n \"category\": \"onboarding\",\n \"content\": {\n \"en\": \"Welcome {{firstName}}! 🎉 Thank you for joining us.\",\n \"es\": \"¡Bienvenido {{firstName}}! 🎉 Gracias por unirte a nosotros.\"\n },\n \"variables\": [\"firstName\"],\n \"isActive\": true\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
},
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/templates",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "templates"]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Webhooks",
|
|
"item": [
|
|
{
|
|
"name": "List Webhooks",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/webhooks",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "webhooks"]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Create Webhook",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [],
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"name\": \"Campaign Events\",\n \"url\": \"https://your-server.com/webhooks/campaigns\",\n \"events\": [\"campaign.completed\", \"campaign.failed\", \"user.converted\"],\n \"headers\": {\n \"X-Webhook-Secret\": \"your-secret-key\"\n },\n \"isActive\": true\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
},
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/webhooks",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "webhooks"]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Test Webhook",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [],
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"event\": \"campaign.completed\",\n \"payload\": {\n \"campaignId\": \"camp_test_123\",\n \"name\": \"Test Campaign\"\n }\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
},
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/webhooks/:webhookId/test",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "webhooks", ":webhookId", "test"],
|
|
"variable": [
|
|
{
|
|
"key": "webhookId",
|
|
"value": "webhook_123456789"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "System",
|
|
"item": [
|
|
{
|
|
"name": "Health Check",
|
|
"request": {
|
|
"auth": {
|
|
"type": "noauth"
|
|
},
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{base_url}}/health",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["health"]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Service Health",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/health/services",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "health", "services"]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Metrics",
|
|
"request": {
|
|
"auth": {
|
|
"type": "noauth"
|
|
},
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{base_url}}/metrics",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["metrics"]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Create Backup",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [],
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"includeUsers\": true,\n \"includeCampaigns\": true,\n \"includeAnalytics\": true,\n \"compression\": true\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
},
|
|
"url": {
|
|
"raw": "{{base_url}}/api/v1/backup",
|
|
"host": ["{{base_url}}"],
|
|
"path": ["api", "v1", "backup"]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"// Set default headers",
|
|
"pm.request.headers.add({",
|
|
" key: 'Content-Type',",
|
|
" value: 'application/json'",
|
|
"});",
|
|
"",
|
|
"// Add request ID",
|
|
"pm.request.headers.add({",
|
|
" key: 'X-Request-ID',",
|
|
" value: pm.variables.replaceIn('{{$guid}}')",
|
|
"});"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"// Log response time",
|
|
"console.log(`Response time: ${pm.response.responseTime}ms`);",
|
|
"",
|
|
"// Check for common errors",
|
|
"if (pm.response.code >= 400) {",
|
|
" const jsonData = pm.response.json();",
|
|
" console.error(`Error: ${jsonData.error || jsonData.message}`);",
|
|
"}"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
} |